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