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