# Makefile.win for Win32 APR + APR-iconv + APR-util # # Targets are: # # buildall - compile everything # checkall - run APR + APR-util regression tests # install - compile everything # clean - mop up everything # # You can override the build mechanism, choose only one; # # USEMAK=1 - compile from exported make files # USEDSW=1 - compile from .dsw / .dsp VC6 projects # USESLN=1 - compile from converted .sln / .vcproj VC7+ files # # Define ARCH to your desired preference (your PATH must point # to the correct compiler tools!) Choose only one; # # ARCH="Win32 Release" # ARCH="Win32 Debug" # ARCH="Win32 Release9x" # ARCH="Win32 Debug9x" # ARCH="x64 Release" # ARCH="x64 Debug" # # Provide the APR_PATH, API_PATH and APU_PATH entirely relative # to one another! At this time, building the libraries themselves # is only expected to work if the defaults (../apr, ../apr-iconv # and ../apr-util) are used, or if they are built with USEMAK=1. # # APR_PATH=..\apr-1.3.0 # API_PATH=..\apr-iconv-1.3.0 # APU_PATH=..\apr-util-1.3.0 # # Provide a DBD_LIST argument after configuring LIB and INCLUDE with # the SDK paths of the corresponding client support libraries. # ODBC is always built on Windows, so it does not get included in DBD_LIST # Note that at this time, none of these are supported on win32, per say. # # DBD_LIST="sqlite3 pgsql oracle mysql freetds" # # Provide a DBM_LIST argument after configuring LIB and INCLUDE with # the SDK paths of the corresponding database support libraries. Right # now only db has been configured, gdbm and ndbm require additional study. # Note that at this time, none of these are supported on win32, per say. # # DBM_LIST="db gdbm" # # Provide a CRYPTO_LIST argument after configuring LIB and INCLUDE with # the SDK paths of the corresponding cryptographic support libraries. # # CRYPTO_LIST="nss openssl" # # Provide the XML_PARSER argument after configuring LIB and INCLUDE with # the expat path of the corresponding xml parser, e.g. libexpatMT to choose # static, or libexpat (default) to choose the dynamic library for aprutil-1.dll # (Static libaprutil-1.lib always presumes libexpatMT with XML_STATIC flag.) # # XML_PARSER="libexpat" # # For example; # # nmake -f Makefile.win PREFIX=C:\APR buildall checkall installall clean # !IF EXIST("aprutil.sln") && ([devenv /help > NUL 2>&1] == 0) \ && !defined(USEMAK) && !defined(USEDSW) USESLN=1 USEMAK=0 USEDSW=0 !ELSEIF EXIST("aprutil.mak") && !defined(USEDSW) USESLN=0 USEMAK=1 USEDSW=0 !ELSE USESLN=0 USEMAK=0 USEDSW=1 !ENDIF PREFIX=..\apr-dist !IF EXIST("..\openssl") !IF EXIST("..\openssl\libcrypto.lib") SSLOPT=_HAVE_OSSL110=1 !ENDIF !ENDIF # Legacy default (and unwise alternative) for libapr-1.dll is libexpatMT XML_PARSER="libexpat" !IF "$(XML_PARSER)" == "libexpat" XMLOPT=XML_PARSER=$(XML_PARSER) !ELSE XMLOPT=XML_PARSER=$(XML_PARSER) XML_OPTIONS="/D XML_STATIC" !ENDIF !IF [$(COMSPEC) /c cl /nologo /? \ | $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0 ARCH=x64 Release !ELSE ARCH=Win32 Release !ENDIF APR_PATH=..\apr API_PATH=..\apr-iconv APU_PATH=..\apr-util !MESSAGE ARCH = $(ARCH) !MESSAGE APR_PATH = $(APR_PATH) !MESSAGE API_PATH = $(API_PATH) (apr-iconv) !MESSAGE APU_PATH = $(APU_PATH) (apr-util) !MESSAGE PREFIX = $(PREFIX) (install path) !MESSAGE DBD_LIST = $(DBD_LIST) !MESSAGE DBM_LIST = $(DBM_LIST) !MESSAGE CRYPTO_LIST = $(CRYPTO_LIST) # Utility and Translation things, nothing here for the user # !IF "$(ARCH)" == "Win32 Release" SLNARCH=Release|Win32 ARCHPATH=Release LIBSPATH=LibR ARCHOSPATH=Release LIBSOSPATH=LibR !ELSEIF "$(ARCH)" == "Win32 Debug" SLNARCH=Debug|Win32 ARCHPATH=Debug LIBSPATH=LibD ARCHOSPATH=Debug LIBSOSPATH=LibD !ELSEIF "$(ARCH)" == "Win32 Release9x" SLNARCH=Release9x|Win32 ARCHPATH=Release LIBSPATH=LibR ARCHOSPATH=9x\Release LIBSOSPATH=9x\LibR !ELSEIF "$(ARCH)" == "Win32 Debug9x" SLNARCH=Debug9x|Win32 ARCHPATH=Debug LIBSPATH=LibD ARCHOSPATH=9x\Debug LIBSOSPATH=9x\LibD !ELSEIF "$(ARCH)" == "x64 Release" SLNARCH=Release|x64 ARCHPATH=x64\Release LIBSPATH=x64\LibR ARCHOSPATH=x64\Release LIBSOSPATH=x64\LibR !ELSEIF "$(ARCH)" == "x64 Debug" SLNARCH=Debug|x64 ARCHPATH=x64\Debug LIBSPATH=x64\LibD ARCHOSPATH=x64\Debug LIBSOSPATH=x64\LibD !ENDIF !IFNDEF MAKEOPT # Only default the behavior if MAKEOPT= is omitted !IFDEF _NMAKE_VER # Microsoft NMake options MAKEOPT=-nologo !ELSEIF "$(MAKE)" == "make" # Borland make options? Not really supported (yet) MAKEOPT=-s -N !ENDIF !ENDIF # Sanity Checks # !IF !EXIST("$(APR_PATH)\apr.dsp") || !EXIST("$(API_PATH)\apriconv.dsp") \ || !EXIST("$(APU_PATH)\aprutil.dsp") !MESSAGE Please check out or download and unpack the Apache Portability Runtime !MESSAGE sources (apr, apr-iconv and apr-util) under a single parent dir, !MESSAGE or provide APR_PATH, API_PATH and APU_PATH (all relative to each other, !MESSAGE or all absolute paths). !MESSAGE Apache cannot build without these libraries! !MESSAGE !ERROR Need apr and apr-iconv alongside apr-util to build! !ENDIF all: buildall checkall # To help win32 pick up the locations where they don't fall in the usual # path locations. This may not be completely effective for USESLN/USEDSP # oriented builds, just yet # LIB=$(APR_PATH)\$(ARCHOSPATH);$(APR_PATH)\$(LIBSOSPATH);$(API_PATH)\$(ARCHPATH);$(API_PATH)\$(LIBSPATH);$(APU_PATH)\$(ARCHPATH);$(APU_PATH)\$(LIBSPATH);$(LIB) INCLUDE=$(APR_PATH)\include;$(API_PATH)\include;$(INCLUDE) !IF $(USEMAK) == 1 clean: $(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \ CTARGET=CLEAN buildall buildall: cd $(APR_PATH) $(MAKE) $(MAKEOPT) -f apr.mak CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f libapr.mak CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET) cd build $(MAKE) $(MAKEOPT) -f aprapp.mak CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f libaprapp.mak CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET) cd .. cd $(API_PATH) $(MAKE) $(MAKEOPT) -f apriconv.mak CFG="apriconv - $(ARCH)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f libapriconv.mak CFG="libapriconv - $(ARCH)" RECURSE=0 $(CTARGET) !IF "$(CTARGET)" == "CLEAN" $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \ BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=. !ELSE cd ccs $(MAKE) $(MAKEOPT) -f Makefile.win all \ BUILD_MODE="$(ARCH)" BIND_MODE=shared cd ..\ces $(MAKE) $(MAKEOPT) -f Makefile.win all \ BUILD_MODE="$(ARCH)" BIND_MODE=shared cd .. !ENDIF cd $(APU_PATH) $(MAKE) $(MAKEOPT) $(SSLOPT) $(XMLOPT) -f aprutil.mak CFG="aprutil - $(ARCH)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) $(SSLOPT) $(XMLOPT) -f libaprutil.mak CFG="libaprutil - $(ARCH)" RECURSE=0 $(CTARGET) cd ldap $(MAKE) $(MAKEOPT) -f apr_ldap.mak CFG="apr_ldap - $(ARCH)" RECURSE=0 $(CTARGET) cd .. cd dbd for %d in (odbc $(DBD_LIST)) do \ $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - $(ARCH)" RECURSE=0 $(CTARGET) cd .. cd dbm for %d in ($(DBM_LIST) x) do if not %d == x \ $(MAKE) $(MAKEOPT) -f apr_dbm_%d.mak CFG="apr_dbm_%d - $(ARCH)" RECURSE=0 $(CTARGET) cd .. cd crypto for %d in ($(CRYPTO_LIST) x) do if not %d == x \ $(MAKE) $(MAKEOPT) $(SSLOPT) -f apr_crypto_%d.mak CFG="apr_crypto_%d - $(ARCH)" RECURSE=0 $(CTARGET) cd .. !ELSEIF $(USESLN) == 1 clean: -for %d in (odbc $(DBD_LIST)) do \ devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbd_%d -for %d in ($(DBM_LIST) x) do if not %d == x \ devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbm_%d -for %d in ($(CRYPTO_LIST) x) do if not %d == x \ devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_crypto_%d -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_ldap -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libaprutil -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project aprutil cd $(API_PATH) -$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \ BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=. cd $(APU_PATH) -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libapriconv -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apriconv -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libaprapp -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project aprapp -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project libapr -devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr buildall: devenv aprutil.sln /useenv /build "$(SLNARCH)" /project aprapp devenv aprutil.sln /useenv /build "$(SLNARCH)" /project libaprapp devenv aprutil.sln /useenv /build "$(SLNARCH)" /project aprutil devenv aprutil.sln /useenv /build "$(SLNARCH)" /project libaprutil devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_ldap for %d in (odbc $(DBD_LIST)) do \ devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbd_%d for %d in ($(DBM_LIST) x) do if not %d == x \ devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbm_%d for %d in ($(CRYPTO_LIST) x) do if not %d == x \ devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_crypto_%d !ELSE # $(USEDSP) == 1 clean: -for %d in (odbc $(DBD_LIST)) do \ msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)" /CLEAN -for %d in ($(DBM_LIST) x) do if not %d == x \ msdev aprutil.dsw /USEENV /MAKE "apr_dbm_%d - $(ARCH)" /CLEAN -for %d in ($(CRYPTO_LIST) x) do if not %d == x \ msdev aprutil.dsw /USEENV /MAKE "apr_crypto_%d - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "apr_ldap - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "libaprutil - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "aprutil - $(ARCH)" /CLEAN cd $(API_PATH) $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \ BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=. cd $(APU_PATH) -msdev aprutil.dsw /USEENV /MAKE "libapriconv - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "apriconv - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "libaprapp - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "aprapp - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN -msdev aprutil.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN buildall: @msdev aprutil.dsw /USEENV /MAKE "aprapp - $(ARCH)" @msdev aprutil.dsw /USEENV /MAKE "aprutil - $(ARCH)" @msdev aprutil.dsw /USEENV /MAKE "libaprapp - $(ARCH)" @msdev aprutil.dsw /USEENV /MAKE "libaprutil - $(ARCH)" @msdev aprutil.dsw /USEENV /MAKE "apr_ldap - $(ARCH)" @for %d in (odbc $(DBD_LIST)) do \ msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)" @for %d in ($(DBM_LIST) x) do if not %d == x \ msdev aprutil.dsw /USEENV /MAKE "apr_dbm_%d - $(ARCH)" @for %d in ($(CRYPTO_LIST) x) do if not %d == x \ msdev aprutil.dsw /USEENV /MAKE "apr_crypto_%d - $(ARCH)" !ENDIF checkapr: cd $(APR_PATH)\test $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \ OUTDIR=$(LIBSOSPATH) check $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \ OUTDIR=$(ARCHOSPATH) check cd .. cd $(APU_PATH) checkapu: cd $(APU_PATH) cd test $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \ OUTDIR=$(LIBSPATH) APROUTDIR=$(LIBSOSPATH) \ APR_PATH=..\$(APR_PATH) API_PATH=..\$(API_PATH) check $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \ OUTDIR=$(ARCHPATH) APROUTDIR=$(ARCHOSPATH) \ APR_PATH=..\$(APR_PATH) API_PATH=..\$(API_PATH) check cd .. checkall: checkapr checkapu install: echo Y >.y echo A >.A @if NOT EXIST "$(PREFIX)\." mkdir "$(PREFIX)" @if NOT EXIST "$(PREFIX)\bin\." mkdir "$(PREFIX)\bin" @if NOT EXIST "$(PREFIX)\bin\iconv\." mkdir "$(PREFIX)\bin\iconv" @if NOT EXIST "$(PREFIX)\include\." mkdir "$(PREFIX)\include" @if NOT EXIST "$(PREFIX)\lib\." mkdir "$(PREFIX)\lib" copy CHANGES "$(PREFIX)\CHANGES.txt" <.y copy LICENSE "$(PREFIX)\LICENSE.txt" <.y copy NOTICE "$(PREFIX)\NOTICE.txt" <.y xcopy $(APR_PATH)\include\*.h "$(PREFIX)\include\" /d < .a xcopy $(APU_PATH)\include\*.h "$(PREFIX)\include\" /d < .a copy $(APR_PATH)\$(LIBSOSPATH)\apr-1.lib "$(PREFIX)\lib\" <.y copy $(APR_PATH)\$(LIBSOSPATH)\apr-1.pdb "$(PREFIX)\lib\" <.y copy $(APU_PATH)\$(LIBSPATH)\aprutil-1.lib "$(PREFIX)\lib\" <.y copy $(APU_PATH)\$(LIBSPATH)\aprutil-1.pdb "$(PREFIX)\lib\" <.y copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.lib "$(PREFIX)\lib\" <.y copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.exp "$(PREFIX)\lib\" <.y copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.lib "$(PREFIX)\lib\" <.y copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.exp "$(PREFIX)\lib\" <.y copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.dll "$(PREFIX)\bin\" <.y copy $(APR_PATH)\$(ARCHOSPATH)\libapr-1.pdb "$(PREFIX)\bin\" <.y copy $(API_PATH)\$(ARCHPATH)\libapriconv-1.dll "$(PREFIX)\bin\" <.y copy $(API_PATH)\$(ARCHPATH)\libapriconv-1.pdb "$(PREFIX)\bin\" <.y copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.dll "$(PREFIX)\bin\" <.y copy $(APU_PATH)\$(ARCHPATH)\libaprutil-1.pdb "$(PREFIX)\bin\" <.y copy $(APU_PATH)\ldap\$(ARCHPATH)\apr_ldap-1.dll "$(PREFIX)\bin\" <.y copy $(APU_PATH)\ldap\$(ARCHPATH)\apr_ldap-1.pdb "$(PREFIX)\bin\" <.y for %d in (odbc $(DBD_LIST)) do ( \ copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_%d-1.dll "$(PREFIX)\bin\" <.y && \ copy $(APU_PATH)\dbd\$(ARCHPATH)\apr_dbd_%d-1.pdb "$(PREFIX)\bin\" <.y \ ) for %d in ($(DBM_LIST) x) do if not %d == x ( \ copy $(APU_PATH)\dbm\$(ARCHPATH)\apr_dbm_%d-1.dll "$(PREFIX)\bin\" <.y && \ copy $(APU_PATH)\dbm\$(ARCHPATH)\apr_dbm_%d-1.pdb "$(PREFIX)\bin\" <.y \ ) for %d in ($(CRYPTO_LIST) x) do if not %d == x ( \ copy $(APU_PATH)\crypto\$(ARCHPATH)\apr_crypto_%d-1.dll "$(PREFIX)\bin\" <.y && \ copy $(APU_PATH)\crypto\$(ARCHPATH)\apr_crypto_%d-1.pdb "$(PREFIX)\bin\" <.y \ ) xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.so "$(PREFIX)\bin\iconv\" /d < .a xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.pdb "$(PREFIX)\bin\iconv\" /d < .a del .y del .a