xref: /relibc/openlibm/Makefile (revision 1aa6a0fc7ccda4f9f2c35afe834a76303fcbfd6e)
1OPENLIBM_HOME=$(abspath .)
2include ./Make.inc
3
4SUBDIRS = src $(ARCH) bsdsrc
5ifneq ($(ARCH), arm)
6ifneq ($(ARCH), powerpc)
7SUBDIRS += ld80
8endif
9endif
10
11define INC_template
12TEST=test
13override CUR_SRCS = $(1)_SRCS
14include $(1)/Make.files
15SRCS += $$(addprefix $(1)/,$$($(1)_SRCS))
16endef
17
18DIR=test
19
20$(foreach dir,$(SUBDIRS),$(eval $(call INC_template,$(dir))))
21
22DUPLICATE_NAMES = $(filter $(patsubst %.S,%,$($(ARCH)_SRCS)),$(patsubst %.c,%,$(src_SRCS)))
23DUPLICATE_SRCS = $(addsuffix .c,$(DUPLICATE_NAMES))
24
25OBJS =  $(patsubst %.f,%.f.o,\
26	$(patsubst %.S,%.S.o,\
27	$(patsubst %.c,%.c.o,$(filter-out $(addprefix src/,$(DUPLICATE_SRCS)),$(SRCS)))))
28
29.PHONY: all check test clean distclean install
30
31all: libopenlibm.a libopenlibm.$(SHLIB_EXT)
32
33check test: test/test-double test/test-float
34	test/test-double
35	test/test-float
36
37libopenlibm.a: $(OBJS)
38	$(AR) -rcs libopenlibm.a $(OBJS)
39
40libopenlibm.$(SHLIB_EXT): $(OBJS)
41ifeq ($(OS),WINNT)
42	$(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(SHLIB_EXT) -o libopenlibm.$(SHLIB_EXT)
43else
44	$(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(SHLIB_EXT).$(SOMAJOR) -o libopenlibm.$(SHLIB_EXT).$(SOMAJOR).$(SOMINOR)
45	ln -sf libopenlibm.$(SHLIB_EXT).$(SOMAJOR).$(SOMINOR) libopenlibm.$(SHLIB_EXT).$(SOMAJOR)
46	ln -sf libopenlibm.$(SHLIB_EXT).$(SOMAJOR).$(SOMINOR) libopenlibm.$(SHLIB_EXT)
47endif
48
49test/test-double: libopenlibm.$(SHLIB_EXT)
50	$(MAKE) -C test test-double
51
52test/test-float: libopenlibm.$(SHLIB_EXT)
53	$(MAKE) -C test test-float
54
55clean:
56	rm -f amd64/*.o arm/*.o bsdsrc/*.o i387/*.o ld128/*.o ld80/*.o src/*.o
57	rm -f libopenlibm.a libopenlibm.$(SHLIB_EXT)*
58	$(MAKE) -C test clean
59
60openlibm.pc: openlibm.pc.in Make.inc Makefile
61	echo "prefix=${prefix}" > openlibm.pc
62	echo "version=${VERSION}" >> openlibm.pc
63	cat openlibm.pc.in >> openlibm.pc
64
65install: all openlibm.pc
66	mkdir -p $(DESTDIR)$(shlibdir)
67	mkdir -p $(DESTDIR)$(libdir)/pkgconfig
68	mkdir -p $(DESTDIR)$(includedir)/openlibm
69	cp -f -a libopenlibm.$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
70	cp -f -a libopenlibm.a $(DESTDIR)$(libdir)/
71	cp -f -a include/openlibm*.h $(DESTDIR)$(includedir)/
72	cp -f -a openlibm.pc $(DESTDIR)$(libdir)/pkgconfig/
73