Make ODBC DBD driver compile on Unix.
[apr-util.git] / Makefile.win
bloba6e0e983074ee7be6c62798a1a763b0b62b6cbe7
1 # Makefile.win for Win32 APR + APR-iconv + APR-util
3 # Targets are:
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"
20 #     ARCH="Win32 Debug"
21 #     ARCH="Win32 Release9x"
22 #     ARCH="Win32 Debug9x"
23 #     ARCH="x64 Release"
24 #     ARCH="x64 Debug"
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 # For example;
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)
49 USESLN=1
50 USEMAK=0
51 USEDSW=0
52 !ELSEIF EXIST("aprutil.mak") && !defined(USEDSW)
53 USESLN=0
54 USEMAK=1
55 USEDSW=0
56 !ELSE
57 USESLN=0
58 USEMAK=0
59 USEDSW=1
60 !ENDIF
62 PREFIX=..\apr-dist
64 !IF [$(COMSPEC) /c cl /nologo /? \
65         | $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
66 ARCH=x64 Release
67 !ELSE
68 ARCH=Win32 Release
69 !ENDIF
71 APR_PATH=..\apr
72 API_PATH=..\apr-iconv
73 APU_PATH=..\apr-util
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"
85 SLNARCH=Release|Win32
86 ARCHPATH=Release
87 LIBSPATH=LibR
88 ARCHOSPATH=Release
89 LIBSOSPATH=LibR
90 !ELSEIF "$(ARCH)" == "Win32 Debug"
91 SLNARCH=Debug|Win32
92 ARCHPATH=Debug
93 LIBSPATH=LibD
94 ARCHOSPATH=Debug
95 LIBSOSPATH=LibD
96 !ELSEIF "$(ARCH)" == "Win32 Release9x"
97 SLNARCH=Release9x|Win32
98 ARCHPATH=Release
99 LIBSPATH=LibR
100 ARCHOSPATH=9x\Release
101 LIBSOSPATH=9x\LibR
102 !ELSEIF "$(ARCH)" == "Win32 Debug9x"
103 SLNARCH=Debug9x|Win32
104 ARCHPATH=Debug
105 LIBSPATH=LibD
106 ARCHOSPATH=9x\Debug
107 LIBSOSPATH=9x\LibD
108 !ELSEIF "$(ARCH)" == "x64 Release"
109 SLNARCH=Release|x64
110 ARCHPATH=x64\Release
111 LIBSPATH=x64\LibR
112 ARCHOSPATH=x64\Release
113 LIBSOSPATH=x64\LibR
114 !ELSEIF "$(ARCH)" == "x64 Debug"
115 SLNARCH=Debug|x64
116 ARCHPATH=x64\Debug
117 LIBSPATH=x64\LibD
118 ARCHOSPATH=x64\Debug
119 LIBSOSPATH=x64\LibD
120 !ENDIF
122 !IFNDEF MAKEOPT
123 # Only default the behavior if MAKEOPT= is omitted
124 !IFDEF _NMAKE_VER
125 # Microsoft NMake options
126 MAKEOPT=-nologo
127 !ELSEIF "$(MAKE)" == "make"
128 # Borland make options?  Not really supported (yet)
129 MAKEOPT=-s -N
130 !ENDIF
131 !ENDIF
134 # Sanity Checks
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!
143 !MESSAGE 
144 !ERROR Need apr and apr-iconv alongside apr-util to build!
145 !ENDIF
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)
157 !IF $(USEMAK) == 1
159 clean:
160         $(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
161                 CTARGET=CLEAN buildall
163 buildall:
164         cd $(APR_PATH)
165          $(MAKE) $(MAKEOPT) -f apr.mak         CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
166          $(MAKE) $(MAKEOPT) -f libapr.mak      CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
167          cd build
168           $(MAKE) $(MAKEOPT) -f aprapp.mak    CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET)
169           $(MAKE) $(MAKEOPT) -f libaprapp.mak CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET)
170          cd ..
171         cd $(API_PATH)
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=.
177 !ELSE
178          cd ccs
179           $(MAKE) $(MAKEOPT) -f Makefile.win all \
180                 BUILD_MODE="$(ARCH)" BIND_MODE=shared
181          cd ..\ces
182           $(MAKE) $(MAKEOPT) -f Makefile.win all \
183                 BUILD_MODE="$(ARCH)" BIND_MODE=shared
184          cd ..
185 !ENDIF
186         cd $(APU_PATH)\xml\expat\lib
187          $(MAKE) $(MAKEOPT) -f xml.mak         CFG="xml - $(ARCH)" RECURSE=0 $(CTARGET)
188         cd ..\..\..
189          $(MAKE) $(MAKEOPT) -f aprutil.mak     CFG="aprutil - $(ARCH)" RECURSE=0 $(CTARGET)
190          $(MAKE) $(MAKEOPT) -f libaprutil.mak  CFG="libaprutil - $(ARCH)" RECURSE=0 $(CTARGET)
191         cd ldap
192          $(MAKE) $(MAKEOPT) -f apr_ldap.mak    CFG="apr_ldap - $(ARCH)" RECURSE=0 $(CTARGET)
193         cd ..
194         cd dbd
195         $(MAKE) $(MAKEOPT) -f apr_dbd_odbc.mak CFG="apr_dbd_odbc - $(ARCH)" RECURSE=0 $(CTARGET)
196 !IFDEF DBD_LIST
197           for %d in ($(DBD_LIST)) do \
198             $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - $(ARCH)" RECURSE=0 $(CTARGET)
199 !ENDIF
200         cd ..
202 !ELSEIF $(USESLN) == 1
204 clean:
205         devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbd_odbc
206 !IFDEF DBD_LIST
207         -for %d in ($(DBD_LIST)) do \
208           devenv aprutil.sln /useenv /clean "$(SLNARCH)" /project apr_dbd_%d
209 !ENDIF
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
213         cd $(API_PATH)
214           -$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
215                 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
216         cd $(APU_PATH)
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
224 buildall:
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
231 !IFDEF DBD_LIST
232         for %d in ($(DBD_LIST)) do \
233           devenv aprutil.sln /useenv /build "$(SLNARCH)" /project apr_dbd_%d
234 !ENDIF
236 !ELSE
237 #       $(USEDSP) == 1
239 clean:
240           msdev aprutil.dsw /USEENV /MAKE "apr_dbd_odbc - $(ARCH)" /CLEAN
241 !IFDEF DBD_LIST
242         -for %d in ($(DBD_LIST)) do \
243           msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)" /CLEAN
244 !ENDIF
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
248         cd $(API_PATH)
249          $(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
250                 BUILD_MODE="$(ARCH)" BIND_MODE=shared API_SOURCE=.
251         cd $(APU_PATH)
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
259 buildall:
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)"
266 !IFDEF DBD_LIST
267         @for %d in ($(DBD_LIST)) do \
268           msdev aprutil.dsw /USEENV /MAKE "apr_dbd_%d - $(ARCH)"
269 !ENDIF
271 !ENDIF
274 checkapr:
275         cd $(APR_PATH)\test
276          $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
277                 OUTDIR=$(LIBSOSPATH) check
278          $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
279                 OUTDIR=$(ARCHOSPATH) check
280          cd ..
281         cd $(APU_PATH)
283 checkapu:
284         cd $(APU_PATH)
285         cd test
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
292         cd ..
294 checkall: checkapr checkapu
297 install:
298         echo Y >.y
299         echo A >.A
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 \
328 !IFDEF DBD_LIST
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 \
332         )
333 !ENDIF
334         xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.so  "$(PREFIX)\bin\iconv\" /d < .a
335         xcopy $(API_PATH)\$(ARCHPATH)\iconv\*.pdb "$(PREFIX)\bin\iconv\" /d < .a
336         del .y
337         del .a