8 QUIETLY = 1>nul 2>nul
\r
10 ##### sources, objects and libraries #####
\r
11 BINNAME = liblfds601
\r
12 LIB_BINARY = $(BINDIR)\$(BINNAME).lib
\r
13 DLL_BINARY = $(BINDIR)\$(BINNAME).dll
\r
14 SRCDIRS = lfds601_abstraction lfds601_freelist lfds601_queue lfds601_ringbuffer lfds601_slist lfds601_stack
\r
15 SOURCES = lfds601_abstraction_aligned_free.c lfds601_abstraction_aligned_malloc.c lfds601_abstraction_cas.c lfds601_abstraction_dcas.c lfds601_abstraction_increment.c \
\r
16 lfds601_freelist_delete.c lfds601_freelist_get_and_set.c lfds601_freelist_new.c lfds601_freelist_query.c lfds601_freelist_pop_push.c \
\r
17 lfds601_queue_delete.c lfds601_queue_new.c lfds601_queue_query.c lfds601_queue_queue.c \
\r
18 lfds601_ringbuffer_delete.c lfds601_ringbuffer_get_and_put.c lfds601_ringbuffer_new.c lfds601_ringbuffer_query.c \
\r
19 lfds601_slist_delete.c lfds601_slist_get_and_set.c lfds601_slist_link.c lfds601_slist_new.c \
\r
20 lfds601_stack_delete.c lfds601_stack_new.c lfds601_stack_push_pop.c lfds601_stack_query.c
\r
21 OBJECTS = $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES)))
\r
28 CBASE = /nologo /W4 /WX /c "-I$(SRCDIR)" "-I$(INCDIR)" "/Fd$(BINDIR)\$(BINNAME).pdb" /DUNICODE /D_UNICODE /DWIN32_LEAN_AND_MEAN
\r
29 CFREL = /Ox /DNDEBUG
\r
30 CFDBG = /Od /Gm /Zi /D_DEBUG
\r
33 AFLAGS = /nologo /subsystem:console /wx /verbose
\r
36 LFBASE = /dll /def:$(BINNAME).def /nologo /subsystem:console /wx /nodefaultlib /nxcompat
\r
37 LFREL = /incremental:no
\r
38 LFDBG = /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
\r
40 ##### variants #####
\r
41 CFLAGS = $(CBASE) $(CFDBG) /MTd
\r
42 LFLAGS = $(LFBASE) $(LFDBG)
\r
45 ifeq ($(MAKECMDGOALS),librel)
\r
46 CFLAGS = $(CBASE) $(CFREL) /MT
\r
47 LFLAGS = $(LFBASE) $(LFREL)
\r
51 ifeq ($(MAKECMDGOALS),libdbg)
\r
52 CFLAGS = $(CBASE) $(CFDBG) /MTd
\r
53 LFLAGS = $(LFBASE) $(LFDBG)
\r
57 ifeq ($(MAKECMDGOALS),dllrel)
\r
58 CFLAGS = $(CBASE) $(CFREL) /MD
\r
59 LFLAGS = $(LFBASE) $(LFREL)
\r
63 ifeq ($(MAKECMDGOALS),dlldbg)
\r
64 CFLAGS = $(CBASE) $(CFDBG) /MDd
\r
65 LFLAGS = $(LFBASE) $(LFDBG)
\r
69 ##### search paths #####
\r
70 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
\r
72 ##### implicit rules #####
\r
73 $(OBJDIR)/%.obj : %.c
\r
74 $(CC) $(CFLAGS) "/Fo$@" $<
\r
76 ##### explicit rules #####
\r
77 $(LIB_BINARY) : $(OBJECTS)
\r
78 $(AR) $(AFLAGS) $(OBJECTS) /out:$(LIB_BINARY)
\r
80 $(DLL_BINARY) : $(OBJECTS)
\r
81 $(LD) $(LFLAGS) $(CLIB) $(OBJECTS) /out:$(DLL_BINARY)
\r
84 .PHONY : clean librel libdbg dllrel dlldbg
\r
87 @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
\r
89 librel : $(LIB_BINARY)
\r
90 libdbg : $(LIB_BINARY)
\r
92 dllrel : $(DLL_BINARY)
\r
93 dlldbg : $(DLL_BINARY)
\r