libxlsxwriter/src/Makefile in fast_excel-0.4.1 vs libxlsxwriter/src/Makefile in fast_excel-0.5.0
- old
+ new
@@ -1,18 +1,25 @@
###############################################################################
#
# Makefile for libxlsxwriter library.
#
-# Copyright 2014-2019, John McNamara, jmcnamara@cpan.org
+# Copyright 2014-2022, John McNamara, jmcnamara@cpan.org
#
# Keep the output quiet by default.
Q=@
ifdef V
Q=
endif
+DESTDIR ?=
+PREFIX ?= /usr/local
+OPT_LEVEL ?= -O3
+
+SOVERSION = $(shell sed -n -e 's/.*LXW_SOVERSION \"\(.*\)\"/\1/p' ../include/xlsxwriter.h)
+
+
# Directory variables.
OBJS_DIR = .
INC_DIR = ../include
LIBS = -lz
@@ -25,66 +32,86 @@
MINIZIP_DIR = ../third_party/minizip
MINIZIP_OBJ = $(MINIZIP_DIR)/ioapi.o $(MINIZIP_DIR)/zip.o
MINIZIP_SO = $(MINIZIP_DIR)/ioapi.so $(MINIZIP_DIR)/zip.so
endif
-
ifdef USE_STANDARD_TMPFILE
# Use standard/C tmpfile().
CFLAGS += -DUSE_STANDARD_TMPFILE
else
# Use tmpfileplus (the default).
TMPFILEPLUS_DIR = ../third_party/tmpfileplus
TMPFILEPLUS_OBJ = $(TMPFILEPLUS_DIR)/tmpfileplus.o
TMPFILEPLUS_SO = $(TMPFILEPLUS_DIR)/tmpfileplus.so
endif
+ifdef USE_NO_MD5
+# Don't use MD5 to avoid duplicate image files.
+CFLAGS += -DUSE_NO_MD5
+else
+ifdef USE_OPENSSL_MD5
+CFLAGS += -DUSE_OPENSSL_MD5 -Wno-deprecated-declarations
+LIBS += -lcrypto
+else
+# Use md5 (the default).
+MD5_DIR = ../third_party/md5
+MD5_OBJ = $(MD5_DIR)/md5.o
+MD5_SO = $(MD5_DIR)/md5.so
+endif
+endif
+
# Set flag for big endian architecture.
ifdef USE_BIG_ENDIAN
CFLAGS += -DLXW_BIG_ENDIAN
endif
-# Use a user-defined double number formatting function.
-ifdef USE_DOUBLE_FUNCTION
-CFLAGS += -DUSE_DOUBLE_FUNCTION
+# Use a third party double number formatting function.
+ifdef USE_DTOA_LIBRARY
+CFLAGS += -DUSE_DTOA_LIBRARY
+DTOA_LIB_DIR = ../third_party/dtoa
+DTOA_LIB_OBJ = $(DTOA_LIB_DIR)/emyg_dtoa.o
+DTOA_LIB_SO = $(DTOA_LIB_DIR)/emyg_dtoa.so
endif
-# Flags passed to compiler.
-CFLAGS += -g -O3 -Wall -Wextra -pedantic -ansi
+# Use fmemopen()/open_memstream() to avoid creating temporary files
+ifdef USE_MEM_FILE
+USE_FMEMOPEN = 1
+endif
-# Fix for modified zconf.h on Gentoo.
-ifneq (,$(findstring gentoo, $(shell uname -sr)))
-CFLAGS += -DOF=_Z_OF
+ifdef USE_FMEMOPEN
+CFLAGS += -DUSE_FMEMOPEN
endif
+# Flags passed to compiler.
+CFLAGS += -g $(OPT_LEVEL) -Wall -Wextra -Wstrict-prototypes -pedantic -ansi
# Ignore icc remarks about inlining limits.
ifeq ($(CC),icc)
CFLAGS +=-diag-disable=11074,11076
endif
# Library names.
LIBXLSXWRITER_A = libxlsxwriter.a
-LIBXLSXWRITER_SO = libxlsxwriter.so
+LIBXLSXWRITER_SO = libxlsxwriter.so.$(SOVERSION)
# Library with additional non-static functions for testing.
LIBXLSXWRITER_TO = libxlsxwriter_test.a
# Flags passed to static linker.
ARFLAGS = rc
# Flags passed to dynamic linker.
FPIC = -fPIC
-SOFLAGS = -shared $(FPIC)
+SOFLAGS = -shared $(FPIC) -Wl,-soname,$(LIBXLSXWRITER_SO)
# Get Env/OS name.
UNAME := $(shell uname)
# Change make options on OS X.
ifeq ($(UNAME), Darwin)
-LIBXLSXWRITER_SO = libxlsxwriter.dylib
-SOFLAGS = -dynamiclib $(FPIC) -install_name /usr/lib/$(LIBXLSXWRITER_SO)
+LIBXLSXWRITER_SO = libxlsxwriter.$(SOVERSION).dylib
+SOFLAGS = -dynamiclib $(FPIC) -compatibility_version $(SOVERSION) -install_name $(PREFIX)/lib/$(LIBXLSXWRITER_SO) $(GCOV)
endif
# Check for MinGW/MinGW64/Cygwin environments.
ifneq (,$(findstring MINGW, $(UNAME)))
MING_LIKE = y
@@ -116,40 +143,50 @@
# Build the object files and the libraries.
all : $(LIBXLSXWRITER_A) $(LIBXLSXWRITER_SO)
$(Q)cp $(LIBXLSXWRITER_A) $(LIBXLSXWRITER_SO) ../lib
+ifeq ($(UNAME), Darwin)
+ $(Q)rm -f ../lib/libxlsxwriter.dylib
+ $(Q)ln -s $(LIBXLSXWRITER_SO) ../lib/libxlsxwriter.dylib
+endif
+
+ifneq ($(UNAME), Darwin)
+ $(Q)rm -f ../lib/libxlsxwriter.so
+ $(Q)ln -s $(LIBXLSXWRITER_SO) ../lib/libxlsxwriter.so
+endif
+
test_lib : libxlsxwriter_test.a
# The static library.
$(LIBXLSXWRITER_A) : $(OBJS)
- $(Q)$(AR) $(ARFLAGS) $@ $(MINIZIP_OBJ) $(TMPFILEPLUS_OBJ) $^
+ $(Q)$(AR) $(ARFLAGS) $@ $(MINIZIP_OBJ) $(TMPFILEPLUS_OBJ) $(DTOA_LIB_OBJ) $(MD5_OBJ) $^
# The dynamic library.
ifeq ($(findstring m32,$(CFLAGS)),m32)
ARCH = -m32
endif
$(LIBXLSXWRITER_SO) : $(SOBJS)
- $(Q)$(CC) $(LDFLAGS) $(SOFLAGS) $(ARCH) -o $@ $(MINIZIP_SO) $(TMPFILEPLUS_SO) $^ $(LIBS)
+ $(Q)$(CC) $(LDFLAGS) $(SOFLAGS) $(ARCH) $(TARGET_ARCH) -o $@ $(MINIZIP_SO) $(TMPFILEPLUS_SO) $(MD5_SO) $(DTOA_LIB_SO) $^ $(LIBS)
# The test library.
$(LIBXLSXWRITER_TO) : $(TOBJS)
- $(Q)$(AR) $(ARFLAGS) $@ $(MINIZIP_OBJ) $(TMPFILEPLUS_OBJ) $^
+ $(Q)$(AR) $(ARFLAGS) $@ $(MINIZIP_OBJ) $(TMPFILEPLUS_OBJ) $(DTOA_LIB_SO) $(MD5_OBJ) $^
# Minimal target for quick compile without creating the libs.
test_compile : $(OBJS)
# Targets for the object files.
%.o : %.c $(HDRS)
- $(Q)$(CC) -I$(INC_DIR) $(CFLAGS) $(CXXFLAGS) -c $<
+ $(Q)$(CC) -I$(INC_DIR) $(CFLAGS) $(CXXFLAGS) $(TARGET_ARCH) $(GCOV) -c $<
%.so : %.c $(HDRS)
- $(Q)$(CC) $(FPIC) -I$(INC_DIR) $(LDFLAGS) $(CFLAGS) $(CXXFLAGS) -c $< -o $@
+ $(Q)$(CC) $(FPIC) -I$(INC_DIR) $(CFLAGS) $(CXXFLAGS) $(TARGET_ARCH) $(GCOV) -c $< -o $@
%.to : %.c $(HDRS)
- $(Q)$(CC) -g -O3 -DTESTING -I$(INC_DIR) $(CFLAGS) $(CXXFLAGS) -c $< -o $@
+ $(Q)$(CC) -g $(OPT_LEVEL) -DTESTING -I$(INC_DIR) $(CFLAGS) $(CXXFLAGS) $(GCOV) -c $< -o $@
# Clean up any temp/build files.
clean :
- $(Q)rm -f *.o *.a *.so *.to *.dylib *.dll
+ $(Q)rm -f *.o *.a *.so *.so.* *.to *.dylib *.dll *.gcno *.gcda