Even more winbuild refactoring
[platform/upstream/curl.git] / winbuild / Makefile.vc
1 !IF "$(MODE)"=="static"\r
2 TARGET = $(LIB_NAME_STATIC)\r
3 AS_DLL = false\r
4 CFGSET=true\r
5 !ELSEIF "$(MODE)"=="dll"\r
6 TARGET = $(LIB_NAME_DLL)\r
7 AS_DLL = true\r
8 CFGSET=true\r
9 !ELSE\r
10 !MESSAGE Invalid mode: $(MODE)\r
11 \r
12 #######################\r
13 # Usage\r
14 #\r
15 \r
16 !MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>\r
17 !MESSAGE where <options> is one or many of:\r
18 !MESSAGE   VC=<6,7,8,9,10>              - VC versions\r
19 !MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
20 !MESSAGE                                  Defaults to sibbling directory deps: ../deps\r
21 !MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/\r
22 !MESSAGE                                  Uncompress them into the deps folder.\r
23 !MESSAGE   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static\r
24 !MESSAGE   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static\r
25 !MESSAGE   WITH_SSH2=<dll or static>    - Enable libSSH2 support, DLL or static\r
26 !MESSAGE   ENABLE_IDN=<yes or no>       - Enable use of Windows IDN APIs, defaults to yes\r
27 !MESSAGE                                  Requires Windows Vista or later, or installation from:\r
28 !MESSAGE                                  http://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815\r
29 !MESSAGE   ENABLE_IPV6=<yes or no>      - Enable IPv6, defaults to yes\r
30 !MESSAGE   ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes\r
31 !MESSAGE   ENABLE_SPNEGO=<yes or no>    - Enable Simple and Protected GSSAPI Negotiation Mechanism, defaults to yes\r
32 !MESSAGE   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes\r
33 !MESSAGE   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)\r
34 !MESSAGE   DEBUG=<yes or no>            - Debug builds\r
35 !MESSAGE   MACHINE=<X86 or X64>         - Target architecture (default x86)
36 !ERROR please choose a valid mode\r
37 \r
38 !ENDIF\r
39 \r
40 !INCLUDE "../lib/Makefile.inc"\r
41 LIBCURL_OBJS=$(CSOURCES:.c=.obj)\r
42 \r
43 top_srcdir=..\r
44 !INCLUDE "../src/Makefile.inc"\r
45 \r
46 # hugehelp has a special rule\r
47 CURL_OBJS=$(CURL_CFILES:hugehelp.c=)\r
48 \r
49 CURL_OBJS=$(CURL_OBJS:.c=.obj)\r
50 \r
51 \r
52 # backwards compatible check for USE_SSPI\r
53 !IFDEF USE_SSPI\r
54 ENABLE_SSPI = $(USE_SSPI)\r
55 !ENDIF\r
56 \r
57 # default options\r
58 !IFNDEF MACHINE
59 MACHINE = X86
60 !ENDIF
61
62 !IFNDEF ENABLE_IDN\r
63 USE_IDN = true\r
64 !ELSEIF "$(ENABLE_IDN)"=="yes"\r
65 USE_IDN = true\r
66 !ELSEIF "$(ENABLE_IDN)"=="no"\r
67 USE_IDN = false\r
68 !ENDIF\r
69 \r
70 !IFNDEF ENABLE_IPV6\r
71 USE_IPV6 = true\r
72 !ELSEIF "$(ENABLE_IPV6)"=="yes"\r
73 USE_IPV6 = true\r
74 !ELSEIF "$(ENABLE_IPV6)"=="no"\r
75 USE_IPV6 = false\r
76 !ENDIF\r
77 \r
78 !IFNDEF ENABLE_SSPI\r
79 USE_SSPI = true\r
80 !ELSEIF "$(ENABLE_SSPI)"=="yes"\r
81 USE_SSPI = true\r
82 !ELSEIF "$(ENABLE_SSPI)"=="no"\r
83 USE_SSPI = false\r
84 !ENDIF\r
85 \r
86 !IFNDEF ENABLE_SPNEGO\r
87 USE_SPNEGO = true\r
88 !ELSEIF "$(ENABLE_SPNEGO)"=="yes"\r
89 USE_SPNEGO = true\r
90 !ELSEIF "$(ENABLE_SPNEGO)"=="no"\r
91 USE_SPNEGO = false\r
92 !ENDIF\r
93 \r
94 !IFNDEF ENABLE_WINSSL\r
95 USE_WINSSL = $(USE_SSPI)\r
96 !ELSEIF "$(ENABLE_WINSSL)"=="yes"\r
97 USE_WINSSL = true\r
98 !ELSEIF "$(ENABLE_WINSSL)"=="no"\r
99 USE_WINSSL = false\r
100 !ENDIF\r
101 \r
102 CONFIG_NAME_LIB = libcurl\r
103 \r
104 !IF "$(WITH_SSL)"=="dll"\r
105 USE_SSL = true\r
106 SSL     = dll\r
107 !ELSEIF "$(WITH_SSL)"=="static"\r
108 USE_SSL = true\r
109 SSL     = static\r
110 !ENDIF\r
111 \r
112 !IF "$(WITH_ZLIB)"=="dll"\r
113 USE_ZLIB = true\r
114 ZLIB     = dll\r
115 !ELSEIF "$(WITH_ZLIB)"=="static"\r
116 USE_ZLIB = true\r
117 ZLIB     = static\r
118 !ENDIF\r
119 \r
120 !IF "$(WITH_SSH2)"=="dll"\r
121 USE_SSH2 = true\r
122 SSH2     = dll\r
123 !ELSEIF "$(WITH_SSH2)"=="static"\r
124 USE_SSH2 = true\r
125 SSH2     = static\r
126 !ENDIF\r
127 \r
128 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-$(MACHINE)
129
130 !IF "$(DEBUG)"=="yes"\r
131 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-debug\r
132 !ELSE\r
133 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-release\r
134 !ENDIF\r
135 \r
136 !IF "$(AS_DLL)"=="true"\r
137 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-dll\r
138 !ELSE\r
139 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static\r
140 !ENDIF\r
141 \r
142 !IF "$(USE_SSL)"=="true"\r
143 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL)\r
144 !ENDIF\r
145 \r
146 !IF "$(USE_ZLIB)"=="true"\r
147 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)\r
148 !ENDIF\r
149 \r
150 !IF "$(USE_SSH2)"=="true"\r
151 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2)\r
152 !ENDIF\r
153 \r
154 !IF "$(USE_IPV6)"=="true"\r
155 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6\r
156 !ENDIF\r
157 \r
158 !IF "$(USE_SSPI)"=="true"\r
159 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi\r
160 !ENDIF\r
161 \r
162 !IF "$(USE_SPNEGO)"=="true"\r
163 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-spnego\r
164 !ENDIF\r
165 \r
166 !IF "$(USE_WINSSL)"=="true"\r
167 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-winssl\r
168 !ENDIF\r
169 \r
170 !MESSAGE configuration name: $(CONFIG_NAME_LIB)\r
171 \r
172 BUILD_DIR=../builds/$(CONFIG_NAME_LIB)\r
173 LIBCURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib\r
174 CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl\r
175 DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\\r
176 \r
177 $(MODE):\r
178         @SET DIROBJ=$(LIBCURL_DIROBJ)
179         @SET MACRO_NAME=LIBCURL_OBJS\r
180         @SET OUTFILE=LIBCURL_OBJS.inc\r
181         @gen_resp_file.bat $(LIBCURL_OBJS)\r
182
183         @SET DIROBJ=$(CURL_DIROBJ)
184         @SET MACRO_NAME=CURL_OBJS\r
185         @SET OUTFILE=CURL_OBJS.inc\r
186         @gen_resp_file.bat $(CURL_OBJS)\r
187
188         @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
189         @SET MACHINE=$(MACHINE)
190         @SET USE_IDN=$(USE_IDN)\r
191         @SET USE_IPV6=$(USE_IPV6)\r
192         @SET USE_SSPI=$(USE_SSPI)\r
193         @SET USE_SPNEGO=$(USE_SPNEGO)\r
194         @SET USE_WINSSL=$(USE_WINSSL)\r
195         @$(MAKE) /NOLOGO /F MakefileBuild.vc\r
196 \r
197 copy_from_lib:\r
198         echo copying .c...\r
199         FOR %%i IN ($(CURLX_ONES:/=\)) DO copy %%i ..\src\\r