summaryrefslogtreecommitdiff
path: root/winbuild/Makefile.vc
blob: a35e9beab5fb4d57d5c9c1ee3f379084a9c4a83b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
!IF "$(MODE)"=="static"
TARGET = $(LIB_NAME_STATIC)
AS_DLL = false
CFGSET=true
!ELSEIF "$(MODE)"=="dll"
TARGET = $(LIB_NAME_DLL)
AS_DLL = true
CFGSET=true
!ELSE
!MESSAGE Invalid mode: $(MODE)

#######################
# Usage
#

!MESSAGE Usage: nmake /f makefile.vc mode=<static or dll> <options>
!MESSAGE where <options> is one or many of:
!MESSAGE   VC=<6,7,8,9,10>              - VC versions
!MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)
!MESSAGE                                  Default to sibbling directory deps: ../deps
!MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/
!MESSAGE                                  Uncompress them into the deps folder.
!MESSAGE   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static
!MESSAGE   WITH_ZLIB=<dll or static>    - Enable ZLib support, DLL or static
!MESSAGE   WITH_SSH2=<dll or static>    - Enable LIbSSH2 support, DLL or static
!MESSAGE   USE_SSPI=<yes or no>         - Enable SSPI support, default to yes
!MESSAGE   ENABLE_IPV6=<yes or no>      - Enable IPV6, default to yes
!MESSAGE   ENABLE_IDN=<yes or no>       - Wheter or not to use IDN Windows APIs. Requires Windows Vista or later.
!MESSAGE                                  or to install http://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815
!MESSAGE   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols release build)
!MESSAGE   DEBUG=<yes or no>            - Debug builds
!ERROR please choose a valid mode

!ENDIF

!INCLUDE "../lib/Makefile.inc"
LIBCURL_OBJS=$(CSOURCES:.c=.obj)

top_srcdir=..
!INCLUDE "../src/Makefile.inc"

# hugehelp has a special rule
CURL_OBJS=$(CURL_CFILES:hugehelp.c=)

CURL_OBJS=$(CURL_OBJS:.c=.obj)

# default options
!IFNDEF USE_SSPI
USE_SSPI = true
!ENDIF

!IFNDEF ENABLE_IPV6
USE_IPV6 = true
!ELSEIF "$(ENABLE_IPV6)"=="yes"
USE_IPV6 = true
!ELSEIF "$(ENABLE_IPV6)"=="no"
USE_IPV6 = false
!ENDIF

!IFNDEF ENABLE_IDN
USE_IDN = true
!ELSEIF "$(ENABLE_IDN)"=="yes"
USE_IDN = true
!ELSEIF "$(ENABLE_IDN)"=="no"
USE_IDN = false
!ENDIF

CONFIG_NAME_LIB = libcurl

!IF "$(WITH_SSL)"=="dll"
USE_SSL = true
SSL     = dll
!ELSEIF "$(WITH_SSL)"=="static"
USE_SSL = true
SSL     = static
!ELSEIF "$(WITH_SSL)"=="schannel"
USE_SSL      = true
USE_SSPI     = true
SSL          = schannel
!ENDIF

!IF "$(WITH_ZLIB)"=="dll"
USE_ZLIB = true
ZLIB     = dll
!ELSEIF "$(WITH_ZLIB)"=="static"
USE_ZLIB = true
ZLIB     = static
!ENDIF

!IF "$(WITH_SSH2)"=="dll"
USE_SSH2 = true
SSH2     = dll
!ELSEIF "$(WITH_SSH2)"=="static"
USE_SSH2 = true
SSH2     = static
!ENDIF

!IF "$(DEBUG)"=="yes"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-debug
!ELSE
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-release
!ENDIF

!IF "$(AS_DLL)" == "true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-dll
!ELSE
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static
!ENDIF

!IF "$(USE_SSL)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL)
!ENDIF

!IF "$(USE_ZLIB)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)
!ENDIF

!IF "$(USE_SSH2)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2)
!ENDIF

!IF "$(USE_IPV6)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6
!ENDIF

!IF "$(USE_SSPI)"=="true"
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi
!ENDIF

!MESSAGE configuration name: $(CONFIG_NAME_LIB)

BUILD_DIR=../builds/$(CONFIG_NAME_LIB)
LIBCURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl
DIRDIST = ..\builds\$(CONFIG_NAME_LIB)\

$(MODE):
	@SET LIBCURL_DIROBJ=$(LIBCURL_DIROBJ)
	@SET MACRO_NAME=LIBCURL_OBJS
	@SET OUTFILE=LIBCURL_OBJS.inc
	@gen_resp_file.bat $(LIBCURL_OBJS)
	@SET LIBCURL_DIROBJ=$(CURL_DIROBJ)
	@SET MACRO_NAME=CURL_OBJS
	@SET OUTFILE=CURL_OBJS.inc
	@gen_resp_file.bat $(CURL_OBJS)
	@SET USE_IPV6=$(USE_IPV6)
	@SET USE_IDN=$(USE_IDN)
	@$(MAKE) /NOLOGO /F MakefileBuild.vc

copy_from_lib:
	echo copying .c...
	FOR %%i IN ($(CURLX_ONES:/=\)) DO copy %%i ..\src\