]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.0.0/liblfds700/build/gcc_and_gnumake/Makefile
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.0.0 / liblfds700 / build / gcc_and_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    := liblfds700
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 := lfds700_btree_addonly_unbalanced lfds700_freelist lfds700_hash_addonly lfds700_list_addonly_ordered_singlylinked lfds700_list_addonly_singlylinked_unordered lfds700_misc lfds700_queue lfds700_queue_bounded_singleconsumer_singleproducer lfds700_ringbuffer lfds700_stack
23 SOURCES := lfds700_hash_addonly_cleanup.c lfds700_hash_addonly_get.c lfds700_hash_addonly_init.c lfds700_hash_addonly_insert.c lfds700_hash_addonly_iterate.c lfds700_hash_addonly_query.c \
24            lfds700_list_addonly_ordered_singlylinked_cleanup.c lfds700_list_addonly_ordered_singlylinked_get.c lfds700_list_addonly_ordered_singlylinked_init.c lfds700_list_addonly_ordered_singlylinked_insert.c lfds700_list_addonly_ordered_singlylinked_query.c \
25            lfds700_list_addonly_singlylinked_unordered_cleanup.c lfds700_list_addonly_singlylinked_unordered_get.c lfds700_list_addonly_singlylinked_unordered_init.c lfds700_list_addonly_singlylinked_unordered_insert.c lfds700_list_addonly_singlylinked_unordered_query.c \
26            lfds700_btree_addonly_unbalanced_cleanup.c lfds700_btree_addonly_unbalanced_get.c lfds700_btree_addonly_unbalanced_init.c lfds700_btree_addonly_unbalanced_insert.c lfds700_btree_addonly_unbalanced_query.c \
27            lfds700_freelist_cleanup.c lfds700_freelist_init.c lfds700_freelist_pop.c lfds700_freelist_push.c lfds700_freelist_query.c \
28            lfds700_misc_cleanup.c lfds700_misc_globals.c lfds700_misc_init.c lfds700_misc_prng.c lfds700_misc_query.c \
29            lfds700_queue_cleanup.c lfds700_queue_dequeue.c lfds700_queue_enqueue.c lfds700_queue_init.c lfds700_queue_query.c \
30            lfds700_queue_bounded_singleconsumer_singleproducer_cleanup.c lfds700_queue_bounded_singleconsumer_singleproducer_dequeue.c lfds700_queue_bounded_singleconsumer_singleproducer_enqueue.c lfds700_queue_bounded_singleconsumer_singleproducer_init.c lfds700_queue_bounded_singleconsumer_singleproducer_query.c \
31            lfds700_ringbuffer_cleanup.c lfds700_ringbuffer_init.c lfds700_ringbuffer_query.c lfds700_ringbuffer_read.c lfds700_ringbuffer_write.c \
32            lfds700_stack_cleanup.c lfds700_stack_init.c lfds700_stack_pop.c lfds700_stack_push.c lfds700_stack_query.c
33 OBJECTS := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(SOURCES)))
34 SYSLIBS := 
35
36 ##### default paths fix up #####
37 CPATH   := $(subst : ,:,$(SRCDIR):$(INCDIR))
38
39 ##### tools #####
40 MAKE    := make
41 MFLAGS  := 
42
43 DG      := gcc
44 DGFLAGS := -MM -std=gnu89
45
46 CC      := gcc
47 CFBASE  := -c -fno-strict-aliasing -std=gnu89 -Wall -Werror -Wno-unknown-pragmas -Wno-unused-but-set-variable -Wno-unused-variable
48 CFCOV   := -O0 -ggdb -DCOVERAGE -fprofile-arcs -ftest-coverage
49 CFDBG   := -O0 -ggdb -D_DEBUG
50 CFPROF  := -O0 -ggdb -DPROF     -pg
51 CFREL   := -O2       -DNDEBUG   -finline-functions
52 CFTSAN  := -O0 -ggdb -DTSAN     -fsanitize=thread -fPIC
53 CFBARE  := -ffreestanding -nodefaultlibs -nostdinc -nostdlib
54
55 AR      := ar
56 AFLAGS  := -rcs
57
58 LD      := gcc
59 LFBASE  := -pthread -shared -std=gnu89 -Wl,-soname,$(SONAME) -o $(SOPATHNAME) -Wall -Werror
60 LFCOV   := -O0 -fprofile-arcs -ftest-coverage
61 LFDBG   := -O0 -ggdb
62 LFPROF  := -O0 -pg
63 LFREL   := -O2 -s -finline-functions
64 LFTSAN  := -O0 -fsanitize=thread -fPIC
65 LFBARE  := -ffreestanding -nodefaultlibs -nostdinc -nostdlib
66
67 ##### CPU variants #####
68 GCCARCH := native
69 CFBASE  += -march=$(GCCARCH)
70
71 ##### build variants #####
72 ifeq ($(findstring so,$(MAKECMDGOALS)),so)
73   CFBASE += -fPIC
74 endif
75
76 CFLAGS += $(CFBASE)
77 LFLAGS += $(LFBASE)
78
79 ifeq ($(MAKECMDGOALS),)
80   CFLAGS += $(CFDBG)
81   LFLAGS += $(LFDBG)
82 endif
83
84 ifeq ($(findstring cov,$(MAKECMDGOALS)),cov)
85   CFLAGS  += $(CFCOV)
86   LFLAGS  += $(LFCOV)
87   SYSLIBS += -lgcov
88 endif
89
90 ifeq ($(findstring dbg,$(MAKECMDGOALS)),dbg)
91   CFLAGS += $(CFDBG)
92   LFLAGS += $(LFDBG)
93 endif
94
95 ifeq ($(findstring prof,$(MAKECMDGOALS)),prof)
96   CFLAGS += $(CFPROF)
97   LFLAGS += $(LFPROF)
98 endif
99
100 ifeq ($(findstring rel,$(MAKECMDGOALS)),rel)
101   CFLAGS += $(CFREL)
102   LFLAGS += $(LFREL)
103 endif
104
105 ifeq ($(findstring tsan,$(MAKECMDGOALS)),tsan)
106   CFLAGS += $(CFTSAN)
107   LFLAGS += $(LFTSAN)
108 endif
109
110 ifeq ($(findstring b_,$(MAKECMDGOALS)),b_)
111   CFLAGS += $(CFBARE)
112   LFLAGS += $(CFBARE)
113 endif
114
115 ##### search paths #####
116 vpath %.c $(patsubst %,$(SRCDIR)/%:,$(SRCDIRS))
117
118 ##### implicit rules #####
119 $(OBJDIR)/%.o : %.c
120         $(DG) $(DGFLAGS) $< >$(OBJDIR)/$*.d
121         $(CC) $(CFLAGS) -o $@ $<
122
123 ##### explicit rules #####
124 $(ARPATHNAME) : $(OBJECTS)
125         $(AR) $(AFLAGS) $(ARPATHNAME) $(OBJECTS)
126
127 $(SOPATHNAME) : $(OBJECTS)
128         $(LD) $(LFLAGS) $(OBJECTS) -o $(SOPATHNAME)
129         @ln -fs $(SOFILENAME) $(BINDIR)/$(SONAME)
130         @ln -fs $(SOFILENAME) $(BINDIR)/$(SOBASENAME)
131
132 ##### phony #####
133 .PHONY : clean bare_ar_cov bare_ar_dbg bare_ar_prof bare_ar_rel bare_ar_tsan bare_so_cov bare_so_dbg bare_so_prof bare_so_rel bare_so_tsan hosted_ar_cov hosted_ar_dbg hosted_ar_prof hosted_ar_rel hosted_ar_tsan hosted_so_cov hosted_so_dbg hosted_so_prof hosted_so_rel hosted_so_tsan
134
135 clean : 
136         @rm -f $(BINDIR)/* $(OBJDIR)/*
137
138 bare_ar_cov   : $(ARPATHNAME) # bare, archive (.a), coverage
139 bare_ar_dbg   : $(ARPATHNAME) # bare, archive (.a), debug
140 bare_ar_prof  : $(ARPATHNAME) # bare, archive (.a), profiling
141 bare_ar_rel   : $(ARPATHNAME) # bare, archive (.a), release
142 bare_ar_tsan  : $(ARPATHNAME) # bare, archive (.a), thread sanitizer
143
144 bare_so_cov   : $(SOPATHNAME) # bare, shared (.so), coverage
145 bare_so_dbg   : $(SOPATHNAME) # bare, shared (.so), debug
146 bare_so_prof  : $(SOPATHNAME) # bare, shared (.so), profiling
147 bare_so_rel   : $(SOPATHNAME) # bare, shared (.so), release
148 bare_so_tsan  : $(SOPATHNAME) # bare, shared (.so), thread sanitizer
149
150 hosted_ar_cov  : $(ARPATHNAME) # hosted implementation, archive (.a), coverage
151 hosted_ar_dbg  : $(ARPATHNAME) # hosted implementation, archive (.a), debug
152 hosted_ar_prof : $(ARPATHNAME) # hosted implementation, archive (.a), profiling
153 hosted_ar_rel  : $(ARPATHNAME) # hosted implementation, archive (.a), release
154 hosted_ar_tsan : $(ARPATHNAME) # hosted implementation, archive (.a), thread sanitizer
155
156 hosted_so_cov  : $(SOPATHNAME) # hosted implementation, shared (.so), coverage
157 hosted_so_dbg  : $(SOPATHNAME) # hosted implementation, shared (.so), debug
158 hosted_so_prof : $(SOPATHNAME) # hosted implementation, shared (.so), profiling
159 hosted_so_rel  : $(SOPATHNAME) # hosted implementation, shared (.so), release
160 hosted_so_tsan : $(SOPATHNAME) # hosted implementation, shared (.so), thread sanitizer
161
162 ##### dependencies #####
163 -include $(DEPENDS)
164
165 ##### notes #####
166 # TRD : we use -std=gnu89 for C++ style comments
167 #       hosted implementation differs from bare simply in that <assert.h> ends up being included
168