]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/test_and_benchmark/libshared/build/msvc_gnumake/makefile
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / test_and_benchmark / libshared / build / msvc_gnumake / makefile
1 ##### paths #####
2 BINDIR := ..\..\bin
3 INCDIR := ..\..\inc
4 OBJDIR := ..\..\obj
5 SRCDIR := ..\..\src
6
7 ##### misc #####
8 QUIETLY := 1>nul 2>nul
9 NULL := 
10 SPACE := $(NULL) # TRD : with a trailing space
11
12 ##### sources, objects and libraries #####
13 BINNAME    := libshared
14 LIB_BINARY := $(BINDIR)\$(BINNAME).lib
15 DLL_BINARY := $(BINDIR)\$(BINNAME).dll
16 SRCDIRS    := libshared_ansi libshared_memory libshared_misc libshared_porting_abstraction_layer
17 SOURCES    := libshared_ansi_strcat.c libshared_ansi_strcat_char.c libshared_ansi_strcat_number.c libshared_ansi_strcpy.c libshared_ansi_strlen.c \
18               libshared_memory_add.c libshared_memory_alloc.c libshared_memory_cleanup.c libshared_memory_init.c libshared_memory_query.c libshared_memory_rollback.c \
19               libshared_misc_query.c \
20               libshared_porting_abstraction_layer_thread_start.c libshared_porting_abstraction_layer_thread_wait.c
21 OBJECTS    := $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES)))
22 SYSLIBS    := kernel32.lib
23 USRLIBS    := ..\..\..\..\liblfds710\bin\liblfds710.lib
24
25 ##### default paths fix up #####
26 INCDIRS := $(patsubst %,%;,$(INCDIR))
27 INCLUDE += $(subst $(SPACE),,$(INCDIRS))
28
29 ##### tools #####
30 CC                    := cl
31 CFLAGS_MANDATORY      := /c "/Fd$(BINDIR)\$(BINNAME).pdb" /wd 4068
32 CFLAGS_OPTIONAL       := /DWIN32_LEAN_AND_MEAN /DUNICODE /D_UNICODE /nologo /W4 /WX
33 CFLAGS_MANDATORY_DBG  := /Od /Gm /Zi /D_DEBUG
34 CFLAGS_MANDATORY_REL  := /Ox /DNDEBUG
35
36 AR                    := lib
37 ARFLAGS               :=
38 ARFLAGS_MANDATORY     := /subsystem:console
39 ARFLAGS_OPTIONAL      := /nologo /wx /verbose
40
41 LD                    := link
42 LDFLAGS_MANDATORY     := /def:$(BINNAME).def /dll /nodefaultlib /subsystem:console
43 LDFLAGS_OPTIONAL      := /nologo /nxcompat /wx
44 LDFLAGS_MANDATORY_DBG := /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
45 LDFLAGS_MANDATORY_REL := /incremental:no
46
47 ##### variants #####
48 ifeq ($(MAKECMDGOALS),) # TRD : default to debug lib
49   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG) /MTd
50   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
51   CLIB              := libcmtd.lib
52 endif
53
54 ifeq ($(MAKECMDGOALS),libdbg)
55   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG) /MTd
56   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
57   CLIB              := msvcrtd.lib
58 endif
59
60 ifeq ($(MAKECMDGOALS),librel)
61   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_REL) /MT
62   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_REL)
63   CLIB              := msvcrt.lib
64 endif
65
66 ifeq ($(MAKECMDGOALS),dlldbg)
67   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG) /MDd
68   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
69   CLIB              := msvcrtd.lib
70 endif
71
72 ifeq ($(MAKECMDGOALS),dllrel)
73   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_REL) /MD
74   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_REL)
75   CLIB              := msvcrt.lib
76 endif
77
78 ##### search paths #####
79 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
80
81 ##### implicit rules #####
82 $(OBJDIR)/%.obj : %.c
83         $(CC) $(CFLAGS_OPTIONAL) $(CFLAGS) $(CFLAGS_MANDATORY) "/Fo$@" $<
84
85 ##### explicit rules #####
86 $(LIB_BINARY) : $(OBJECTS)
87         $(AR) $(ARFLAGS_OPTIONAL) $(ARFLAGS) $(ARFLAGS_MANDATORY) $(OBJECTS) /out:$(LIB_BINARY)
88
89 $(DLL_BINARY) : $(OBJECTS)
90         $(LD) $(LDFLAGS_OPTIONAL) $(LDFLAGS) $(LDFLAGS_MANDATORY) $(CLIB) $(SYSLIBS) $(USRLIBS) $(OBJECTS) /out:$(DLL_BINARY)
91
92 ##### phony #####
93 .PHONY : clean librel libdbg dllrel dlldbg
94
95 clean : 
96         @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
97
98 dllrel : $(DLL_BINARY)
99 dlldbg : $(DLL_BINARY)
100
101 librel : $(LIB_BINARY)
102 libdbg : $(LIB_BINARY)
103
104 ##### notes #####
105 # /wd 4068 : turn off "unknown pragma" warning
106