* add msys2 ci job * run CI on any branch * install base-devel on msys2 * remove soname and nodefaultlibs flags from mingw * avoid soname on Windows * add OLM_DLLEXPORT to signgam it needs to be exported from the DLL also * define IMPORT_EXPORTS on WINNT While there are function export thunks in the import library that allow the linker to do the right thing for functions even if this is not set, it is required for the linker to do the right thing with variables being imported from a DLL (namely, signgam) * add OLM_DLLEXPORT to openlibm_fenv_i387.h seems this whole header was overlooked * Update openlibm_fenv_i387.h include openlibm_defs.h for OLM_DLLEXPORT
111 lines
3.1 KiB
Makefile
111 lines
3.1 KiB
Makefile
OPENLIBM_HOME=$(abspath .)
|
|
include ./Make.inc
|
|
|
|
SUBDIRS = src $(ARCH) bsdsrc
|
|
ifeq ($(LONG_DOUBLE_NOT_DOUBLE),1)
|
|
# Add ld80 directory on x86 and x64
|
|
ifneq ($(filter $(ARCH),i387 amd64),)
|
|
SUBDIRS += ld80
|
|
else
|
|
ifneq ($(filter $(ARCH),aarch64),)
|
|
SUBDIRS += ld128
|
|
else
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
define INC_template
|
|
TEST=test
|
|
override CUR_SRCS = $(1)_SRCS
|
|
include $(1)/Make.files
|
|
SRCS += $$(addprefix $(1)/,$$($(1)_SRCS))
|
|
endef
|
|
|
|
DIR=test
|
|
|
|
$(foreach dir,$(SUBDIRS),$(eval $(call INC_template,$(dir))))
|
|
|
|
DUPLICATE_NAMES = $(filter $(patsubst %.S,%,$($(ARCH)_SRCS)),$(patsubst %.c,%,$(src_SRCS)))
|
|
DUPLICATE_SRCS = $(addsuffix .c,$(DUPLICATE_NAMES))
|
|
|
|
OBJS = $(patsubst %.f,%.f.o,\
|
|
$(patsubst %.S,%.S.o,\
|
|
$(patsubst %.c,%.c.o,$(filter-out $(addprefix src/,$(DUPLICATE_SRCS)),$(SRCS)))))
|
|
|
|
# If we're on windows, don't do versioned shared libraries. Also, generate an import library
|
|
# for the DLL. If we're on OSX, put the version number before the .dylib. Otherwise,
|
|
# put it after.
|
|
ifeq ($(OS), WINNT)
|
|
OLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT)
|
|
LDFLAGS_add += -Wl,--out-implib,libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT).a
|
|
else
|
|
ifeq ($(OS), Darwin)
|
|
OLM_MAJOR_MINOR_SHLIB_EXT := $(SOMAJOR).$(SOMINOR).$(SHLIB_EXT)
|
|
OLM_MAJOR_SHLIB_EXT := $(SOMAJOR).$(SHLIB_EXT)
|
|
else
|
|
OLM_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR).$(SOMINOR)
|
|
OLM_MAJOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR)
|
|
endif
|
|
LDFLAGS_add += -Wl,$(SONAME_FLAG),libopenlibm.$(OLM_MAJOR_SHLIB_EXT)
|
|
endif
|
|
|
|
.PHONY: all check test clean distclean \
|
|
install install-static install-shared install-pkgconfig install-headers
|
|
|
|
|
|
OLM_LIBS := libopenlibm.a
|
|
ifneq ($(ARCH), wasm32)
|
|
OLM_LIBS += libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
|
|
endif
|
|
|
|
all : $(OLM_LIBS)
|
|
|
|
check test: test/test-double test/test-float
|
|
test/test-double
|
|
test/test-float
|
|
|
|
libopenlibm.a: $(OBJS)
|
|
$(AR) -rcs libopenlibm.a $(OBJS)
|
|
|
|
libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT): $(OBJS)
|
|
$(CC) -shared $(OBJS) $(LDFLAGS) $(LDFLAGS_add) -o $@
|
|
ifneq ($(OS),WINNT)
|
|
ln -sf $@ libopenlibm.$(OLM_MAJOR_SHLIB_EXT)
|
|
ln -sf $@ libopenlibm.$(SHLIB_EXT)
|
|
endif
|
|
|
|
test/test-double: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
|
|
$(MAKE) -C test test-double
|
|
|
|
test/test-float: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
|
|
$(MAKE) -C test test-float
|
|
|
|
clean:
|
|
rm -f aarch64/*.o amd64/*.o arm/*.o bsdsrc/*.o i387/*.o ld80/*.o ld128/*.o src/*.o powerpc/*.o mips/*.o s390/*.o
|
|
rm -f libopenlibm.a libopenlibm.*$(SHLIB_EXT)*
|
|
$(MAKE) -C test clean
|
|
|
|
openlibm.pc: openlibm.pc.in Make.inc Makefile
|
|
echo "prefix=${prefix}" > openlibm.pc
|
|
echo "version=${VERSION}" >> openlibm.pc
|
|
cat openlibm.pc.in >> openlibm.pc
|
|
|
|
install-static: libopenlibm.a
|
|
mkdir -p $(DESTDIR)$(libdir)
|
|
cp -RpP -f libopenlibm.a $(DESTDIR)$(libdir)/
|
|
|
|
install-shared: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
|
|
mkdir -p $(DESTDIR)$(shlibdir)
|
|
cp -RpP -f libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
|
|
|
|
install-pkgconfig: openlibm.pc
|
|
mkdir -p $(DESTDIR)$(pkgconfigdir)
|
|
cp -RpP -f openlibm.pc $(DESTDIR)$(pkgconfigdir)/
|
|
|
|
install-headers:
|
|
mkdir -p $(DESTDIR)$(includedir)/openlibm
|
|
cp -RpP -f include/*.h $(DESTDIR)$(includedir)/openlibm
|
|
cp -RpP -f src/*.h $(DESTDIR)$(includedir)/openlibm
|
|
|
|
install: install-static install-shared install-pkgconfig install-headers
|