@@ -24,7 +24,8 @@ abs_objroot := @abs_objroot@
2424
2525# Build parameters.
2626CPPFLAGS := @CPPFLAGS@ -I$(srcroot ) include -I$(objroot ) include
27- CFLAGS := @CFLAGS@
27+ EXTRA_CFLAGS := @EXTRA_CFLAGS@
28+ CFLAGS := @CFLAGS@ $(EXTRA_CFLAGS )
2829LDFLAGS := @LDFLAGS@
2930EXTRA_LDFLAGS := @EXTRA_LDFLAGS@
3031LIBS := @LIBS@
@@ -52,15 +53,19 @@ enable_prof := @enable_prof@
5253enable_valgrind := @enable_valgrind@
5354enable_zone_allocator := @enable_zone_allocator@
5455MALLOC_CONF := @JEMALLOC_CPREFIX@MALLOC_CONF
56+ link_whole_archive := @link_whole_archive@
5557DSO_LDFLAGS = @DSO_LDFLAGS@
5658SOREV = @SOREV@
5759PIC_CFLAGS = @PIC_CFLAGS@
5860CTARGET = @CTARGET@
5961LDTARGET = @LDTARGET@
62+ TEST_LD_MODE = @TEST_LD_MODE@
6063MKLIB = @MKLIB@
6164AR = @AR@
6265ARFLAGS = @ARFLAGS@
6366CC_MM = @CC_MM@
67+ LM := @LM@
68+ INSTALL = @INSTALL@
6469
6570ifeq (macho, $(ABI ) )
6671TEST_LIBRARY_PATH := DYLD_FALLBACK_LIBRARY_PATH="$(objroot ) lib"
@@ -99,6 +104,7 @@ C_SRCS := $(srcroot)src/jemalloc.c \
99104 $(srcroot ) src/quarantine.c \
100105 $(srcroot ) src/rtree.c \
101106 $(srcroot ) src/stats.c \
107+ $(srcroot ) src/spin.c \
102108 $(srcroot ) src/tcache.c \
103109 $(srcroot ) src/ticker.c \
104110 $(srcroot ) src/tsd.c \
@@ -122,6 +128,11 @@ DSOS := $(objroot)lib/$(LIBJEMALLOC).$(SOREV)
122128ifneq ($(SOREV ) ,$(SO ) )
123129DSOS += $(objroot ) lib/$(LIBJEMALLOC ) .$(SO )
124130endif
131+ ifeq (1, $(link_whole_archive ) )
132+ LJEMALLOC := -Wl,--whole-archive -L$(objroot ) lib -l$(LIBJEMALLOC ) -Wl,--no-whole-archive
133+ else
134+ LJEMALLOC := $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB )
135+ endif
125136PC := $(objroot ) jemalloc.pc
126137MAN3 := $(objroot ) doc/jemalloc$(install_suffix ) .3
127138DOCS_XML := $(objroot ) doc/jemalloc$(install_suffix ) .xml
@@ -133,7 +144,11 @@ C_TESTLIB_SRCS := $(srcroot)test/src/btalloc.c $(srcroot)test/src/btalloc_0.c \
133144 $(srcroot ) test/src/mtx.c $(srcroot ) test/src/mq.c \
134145 $(srcroot ) test/src/SFMT.c $(srcroot ) test/src/test.c \
135146 $(srcroot ) test/src/thd.c $(srcroot ) test/src/timer.c
147+ ifeq (1, $(link_whole_archive ) )
148+ C_UTIL_INTEGRATION_SRCS :=
149+ else
136150C_UTIL_INTEGRATION_SRCS := $(srcroot ) src/nstime.c $(srcroot ) src/util.c
151+ endif
137152TESTS_UNIT := \
138153 $(srcroot ) test/unit/a0.c \
139154 $(srcroot ) test/unit/arena_reset.c \
@@ -295,69 +310,69 @@ $(STATIC_LIBS):
295310
296311$(objroot ) test/unit/% $(EXE ) : $(objroot ) test/unit/% .$(O ) $(TESTS_UNIT_LINK_OBJS ) $(C_JET_OBJS ) $(C_TESTLIB_UNIT_OBJS )
297312 @mkdir -p $(@D )
298- $(CC ) $(LDTARGET ) $(filter % .$(O ) ,$^ ) $(call RPATH,$(objroot ) lib) $(LDFLAGS ) $(filter-out -lm,$(LIBS ) ) -lm $(EXTRA_LDFLAGS )
313+ $(CC ) $(LDTARGET ) $(filter % .$(O ) ,$^ ) $(call RPATH,$(objroot ) lib) $(LDFLAGS ) $(filter-out -lm,$(LIBS ) ) $( LM ) $(EXTRA_LDFLAGS )
299314
300315$(objroot ) test/integration/% $(EXE ) : $(objroot ) test/integration/% .$(O ) $(C_TESTLIB_INTEGRATION_OBJS ) $(C_UTIL_INTEGRATION_OBJS ) $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB )
301316 @mkdir -p $(@D )
302- $(CC ) $(LDTARGET ) $(filter % .$(O ) ,$^ ) $(call RPATH,$(objroot ) lib) $(objroot ) lib/ $( LIBJEMALLOC ) . $( IMPORTLIB ) $(LDFLAGS ) $(filter-out -lm,$(filter -lpthread,$(LIBS ) ) ) -lm $(EXTRA_LDFLAGS )
317+ $(CC ) $(TEST_LD_MODE ) $( LDTARGET ) $(filter % .$(O ) ,$^ ) $(call RPATH,$(objroot ) lib) $(LJEMALLOC ) $(LDFLAGS ) $(filter-out -lm,$(filter -lrt - lpthread,$(LIBS ) ) ) $( LM ) $(EXTRA_LDFLAGS )
303318
304319$(objroot ) test/stress/% $(EXE ) : $(objroot ) test/stress/% .$(O ) $(C_JET_OBJS ) $(C_TESTLIB_STRESS_OBJS ) $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB )
305320 @mkdir -p $(@D )
306- $(CC ) $(LDTARGET ) $(filter % .$(O ) ,$^ ) $(call RPATH,$(objroot ) lib) $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB ) $(LDFLAGS ) $(filter-out -lm,$(LIBS ) ) -lm $(EXTRA_LDFLAGS )
321+ $(CC ) $(TEST_LD_MODE ) $( LDTARGET ) $(filter % .$(O ) ,$^ ) $(call RPATH,$(objroot ) lib) $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB ) $(LDFLAGS ) $(filter-out -lm,$(LIBS ) ) $( LM ) $(EXTRA_LDFLAGS )
307322
308323build_lib_shared : $(DSOS )
309324build_lib_static : $(STATIC_LIBS )
310325build_lib : build_lib_shared build_lib_static
311326
312327install_bin :
313- install -d $(BINDIR )
328+ $( INSTALL ) -d $(BINDIR )
314329 @for b in $(BINS ) ; do \
315- echo " install -m 755 $$ b $( BINDIR) " ; \
316- install -m 755 $$ b $(BINDIR ) ; \
330+ echo " $( INSTALL ) -m 755 $$ b $( BINDIR) " ; \
331+ $( INSTALL ) -m 755 $$ b $(BINDIR ) ; \
317332done
318333
319334install_include :
320- install -d $(INCLUDEDIR ) /jemalloc
335+ $( INSTALL ) -d $(INCLUDEDIR ) /jemalloc
321336 @for h in $(C_HDRS ) ; do \
322- echo " install -m 644 $$ h $( INCLUDEDIR) /jemalloc" ; \
323- install -m 644 $$ h $(INCLUDEDIR ) /jemalloc; \
337+ echo " $( INSTALL ) -m 644 $$ h $( INCLUDEDIR) /jemalloc" ; \
338+ $( INSTALL ) -m 644 $$ h $(INCLUDEDIR ) /jemalloc; \
324339done
325340
326341install_lib_shared : $(DSOS )
327- install -d $(LIBDIR )
328- install -m 755 $(objroot ) lib/$(LIBJEMALLOC ) .$(SOREV ) $(LIBDIR )
342+ $( INSTALL ) -d $(LIBDIR )
343+ $( INSTALL ) -m 755 $(objroot ) lib/$(LIBJEMALLOC ) .$(SOREV ) $(LIBDIR )
329344ifneq ($(SOREV ) ,$(SO ) )
330345 ln -sf $(LIBJEMALLOC).$(SOREV) $(LIBDIR)/$(LIBJEMALLOC).$(SO)
331346endif
332347
333348install_lib_static : $(STATIC_LIBS )
334- install -d $(LIBDIR )
349+ $( INSTALL ) -d $(LIBDIR )
335350 @for l in $(STATIC_LIBS ) ; do \
336- echo " install -m 755 $$ l $( LIBDIR) " ; \
337- install -m 755 $$ l $(LIBDIR ) ; \
351+ echo " $( INSTALL ) -m 755 $$ l $( LIBDIR) " ; \
352+ $( INSTALL ) -m 755 $$ l $(LIBDIR ) ; \
338353done
339354
340355install_lib_pc : $(PC )
341- install -d $(LIBDIR ) /pkgconfig
356+ $( INSTALL ) -d $(LIBDIR ) /pkgconfig
342357 @for l in $(PC ) ; do \
343- echo " install -m 644 $$ l $( LIBDIR) /pkgconfig" ; \
344- install -m 644 $$ l $(LIBDIR ) /pkgconfig; \
358+ echo " $( INSTALL ) -m 644 $$ l $( LIBDIR) /pkgconfig" ; \
359+ $( INSTALL ) -m 644 $$ l $(LIBDIR ) /pkgconfig; \
345360done
346361
347362install_lib : install_lib_shared install_lib_static install_lib_pc
348363
349364install_doc_html :
350- install -d $(DATADIR ) /doc/jemalloc$(install_suffix )
365+ $( INSTALL ) -d $(DATADIR ) /doc/jemalloc$(install_suffix )
351366 @for d in $(DOCS_HTML ) ; do \
352- echo " install -m 644 $$ d $( DATADIR) /doc/jemalloc$( install_suffix) " ; \
353- install -m 644 $$ d $(DATADIR ) /doc/jemalloc$(install_suffix ) ; \
367+ echo " $( INSTALL ) -m 644 $$ d $( DATADIR) /doc/jemalloc$( install_suffix) " ; \
368+ $( INSTALL ) -m 644 $$ d $(DATADIR ) /doc/jemalloc$(install_suffix ) ; \
354369done
355370
356371install_doc_man :
357- install -d $(MANDIR ) /man3
372+ $( INSTALL ) -d $(MANDIR ) /man3
358373 @for d in $(DOCS_MAN3 ) ; do \
359- echo " install -m 644 $$ d $( MANDIR) /man3" ; \
360- install -m 644 $$ d $(MANDIR ) /man3; \
374+ echo " $( INSTALL ) -m 644 $$ d $( MANDIR) /man3" ; \
375+ $( INSTALL ) -m 644 $$ d $(MANDIR ) /man3; \
361376done
362377
363378install_doc : install_doc_html install_doc_man
0 commit comments