]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/test_and_benchmark/libbenchmark/build/gcc_gnumake/Makefile
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / test_and_benchmark / libbenchmark / build / gcc_gnumake / Makefile
1 ##### paths #####
2 BINDIR := ../../bin
3 INCDIR := ../../inc
4 OBJDIR := ../../obj
5 SRCDIR := ../../src
6
7 ##### misc #####
8 QUIETLY        := 1>/dev/null 2>/dev/null
9 VERSION_NUMBER := 1
10 MINOR_NUMBER   := 0
11 RELEASE_NUMBER := 0
12
13 ##### sources, objects and libraries #####
14 BINNAME    := libbenchmark
15 ARFILENAME := $(BINNAME).a
16 ARPATHNAME := $(BINDIR)/$(ARFILENAME)
17 SOBASENAME := $(BINNAME).so
18 SONAME     := $(SOBASENAME).$(VERSION_NUMBER)
19 SOFILENAME := $(SONAME).$(MINOR_NUMBER).$(RELEASE_NUMBER)
20 SOPATHNAME := $(BINDIR)/$(SOFILENAME)
21 INCNAME    := $(INCDIR)/$(BINNAME).h
22 SRCDIRS    := libbenchmark_benchmarkinstance libbenchmark_benchmarks_btree_au_readn_writen libbenchmark_benchmarks_freelist_push1_then_pop1 libbenchmark_benchmarks_queue_umm_enqueue1_then_dequeue1 libbenchmark_benchmarkset libbenchmark_benchmarksuite libbenchmark_datastructures_btree_au libbenchmark_datastructures_freelist libbenchmark_datastructures_queue_umm libbenchmark_misc libbenchmark_porting_abstraction_layer libbenchmark_results libbenchmark_threadset libbenchmark_topology libbenchmark_topology_node
23 SOURCES    := libbenchmark_benchmarkinstance_cleanup.c libbenchmark_benchmarkinstance_init.c libbenchmark_benchmarkinstance_run.c \
24               libbenchmark_benchmarks_btree_au_gcc_spinlock_atomic_readn_writen.c libbenchmark_benchmarks_btree_au_gcc_spinlock_sync_readn_writen.c libbenchmark_benchmarks_btree_au_liblfds700_lockfree_readn_writen.c libbenchmark_benchmarks_btree_au_liblfds710_lockfree_readn_writen.c libbenchmark_benchmarks_btree_au_msvc_spinlock_readn_writen.c libbenchmark_benchmarks_btree_au_pthread_mutex_readn_writen.c libbenchmark_benchmarks_btree_au_pthread_rwlock_readn_writen.c libbenchmark_benchmarks_btree_au_pthread_spinlock_process_private_readn_writen.c libbenchmark_benchmarks_btree_au_pthread_spinlock_process_shared_readn_writen.c libbenchmark_benchmarks_btree_au_windows_critical_section_readn_writen.c libbenchmark_benchmarks_btree_au_windows_mutex_readn_writen.c \
25               libbenchmark_benchmarks_freelist_gcc_spinlock_atomic_push1_then_pop1.c libbenchmark_benchmarks_freelist_gcc_spinlock_sync_push1_then_pop1.c libbenchmark_benchmarks_freelist_liblfds700_lockfree_push1_then_pop1.c libbenchmark_benchmarks_freelist_liblfds710_lockfree_push1_then_pop1.c libbenchmark_benchmarks_freelist_msvc_spinlock_push1_then_pop1.c libbenchmark_benchmarks_freelist_pthread_mutex_push1_then_pop1.c libbenchmark_benchmarks_freelist_pthread_rwlock_push1_then_pop1.c libbenchmark_benchmarks_freelist_pthread_spinlock_process_private_push1_then_pop1.c libbenchmark_benchmarks_freelist_pthread_spinlock_process_shared_push1_then_pop1.c libbenchmark_benchmarks_freelist_windows_critical_section_push1_then_pop1.c libbenchmark_benchmarks_freelist_windows_mutex_push1_then_pop1.c \
26               libbenchmark_benchmarks_queue_umm_gcc_spinlock_atomic_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_gcc_spinlock_sync_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_liblfds700_lockfree_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_liblfds710_lockfree_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_msvc_spinlock_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_pthread_mutex_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_pthread_rwlock_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_pthread_spinlock_process_private_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_pthread_spinlock_process_shared_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_windows_critical_section_enqueue1_dequeue1.c libbenchmark_benchmarks_queue_umm_windows_mutex_enqueue1_dequeue1.c \
27               libbenchmark_benchmarkset_add.c libbenchmark_benchmarkset_cleanup.c libbenchmark_benchmarkset_gnuplot.c libbenchmark_benchmarkset_init.c libbenchmark_benchmarkset_run.c \
28               libbenchmark_benchmarksuite_add.c libbenchmark_benchmarksuite_cleanup.c libbenchmark_benchmarksuite_gnuplot.c libbenchmark_benchmarksuite_init.c libbenchmark_benchmarksuite_run.c \
29               libbenchmark_datastructure_btree_au_gcc_spinlock_atomic.c libbenchmark_datastructure_btree_au_gcc_spinlock_sync.c libbenchmark_datastructure_btree_au_msvc_spinlock.c libbenchmark_datastructure_btree_au_pthread_mutex.c libbenchmark_datastructure_btree_au_pthread_rwlock.c libbenchmark_datastructure_btree_au_pthread_spinlock_process_private.c libbenchmark_datastructure_btree_au_pthread_spinlock_process_shared.c libbenchmark_datastructure_btree_au_windows_critical_section.c libbenchmark_datastructure_btree_au_windows_mutex.c \
30               libbenchmark_datastructure_freelist_gcc_spinlock_atomic.c libbenchmark_datastructure_freelist_gcc_spinlock_sync.c libbenchmark_datastructure_freelist_msvc_spinlock.c libbenchmark_datastructure_freelist_pthread_mutex.c libbenchmark_datastructure_freelist_pthread_rwlock.c libbenchmark_datastructure_freelist_pthread_spinlock_process_private.c libbenchmark_datastructure_freelist_pthread_spinlock_process_shared.c libbenchmark_datastructure_freelist_windows_critical_section.c libbenchmark_datastructure_freelist_windows_mutex.c \
31               libbenchmark_datastructure_queue_umm_gcc_spinlock_atomic.c libbenchmark_datastructure_queue_umm_gcc_spinlock_sync.c libbenchmark_datastructure_queue_umm_msvc_spinlock.c libbenchmark_datastructure_queue_umm_pthread_mutex.c libbenchmark_datastructure_queue_umm_pthread_rwlock.c libbenchmark_datastructure_queue_umm_pthread_spinlock_process_private.c libbenchmark_datastructure_queue_umm_pthread_spinlock_process_shared.c libbenchmark_datastructure_queue_umm_windows_critical_section.c libbenchmark_datastructure_queue_umm_windows_mutex.c \
32               libbenchmark_misc_globals.c libbenchmark_misc_pal_helpers.c libbenchmark_misc_query.c \
33               libbenchmark_porting_abstraction_layer_populate_topology.c libbenchmark_porting_abstraction_layer_print_string.c \
34               libbenchmark_results_cleanup.c libbenchmark_results_compare.c libbenchmark_results_get_result.c libbenchmark_results_init.c libbenchmark_results_put_result.c \
35               libbenchmark_threadset_cleanup.c libbenchmark_threadset_init.c libbenchmark_threadset_operations.c \
36               libbenchmark_topology_cleanup.c libbenchmark_topology_compare.c libbenchmark_topology_init.c libbenchmark_topology_insert.c libbenchmark_topology_iterate.c libbenchmark_topology_lpsets.c libbenchmark_topology_numa.c libbenchmark_topology_query.c libbenchmark_topology_string.c \
37               libbenchmark_topology_node_cleanup.c libbenchmark_topology_node_compare.c libbenchmark_topology_node_init.c
38 OBJECTS    := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(SOURCES)))
39 SYSLIBS    := 
40
41 ##### default paths fix up #####
42 CPATH      := $(subst : ,:,$(SRCDIR):$(INCDIR))
43
44 ##### tools #####
45 DG                     := gcc
46 DGFLAGS_MANDATORY      := -MM
47 DGFLAGS_OPTIONAL       := -std=gnu89
48
49 CC                     := gcc
50 CFLAGS_MANDATORY       := -c -fno-strict-aliasing
51 CFLAGS_OPTIONAL        := -std=gnu89 -Wall -Werror -Wno-unknown-pragmas
52 CFLAGS_MANDATORY_COV   := -O0 -ggdb -DCOVERAGE -fprofile-arcs -ftest-coverage
53 CFLAGS_MANDATORY_DBG   := -O0 -ggdb -D_DEBUG
54 CFLAGS_MANDATORY_PROF  := -O0 -ggdb -DPROF     -pg
55 CFLAGS_MANDATORY_REL   := -O2       -DNDEBUG
56 CFLAGS_MANDATORY_TSAN  := -O0 -ggdb -DTSAN     -fsanitize=thread -fPIC
57
58 AR                     := ar
59 ARFLAGS                :=
60 ARFLAGS_MANDATORY      := rcs
61 ARFLAGS_OPTIONAL       :=
62
63 LD                     := gcc
64 LDFLAGS_MANDATORY      := -shared -Wl,-soname,$(SONAME) -o $(SOPATHNAME)
65 LDFLAGS_OPTIONAL       := -std=gnu89 -Wall -Werror
66 LDFLAGS_MANDATORY_COV  := -O0 -fprofile-arcs -ftest-coverage
67 LDFLAGS_MANDATORY_DBG  := -O0 -ggdb
68 LDFLAGS_MANDATORY_PROF := -O0 -pg
69 LDFLAGS_MANDATORY_REL  := -O2 -s
70 LDFLAGS_MANDATORY_TSAN := -O0 -fsanitize=thread -fPIC
71
72 ##### build variants #####
73 ifeq ($(findstring so,$(MAKECMDGOALS)),so)
74   CFLAGS_MANDATORY += -fPIC
75 endif
76
77 # TRD : default to debug
78 ifeq ($(MAKECMDGOALS),)
79   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG)
80   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
81 endif
82
83 ifeq ($(findstring cov,$(MAKECMDGOALS)),cov)
84   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_COV)
85   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_COV)
86   SYSLIBS += -lgcov
87 endif
88
89 ifeq ($(findstring dbg,$(MAKECMDGOALS)),dbg)
90   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG)
91   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
92 endif
93
94 ifeq ($(findstring prof,$(MAKECMDGOALS)),prof)
95   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_PROF)
96   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_PROF)
97 endif
98
99 ifeq ($(findstring rel,$(MAKECMDGOALS)),rel)
100   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_REL)
101   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_REL)
102 endif
103
104 ifeq ($(findstring tsan,$(MAKECMDGOALS)),tsan)
105   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_TSAN)
106   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_TSAN)
107 endif
108
109 ##### search paths #####
110 vpath %.c $(patsubst %,$(SRCDIR)/%:,$(SRCDIRS))
111
112 ##### implicit rules #####
113 $(OBJDIR)/%.o : %.c
114         $(DG) $(DGFLAGS_OPTIONAL) $(DGFLAGS) $(DGFLAGS_MANDATORY) $< >$(OBJDIR)/$*.d
115         $(CC) $(CFLAGS_OPTIONAL) $(CFLAGS) $(CFLAGS_MANDATORY) -o $@ $<
116
117 ##### explicit rules #####
118 $(ARPATHNAME) : $(OBJECTS)
119         $(AR) $(ARFLAGS_OPTIONAL) $(ARFLAGS) $(ARFLAGS_MANDATORY) $(ARPATHNAME) $(OBJECTS)
120
121 $(SOPATHNAME) : $(OBJECTS)
122         $(LD) $(LDFLAGS_OPTIONAL) $(LDFLAGS) $(LDFLAGS_MANDATORY) $(OBJECTS) -o $(SOPATHNAME)
123         @ln -fs $(SOFILENAME) $(BINDIR)/$(SONAME)
124         @ln -fs $(SOFILENAME) $(BINDIR)/$(SOBASENAME)
125
126 ##### phony #####
127 .PHONY : clean ar_cov ar_dbg ar_prof ar_rel ar_tsan ar_vanilla so_cov so_dbg so_prof so_rel so_tsan so_vanilla
128
129 clean : 
130         @rm -f $(BINDIR)/* $(OBJDIR)/*
131
132 ar_cov       : $(ARPATHNAME) # archive (.a), coverage
133 ar_dbg       : $(ARPATHNAME) # archive (.a), debug
134 ar_prof      : $(ARPATHNAME) # archive (.a), profiling
135 ar_rel       : $(ARPATHNAME) # archive (.a), release
136 ar_tsan      : $(ARPATHNAME) # archive (.a), thread sanitizer
137 ar_vanilla   : $(ARPATHNAME) # archive (.a), no specific-build arguments
138 ar_install   :
139   # TRD : leading backslash to use command rather than alias
140   #       as many Linux distros have a built-in alias to force
141   #       a prompt ("y/n?") on file overwrite - silent and
142   #       unexpected interference which breaks a makefile
143         @mkdir -p $(INSLIBDIR)
144         @\cp $(ARPATHNAME) $(INSLIBDIR)
145         @mkdir -p $(INSINCDIR)
146         @\cp -r $(INCDIR)/* $(INSINCDIR)
147 ar_uninstall :
148         @rm    $(INSLIBDIR)/$(ARFILENAME)
149         @rm -r $(INSINCDIR)/$(BINNAME)
150         @rm -r $(INSINCDIR)/$(BINNAME).h
151
152 so_cov       : $(SOPATHNAME) # shared (.so), coverage
153 so_dbg       : $(SOPATHNAME) # shared (.so), debug
154 so_prof      : $(SOPATHNAME) # shared (.so), profiling
155 so_rel       : $(SOPATHNAME) # shared (.so), release
156 so_tsan      : $(SOPATHNAME) # shared (.so), thread sanitizer
157 so_vanilla   : $(SOPATHNAME) # shared (.so), no specific-build arguments
158 so_install   : 
159         @mkdir -p $(INSINCDIR)
160         @\cp $(SOPATHNAME) $(INSLIBDIR)
161         @ldconfig -vn $(INSLIBDIR)
162         @ln -s $(SONAME) $(INSLIBDIR)/$(SOBASENAME)
163         @mkdir -p $(INSLIBDIR)
164         @\cp -r $(INCDIR)/* $(INSINCDIR)
165 so_uninstall : 
166         @rm -f $(INSLIBDIR)/$(SOFILENAME)
167         @rm -f $(INSLIBDIR)/$(SOBASENAME)
168         @rm -f $(INSLIBDIR)/$(SONAME)
169         @rm -r $(INSINCDIR)/$(BINNAME)
170         @rm -r $(INSINCDIR)/$(BINNAME).h
171
172 ##### dependencies #####
173 -include $(DEPENDS)
174