1# Makefile.win for Win32 APR + APR-iconv + APR-util 2# 3# Targets are: 4# 5# buildall - compile everything 6# checkall - run APR + APR-util regression tests 7# install - compile everything 8# clean - mop up everything 9# 10# You can override the build mechanism, choose only one; 11# 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 15# 16# Define ARCH to your desired preference (your PATH must point 17# to the correct compiler tools!) Choose only one; 18# 19# ARCH="Win32 Release" 20# ARCH="Win32 Debug" 21# ARCH="Win32 Release9x" 22# ARCH="Win32 Debug9x" 23# ARCH="x64 Release" 24# ARCH="x64 Debug" 25# 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. 30# 31# APR_PATH=..\apr-1.3.0 32# API_PATH=..\apr-iconv-1.3.0 33# APU_PATH=..\apr-util-1.3.0 34# 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. 39# 40# DBD_LIST="sqlite3 pgsql oracle mysql freetds" 41# 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. 46# 47# DBM_LIST="db gdbm" 48# 49# Provide a CRYPTO_LIST argument after configuring LIB and INCLUDE with 50# the SDK paths of the corresponding cryptographic support libraries. 51# 52# CRYPTO_LIST="nss openssl" 53# 54# For example; 55# 56# nmake -f Makefile.win PREFIX=C:\APR buildall checkall installall clean 57# 58 59!IF EXIST("aprutil.sln") && ([devenv /help > NUL 2>&1] == 0) \ 60 && !defined(USEMAK) && !defined(USEDSW) 61USESLN=1 62USEMAK=0 63USEDSW=0 64!ELSEIF EXIST("aprutil.mak") && !defined(USEDSW) 65USESLN=0 66USEMAK=1 67USEDSW=0 68!ELSE 69USESLN=0 70USEMAK=0 71USEDSW=1 72!ENDIF 73 74PREFIX=..\apr-dist 75 76!IF [$(COMSPEC) /c cl /nologo /? \ 77 | $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0 78ARCH=x64 Release 79!ELSE 80ARCH=Win32 Release 81!ENDIF 82 83APR_PATH=..\apr 84API_PATH=..\apr-iconv 85APU_PATH=..\apr-util 86 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) 95 96# Utility and Translation things, nothing here for the user 97# 98!IF "$(ARCH)" == "Win32 Release" 99SLNARCH=Release|Win32 100ARCHPATH=Release 101LIBSPATH=LibR 102ARCHOSPATH=Release 103LIBSOSPATH=LibR 104!ELSEIF "$(ARCH)" == "Win32 Debug" 105SLNARCH=Debug|Win32 106ARCHPATH=Debug 107LIBSPATH=LibD 108ARCHOSPATH=Debug 109LIBSOSPATH=LibD 110!ELSEIF "$(ARCH)" == "Win32 Release9x" 111SLNARCH=Release9x|Win32 112ARCHPATH=Release 113LIBSPATH=LibR 114ARCHOSPATH=9x\Release 115LIBSOSPATH=9x\LibR 116!ELSEIF "$(ARCH)" == "Win32 Debug9x" 117SLNARCH=Debug9x|Win32 118ARCHPATH=Debug 119LIBSPATH=LibD 120ARCHOSPATH=9x\Debug 121LIBSOSPATH=9x\LibD 122!ELSEIF "$(ARCH)" == "x64 Release" 123SLNARCH=Release|x64 124ARCHPATH=x64\Release 125LIBSPATH=x64\LibR 126ARCHOSPATH=x64\Release 127LIBSOSPATH=x64\LibR 128!ELSEIF "$(ARCH)" == "x64 Debug" 129SLNARCH=Debug|x64 130ARCHPATH=x64\Debug 131LIBSPATH=x64\LibD 132ARCHOSPATH=x64\Debug 133LIBSOSPATH=x64\LibD 134!ENDIF 135 136!IFNDEF MAKEOPT 137# Only default the behavior if MAKEOPT= is omitted 138!IFDEF _NMAKE_VER 139# Microsoft NMake options 140MAKEOPT=-nologo 141!ELSEIF "$(MAKE)" == "make" 142# Borland make options? Not really supported (yet) 143MAKEOPT=-s -N 144!ENDIF 145!ENDIF 146 147 148# Sanity Checks 149# 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! 157!MESSAGE 158!ERROR Need apr and apr-iconv alongside apr-util to build! 159!ENDIF 160 161 162all: buildall checkall 163 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 167# 168LIB=$(APR_PATH)\$(ARCHOSPATH);$(APR_PATH)\$(LIBSOSPATH);$(API_PATH)\$(ARCHPATH);$(API_PATH)\$(LIBSPATH);$(APU_PATH)\$(ARCHPATH);$(APU_PATH)\$(LIBSPATH);$(LIB) 169INCLUDE=$(APR_PATH)\include;$(API_PATH)\include;$(INCLUDE) 170 171!IF $(USEMAK) == 1 172 173clean: 174 $(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \ 175 CTARGET=CLEAN buildall 176 177buildall: 178 cd $(APR_PATH) 179 $(MAKE) $(MAKEOPT) -f apr.mak CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET) 180 $(MAKE) $(MAKEOPT) -f libapr.mak CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET) 181 cd build 182 $(MAKE) $(MAKEOPT) -f aprapp.mak CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET) 183 $(MAKE) $(MAKEOPT) -f libaprapp.mak CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET) 184 cd .. 185 cd $(API_PATH) 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=. 191!ELSE 192 cd ccs 193 $(MAKE) $(MAKEOPT) -f Makefile.win all \ 194 BUILD_MODE="$(ARCH)" BIND_MODE=shared 195 cd ..\ces 196 $(MAKE) $(MAKEOPT) -f Makefile.win all \ 197 BUILD_MODE="$(ARCH)" BIND_MODE=shared 198 cd .. 199!ENDIF 200 cd $(APU_PATH)\xml\expat\lib 201 $(MAKE) $(MAKEOPT) -f xml.mak CFG="xml - $(ARCH)" RECURSE=0 $(CTARGET) 202 cd ..\..\.. 203 $(MAKE) $(MAKEOPT) -f aprutil.mak CFG="aprutil - $(ARCH)" RECURSE=0 $(CTARGET) 204 $(MAKE) $(MAKEOPT) -f libaprutil.mak CFG="libaprutil - $(ARCH)" RECURSE=0 $(CTARGET) 205 cd ldap 206 $(MAKE) $(MAKEOPT) -f apr_ldap.mak CFG="apr_ldap - $(ARCH)" RECURSE=0 $(CTARGET) 207 cd .. 208 cd dbd 209 for %d in (odbc $(DBD_LIST)) do \ 210 $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - $(ARCH)" RECURSE=0 $(CTARGET) 211 cd .. 212 cd dbm 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) 215 cd .. 216 cd crypto 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) 219 cd .. 220 221!ELSEIF $(USESLN) == 1 222 223clean: 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 233 cd $(API_PATH) 234 -$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \ 235 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=. 236 cd $(APU_PATH) 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 243 244buildall: 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 256 257!ELSE 258# $(USEDSP) == 1 259 260clean: 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 270 cd $(API_PATH) 271 $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \ 272 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=. 273 cd $(APU_PATH) 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 280 281buildall: 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)" 293 294!ENDIF 295 296 297checkapr: 298 cd $(APR_PATH)\test 299 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \ 300 OUTDIR=$(LIBSOSPATH) check 301 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \ 302 OUTDIR=$(ARCHOSPATH) check 303 cd .. 304 cd $(APU_PATH) 305 306checkapu: 307 cd $(APU_PATH) 308 cd test 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 315 cd .. 316 317checkall: checkapr checkapu 318 319 320install: 321 echo Y >.y 322 echo A >.A 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 \ 352 ) 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 \ 356 ) 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 \ 360 ) 361 xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.so "$(PREFIX)\bin\iconv\" /d < .a 362 xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.pdb "$(PREFIX)\bin\iconv\" /d < .a 363 del .y 364 del .a 365 366