xref: /relibc/openlibm/Makefile (revision 65d7406056d4bdd0ec0da05694364333c4d44331)
1307d7361SKeno FischerOPENLIBM_HOME=$(abspath .)
2ccd319c0SViral B. Shahinclude ./Make.inc
3ccd319c0SViral B. Shah
4f22d7db1SThomas LeonardSUBDIRS = src $(ARCH) bsdsrc
5c2145306SElliot Saba# Add ld80 directory on x86 and x64
6c2145306SElliot Sabaifneq ($(filter $(ARCH),i387 amd64),)
7f22d7db1SThomas LeonardSUBDIRS += ld80
8238a9095SYichao Yuelse
9238a9095SYichao Yuifneq ($(filter $(ARCH),aarch64),)
10238a9095SYichao YuSUBDIRS += ld128
11238a9095SYichao Yuelse
12238a9095SYichao Yuendif
13f22d7db1SThomas Leonardendif
14307d7361SKeno Fischer
15307d7361SKeno Fischerdefine INC_template
16307d7361SKeno FischerTEST=test
17307d7361SKeno Fischeroverride CUR_SRCS = $(1)_SRCS
18307d7361SKeno Fischerinclude $(1)/Make.files
19307d7361SKeno FischerSRCS += $$(addprefix $(1)/,$$($(1)_SRCS))
20307d7361SKeno Fischerendef
21307d7361SKeno Fischer
22307d7361SKeno FischerDIR=test
23307d7361SKeno Fischer
24307d7361SKeno Fischer$(foreach dir,$(SUBDIRS),$(eval $(call INC_template,$(dir))))
25307d7361SKeno Fischer
26307d7361SKeno FischerDUPLICATE_NAMES = $(filter $(patsubst %.S,%,$($(ARCH)_SRCS)),$(patsubst %.c,%,$(src_SRCS)))
27307d7361SKeno FischerDUPLICATE_SRCS = $(addsuffix .c,$(DUPLICATE_NAMES))
28307d7361SKeno Fischer
29e8bf3685SViral B. ShahOBJS =  $(patsubst %.f,%.f.o,\
30e8bf3685SViral B. Shah	$(patsubst %.S,%.S.o,\
31e8bf3685SViral B. Shah	$(patsubst %.c,%.c.o,$(filter-out $(addprefix src/,$(DUPLICATE_SRCS)),$(SRCS)))))
3256811b08SViral B. Shah
336708c96bSTracy Wadleigh# If we're on windows, don't do versioned shared libraries. Also, generate an import library
346708c96bSTracy Wadleigh# for the DLL. If we're on OSX, put the version number before the .dylib.  Otherwise,
356708c96bSTracy Wadleigh# put it after.
364d0bc523SElliot Sabaifeq ($(OS), WINNT)
374d0bc523SElliot SabaOLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT)
386708c96bSTracy WadleighLDFLAGS_add += -Wl,--out-implib,libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT).a
394d0bc523SElliot Sabaelse
404d0bc523SElliot Sabaifeq ($(OS), Darwin)
414d0bc523SElliot SabaOLM_MAJOR_MINOR_SHLIB_EXT := $(SOMAJOR).$(SOMINOR).$(SHLIB_EXT)
424d0bc523SElliot SabaOLM_MAJOR_SHLIB_EXT := $(SOMAJOR).$(SHLIB_EXT)
434d0bc523SElliot Sabaelse
444d0bc523SElliot SabaOLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR).$(SOMINOR)
454d0bc523SElliot SabaOLM_MAJOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR)
464d0bc523SElliot Sabaendif
474d0bc523SElliot Sabaendif
484d0bc523SElliot Saba
494002a91aSArjen Roodselaar.PHONY: all check test clean distclean \
504002a91aSArjen Roodselaar	install install-static install-shared install-pkgconfig install-headers
51bab41fc5SPeter Colberg
524d0bc523SElliot Sabaall: libopenlibm.a libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
53bab41fc5SPeter Colberg
54bab41fc5SPeter Colbergcheck test: test/test-double test/test-float
55bab41fc5SPeter Colberg	test/test-double
56bab41fc5SPeter Colberg	test/test-float
57bab41fc5SPeter Colberg
58307d7361SKeno Fischerlibopenlibm.a: $(OBJS)
5907085279SJameson Nash	$(AR) -rcs libopenlibm.a $(OBJS)
60bab41fc5SPeter Colberg
614d0bc523SElliot Sabalibopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT): $(OBJS)
624d0bc523SElliot Saba	$(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(OLM_MAJOR_SHLIB_EXT) -o $@
634d0bc523SElliot Sabaifneq ($(OS),WINNT)
644d0bc523SElliot Saba	ln -sf $@ libopenlibm.$(OLM_MAJOR_SHLIB_EXT)
654d0bc523SElliot Saba	ln -sf $@ libopenlibm.$(SHLIB_EXT)
66716317b7STony Kelmanendif
67ccd319c0SViral B. Shah
684d0bc523SElliot Sabatest/test-double: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
69bab41fc5SPeter Colberg	$(MAKE) -C test test-double
70bab41fc5SPeter Colberg
714d0bc523SElliot Sabatest/test-float: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
72bab41fc5SPeter Colberg	$(MAKE) -C test test-float
73bab41fc5SPeter Colberg
74d28fae97SViral B. Shahclean:
75*2a1e5685SDan Horák	rm -f aarch64/*.o amd64/*.o arm/*.o bsdsrc/*.o i387/*.o ld80/*.o ld128/*.o src/*.o powerpc/*.o mips/*.o s390/*.o
764d0bc523SElliot Saba	rm -f libopenlibm.a libopenlibm.*$(SHLIB_EXT)*
770aef1f70SPeter Colberg	$(MAKE) -C test clean
7871d942f7SViral B. Shah
795b16546dSThomas Leonardopenlibm.pc: openlibm.pc.in Make.inc Makefile
805b16546dSThomas Leonard	echo "prefix=${prefix}" > openlibm.pc
815b16546dSThomas Leonard	echo "version=${VERSION}" >> openlibm.pc
825b16546dSThomas Leonard	cat openlibm.pc.in >> openlibm.pc
835b16546dSThomas Leonard
844002a91aSArjen Roodselaarinstall-static: libopenlibm.a
854002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(libdir)
8648c6c2c2SAlex Arslan	cp -RpP -f libopenlibm.a $(DESTDIR)$(libdir)/
874002a91aSArjen Roodselaar
884002a91aSArjen Roodselaarinstall-shared: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
894002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(shlibdir)
9048c6c2c2SAlex Arslan	cp -RpP -f libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
914002a91aSArjen Roodselaar
924002a91aSArjen Roodselaarinstall-pkgconfig: openlibm.pc
934002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(pkgconfigdir)
9448c6c2c2SAlex Arslan	cp -RpP -f openlibm.pc $(DESTDIR)$(pkgconfigdir)/
954002a91aSArjen Roodselaar
964002a91aSArjen Roodselaarinstall-headers:
974002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(includedir)/openlibm
9848c6c2c2SAlex Arslan	cp -RpP -f include/*.h $(DESTDIR)$(includedir)/openlibm
9948c6c2c2SAlex Arslan	cp -RpP -f src/*.h $(DESTDIR)$(includedir)/openlibm
1004002a91aSArjen Roodselaar
1014002a91aSArjen Roodselaarinstall: install-static install-shared install-pkgconfig install-headers
102