1 # Makefile.win for Win32 APR + APR-iconv + APR-util
5 # buildall - compile everything
6 # checkall - run APR + APR-util regression tests
7 # install - compile everything
8 # clean - mop up everything
10 # You can override the build mechanism, choose only one;
12 # USEMAK=1 - compile from exported make files
13 # USEDSW=1 - compile from .dsw / .dsp VC6 projects
14 # USESLN=1 - compile from converted .sln / .vcproj VC7+ files
16 # Define ARCH to your desired preference (your PATH must point
17 # to the correct compiler tools!) Choose only one;
19 # ARCH="Win32 Release"
21 # ARCH="Win32 Release9x"
22 # ARCH="Win32 Debug9x"
26 # Provide the APR_PATH, API_PATH and APU_PATH entirely relative
27 # to one another! At this time, building the libraries themselves
28 # is only expected to work if the defaults (../apr, ../apr-iconv
29 # and ../apr-util) are used, or if they are built with USEMAK=1.
31 # APR_PATH=..\apr-1.3.0
32 # API_PATH=..\apr-iconv-1.3.0
33 # APU_PATH=..\apr-util-1.3.0
35 # Provide a DBD_LIST argument after configuring LIB and INCLUDE with
36 # the SDK paths of the corresponding client support libraries.
37 # ODBC is always built on Windows, so it does not get included in DBD_LIST
38 # Note that at this time, none of these are supported on win32, per say.
40 # DBD_LIST="sqlite3 pgsql oracle mysql freetds"
42 # Provide a DBM_LIST argument after configuring LIB and INCLUDE with
43 # the SDK paths of the corresponding database support libraries. Right
44 # now only db has been configured, gdbm and ndbm require additional study.
45 # Note that at this time, none of these are supported on win32, per say.
49 # Provide a CRYPTO_LIST argument after configuring LIB and INCLUDE with
50 # the SDK paths of the corresponding cryptographic support libraries.
52 # CRYPTO_LIST="nss openssl"
56 # nmake -f Makefile.win PREFIX=C:\APR buildall checkall installall clean
59 !IF EXIST("aprutil.sln") && ([devenv /help > NUL 2>&1] == 0) \
60 && !defined(USEMAK) && !defined(USEDSW)
64 !ELSEIF EXIST("aprutil.mak") && !defined(USEDSW)
76 !IF [$(COMSPEC) /c cl /nologo /? \
77 | $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
87 !MESSAGE ARCH = $(ARCH)
88 !MESSAGE APR_PATH = $(APR_PATH)
89 !MESSAGE API_PATH = $(API_PATH) (apr-iconv)
90 !MESSAGE APU_PATH = $(APU_PATH) (apr-util)
91 !MESSAGE PREFIX = $(PREFIX) (install path)
92 !MESSAGE DBD_LIST = $(DBD_LIST)
93 !MESSAGE DBM_LIST = $(DBM_LIST)
94 !MESSAGE CRYPTO_LIST = $(CRYPTO_LIST)
96 # Utility and Translation things, nothing here for the user
98 !IF "$(ARCH)" == "Win32 Release"
104 !ELSEIF "$(ARCH)" == "Win32 Debug"
110 !ELSEIF "$(ARCH)" == "Win32 Release9x"
111 SLNARCH=Release9x|Win32
114 ARCHOSPATH=9x\Release
116 !ELSEIF "$(ARCH)" == "Win32 Debug9x"
117 SLNARCH=Debug9x|Win32
122 !ELSEIF "$(ARCH)" == "x64 Release"
126 ARCHOSPATH=x64\Release
128 !ELSEIF "$(ARCH)" == "x64 Debug"
137 # Only default the behavior if MAKEOPT= is omitted
139 # Microsoft NMake options
141 !ELSEIF "$(MAKE)" == "make"
142 # Borland make options? Not really supported (yet)
150 !IF !EXIST("$(APR_PATH)\apr.dsp") || !EXIST("$(API_PATH)\apriconv.dsp") \
151 || !EXIST("$(APU_PATH)\aprutil.dsp")
152 !MESSAGE Please check out or download and unpack the Apache Portability Runtime
153 !MESSAGE sources (apr, apr-iconv and apr-util) under a single parent dir,
154 !MESSAGE or provide APR_PATH, API_PATH and APU_PATH (all relative to each other,
155 !MESSAGE or all absolute paths).
156 !MESSAGE Apache cannot build without these libraries!
158 !ERROR Need apr and apr-iconv alongside apr-util to build!
162 all: buildall checkall
164 # To help win32 pick up the locations where they don't fall in the usual
165 # path locations. This may not be completely effective for USESLN/USEDSP
166 # oriented builds, just yet
168 LIB=$(APR_PATH)\$(ARCHOSPATH);$(APR_PATH)\$(LIBSOSPATH);$(API_PATH)\$(ARCHPATH);$(API_PATH)\$(LIBSPATH);$(APU_PATH)\$(ARCHPATH);$(APU_PATH)\$(LIBSPATH);$(LIB)
169 INCLUDE=$(APR_PATH)\include;$(API_PATH)\include;$(INCLUDE)
174 $(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
175 CTARGET=CLEAN buildall
179 $(MAKE) $(MAKEOPT) -f apr.mak CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
180 $(MAKE) $(MAKEOPT) -f libapr.mak CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
182 $(MAKE) $(MAKEOPT) -f aprapp.mak CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET)
183 $(MAKE) $(MAKEOPT) -f libaprapp.mak CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET)
186 $(MAKE) $(MAKEOPT) -f apriconv.mak CFG="apriconv - $(ARCH)" RECURSE=0 $(CTARGET)
187 $(MAKE) $(MAKEOPT) -f libapriconv.mak CFG="libapriconv - $(ARCH)" RECURSE=0 $(CTARGET)
188 !IF "$(CTARGET)" == "CLEAN"
189 $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
190 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
193 $(MAKE) $(MAKEOPT) -f Makefile.win all \
194 BUILD_MODE="$(ARCH)" BIND_MODE=shared
196 $(MAKE) $(MAKEOPT) -f Makefile.win all \
197 BUILD_MODE="$(ARCH)" BIND_MODE=shared
200 cd $(APU_PATH)\xml\expat\lib
201 $(MAKE) $(MAKEOPT) -f xml.mak CFG="xml - $(ARCH)" RECURSE=0 $(CTARGET)
203 $(MAKE) $(MAKEOPT) -f aprutil.mak CFG="aprutil - $(ARCH)" RECURSE=0 $(CTARGET)
204 $(MAKE) $(MAKEOPT) -f libaprutil.mak CFG="libaprutil - $(ARCH)" RECURSE=0 $(CTARGET)
206 $(MAKE) $(MAKEOPT) -f apr_ldap.mak CFG="apr_ldap - $(ARCH)" RECURSE=0 $(CTARGET)
209 for %d in (odbc $(DBD_LIST)) do \
210 $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - $(ARCH)" RECURSE=0 $(CTARGET)
213 for %d in ($(DBM_LIST) x) do if not %d == x \
214 $(MAKE) $(MAKEOPT) -f apr_dbm_%d.mak CFG="apr_dbm_%d - $(ARCH)" RECURSE=0 $(CTARGET)
217 for %d in ($(CRYPTO_LIST) x) do if not %d == x \
218 $(MAKE) $(MAKEOPT) -f apr_crypto_%d.mak CFG="apr_crypto_%d - $(ARCH)" RECURSE=0 $(CTARGET)
221 !ELSEIF $(USESLN) == 1
224 -for %d in (odbc $(DBD_LIST)) do \
225 devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbd_%d
226 -for %d in ($(DBM_LIST) x) do if not %d == x \
227 devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbm_%d
228 -for %d in ($(CRYPTO_LIST) x) do if not %d == x \
229 devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_crypto_%d
230 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_ldap
231 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libaprutil
232 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project aprutil
234 -$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
235 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
237 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libapriconv
238 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apriconv
239 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libaprapp
240 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project aprapp
241 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libapr
242 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr
245 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project aprapp
246 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project libaprapp
247 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project aprutil
248 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project libaprutil
249 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_ldap
250 for %d in (odbc $(DBD_LIST)) do \
251 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbd_%d
252 for %d in ($(DBM_LIST) x) do if not %d == x \
253 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbm_%d
254 for %d in ($(CRYPTO_LIST) x) do if not %d == x \
255 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_crypto_%d
261 -for %d in (odbc $(DBD_LIST)) do \
262 msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)" /CLEAN
263 -for %d in ($(DBM_LIST) x) do if not %d == x \
264 msdev aprutil.dsw /USEENV /MAKE "apr_dbm_%d - $(ARCH)" /CLEAN
265 -for %d in ($(CRYPTO_LIST) x) do if not %d == x \
266 msdev aprutil.dsw /USEENV /MAKE "apr_crypto_%d - $(ARCH)" /CLEAN
267 -msdev aprutil.dsw /USEENV /MAKE "apr_ldap - $(ARCH)" /CLEAN
268 -msdev aprutil.dsw /USEENV /MAKE "libaprutil - $(ARCH)" /CLEAN
269 -msdev aprutil.dsw /USEENV /MAKE "aprutil - $(ARCH)" /CLEAN
271 $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
272 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
274 -msdev aprutil.dsw /USEENV /MAKE "libapriconv - $(ARCH)" /CLEAN
275 -msdev aprutil.dsw /USEENV /MAKE "apriconv - $(ARCH)" /CLEAN
276 -msdev aprutil.dsw /USEENV /MAKE "libaprapp - $(ARCH)" /CLEAN
277 -msdev aprutil.dsw /USEENV /MAKE "aprapp - $(ARCH)" /CLEAN
278 -msdev aprutil.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN
279 -msdev aprutil.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN
282 @msdev aprutil.dsw /USEENV /MAKE "aprapp - $(ARCH)"
283 @msdev aprutil.dsw /USEENV /MAKE "aprutil - $(ARCH)"
284 @msdev aprutil.dsw /USEENV /MAKE "libaprapp - $(ARCH)"
285 @msdev aprutil.dsw /USEENV /MAKE "libaprutil - $(ARCH)"
286 @msdev aprutil.dsw /USEENV /MAKE "apr_ldap - $(ARCH)"
287 @for %d in (odbc $(DBD_LIST)) do \
288 msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)"
289 @for %d in ($(DBM_LIST) x) do if not %d == x \
290 msdev aprutil.dsw /USEENV /MAKE "apr_dbm_%d - $(ARCH)"
291 @for %d in ($(CRYPTO_LIST) x) do if not %d == x \
292 msdev aprutil.dsw /USEENV /MAKE "apr_crypto_%d - $(ARCH)"
299 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
300 OUTDIR=$(LIBSOSPATH) check
301 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
302 OUTDIR=$(ARCHOSPATH) check
309 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
310 OUTDIR=$(LIBSPATH) APROUTDIR=$(LIBSOSPATH) \
311 APR_PATH=..\$(APR_PATH) API_PATH=..\$(API_PATH) check
312 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
313 OUTDIR=$(ARCHPATH) APROUTDIR=$(ARCHOSPATH) \
314 APR_PATH=..\$(APR_PATH) API_PATH=..\$(API_PATH) check
317 checkall: checkapr checkapu
323 @if NOT EXIST "$(PREFIX)\." mkdir "$(PREFIX)"
324 @if NOT EXIST "$(PREFIX)\bin\." mkdir "$(PREFIX)\bin"
325 @if NOT EXIST "$(PREFIX)\bin\iconv\." mkdir "$(PREFIX)\bin\iconv"
326 @if NOT EXIST "$(PREFIX)\include\." mkdir "$(PREFIX)\include"
327 @if NOT EXIST "$(PREFIX)\lib\." mkdir "$(PREFIX)\lib"
328 copy CHANGES "$(PREFIX)\CHANGES.txt" <.y
329 copy LICENSE "$(PREFIX)\LICENSE.txt" <.y
330 copy NOTICE "$(PREFIX)\NOTICE.txt" <.y
331 xcopy $(APR_PATH)\include\*.h "$(PREFIX)\include\" /d < .a
332 xcopy $(APU_PATH)\include\*.h "$(PREFIX)\include\" /d < .a
333 copy $(APR_PATH)\$(LIBSOSPATH)\apr-1.lib "$(PREFIX)\lib\" <.y
334 copy $(APR_PATH)\$(LIBSOSPATH)\apr-1.pdb "$(PREFIX)\lib\" <.y
335 copy $(APU_PATH)\$(LIBSPATH)\aprutil-1.lib "$(PREFIX)\lib\" <.y
336 copy $(APU_PATH)\$(LIBSPATH)\aprutil-1.pdb "$(PREFIX)\lib\" <.y
337 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.lib "$(PREFIX)\lib\" <.y
338 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.exp "$(PREFIX)\lib\" <.y
339 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.lib "$(PREFIX)\lib\" <.y
340 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.exp "$(PREFIX)\lib\" <.y
341 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.dll "$(PREFIX)\bin\" <.y
342 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.pdb "$(PREFIX)\bin\" <.y
343 copy $(API_PATH)\$(ARCHPATH)\libapriconv-1.dll "$(PREFIX)\bin\" <.y
344 copy $(API_PATH)\$(ARCHPATH)\libapriconv-1.pdb "$(PREFIX)\bin\" <.y
345 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.dll "$(PREFIX)\bin\" <.y
346 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.pdb "$(PREFIX)\bin\" <.y
347 copy $(APU_PATH)\ldap\$(ARCHPATH)\apr_ldap-1.dll "$(PREFIX)\bin\" <.y
348 copy $(APU_PATH)\ldap\$(ARCHPATH)\apr_ldap-1.pdb "$(PREFIX)\bin\" <.y
349 for %d in (odbc $(DBD_LIST)) do ( \
350 copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_%d-1.dll "$(PREFIX)\bin\" <.y && \
351 copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_%d-1.pdb "$(PREFIX)\bin\" <.y \
353 for %d in ($(DBM_LIST) x) do if not %d == x ( \
354 copy $(APU_PATH)\dbm\$(ARCHPATH)\apr_dbm_%d-1.dll "$(PREFIX)\bin\" <.y && \
355 copy $(APU_PATH)\dbm\$(ARCHPATH)\apr_dbm_%d-1.pdb "$(PREFIX)\bin\" <.y \
357 for %d in ($(CRYPTO_LIST) x) do if not %d == x ( \
358 copy $(APU_PATH)\crypto\$(ARCHPATH)\apr_crypto_%d-1.dll "$(PREFIX)\bin\" <.y && \
359 copy $(APU_PATH)\crypto\$(ARCHPATH)\apr_crypto_%d-1.pdb "$(PREFIX)\bin\" <.y \
361 xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.so "$(PREFIX)\bin\iconv\" /d < .a
362 xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.pdb "$(PREFIX)\bin\iconv\" /d < .a