Skip to content

Commit b7db770

Browse files
authored
Autotools: Refactor ODBC type checks (#15651)
- AS_VAR_IF macros used - All check messages moved to the PHP_ARG_WITH 2nd argument and results simplified where possible (the ext_output variable and result message is done automatically when using PHP_ARG_* macros) - Unusued ODBC_SHARED and ODBC_STATIC shell variables for DBMaker removed - Help text for --with-unixodbc (and/or --with-unixODBC) configure option synced with current Autotools code. It is still possible to bypass the pkg-config search with optional DIR argument
1 parent 75c7974 commit b7db770

File tree

1 file changed

+74
-115
lines changed

1 file changed

+74
-115
lines changed

ext/odbc/config.m4

Lines changed: 74 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,12 @@ PHP_ARG_WITH([odbcver],,
114114
[0x0350])
115115

116116
AS_VAR_IF([ODBC_TYPE],, [
117-
PHP_ARG_WITH([adabas],,
117+
PHP_ARG_WITH([adabas],
118+
[for Adabas support],
118119
[AS_HELP_STRING([[--with-adabas[=DIR]]],
119120
[Include Adabas D support [/usr/local]])])
120121
121-
AC_MSG_CHECKING([for Adabas support])
122-
if test "$PHP_ADABAS" != "no"; then
122+
AS_VAR_IF([PHP_ADABAS], [no], [], [
123123
AS_VAR_IF([PHP_ADABAS], [yes], [PHP_ADABAS=/usr/local])
124124
PHP_ADD_INCLUDE([$PHP_ADABAS/incl])
125125
PHP_ADD_LIBPATH([$PHP_ADABAS/$PHP_LIBDIR])
@@ -136,39 +136,33 @@ PHP_ARG_WITH([adabas],,
136136
PHP_ODBC_CHECK_HEADER([sqlext.h])
137137
AC_DEFINE([HAVE_ADABAS], [1],
138138
[Define to 1 if the odbc extension uses the Adabas D.])
139-
AC_MSG_RESULT([$ext_output])
140-
else
141-
AC_MSG_RESULT([no])
142-
fi
139+
])
143140
])
144141

145142
AS_VAR_IF([ODBC_TYPE],, [
146-
PHP_ARG_WITH([sapdb],,
143+
PHP_ARG_WITH([sapdb],
144+
[for SAP DB support],
147145
[AS_HELP_STRING([[--with-sapdb[=DIR]]],
148146
[Include SAP DB support [/usr/local]])])
149147
150-
AC_MSG_CHECKING([for SAP DB support])
151-
if test "$PHP_SAPDB" != "no"; then
148+
AS_VAR_IF([PHP_SAPDB], [no], [], [
152149
AS_VAR_IF([PHP_SAPDB], [yes], [PHP_SAPDB=/usr/local])
153150
PHP_ADD_INCLUDE([$PHP_SAPDB/incl])
154151
PHP_ADD_LIBPATH([$PHP_SAPDB/$PHP_LIBDIR])
155152
PHP_ADD_LIBRARY([sqlod])
156153
ODBC_TYPE=sapdb
157154
AC_DEFINE([HAVE_SAPDB], [1],
158155
[Define to 1 if the odbc extension uses the SAP DB.])
159-
AC_MSG_RESULT([$ext_output])
160-
else
161-
AC_MSG_RESULT([no])
162-
fi
156+
])
163157
])
164158

165159
AS_VAR_IF([ODBC_TYPE],, [
166-
PHP_ARG_WITH([solid],,
160+
PHP_ARG_WITH([solid],
161+
[for Solid support],
167162
[AS_HELP_STRING([[--with-solid[=DIR]]],
168163
[Include Solid support [/usr/local/solid]])])
169164
170-
AC_MSG_CHECKING([for Solid support])
171-
if test "$PHP_SOLID" != "no"; then
165+
AS_VAR_IF([PHP_SOLID], [no], [], [
172166
AS_VAR_IF([PHP_SOLID], [yes], [PHP_SOLID=/usr/local/solid])
173167
ODBC_INCDIR=$PHP_SOLID/include
174168
ODBC_LIBDIR=$PHP_SOLID/$PHP_LIBDIR
@@ -182,27 +176,24 @@ PHP_ARG_WITH([solid],,
182176
AC_DEFINE([HAVE_SOLID], [1],
183177
[Define to 1 if the odbc extension uses the Solid DB.])
184178
fi
185-
AC_MSG_RESULT([$ext_output])
186179
PHP_ODBC_FIND_SOLID_LIBS([$ODBC_LIBDIR])
187-
else
188-
AC_MSG_RESULT([no])
189-
fi
180+
])
190181
])
191182

192183
AS_VAR_IF([ODBC_TYPE],, [
193-
PHP_ARG_WITH([ibm-db2],,
184+
PHP_ARG_WITH([ibm-db2],
185+
[for IBM DB2 support],
194186
[AS_HELP_STRING([[--with-ibm-db2[=DIR]]],
195187
[Include IBM DB2 support [/home/db2inst1/sqllib]])])
196188
197-
AC_MSG_CHECKING([for IBM DB2 support])
198-
if test "$PHP_IBM_DB2" != "no"; then
199-
if test "$PHP_IBM_DB2" = "yes"; then
189+
AS_VAR_IF([PHP_IBM_DB2], [no], [], [
190+
AS_VAR_IF([PHP_IBM_DB2], [yes], [
200191
ODBC_INCDIR=/home/db2inst1/sqllib/include
201192
ODBC_LIBDIR=/home/db2inst1/sqllib/lib
202-
else
193+
], [
203194
ODBC_INCDIR=$PHP_IBM_DB2/include
204195
ODBC_LIBDIR=$PHP_IBM_DB2/$PHP_LIBDIR
205-
fi
196+
])
206197
207198
PHP_ODBC_CHECK_HEADER([sqlcli1.h])
208199
@@ -211,66 +202,57 @@ PHP_ARG_WITH([ibm-db2],,
211202
ODBC_TYPE=ibm-db2
212203
ODBC_LIBS=-ldb2
213204
214-
PHP_TEST_BUILD([SQLExecute], [
215-
AC_DEFINE([HAVE_IBMDB2], [1],
216-
[Define to 1 if the odbc extension uses the IBM DB2.])
217-
AC_MSG_RESULT([$ext_output])
218-
], [
219-
AC_MSG_RESULT([no])
220-
AC_MSG_FAILURE([
205+
PHP_TEST_BUILD([SQLExecute],
206+
[AC_DEFINE([HAVE_IBMDB2], [1],
207+
[Define to 1 if the odbc extension uses the IBM DB2.])],
208+
[AC_MSG_FAILURE([
221209
ODBC build test failed. You need to source your DB2 environment before running
222210
PHP configure:
223211
# . \$IBM_DB2/db2profile
224-
])
225-
],
212+
])],
226213
[$ODBC_LFLAGS $ODBC_LIBS])
227-
else
228-
AC_MSG_RESULT([no])
229-
fi
214+
])
230215
])
231216

232217
AS_VAR_IF([ODBC_TYPE],, [
233-
PHP_ARG_WITH([empress],,
218+
PHP_ARG_WITH([empress],
219+
[for Empress support],
234220
[AS_HELP_STRING([[--with-empress[=DIR]]],
235221
[Include Empress support $EMPRESSPATH (Empress Version >= 8.60
236222
required)])])
237223
238-
AC_MSG_CHECKING([for Empress support])
239-
if test "$PHP_EMPRESS" != "no"; then
240-
if test "$PHP_EMPRESS" = "yes"; then
224+
AS_VAR_IF([PHP_EMPRESS], [no], [], [
225+
AS_VAR_IF([PHP_EMPRESS], [yes], [
241226
ODBC_INCDIR=$EMPRESSPATH/include/odbc
242227
ODBC_LIBDIR=$EMPRESSPATH/shlib
243-
else
228+
], [
244229
ODBC_INCDIR=$PHP_EMPRESS/include/odbc
245230
ODBC_LIBDIR=$PHP_EMPRESS/shlib
246-
fi
231+
])
247232
ODBC_CFLAGS=-I$ODBC_INCDIR
248233
ODBC_LFLAGS=-L$ODBC_LIBDIR
249234
ODBC_TYPE=empress
250235
AC_DEFINE([HAVE_EMPRESS], [1],
251236
[Define to 1 if the odbc extension uses the Empress.])
252-
AC_MSG_RESULT([$ext_output])
253237
PHP_ODBC_FIND_EMPRESS_LIBS([$ODBC_LIBDIR])
254-
else
255-
AC_MSG_RESULT([no])
256-
fi
238+
])
257239
])
258240

259241
AS_VAR_IF([ODBC_TYPE],, [
260-
PHP_ARG_WITH([empress-bcs],,
242+
PHP_ARG_WITH([empress-bcs],
243+
[for Empress local access support],
261244
[AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
262245
[Include Empress Local Access support $EMPRESSPATH (Empress Version >=
263246
8.60 required)])])
264247
265-
AC_MSG_CHECKING([for Empress local access support])
266-
if test "$PHP_EMPRESS_BCS" != "no"; then
267-
if test "$PHP_EMPRESS_BCS" = "yes"; then
248+
AS_VAR_IF([PHP_EMPRESS_BCS], [no], [], [
249+
AS_VAR_IF([PHP_EMPRESS_BCS], [yes], [
268250
ODBC_INCDIR=$EMPRESSPATH/include/odbc
269251
ODBC_LIBDIR=$EMPRESSPATH/shlib
270-
else
252+
], [
271253
ODBC_INCDIR=$PHP_EMPRESS_BCS/include/odbc
272254
ODBC_LIBDIR=$PHP_EMPRESS_BCS/shlib
273-
fi
255+
])
274256
CC="empocc -bcs";export CC;
275257
LD="empocc -bcs";export LD;
276258
ODBC_CFLAGS=-I$ODBC_INCDIR
@@ -292,15 +274,13 @@ PHP_ARG_WITH([empress-bcs],,
292274
ODBC_TYPE=empress-bcs
293275
AC_DEFINE([HAVE_EMPRESS], [1],
294276
[Define to 1 if the odbc extension uses the Empress.])
295-
AC_MSG_RESULT([$ext_output])
296277
PHP_ODBC_FIND_EMPRESS_BCS_LIBS([$ODBC_LIBDIR])
297-
else
298-
AC_MSG_RESULT([no])
299-
fi
278+
])
300279
])
301280

302281
AS_VAR_IF([ODBC_TYPE],, [
303-
PHP_ARG_WITH([custom-odbc],,
282+
PHP_ARG_WITH([custom-odbc],
283+
[for a custom ODBC support],
304284
[AS_HELP_STRING([[--with-custom-odbc[=DIR]]],
305285
[Include user defined ODBC support. DIR is ODBC install base directory
306286
[/usr/local]. Make sure to define CUSTOM_ODBC_LIBS and have some odbc.h in
@@ -309,8 +289,7 @@ PHP_ARG_WITH([custom-odbc],,
309289
CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix
310290
CUSTOM_ODBC_LIBS="-ldblib -lodbc"])])
311291
312-
AC_MSG_CHECKING([for a custom ODBC support])
313-
if test "$PHP_CUSTOM_ODBC" != "no"; then
292+
AS_VAR_IF([PHP_CUSTOM_ODBC], [no], [], [
314293
AS_VAR_IF([PHP_CUSTOM_ODBC], [yes], [PHP_CUSTOM_ODBC=/usr/local])
315294
ODBC_INCDIR=$PHP_CUSTOM_ODBC/include
316295
ODBC_LIBDIR=$PHP_CUSTOM_ODBC/$PHP_LIBDIR
@@ -320,37 +299,31 @@ PHP_ARG_WITH([custom-odbc],,
320299
ODBC_TYPE=custom-odbc
321300
AC_DEFINE([HAVE_CODBC], [1],
322301
[Define to 1 if the odbc extension uses custom ODBC installation.])
323-
AC_MSG_RESULT([$ext_output])
324-
else
325-
AC_MSG_RESULT([no])
326-
fi
302+
])
327303
])
328304

329305
AS_VAR_IF([ODBC_TYPE],, [
330-
PHP_ARG_WITH([iodbc],,
306+
PHP_ARG_WITH([iodbc],
307+
[whether to build with iODBC support],
331308
[AS_HELP_STRING([--with-iodbc],
332309
[Include iODBC support])])
333310
334-
AC_MSG_CHECKING([whether to build with iODBC support])
335-
if test "$PHP_IODBC" != "no"; then
336-
AC_MSG_RESULT([yes])
311+
AS_VAR_IF([PHP_IODBC], [no], [], [
337312
PKG_CHECK_MODULES([ODBC], [libiodbc])
338313
PHP_EVAL_INCLINE([$ODBC_CFLAGS])
339314
ODBC_TYPE=iodbc
340315
AC_DEFINE([HAVE_IODBC], [1],
341316
[Define to 1 if the odbc extension uses the iODBC.])
342-
else
343-
AC_MSG_RESULT([no])
344-
fi
317+
])
345318
])
346319

347320
AS_VAR_IF([ODBC_TYPE],, [
348-
PHP_ARG_WITH([esoob],,
321+
PHP_ARG_WITH([esoob],
322+
[for Easysoft ODBC-ODBC Bridge support],
349323
[AS_HELP_STRING([[--with-esoob[=DIR]]],
350324
[Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])
351325
352-
AC_MSG_CHECKING([for Easysoft ODBC-ODBC Bridge support])
353-
if test "$PHP_ESOOB" != "no"; then
326+
AS_VAR_IF([PHP_ESOOB], [no], [], [
354327
AS_VAR_IF([PHP_ESOOB], [yes], [PHP_ESOOB=/usr/local/easysoft/oob/client])
355328
ODBC_INCDIR=$PHP_ESOOB/include
356329
ODBC_LIBDIR=$PHP_ESOOB/$PHP_LIBDIR
@@ -360,50 +333,46 @@ PHP_ARG_WITH([esoob],,
360333
ODBC_TYPE=esoob
361334
AC_DEFINE([HAVE_ESOOB], [1],
362335
[Define to 1 if the odbc extension uses the Easysoft OOB.])
363-
AC_MSG_RESULT([$ext_output])
364-
else
365-
AC_MSG_RESULT([no])
366-
fi
336+
])
367337
])
368338

369339
AS_VAR_IF([ODBC_TYPE],, [
370-
PHP_ARG_WITH([unixODBC],,
371-
[AS_HELP_STRING([--with-unixODBC],
372-
[Include unixODBC support])])
373-
374-
AC_MSG_CHECKING([whether to build with unixODBC support])
375-
if test "$PHP_UNIXODBC" != "no"; then
376-
if test "$PHP_UNIXODBC" = "yes"; then
377-
AC_MSG_RESULT([yes from pkgconfig])
340+
PHP_ARG_WITH([unixODBC],
341+
[whether to build with unixODBC support],
342+
[AS_HELP_STRING([[--with-unixODBC[=DIR]]],
343+
[Include unixODBC support. Use PKG_CONFIG_PATH (or ODBC_CFLAGS and
344+
ODBC_LIBS) environment variables, or alternatively the optional DIR argument
345+
to customize where to look for the unixODBC library.])])
346+
347+
AS_VAR_IF([PHP_UNIXODBC], [no], [], [
348+
AS_VAR_IF([PHP_UNIXODBC], [yes], [
378349
PKG_CHECK_MODULES([ODBC], [odbc])
379350
PHP_EVAL_INCLINE([$ODBC_CFLAGS])
380-
else
351+
], [
381352
dnl keep old DIR way for old version without libodbc.pc
382353
ODBC_INCDIR=$PHP_UNIXODBC/include
383354
ODBC_LIBDIR=$PHP_UNIXODBC/$PHP_LIBDIR
384355
ODBC_LFLAGS=-L$ODBC_LIBDIR
385356
ODBC_CFLAGS=-I$ODBC_INCDIR
386357
ODBC_LIBS=-lodbc
387358
PHP_ODBC_CHECK_HEADER([sqlext.h])
388-
AC_MSG_RESULT([yes in $PHP_UNIXODBC])
389-
fi
359+
AC_MSG_NOTICE([Using unixODBC in $PHP_UNIXODBC])
360+
])
390361
ODBC_TYPE=unixODBC
391362
AC_DEFINE([HAVE_UNIXODBC], [1],
392363
[Define to 1 if the odbc extension uses the unixODBC.])
393-
else
394-
AC_MSG_RESULT([no])
395-
fi
364+
])
396365
])
397366

398367
AS_VAR_IF([ODBC_TYPE],, [
399-
PHP_ARG_WITH([dbmaker],,
368+
PHP_ARG_WITH([dbmaker],
369+
[for DBMaker support],
400370
[AS_HELP_STRING([[--with-dbmaker[=DIR]]],
401371
[Include DBMaker support])])
402372
403-
AC_MSG_CHECKING([for DBMaker support])
404-
if test "$PHP_DBMAKER" != "no"; then
405-
if test "$PHP_DBMAKER" = "yes"; then
406-
dnl Find dbmaker's home directory
373+
AS_VAR_IF([PHP_DBMAKER], [no], [], [
374+
AS_VAR_IF([PHP_DBMAKER], [yes], [
375+
dnl Find dbmaker home directory
407376
DBMAKER_HOME=$(grep "^dbmaker:" /etc/passwd | $AWK -F: '{print $6}')
408377
409378
dnl check DBMaker version (from 5.0 to 2.0)
@@ -416,12 +385,10 @@ PHP_ARG_WITH([dbmaker],,
416385
DBMAKER_VERSION=$MAJOR_V.$MINOR_V
417386
done
418387
419-
if test "$DBMAKER_VERSION" = "2.9"; then
420-
PHP_DBMAKER=$DBMAKER_HOME
421-
else
422-
PHP_DBMAKER=$DBMAKER_HOME/$DBMAKER_VERSION
423-
fi
424-
fi
388+
AS_VAR_IF([DBMAKER_VERSION], [2.9],
389+
[PHP_DBMAKER=$DBMAKER_HOME],
390+
[PHP_DBMAKER=$DBMAKER_HOME/$DBMAKER_VERSION])
391+
])
425392
426393
ODBC_INCDIR=$PHP_DBMAKER/include
427394
ODBC_LIBDIR=$PHP_DBMAKER/$PHP_LIBDIR
@@ -433,19 +400,11 @@ PHP_ARG_WITH([dbmaker],,
433400
AC_DEFINE([HAVE_DBMAKER], [1],
434401
[Define to 1 if the odbc extension uses the DBMaker.])
435402
436-
AS_VAR_IF([ext_shared], [yes], [
437-
AC_MSG_RESULT([yes (shared)])
438-
ODBC_LIBS="-ldmapic -lc -lm"
439-
ODBC_SHARED="odbc.la"
440-
], [
441-
AC_MSG_RESULT([yes (static)])
403+
AS_VAR_IF([ext_shared], [yes], [ODBC_LIBS="-ldmapic -lc -lm"], [
442404
PHP_ADD_LIBRARY_WITH_PATH([dmapic], [$ODBC_LIBDIR])
443405
PHP_ADD_INCLUDE([$ODBC_INCDIR])
444-
ODBC_STATIC="libphpext_odbc.la"
445406
])
446-
else
447-
AC_MSG_RESULT([no])
448-
fi
407+
])
449408
])
450409

451410
AH_TEMPLATE([ODBCVER], [The highest supported ODBC version.])

0 commit comments

Comments
 (0)