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)$(pkgconfigdir) 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/*.h $(DESTDIR)$(includedir)/openlibm 72 cp -f -a src/*.h $(DESTDIR)$(includedir)/openlibm 73 cp -f -a openlibm.pc $(DESTDIR)$(pkgconfigdir)/ 74