]> pd.if.org Git - liblfds/blob - liblfds/liblfds6.1.0/liblfds610/makefile.windows
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds6.1.0 / liblfds610 / makefile.windows
1 ##### paths #####
2 BINDIR  = bin
3 INCDIR  = inc
4 OBJDIR  = obj
5 SRCDIR  = src
6
7 ##### misc #####
8 QUIETLY = 1>nul 2>nul
9
10 ##### sources, objects and libraries #####
11 BINNAME = liblfds610
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
25
26 ##### tools #####
27 MAKE    = make
28 MFLAGS  = 
29
30 CC      = cl
31 CBASE   = /nologo /W4 /WX /c "-I$(SRCDIR)" "-I$(INCDIR)" "/Fd$(BINDIR)\$(BINNAME).pdb" /DUNICODE /D_UNICODE /DWIN32_LEAN_AND_MEAN
32 CFREL   = /Ox /DNDEBUG
33 CFDBG   = /Od /Gm /Zi /D_DEBUG
34
35 AR      = lib
36 AFLAGS  = /nologo /subsystem:console /wx /verbose
37
38 LD      = link
39 LFBASE  = /dll /def:$(BINNAME).def /nologo /subsystem:console /wx /nodefaultlib /nxcompat
40 LFREL   = /incremental:no
41 LFDBG   = /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
42
43 ##### variants #####
44 CFLAGS  = $(CBASE) $(CFDBG) /MTd
45 LFLAGS  = $(LFBASE) $(LFDBG)
46 CLIB    = libcmtd.lib
47
48 ifeq ($(MAKECMDGOALS),librel)
49   CFLAGS  = $(CBASE) $(CFREL) /MT
50   LFLAGS  = $(LFBASE) $(LFREL)
51   CLIB    = libcmt.lib
52 endif
53
54 ifeq ($(MAKECMDGOALS),libdbg)
55   CFLAGS  = $(CBASE) $(CFDBG) /MTd
56   LFLAGS  = $(LFBASE) $(LFDBG)
57   CLIB    = libcmtd.lib
58 endif
59
60 ifeq ($(MAKECMDGOALS),dllrel)
61   CFLAGS  = $(CBASE) $(CFREL) /MD
62   LFLAGS  = $(LFBASE) $(LFREL)
63   CLIB    = msvcrt.lib
64 endif
65
66 ifeq ($(MAKECMDGOALS),dlldbg)
67   CFLAGS  = $(CBASE) $(CFDBG) /MDd
68   LFLAGS  = $(LFBASE) $(LFDBG)
69   CLIB    = msvcrtd.lib
70 endif
71
72 ##### search paths #####
73 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
74
75 ##### implicit rules #####
76 $(OBJDIR)/%.obj : %.c
77         $(CC) $(CFLAGS) "/Fo$@" $<
78
79 ##### explicit rules #####
80 $(LIB_BINARY) : $(OBJECTS)
81         $(AR) $(AFLAGS) $(OBJECTS) /out:$(LIB_BINARY)
82
83 $(DLL_BINARY) : $(OBJECTS)
84         $(LD) $(LFLAGS) $(CLIB) $(SYSLIBS) $(OBJECTS) /out:$(DLL_BINARY)
85
86 ##### phony #####
87 .PHONY : clean librel libdbg dllrel dlldbg
88
89 clean : 
90         @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
91
92 librel : $(LIB_BINARY)
93 libdbg : $(LIB_BINARY)
94
95 dllrel : $(DLL_BINARY)
96 dlldbg : $(DLL_BINARY)
97