@@ -24,7 +24,8 @@ abs_objroot := @abs_objroot@
24
24
25
25
# Build parameters.
26
26
CPPFLAGS := @CPPFLAGS@ -I$(srcroot ) include -I$(objroot ) include
27
- CFLAGS := @CFLAGS@
27
+ EXTRA_CFLAGS := @EXTRA_CFLAGS@
28
+ CFLAGS := @CFLAGS@ $(EXTRA_CFLAGS )
28
29
LDFLAGS := @LDFLAGS@
29
30
EXTRA_LDFLAGS := @EXTRA_LDFLAGS@
30
31
LIBS := @LIBS@
@@ -52,15 +53,19 @@ enable_prof := @enable_prof@
52
53
enable_valgrind := @enable_valgrind@
53
54
enable_zone_allocator := @enable_zone_allocator@
54
55
MALLOC_CONF := @JEMALLOC_CPREFIX@MALLOC_CONF
56
+ link_whole_archive := @link_whole_archive@
55
57
DSO_LDFLAGS = @DSO_LDFLAGS@
56
58
SOREV = @SOREV@
57
59
PIC_CFLAGS = @PIC_CFLAGS@
58
60
CTARGET = @CTARGET@
59
61
LDTARGET = @LDTARGET@
62
+ TEST_LD_MODE = @TEST_LD_MODE@
60
63
MKLIB = @MKLIB@
61
64
AR = @AR@
62
65
ARFLAGS = @ARFLAGS@
63
66
CC_MM = @CC_MM@
67
+ LM := @LM@
68
+ INSTALL = @INSTALL@
64
69
65
70
ifeq (macho, $(ABI ) )
66
71
TEST_LIBRARY_PATH := DYLD_FALLBACK_LIBRARY_PATH="$(objroot ) lib"
@@ -99,6 +104,7 @@ C_SRCS := $(srcroot)src/jemalloc.c \
99
104
$(srcroot ) src/quarantine.c \
100
105
$(srcroot ) src/rtree.c \
101
106
$(srcroot ) src/stats.c \
107
+ $(srcroot ) src/spin.c \
102
108
$(srcroot ) src/tcache.c \
103
109
$(srcroot ) src/ticker.c \
104
110
$(srcroot ) src/tsd.c \
@@ -122,6 +128,11 @@ DSOS := $(objroot)lib/$(LIBJEMALLOC).$(SOREV)
122
128
ifneq ($(SOREV ) ,$(SO ) )
123
129
DSOS += $(objroot ) lib/$(LIBJEMALLOC ) .$(SO )
124
130
endif
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
125
136
PC := $(objroot ) jemalloc.pc
126
137
MAN3 := $(objroot ) doc/jemalloc$(install_suffix ) .3
127
138
DOCS_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 \
133
144
$(srcroot ) test/src/mtx.c $(srcroot ) test/src/mq.c \
134
145
$(srcroot ) test/src/SFMT.c $(srcroot ) test/src/test.c \
135
146
$(srcroot ) test/src/thd.c $(srcroot ) test/src/timer.c
147
+ ifeq (1, $(link_whole_archive ) )
148
+ C_UTIL_INTEGRATION_SRCS :=
149
+ else
136
150
C_UTIL_INTEGRATION_SRCS := $(srcroot ) src/nstime.c $(srcroot ) src/util.c
151
+ endif
137
152
TESTS_UNIT := \
138
153
$(srcroot ) test/unit/a0.c \
139
154
$(srcroot ) test/unit/arena_reset.c \
@@ -295,69 +310,69 @@ $(STATIC_LIBS):
295
310
296
311
$(objroot ) test/unit/% $(EXE ) : $(objroot ) test/unit/% .$(O ) $(TESTS_UNIT_LINK_OBJS ) $(C_JET_OBJS ) $(C_TESTLIB_UNIT_OBJS )
297
312
@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 )
299
314
300
315
$(objroot ) test/integration/% $(EXE ) : $(objroot ) test/integration/% .$(O ) $(C_TESTLIB_INTEGRATION_OBJS ) $(C_UTIL_INTEGRATION_OBJS ) $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB )
301
316
@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 )
303
318
304
319
$(objroot ) test/stress/% $(EXE ) : $(objroot ) test/stress/% .$(O ) $(C_JET_OBJS ) $(C_TESTLIB_STRESS_OBJS ) $(objroot ) lib/$(LIBJEMALLOC ) .$(IMPORTLIB )
305
320
@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 )
307
322
308
323
build_lib_shared : $(DSOS )
309
324
build_lib_static : $(STATIC_LIBS )
310
325
build_lib : build_lib_shared build_lib_static
311
326
312
327
install_bin :
313
- install -d $(BINDIR )
328
+ $( INSTALL ) -d $(BINDIR )
314
329
@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 ) ; \
317
332
done
318
333
319
334
install_include :
320
- install -d $(INCLUDEDIR ) /jemalloc
335
+ $( INSTALL ) -d $(INCLUDEDIR ) /jemalloc
321
336
@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; \
324
339
done
325
340
326
341
install_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 )
329
344
ifneq ($(SOREV ) ,$(SO ) )
330
345
ln -sf $(LIBJEMALLOC).$(SOREV) $(LIBDIR)/$(LIBJEMALLOC).$(SO)
331
346
endif
332
347
333
348
install_lib_static : $(STATIC_LIBS )
334
- install -d $(LIBDIR )
349
+ $( INSTALL ) -d $(LIBDIR )
335
350
@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 ) ; \
338
353
done
339
354
340
355
install_lib_pc : $(PC )
341
- install -d $(LIBDIR ) /pkgconfig
356
+ $( INSTALL ) -d $(LIBDIR ) /pkgconfig
342
357
@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; \
345
360
done
346
361
347
362
install_lib : install_lib_shared install_lib_static install_lib_pc
348
363
349
364
install_doc_html :
350
- install -d $(DATADIR ) /doc/jemalloc$(install_suffix )
365
+ $( INSTALL ) -d $(DATADIR ) /doc/jemalloc$(install_suffix )
351
366
@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 ) ; \
354
369
done
355
370
356
371
install_doc_man :
357
- install -d $(MANDIR ) /man3
372
+ $( INSTALL ) -d $(MANDIR ) /man3
358
373
@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; \
361
376
done
362
377
363
378
install_doc : install_doc_html install_doc_man
0 commit comments