10 ##### sources, objects and libraries #####
12 LIB_BINARY = $(BINDIR)\$(BINNAME).lib
13 DLL_BINARY = $(BINDIR)\$(BINNAME).dll
14 SRCDIRS = lfds610_abstraction lfds610_freelist lfds610_liblfds lfds610_queue lfds610_ringbuffer lfds610_slist lfds610_stack
15 # TRD : lfds610_abstraction_cas.c lfds610_abstraction_dcas.c lfds610_abstraction_increment.c are inlined and are compiled by every C file
16 SOURCES = lfds610_abstraction_free.c lfds610_abstraction_malloc.c \
17 lfds610_freelist_delete.c lfds610_freelist_get_and_set.c lfds610_freelist_new.c lfds610_freelist_query.c lfds610_freelist_pop_push.c \
18 lfds610_liblfds_abstraction_test_helpers.c lfds610_liblfds_aligned_free.c lfds610_liblfds_aligned_malloc.c \
19 lfds610_queue_delete.c lfds610_queue_new.c lfds610_queue_query.c lfds610_queue_queue.c \
20 lfds610_ringbuffer_delete.c lfds610_ringbuffer_get_and_put.c lfds610_ringbuffer_new.c lfds610_ringbuffer_query.c \
21 lfds610_slist_delete.c lfds610_slist_get_and_set.c lfds610_slist_link.c lfds610_slist_new.c \
22 lfds610_stack_delete.c lfds610_stack_new.c lfds610_stack_push_pop.c lfds610_stack_query.c
23 OBJECTS = $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES)))
24 SYSLIBS = kernel32.lib
31 CBASE = /nologo /W4 /WX /c "-I$(SRCDIR)" "-I$(INCDIR)" "/Fd$(BINDIR)\$(BINNAME).pdb" /DUNICODE /D_UNICODE /DWIN32_LEAN_AND_MEAN
33 CFDBG = /Od /Gm /Zi /D_DEBUG
36 AFLAGS = /nologo /subsystem:console /wx /verbose
39 LFBASE = /dll /def:$(BINNAME).def /nologo /subsystem:console /wx /nodefaultlib /nxcompat
40 LFREL = /incremental:no
41 LFDBG = /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
44 CFLAGS = $(CBASE) $(CFDBG) /MTd
45 LFLAGS = $(LFBASE) $(LFDBG)
48 ifeq ($(MAKECMDGOALS),librel)
49 CFLAGS = $(CBASE) $(CFREL) /MT
50 LFLAGS = $(LFBASE) $(LFREL)
54 ifeq ($(MAKECMDGOALS),libdbg)
55 CFLAGS = $(CBASE) $(CFDBG) /MTd
56 LFLAGS = $(LFBASE) $(LFDBG)
60 ifeq ($(MAKECMDGOALS),dllrel)
61 CFLAGS = $(CBASE) $(CFREL) /MD
62 LFLAGS = $(LFBASE) $(LFREL)
66 ifeq ($(MAKECMDGOALS),dlldbg)
67 CFLAGS = $(CBASE) $(CFDBG) /MDd
68 LFLAGS = $(LFBASE) $(LFDBG)
72 ##### search paths #####
73 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
75 ##### implicit rules #####
77 $(CC) $(CFLAGS) "/Fo$@" $<
79 ##### explicit rules #####
80 $(LIB_BINARY) : $(OBJECTS)
81 $(AR) $(AFLAGS) $(OBJECTS) /out:$(LIB_BINARY)
83 $(DLL_BINARY) : $(OBJECTS)
84 $(LD) $(LFLAGS) $(CLIB) $(SYSLIBS) $(OBJECTS) /out:$(DLL_BINARY)
87 .PHONY : clean librel libdbg dllrel dlldbg
90 @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
92 librel : $(LIB_BINARY)
93 libdbg : $(LIB_BINARY)
95 dllrel : $(DLL_BINARY)
96 dlldbg : $(DLL_BINARY)