##### paths ##### BINDIR = bin INCDIR = inc OBJDIR = obj SRCDIR = src ##### misc ##### QUIETLY = 1>nul 2>nul ##### sources, objects and libraries ##### BINNAME = liblfds601 LIB_BINARY = $(BINDIR)\$(BINNAME).lib DLL_BINARY = $(BINDIR)\$(BINNAME).dll SRCDIRS = lfds601_abstraction lfds601_freelist lfds601_queue lfds601_ringbuffer lfds601_slist lfds601_stack SOURCES = lfds601_abstraction_aligned_free.c lfds601_abstraction_aligned_malloc.c lfds601_abstraction_cas.c lfds601_abstraction_dcas.c lfds601_abstraction_increment.c \ lfds601_freelist_delete.c lfds601_freelist_get_and_set.c lfds601_freelist_new.c lfds601_freelist_query.c lfds601_freelist_pop_push.c \ lfds601_queue_delete.c lfds601_queue_new.c lfds601_queue_query.c lfds601_queue_queue.c \ lfds601_ringbuffer_delete.c lfds601_ringbuffer_get_and_put.c lfds601_ringbuffer_new.c lfds601_ringbuffer_query.c \ lfds601_slist_delete.c lfds601_slist_get_and_set.c lfds601_slist_link.c lfds601_slist_new.c \ lfds601_stack_delete.c lfds601_stack_new.c lfds601_stack_push_pop.c lfds601_stack_query.c OBJECTS = $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES))) ##### tools ##### MAKE = make MFLAGS = CC = cl CBASE = /nologo /W4 /WX /c "-I$(SRCDIR)" "-I$(INCDIR)" "/Fd$(BINDIR)\$(BINNAME).pdb" /DUNICODE /D_UNICODE /DWIN32_LEAN_AND_MEAN CFREL = /Ox /DNDEBUG CFDBG = /Od /Gm /Zi /D_DEBUG AR = lib AFLAGS = /nologo /subsystem:console /wx /verbose LD = link LFBASE = /dll /def:$(BINNAME).def /nologo /subsystem:console /wx /nodefaultlib /nxcompat LFREL = /incremental:no LFDBG = /debug "/pdb:$(BINDIR)\$(BINNAME).pdb" ##### variants ##### CFLAGS = $(CBASE) $(CFDBG) /MTd LFLAGS = $(LFBASE) $(LFDBG) CLIB = libcmtd.lib ifeq ($(MAKECMDGOALS),librel) CFLAGS = $(CBASE) $(CFREL) /MT LFLAGS = $(LFBASE) $(LFREL) CLIB = libcmt.lib endif ifeq ($(MAKECMDGOALS),libdbg) CFLAGS = $(CBASE) $(CFDBG) /MTd LFLAGS = $(LFBASE) $(LFDBG) CLIB = libcmtd.lib endif ifeq ($(MAKECMDGOALS),dllrel) CFLAGS = $(CBASE) $(CFREL) /MD LFLAGS = $(LFBASE) $(LFREL) CLIB = msvcrt.lib endif ifeq ($(MAKECMDGOALS),dlldbg) CFLAGS = $(CBASE) $(CFDBG) /MDd LFLAGS = $(LFBASE) $(LFDBG) CLIB = msvcrtd.lib endif ##### search paths ##### vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS)) ##### implicit rules ##### $(OBJDIR)/%.obj : %.c $(CC) $(CFLAGS) "/Fo$@" $< ##### explicit rules ##### $(LIB_BINARY) : $(OBJECTS) $(AR) $(AFLAGS) $(OBJECTS) /out:$(LIB_BINARY) $(DLL_BINARY) : $(OBJECTS) $(LD) $(LFLAGS) $(CLIB) $(OBJECTS) /out:$(DLL_BINARY) ##### phony ##### .PHONY : clean librel libdbg dllrel dlldbg clean : @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY) librel : $(LIB_BINARY) libdbg : $(LIB_BINARY) dllrel : $(DLL_BINARY) dlldbg : $(DLL_BINARY)