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# If we're on windows, don't do versioned shared libraries. Also, generate an import library 30# for the DLL. If we're on OSX, put the version number before the .dylib. Otherwise, 31# put it after. 32ifeq ($(OS), WINNT) 33OLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT) 34LDFLAGS_add += -Wl,--out-implib,libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT).a 35else 36ifeq ($(OS), Darwin) 37OLM_MAJOR_MINOR_SHLIB_EXT := $(SOMAJOR).$(SOMINOR).$(SHLIB_EXT) 38OLM_MAJOR_SHLIB_EXT := $(SOMAJOR).$(SHLIB_EXT) 39else 40OLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR).$(SOMINOR) 41OLM_MAJOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR) 42endif 43endif 44 45.PHONY: all check test clean distclean \ 46 install install-static install-shared install-pkgconfig install-headers 47 48all: libopenlibm.a libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT) 49 50check test: test/test-double test/test-float 51 test/test-double 52 test/test-float 53 54libopenlibm.a: $(OBJS) 55 $(AR) -rcs libopenlibm.a $(OBJS) 56 57libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT): $(OBJS) 58 $(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(OLM_MAJOR_SHLIB_EXT) -o $@ 59ifneq ($(OS),WINNT) 60 ln -sf $@ libopenlibm.$(OLM_MAJOR_SHLIB_EXT) 61 ln -sf $@ libopenlibm.$(SHLIB_EXT) 62endif 63 64test/test-double: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT) 65 $(MAKE) -C test test-double 66 67test/test-float: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT) 68 $(MAKE) -C test test-float 69 70clean: 71 rm -f amd64/*.o arm/*.o bsdsrc/*.o i387/*.o ld128/*.o ld80/*.o src/*.o 72 rm -f libopenlibm.a libopenlibm.*$(SHLIB_EXT)* 73 $(MAKE) -C test clean 74 75openlibm.pc: openlibm.pc.in Make.inc Makefile 76 echo "prefix=${prefix}" > openlibm.pc 77 echo "version=${VERSION}" >> openlibm.pc 78 cat openlibm.pc.in >> openlibm.pc 79 80install-static: libopenlibm.a 81 mkdir -p $(DESTDIR)$(libdir) 82 cp -f -a libopenlibm.a $(DESTDIR)$(libdir)/ 83 84install-shared: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT) 85 mkdir -p $(DESTDIR)$(shlibdir) 86 cp -f -a libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/ 87 88install-pkgconfig: openlibm.pc 89 mkdir -p $(DESTDIR)$(pkgconfigdir) 90 cp -f -a openlibm.pc $(DESTDIR)$(pkgconfigdir)/ 91 92install-headers: 93 mkdir -p $(DESTDIR)$(includedir)/openlibm 94 cp -f -a include/*.h $(DESTDIR)$(includedir)/openlibm 95 cp -f -a src/*.h $(DESTDIR)$(includedir)/openlibm 96 97install: install-static install-shared install-pkgconfig install-headers 98