]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.0.0/test/build/gcc_and_gnumake/Makefile
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.0.0 / test / build / gcc_and_gnumake / Makefile
1 ##### paths #####
2 BINDIR     := ../../bin
3 OBJDIR     := ../../obj
4 SRCDIR     := ../../src
5 LIBINCDIRS := ../../../liblfds700/inc/
6 LIBBINDIRS := ../../../liblfds700/bin/
7
8 ##### misc #####
9 QUIETLY := 1>nul 2>nul
10
11 ##### sources, objects and libraries #####
12 BINNAME := test
13 BINARY  := $(BINDIR)/$(BINNAME)
14 SRCDIRS := .
15 SOURCES := main.c misc.c \
16            test_lfds700_btree_addonly_unbalanced.c test_lfds700_btree_addonly_unbalanced_alignment.c test_lfds700_btree_addonly_unbalanced_random_adds_fail.c test_lfds700_btree_addonly_unbalanced_random_adds_fail_and_overwrite.c test_lfds700_btree_addonly_unbalanced_random_adds_overwrite.c \
17            test_lfds700_freelist.c test_lfds700_freelist_alignment.c test_lfds700_freelist_popping.c test_lfds700_freelist_popping_and_pushing.c test_lfds700_freelist_pushing.c test_lfds700_freelist_rapid_popping_and_pushing.c \
18            test_lfds700_hash_addonly.c test_lfds700_hash_addonly_alignment.c test_lfds700_hash_addonly_iterate.c test_lfds700_hash_addonly_random_adds_fail.c test_lfds700_hash_addonly_random_adds_fail_and_overwrite.c test_lfds700_hash_addonly_random_adds_overwrite.c \
19            test_lfds700_list_addonly_ordered_singlylinked.c test_lfds700_list_addonly_ordered_singlylinked_alignment.c test_lfds700_list_addonly_ordered_singlylinked_new_ordered.c test_lfds700_list_addonly_ordered_singlylinked_new_ordered_with_cursor.c \
20            test_lfds700_list_addonly_singlylinked_unordered.c test_lfds700_list_addonly_singlylinked_unordered_alignment.c test_lfds700_list_addonly_singlylinked_unordered_new_after.c test_lfds700_list_addonly_singlylinked_unordered_new_end.c test_lfds700_list_addonly_singlylinked_unordered_new_start.c \
21            test_lfds700_porting_abstraction_layer_atomic.c test_lfds700_porting_abstraction_layer_atomic_cas.c test_lfds700_porting_abstraction_layer_atomic_dcas.c test_lfds700_porting_abstraction_layer_atomic_exchange.c \
22            test_lfds700_queue.c test_lfds700_queue_alignment.c test_lfds700_queue_dequeuing.c test_lfds700_queue_enqueuing.c test_lfds700_queue_enqueuing_and_dequeuing.c test_lfds700_queue_enqueuing_and_dequeuing_with_free.c test_lfds700_queue_enqueuing_with_malloc_and_dequeuing_with_free.c test_lfds700_queue_rapid_enqueuing_and_dequeuing.c \
23            test_lfds700_queue_bounded_singleconsumer_singleproducer.c test_lfds700_queue_bounded_singleconsumer_singleproducer_dequeuing.c test_lfds700_queue_bounded_singleconsumer_singleproducer_enqueuing.c test_lfds700_queue_bounded_singleconsumer_singleproducer_enqueuing_and_dequeuing.c \
24            test_lfds700_ringbuffer.c test_lfds700_ringbuffer_reading.c test_lfds700_ringbuffer_reading_and_writing.c test_lfds700_ringbuffer_writing.c \
25            test_lfds700_stack.c test_lfds700_stack_alignment.c test_lfds700_stack_popping.c test_lfds700_stack_popping_and_pushing.c test_lfds700_stack_pushing.c test_lfds700_stack_rapid_popping_and_pushing.c \
26            test_porting_abstraction_layer_get_logical_core_ids.c test_porting_abstraction_layer_thread_start.c test_porting_abstraction_layer_thread_wait.c \
27            util_cmdline.c util_memory_helpers.c util_thread_starter.c
28 OBJECTS := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(SOURCES)))
29 SYSLIBS := -lm -lpthread -lrt
30 USRLIBS := -llfds700
31
32 ##### default paths #####
33 CPATH        += $(LIBINCDIRS)
34 LIBRARY_PATH += $(LIBBINDIRS)
35 export CPATH
36 export LIBRARY_PATH
37
38 ##### tools #####
39 MAKE    := make
40 MFLAGS  := 
41
42 DG      := gcc
43 DGFLAGS := -MM -std=gnu89
44
45 CC      := gcc
46 CFBASE  := -c -pthread -std=gnu89 -Wall -Wno-unknown-pragmas
47 CFCOV   := -O0 -ggdb -DCOVERAGE -fprofile-arcs -ftest-coverage
48 CFDBG   := -O0 -ggdb -D_DEBUG
49 CFPROF  := -O0 -ggdb -DPROF     -pg
50 CFREL   := -O2       -DNDEBUG   -finline-functions -Wno-strict-aliasing
51 CFTSAN  := -O0 -ggdb -DTSAN     -fsanitize=thread -fPIE
52
53 LD      := gcc
54 LFBASE  := -pthread -std=gnu89 -Wall -Werror
55 LFCOV   := -O0 -fprofile-arcs -ftest-coverage
56 LFDBG   := -O0 -ggdb
57 LFPROF  := -O0 -pg
58 LFREL   := -O2 -s -finline-functions
59 LFTSAN  := -O0 -fsanitize=thread -pie
60
61 PROF    := gprof
62 PFBASE  := -b -p -Q $(BINARY) gmon.out
63
64 ##### variants and libnuma check #####
65 CFLAGS += $(CFBASE)
66 LFLAGS += $(LFBASE)
67
68 ifeq ($(MAKECMDGOALS),)
69   CFLAGS += $(CFDBG)
70   LFLAGS += $(LFDBG)
71 endif
72
73 ifeq ($(MAKECMDGOALS),cov)
74   CFLAGS  += $(CFCOV)
75   LFLAGS  += $(LFCOV)
76   SYSLIBS += -lgcov
77 endif
78
79 ifeq ($(MAKECMDGOALS),dbg)
80   CFLAGS += $(CFDBG)
81   LFLAGS += $(LFDBG)
82 endif
83
84 ifeq ($(MAKECMDGOALS),prof)
85   CFLAGS += $(CFPROF)
86   LFLAGS += $(LFPROF)
87 endif
88
89 ifeq ($(MAKECMDGOALS),rel)
90   CFLAGS += $(CFREL)
91   LFLAGS += $(LFREL)
92 endif
93
94 ifeq ($(MAKECMDGOALS),tsan)
95   CFLAGS += $(CFTSAN)
96   LFLAGS += $(LFTSAN)
97 endif
98
99 ##### search paths #####
100 vpath %.c $(patsubst %,$(SRCDIR)/%:,$(SRCDIRS))
101
102 ##### implicit rules #####
103 $(OBJDIR)/%.o : %.c
104         $(DG) $(DGFLAGS) $< >$(OBJDIR)/$*.d
105         $(CC) $(CFLAGS) -o $@ $<
106
107 ##### explicit rules #####
108 $(BINARY) : $(OBJECTS)
109         $(LD) -o $(BINARY) $(LFLAGS) $(OBJECTS) $(USRLIBS) $(SYSLIBS)
110         chmod +x $(BINARY)
111
112 ##### phony #####
113 .PHONY : clean cov dbg prof rel tsan
114
115 clean : 
116         @rm -f $(BINDIR)/$(BINNAME) $(OBJDIR)/*.o $(OBJDIR)/*.d $(OBJDIR)/*.gcno
117
118 cov  : $(BINARY)
119 dbg  : $(BINARY)
120 prof : $(BINARY)
121 rel  : $(BINARY)
122 tsan : $(BINARY)
123
124 genprof :
125         @$(PROF) $(PFBASE)
126
127 ##### dependencies #####
128 -include $(DEPENDS)
129