8 QUIETLY = 1>nul 2>nul
\r
10 ##### sources, objects and libraries #####
\r
11 BINNAME = liblfds611
\r
12 LIB_BINARY = $(BINDIR)\$(BINNAME).lib
\r
13 DLL_BINARY = $(BINDIR)\$(BINNAME).dll
\r
14 SRCDIRS = lfds611_abstraction lfds611_freelist lfds611_liblfds lfds611_queue lfds611_ringbuffer lfds611_slist lfds611_stack
\r
15 # TRD : lfds611_abstraction_cas.c lfds611_abstraction_dcas.c lfds611_abstraction_increment.c are inlined and are compiled by every C file
\r
16 SOURCES = lfds611_abstraction_free.c lfds611_abstraction_malloc.c \
\r
17 lfds611_freelist_delete.c lfds611_freelist_get_and_set.c lfds611_freelist_new.c lfds611_freelist_query.c lfds611_freelist_pop_push.c \
\r
18 lfds611_liblfds_abstraction_test_helpers.c lfds611_liblfds_aligned_free.c lfds611_liblfds_aligned_malloc.c \
\r
19 lfds611_queue_delete.c lfds611_queue_new.c lfds611_queue_query.c lfds611_queue_queue.c \
\r
20 lfds611_ringbuffer_delete.c lfds611_ringbuffer_get_and_put.c lfds611_ringbuffer_new.c lfds611_ringbuffer_query.c \
\r
21 lfds611_slist_delete.c lfds611_slist_get_and_set.c lfds611_slist_link.c lfds611_slist_new.c \
\r
22 lfds611_stack_delete.c lfds611_stack_new.c lfds611_stack_push_pop.c lfds611_stack_query.c
\r
23 OBJECTS = $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES)))
\r
24 SYSLIBS = kernel32.lib
\r
31 CBASE = /nologo /W4 /WX /c "-I$(SRCDIR)" "-I$(INCDIR)" "/Fd$(BINDIR)\$(BINNAME).pdb" /DUNICODE /D_UNICODE /DWIN32_LEAN_AND_MEAN
\r
32 CFREL = /Ox /DNDEBUG
\r
33 CFDBG = /Od /Gm /Zi /D_DEBUG
\r
36 AFLAGS = /nologo /subsystem:console /wx /verbose
\r
39 LFBASE = /dll /def:$(BINNAME).def /nologo /subsystem:console /wx /nodefaultlib /nxcompat
\r
40 LFREL = /incremental:no
\r
41 LFDBG = /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
\r
43 ##### variants #####
\r
44 CFLAGS = $(CBASE) $(CFDBG) /MTd
\r
45 LFLAGS = $(LFBASE) $(LFDBG)
\r
48 ifeq ($(MAKECMDGOALS),librel)
\r
49 CFLAGS = $(CBASE) $(CFREL) /MT
\r
50 LFLAGS = $(LFBASE) $(LFREL)
\r
54 ifeq ($(MAKECMDGOALS),libdbg)
\r
55 CFLAGS = $(CBASE) $(CFDBG) /MTd
\r
56 LFLAGS = $(LFBASE) $(LFDBG)
\r
60 ifeq ($(MAKECMDGOALS),dllrel)
\r
61 CFLAGS = $(CBASE) $(CFREL) /MD
\r
62 LFLAGS = $(LFBASE) $(LFREL)
\r
66 ifeq ($(MAKECMDGOALS),dlldbg)
\r
67 CFLAGS = $(CBASE) $(CFDBG) /MDd
\r
68 LFLAGS = $(LFBASE) $(LFDBG)
\r
72 ##### search paths #####
\r
73 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
\r
75 ##### implicit rules #####
\r
76 $(OBJDIR)/%.obj : %.c
\r
77 $(CC) $(CFLAGS) "/Fo$@" $<
\r
79 ##### explicit rules #####
\r
80 $(LIB_BINARY) : $(OBJECTS)
\r
81 $(AR) $(AFLAGS) $(OBJECTS) /out:$(LIB_BINARY)
\r
83 $(DLL_BINARY) : $(OBJECTS)
\r
84 $(LD) $(LFLAGS) $(CLIB) $(SYSLIBS) $(OBJECTS) /out:$(DLL_BINARY)
\r
87 .PHONY : clean librel libdbg dllrel dlldbg
\r
90 @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
\r
92 librel : $(LIB_BINARY)
\r
93 libdbg : $(LIB_BINARY)
\r
95 dllrel : $(DLL_BINARY)
\r
96 dlldbg : $(DLL_BINARY)
\r