]> pd.if.org Git - liblfds/blob - makefile.linux
8bc0c1c86016a8df9360557acccd3ff8674df40c
[liblfds] / makefile.linux
1 ##### paths #####\r
2 BINDIR = bin\r
3 INCDIR = ../liblfds611/inc\r
4 LIBDIR = ../liblfds611/bin\r
5 OBJDIR = obj\r
6 SRCDIR = src\r
7 \r
8 ##### misc #####\r
9 QUIETLY = 1>nul 2>nul\r
10 \r
11 ##### sources, objects and libraries #####\r
12 BINNAME = test\r
13 BINARY  = $(BINDIR)/$(BINNAME)\r
14 SRCDIRS = .\r
15 SOURCES = abstraction_cpu_count.c test_abstraction.c abstraction_thread_start.c abstraction_thread_wait.c benchmark_freelist.c benchmark_queue.c benchmark_ringbuffer.c benchmark_stack.c test_freelist.c main.c misc.c test_queue.c test_ringbuffer.c test_slist.c test_stack.c\r
16 OBJECTS = $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(SOURCES)))\r
17 SYSLIBS = -lpthread -lc -lm\r
18 USRLIBS = -llfds611\r
19 \r
20 ##### CPU variants #####\r
21 UNAME   = $(shell uname -m)\r
22 GCCARCH = -march=$(UNAME)\r
23 \r
24 ifeq ($(UNAME),x86_64)\r
25   GCCARCH = -march=core2\r
26 endif\r
27 \r
28 ifeq ($(findstring arm,$(UNAME)),arm)\r
29   GCCARCH = -march=armv6k -marm\r
30 endif\r
31 \r
32 ##### tools #####\r
33 MAKE    = make\r
34 MFLAGS  = \r
35 \r
36 DG      = gcc\r
37 DGFLAGS = -MM -std=c99 -I"$(SRCDIR)" -I"$(INCDIR)" \r
38 \r
39 CC      = gcc\r
40 CFBASE  = -Wall -Wno-unknown-pragmas -std=c99 $(GCCARCH) -pthread -c -I"$(SRCDIR)" -I"$(INCDIR)"\r
41 CFREL   = -O2 -Wno-strict-aliasing\r
42 CFDBG   = -O0 -g\r
43 \r
44 LD      = gcc\r
45 LFBASE  = -L"$(LIBDIR)"\r
46 LFREL   = -O2 -s\r
47 LFDBG   = -O0 -g\r
48 \r
49 ##### variants #####\r
50 CFLAGS  = $(CFBASE) $(CFDBG)\r
51 LFLAGS  = $(LFBASE) $(LFDBG)\r
52 \r
53 ifeq ($(MAKECMDGOALS),rel)\r
54   CFLAGS  = $(CFBASE) $(CFREL)\r
55   LFLAGS  = $(LFBASE) $(LFREL)\r
56 endif\r
57 \r
58 ##### search paths #####\r
59 vpath %.c $(patsubst %,$(SRCDIR)/%:,$(SRCDIRS))\r
60 \r
61 ##### implicit rules #####\r
62 $(OBJDIR)/%.o : %.c\r
63         $(DG) $(DGFLAGS) $< >$(OBJDIR)/$*.d\r
64         $(CC) $(CFLAGS) -o $@ $<\r
65 \r
66 ##### explicit rules #####\r
67 $(BINARY) : $(OBJECTS)\r
68         $(LD) -o $(BINARY) $(LFLAGS) $(OBJECTS) $(USRLIBS) $(SYSLIBS)\r
69         chmod +x $(BINARY)\r
70 \r
71 ##### phony #####\r
72 .PHONY : clean rel dbg\r
73 \r
74 clean : \r
75         @rm -f $(BINDIR)/$(BINNAME) $(OBJDIR)/*.o $(OBJDIR)/*.d\r
76 \r
77 rel : $(BINARY)\r
78 dbg : $(BINARY)\r
79 \r
80 ##### dependencies #####\r
81 -include $(DEPENDS)\r
82 \r