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 27.PHONY: all check test clean distclean install 28 29all: libopenlibm.a libopenlibm.$(SHLIB_EXT) 30 31check test: test/test-double test/test-float 32 test/test-double 33 test/test-float 34 35libopenlibm.a: $(OBJS) 36 $(AR) -rcs libopenlibm.a $(OBJS) 37 38libopenlibm.$(SHLIB_EXT): $(OBJS) 39ifeq ($(OS),WINNT) 40 $(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(SHLIB_EXT) -o libopenlibm.$(SHLIB_EXT) 41else 42 $(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -Wl,$(SONAME_FLAG),libopenlibm.$(SHLIB_EXT).$(SOMAJOR) -o libopenlibm.$(SHLIB_EXT).$(SOMAJOR).$(SOMINOR) 43 @-ln -sf libopenlibm.$(SHLIB_EXT).$(SOMAJOR).$(SOMINOR) libopenlibm.$(SHLIB_EXT).$(SOMAJOR) 44 @-ln -sf libopenlibm.$(SHLIB_EXT).$(SOMAJOR).$(SOMINOR) libopenlibm.$(SHLIB_EXT) 45endif 46 47test/test-double: libopenlibm.$(SHLIB_EXT) 48 $(MAKE) -C test test-double 49 50test/test-float: libopenlibm.$(SHLIB_EXT) 51 $(MAKE) -C test test-float 52 53clean: 54 @for dir in $(SUBDIRS) .; do \ 55 rm -fr $$dir/*.o $$dir/*.a $$dir/*.$(SHLIB_EXT)*; \ 56 done 57 @rm -f test/test-double test/test-float 58 59distclean: 60 -rm -f $(OBJS) *.a *.$(SHLIB_EXT) libopenlibm.* 61 -$(MAKE) -C test clean 62 63openlibm.pc: openlibm.pc.in Make.inc Makefile 64 echo "prefix=${prefix}" > openlibm.pc 65 echo "version=${VERSION}" >> openlibm.pc 66 cat openlibm.pc.in >> openlibm.pc 67 68install: all openlibm.pc 69 mkdir -p $(DESTDIR)$(shlibdir) 70 mkdir -p $(DESTDIR)$(libdir)/pkgconfig 71 mkdir -p $(DESTDIR)$(includedir)/openlibm 72 cp -f -a libopenlibm.$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/ 73 cp -f -a libopenlibm.a $(DESTDIR)$(libdir)/ 74 cp -f -a include/openlibm*.h $(DESTDIR)$(includedir)/ 75 cp -f -a openlibm.pc $(DESTDIR)$(libdir)/pkgconfig/ 76