xref: /relibc/openlibm/Makefile (revision c21453060db2ab500fd7445ef913bb85de54f9c7)
1307d7361SKeno FischerOPENLIBM_HOME=$(abspath .)
2ccd319c0SViral B. Shahinclude ./Make.inc
3ccd319c0SViral B. Shah
4f22d7db1SThomas LeonardSUBDIRS = src $(ARCH) bsdsrc
5*c2145306SElliot Saba# Add ld80 directory on x86 and x64
6*c2145306SElliot Sabaifneq ($(filter $(ARCH),i387 amd64),)
7f22d7db1SThomas LeonardSUBDIRS += ld80
8f22d7db1SThomas Leonardendif
9307d7361SKeno Fischer
10307d7361SKeno Fischerdefine INC_template
11307d7361SKeno FischerTEST=test
12307d7361SKeno Fischeroverride CUR_SRCS = $(1)_SRCS
13307d7361SKeno Fischerinclude $(1)/Make.files
14307d7361SKeno FischerSRCS += $$(addprefix $(1)/,$$($(1)_SRCS))
15307d7361SKeno Fischerendef
16307d7361SKeno Fischer
17307d7361SKeno FischerDIR=test
18307d7361SKeno Fischer
19307d7361SKeno Fischer$(foreach dir,$(SUBDIRS),$(eval $(call INC_template,$(dir))))
20307d7361SKeno Fischer
21307d7361SKeno FischerDUPLICATE_NAMES = $(filter $(patsubst %.S,%,$($(ARCH)_SRCS)),$(patsubst %.c,%,$(src_SRCS)))
22307d7361SKeno FischerDUPLICATE_SRCS = $(addsuffix .c,$(DUPLICATE_NAMES))
23307d7361SKeno Fischer
24e8bf3685SViral B. ShahOBJS =  $(patsubst %.f,%.f.o,\
25e8bf3685SViral B. Shah	$(patsubst %.S,%.S.o,\
26e8bf3685SViral B. Shah	$(patsubst %.c,%.c.o,$(filter-out $(addprefix src/,$(DUPLICATE_SRCS)),$(SRCS)))))
2756811b08SViral B. Shah
286708c96bSTracy Wadleigh# If we're on windows, don't do versioned shared libraries. Also, generate an import library
296708c96bSTracy Wadleigh# for the DLL. If we're on OSX, put the version number before the .dylib.  Otherwise,
306708c96bSTracy Wadleigh# put it after.
314d0bc523SElliot Sabaifeq ($(OS), WINNT)
324d0bc523SElliot SabaOLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT)
336708c96bSTracy WadleighLDFLAGS_add += -Wl,--out-implib,libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT).a
344d0bc523SElliot Sabaelse
354d0bc523SElliot Sabaifeq ($(OS), Darwin)
364d0bc523SElliot SabaOLM_MAJOR_MINOR_SHLIB_EXT := $(SOMAJOR).$(SOMINOR).$(SHLIB_EXT)
374d0bc523SElliot SabaOLM_MAJOR_SHLIB_EXT := $(SOMAJOR).$(SHLIB_EXT)
384d0bc523SElliot Sabaelse
394d0bc523SElliot SabaOLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR).$(SOMINOR)
404d0bc523SElliot SabaOLM_MAJOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR)
414d0bc523SElliot Sabaendif
424d0bc523SElliot Sabaendif
434d0bc523SElliot Saba
444002a91aSArjen Roodselaar.PHONY: all check test clean distclean \
454002a91aSArjen Roodselaar	install install-static install-shared install-pkgconfig install-headers
46bab41fc5SPeter Colberg
474d0bc523SElliot Sabaall: libopenlibm.a libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
48bab41fc5SPeter Colberg
49bab41fc5SPeter Colbergcheck test: test/test-double test/test-float
50bab41fc5SPeter Colberg	test/test-double
51bab41fc5SPeter Colberg	test/test-float
52bab41fc5SPeter Colberg
53307d7361SKeno Fischerlibopenlibm.a: $(OBJS)
5407085279SJameson Nash	$(AR) -rcs libopenlibm.a $(OBJS)
55bab41fc5SPeter Colberg
564d0bc523SElliot Sabalibopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT): $(OBJS)
574d0bc523SElliot Saba	$(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(OLM_MAJOR_SHLIB_EXT) -o $@
584d0bc523SElliot Sabaifneq ($(OS),WINNT)
594d0bc523SElliot Saba	ln -sf $@ libopenlibm.$(OLM_MAJOR_SHLIB_EXT)
604d0bc523SElliot Saba	ln -sf $@ libopenlibm.$(SHLIB_EXT)
61716317b7STony Kelmanendif
62ccd319c0SViral B. Shah
634d0bc523SElliot Sabatest/test-double: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
64bab41fc5SPeter Colberg	$(MAKE) -C test test-double
65bab41fc5SPeter Colberg
664d0bc523SElliot Sabatest/test-float: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
67bab41fc5SPeter Colberg	$(MAKE) -C test test-float
68bab41fc5SPeter Colberg
69d28fae97SViral B. Shahclean:
70*c2145306SElliot Saba	rm -f aarch64/*.o amd64/*.o arm/*.o bsdsrc/*.o i387/*.o ld80/*.o ld128/*.o src/*.o powerpc/*.o
714d0bc523SElliot Saba	rm -f libopenlibm.a libopenlibm.*$(SHLIB_EXT)*
720aef1f70SPeter Colberg	$(MAKE) -C test clean
7371d942f7SViral B. Shah
745b16546dSThomas Leonardopenlibm.pc: openlibm.pc.in Make.inc Makefile
755b16546dSThomas Leonard	echo "prefix=${prefix}" > openlibm.pc
765b16546dSThomas Leonard	echo "version=${VERSION}" >> openlibm.pc
775b16546dSThomas Leonard	cat openlibm.pc.in >> openlibm.pc
785b16546dSThomas Leonard
794002a91aSArjen Roodselaarinstall-static: libopenlibm.a
804002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(libdir)
81619f8102STony Kelman	cp -f -a libopenlibm.a $(DESTDIR)$(libdir)/
824002a91aSArjen Roodselaar
834002a91aSArjen Roodselaarinstall-shared: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
844002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(shlibdir)
854002a91aSArjen Roodselaar	cp -f -a libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
864002a91aSArjen Roodselaar
874002a91aSArjen Roodselaarinstall-pkgconfig: openlibm.pc
884002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(pkgconfigdir)
894002a91aSArjen Roodselaar	cp -f -a openlibm.pc $(DESTDIR)$(pkgconfigdir)/
904002a91aSArjen Roodselaar
914002a91aSArjen Roodselaarinstall-headers:
924002a91aSArjen Roodselaar	mkdir -p $(DESTDIR)$(includedir)/openlibm
935840cef4SViral B. Shah	cp -f -a include/*.h $(DESTDIR)$(includedir)/openlibm
945840cef4SViral B. Shah	cp -f -a src/*.h $(DESTDIR)$(includedir)/openlibm
954002a91aSArjen Roodselaar
964002a91aSArjen Roodselaarinstall: install-static install-shared install-pkgconfig install-headers
97