diff options
Diffstat (limited to 'Makefile.win')
-rw-r--r-- | Makefile.win | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/Makefile.win b/Makefile.win new file mode 100644 index 0000000..454b4fe --- /dev/null +++ b/Makefile.win @@ -0,0 +1,384 @@ +# 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 + |