10 ##### sources, objects and libraries #####
12 LIB_BINARY = $(BINDIR)\$(BINNAME).lib
13 DLL_BINARY = $(BINDIR)\$(BINNAME).dll
14 SRCDIRS = lfds600_abstraction lfds600_freelist lfds600_queue lfds600_ringbuffer lfds600_slist lfds600_stack
15 SOURCES = lfds600_abstraction_aligned_free.c lfds600_abstraction_aligned_malloc.c lfds600_abstraction_cas.c lfds600_abstraction_dcas.c lfds600_abstraction_increment.c \
16 lfds600_freelist_delete.c lfds600_freelist_get_and_set.c lfds600_freelist_new.c lfds600_freelist_query.c lfds600_freelist_pop_push.c \
17 lfds600_queue_delete.c lfds600_queue_new.c lfds600_queue_query.c lfds600_queue_queue.c \
18 lfds600_ringbuffer_delete.c lfds600_ringbuffer_get_and_put.c lfds600_ringbuffer_new.c lfds600_ringbuffer_query.c \
19 lfds600_slist_delete.c lfds600_slist_get_and_set.c lfds600_slist_link.c lfds600_slist_new.c \
20 lfds600_stack_delete.c lfds600_stack_new.c lfds600_stack_push_pop.c lfds600_stack_query.c
21 OBJECTS = $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES)))
28 CBASE = /nologo /W4 /WX /c "-I$(SRCDIR)" "-I$(INCDIR)" "/Fd$(BINDIR)\$(BINNAME).pdb" /DUNICODE /D_UNICODE /DWIN32_LEAN_AND_MEAN
30 CFDBG = /Od /Gm /Zi /D_DEBUG
33 AFLAGS = /nologo /subsystem:console /wx /verbose
36 LFBASE = /dll /def:$(BINNAME).def /nologo /subsystem:console /wx /nodefaultlib /nxcompat
37 LFREL = /incremental:no
38 LFDBG = /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
41 CFLAGS = $(CBASE) $(CFDBG) /MTd
42 LFLAGS = $(LFBASE) $(LFDBG)
45 ifeq ($(MAKECMDGOALS),librel)
46 CFLAGS = $(CBASE) $(CFREL) /MT
47 LFLAGS = $(LFBASE) $(LFREL)
51 ifeq ($(MAKECMDGOALS),libdbg)
52 CFLAGS = $(CBASE) $(CFDBG) /MTd
53 LFLAGS = $(LFBASE) $(LFDBG)
57 ifeq ($(MAKECMDGOALS),dllrel)
58 CFLAGS = $(CBASE) $(CFREL) /MD
59 LFLAGS = $(LFBASE) $(LFREL)
63 ifeq ($(MAKECMDGOALS),dlldbg)
64 CFLAGS = $(CBASE) $(CFDBG) /MDd
65 LFLAGS = $(LFBASE) $(LFDBG)
69 ##### search paths #####
70 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
72 ##### implicit rules #####
74 $(CC) $(CFLAGS) "/Fo$@" $<
76 ##### explicit rules #####
77 $(LIB_BINARY) : $(OBJECTS)
78 $(AR) $(AFLAGS) $(OBJECTS) /out:$(LIB_BINARY)
80 $(DLL_BINARY) : $(OBJECTS)
81 $(LD) $(LFLAGS) $(CLIB) $(OBJECTS) /out:$(DLL_BINARY)
84 .PHONY : clean librel libdbg dllrel dlldbg
87 @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
89 librel : $(LIB_BINARY)
90 libdbg : $(LIB_BINARY)
92 dllrel : $(DLL_BINARY)
93 dlldbg : $(DLL_BINARY)