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 mechansim, 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"
44 # nmake -f Makefile.win PREFIX=C:\APR buildall checkall installall clean
47 !IF EXIST("aprutil.sln") && ([devenv /help > NUL 2>&1] == 0) \
48 && !defined(USEMAK) && !defined(USEDSW)
52 !ELSEIF EXIST("aprutil.mak") && !defined(USEDSW)
64 !IF [$(COMSPEC) /c cl /nologo /? \
65 | $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
75 !MESSAGE ARCH = $(ARCH)
76 !MESSAGE APR_PATH = $(APR_PATH)
77 !MESSAGE API_PATH = $(API_PATH) (apr-iconv)
78 !MESSAGE APU_PATH = $(APU_PATH) (apr-util)
79 !MESSAGE PREFIX = $(PREFIX) (install path)
80 !MESSAGE DBD_LIST = $(DBD_LIST)
82 # Utility and Translation things, nothing here for the user
84 !IF "$(ARCH)" == "Win32 Release"
90 !ELSEIF "$(ARCH)" == "Win32 Debug"
96 !ELSEIF "$(ARCH)" == "Win32 Release9x"
97 SLNARCH=Release9x|Win32
100 ARCHOSPATH=9x\Release
102 !ELSEIF "$(ARCH)" == "Win32 Debug9x"
103 SLNARCH=Debug9x|Win32
108 !ELSEIF "$(ARCH)" == "x64 Release"
112 ARCHOSPATH=x64\Release
114 !ELSEIF "$(ARCH)" == "x64 Debug"
123 # Only default the behavior if MAKEOPT= is omitted
125 # Microsoft NMake options
127 !ELSEIF "$(MAKE)" == "make"
128 # Borland make options? Not really supported (yet)
136 !IF !EXIST("$(APR_PATH)\apr.dsp") || !EXIST("$(API_PATH)\apriconv.dsp") \
137 || !EXIST("$(APU_PATH)\aprutil.dsp")
138 !MESSAGE Please check out or download and unpack the Apache Portability Runtime
139 !MESSAGE sources (apr, apr-iconv and apr-util) under a single parent dir,
140 !MESSAGE or provide APR_PATH, API_PATH and APU_PATH (all relative to each other,
141 !MESSAGE or all absolute paths).
142 !MESSAGE Apache cannot build without these libraries!
144 !ERROR Need apr and apr-iconv alongside apr-util to build!
148 all: buildall checkall
150 # To help win32 pick up the locations where they don't fall in the usual
151 # path locations. This may not be completely effective for USESLN/USEDSP
152 # oriented builds, just yet
154 LIB=$(APR_PATH)\$(ARCHOSPATH);$(APR_PATH)\$(LIBSOSPATH);$(API_PATH)\$(ARCHPATH);$(API_PATH)\$(LIBSPATH);$(APU_PATH)\$(ARCHPATH);$(APU_PATH)\$(LIBSPATH);$(LIB)
155 INCLUDE=$(APR_PATH)\include;$(API_PATH)\include;$(INCLUDE)
160 $(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
161 CTARGET=CLEAN buildall
165 $(MAKE) $(MAKEOPT) -f apr.mak CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
166 $(MAKE) $(MAKEOPT) -f libapr.mak CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
168 $(MAKE) $(MAKEOPT) -f aprapp.mak CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET)
169 $(MAKE) $(MAKEOPT) -f libaprapp.mak CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET)
172 $(MAKE) $(MAKEOPT) -f apriconv.mak CFG="apriconv - $(ARCH)" RECURSE=0 $(CTARGET)
173 $(MAKE) $(MAKEOPT) -f libapriconv.mak CFG="libapriconv - $(ARCH)" RECURSE=0 $(CTARGET)
174 !IF "$(CTARGET)" == "CLEAN"
175 $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
176 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
179 $(MAKE) $(MAKEOPT) -f Makefile.win all \
180 BUILD_MODE="$(ARCH)" BIND_MODE=shared
182 $(MAKE) $(MAKEOPT) -f Makefile.win all \
183 BUILD_MODE="$(ARCH)" BIND_MODE=shared
186 cd $(APU_PATH)\xml\expat\lib
187 $(MAKE) $(MAKEOPT) -f xml.mak CFG="xml - $(ARCH)" RECURSE=0 $(CTARGET)
189 $(MAKE) $(MAKEOPT) -f aprutil.mak CFG="aprutil - $(ARCH)" RECURSE=0 $(CTARGET)
190 $(MAKE) $(MAKEOPT) -f libaprutil.mak CFG="libaprutil - $(ARCH)" RECURSE=0 $(CTARGET)
192 $(MAKE) $(MAKEOPT) -f apr_ldap.mak CFG="apr_ldap - $(ARCH)" RECURSE=0 $(CTARGET)
195 $(MAKE) $(MAKEOPT) -f apr_dbd_odbc.mak CFG="apr_dbd_odbc - $(ARCH)" RECURSE=0 $(CTARGET)
197 for %d in ($(DBD_LIST)) do \
198 $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - $(ARCH)" RECURSE=0 $(CTARGET)
202 !ELSEIF $(USESLN) == 1
205 devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbd_odbc
207 -for %d in ($(DBD_LIST)) do \
208 devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbd_%d
210 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_ldap
211 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libaprutil
212 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project aprutil
214 -$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
215 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
217 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libapriconv
218 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apriconv
219 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libaprapp
220 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project aprapp
221 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libapr
222 -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr
225 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project aprapp
226 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project libaprapp
227 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project aprutil
228 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project libaprutil
229 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_ldap
230 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbd_odbc
232 for %d in ($(DBD_LIST)) do \
233 devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbd_%d
240 msdev aprutil.dsw /USEENV /MAKE "apr_dbd_odbc - $(ARCH)" /CLEAN
242 -for %d in ($(DBD_LIST)) do \
243 msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)" /CLEAN
245 -msdev aprutil.dsw /USEENV /MAKE "apr_ldap - $(ARCH)" /CLEAN
246 -msdev aprutil.dsw /USEENV /MAKE "libaprutil - $(ARCH)" /CLEAN
247 -msdev aprutil.dsw /USEENV /MAKE "aprutil - $(ARCH)" /CLEAN
249 $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
250 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
252 -msdev aprutil.dsw /USEENV /MAKE "libapriconv - $(ARCH)" /CLEAN
253 -msdev aprutil.dsw /USEENV /MAKE "apriconv - $(ARCH)" /CLEAN
254 -msdev aprutil.dsw /USEENV /MAKE "libaprapp - $(ARCH)" /CLEAN
255 -msdev aprutil.dsw /USEENV /MAKE "aprapp - $(ARCH)" /CLEAN
256 -msdev aprutil.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN
257 -msdev aprutil.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN
260 @msdev aprutil.dsw /USEENV /MAKE "aprapp - $(ARCH)"
261 @msdev aprutil.dsw /USEENV /MAKE "aprutil - $(ARCH)"
262 @msdev aprutil.dsw /USEENV /MAKE "libaprapp - $(ARCH)"
263 @msdev aprutil.dsw /USEENV /MAKE "libaprutil - $(ARCH)"
264 @msdev aprutil.dsw /USEENV /MAKE "apr_ldap - $(ARCH)"
265 msdev aprutil.dsw /USEENV /MAKE "apr_dbd_odbc - $(ARCH)"
267 @for %d in ($(DBD_LIST)) do \
268 msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)"
276 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
277 OUTDIR=$(LIBSOSPATH) check
278 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
279 OUTDIR=$(ARCHOSPATH) check
286 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
287 OUTDIR=$(LIBSPATH) APROUTDIR=$(LIBSOSPATH) \
288 APR_PATH=..\$(APR_PATH) API_PATH=..\$(API_PATH) check
289 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
290 OUTDIR=$(ARCHPATH) APROUTDIR=$(ARCHOSPATH) \
291 APR_PATH=..\$(APR_PATH) API_PATH=..\$(API_PATH) check
294 checkall: checkapr checkapu
300 @if NOT EXIST "$(PREFIX)\." mkdir "$(PREFIX)"
301 @if NOT EXIST "$(PREFIX)\bin\." mkdir "$(PREFIX)\bin"
302 @if NOT EXIST "$(PREFIX)\bin\iconv\." mkdir "$(PREFIX)\bin\iconv"
303 @if NOT EXIST "$(PREFIX)\include\." mkdir "$(PREFIX)\include"
304 @if NOT EXIST "$(PREFIX)\lib\." mkdir "$(PREFIX)\lib"
305 copy CHANGES "$(PREFIX)\CHANGES.txt" <.y
306 copy LICENSE "$(PREFIX)\LICENSE.txt" <.y
307 copy NOTICE "$(PREFIX)\NOTICE.txt" <.y
308 xcopy $(APR_PATH)\include\*.h "$(PREFIX)\include\" /d < .a
309 xcopy $(APU_PATH)\include\*.h "$(PREFIX)\include\" /d < .a
310 copy $(APR_PATH)\$(LIBSOSPATH)\apr-1.lib "$(PREFIX)\lib\" <.y
311 copy $(APR_PATH)\$(LIBSOSPATH)\apr-1.pdb "$(PREFIX)\lib\" <.y
312 copy $(APU_PATH)\$(LIBSPATH)\aprutil-1.lib "$(PREFIX)\lib\" <.y
313 copy $(APU_PATH)\$(LIBSPATH)\aprutil-1.pdb "$(PREFIX)\lib\" <.y
314 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.lib "$(PREFIX)\lib\" <.y
315 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.exp "$(PREFIX)\lib\" <.y
316 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.lib "$(PREFIX)\lib\" <.y
317 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.exp "$(PREFIX)\lib\" <.y
318 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.dll "$(PREFIX)\bin\" <.y
319 copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.pdb "$(PREFIX)\bin\" <.y
320 copy $(API_PATH)\$(ARCHPATH)\libapriconv-1.dll "$(PREFIX)\bin\" <.y
321 copy $(API_PATH)\$(ARCHPATH)\libapriconv-1.pdb "$(PREFIX)\bin\" <.y
322 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.dll "$(PREFIX)\bin\" <.y
323 copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.pdb "$(PREFIX)\bin\" <.y
324 copy $(APU_PATH)\ldap\$(ARCHPATH)\apr_ldap-1.dll "$(PREFIX)\bin\" <.y
325 copy $(APU_PATH)\ldap\$(ARCHPATH)\apr_ldap-1.pdb "$(PREFIX)\bin\" <.y
326 copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_odbc-1.dll "$(PREFIX)\bin\" <.y && \
327 copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_odbc-1.pdb "$(PREFIX)\bin\" <.y \
329 for %d in ($(DBD_LIST)) do ( \
330 copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_%d-1.dll "$(PREFIX)\bin\" <.y && \
331 copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_%d-1.pdb "$(PREFIX)\bin\" <.y \
334 xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.so "$(PREFIX)\bin\iconv\" /d < .a
335 xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.pdb "$(PREFIX)\bin\iconv\" /d < .a