1on error resume next
2
3' run with cscript
4If InStr(LCase(WScript.FullName),"cscript")=0 Then
5	WScript.Echo("Please run:  cscript /nologo configure.vbs")
6	WScript.Quit
7End If
8
9' command line arguments
10OPTCPPFLAGS="/O2"
11DEBUGCPPFLAGS="/MD"
12DEBUGLDFLAGS=""
13hexversion=""
14
15disableutil=false
16disableserver=false
17disableoracle=false
18disablemysql=false
19disablepostgresql=false
20disablesap=false
21disableodbc=false
22disabledb2=false
23disablefirebird=false
24disableinformix=false
25disablerouter=false
26disableodbcdriver=false
27disablecpp=false
28disableperl=false
29disablepython=false
30disableruby=false
31disablejava=false
32disablephp=false
33disabletcl=false
34disablenodejs=false
35disablecs=false
36disablecmdline=false
37disabledoc=false
38
39ORACLEPREFIX=""
40MYSQLPREFIX=""
41POSTGRESQLPREFIX=""
42SYBASEPREFIX=""
43DB2PREFIX=""
44FIREBIRDPREFIX=""
45INFORMIXPREFIX=""
46PERLPREFIX=""
47PERLVERSION=""
48PYTHONPREFIX=""
49PYTHONVERSION=""
50RUBYPREFIX=""
51RUBYVERSION=""
52JAVAPREFIX=""
53PHPPREFIX=""
54TCLPREFIX=""
55NODEJSPREFIX=""
56SQLR="sqlr"
57SQLRELAY="sqlrelay"
58SQL_RELAY="SQL Relay"
59ABS_MAXCONNECTIONS="4096"
60
61if WScript.Arguments.Count>0 then
62	if Wscript.Arguments.Item(0)="--help" then
63		WScript.Echo("Usage: cscript /nologo configure.vbs [OPTION]...")
64		WScript.Echo("")
65		WScript.Echo("Optional Features:")
66		WScript.Echo("  --enable-small-code    optimize for small code size")
67		WScript.Echo("  --enable-debug         compile with debug option")
68		WScript.Echo("  --disable-oracle       Don't build Oracle connection module")
69		WScript.Echo("  --disable-mysql        Don't build MySQL connection module")
70		WScript.Echo("  --disable-postgresql   Don't build PostgreSQL connection module")
71		WScript.Echo("  --disable-sap          Don't build SAP/Sybase connection module")
72		WScript.Echo("  --disable-odbc         Don't build ODBC connection module")
73		WScript.Echo("  --disable-db2          Don't build DB2 connection module")
74		WScript.Echo("  --disable-firebird     Don't build Firebird connection module")
75		WScript.Echo("  --disable-informix     Don't build Informix connection module")
76		WScript.Echo("  --disable-router       Don't build router connection module")
77		WScript.Echo("  --disable-odbc-driver  Don't build ODBC driver")
78		WScript.Echo("  --disable-perl         Don't build Perl api")
79		WScript.Echo("  --disable-python       Don't build Python api")
80		WScript.Echo("  --disable-ruby         Don't build Ruby api")
81		WScript.Echo("  --disable-java         Don't build Java api")
82		WScript.Echo("  --disable-php          Don't build PHP api")
83		WScript.Echo("  --disable-tcl          Don't build TCL api")
84		WScript.Echo("  --disable-nodejs       Don't build node.js api")
85		WScript.Echo("  --disable-cs           Don't build C# api")
86		WScript.Echo("")
87		WScript.Echo("Optional Packages:")
88		WScript.Echo("  --with-oracle-prefix      Location of Oracle")
89		WScript.Echo("  --with-mysql-prefix       Location of MySQL")
90		WScript.Echo("  --with-postgresql-prefix  Location of PostgreSQL")
91		WScript.Echo("  --with-sap-prefix         Location of SAP/Sybase")
92		WScript.Echo("  --with-db2-prefix         Location of DB2")
93		WScript.Echo("  --with-firebird-prefix    Location of Firebird")
94		WScript.Echo("  --with-informix-prefix    Location of Informix")
95		WScript.Echo("  --with-perl-prefix        Location of Perl")
96		WScript.Echo("  --with-perl-version       Perl version")
97		WScript.Echo("  --with-python-prefix      Location of Perl")
98		WScript.Echo("  --with-python-version     Python version")
99		WScript.Echo("  --with-ruby-prefix        Location of Perl")
100		WScript.Echo("  --with-ruby-version       Ruby version")
101		WScript.Echo("  --with-java-prefix        Location of Perl")
102		WScript.Echo("  --with-php-prefix         Location of Perl")
103		WScript.Echo("  --with-tcl-prefix         Location of Perl")
104		WScript.Echo("  --with-nodejs-prefix      Location of Perl")
105		WScript.Echo("  --with-sqlr               replacement for ""sqlr""")
106		WScript.Echo("  --with-sqlrelay           replacement for ""sqlrelay""")
107		WScript.Echo("  --with-sql-relay          replacement for ""SQL Relay""")
108		WScript.Quit
109	end if
110end if
111
112for i=0 to WScript.Arguments.Count-1
113
114	arg=Wscript.Arguments.Item(i)
115
116	if arg="--enable-small-code" then
117		OPTCPPFLAGS="/O1"
118	elseif arg="--enable-debug" then
119		DEBUGCPPFLAGS="/Zi /MDd /D _DEBUG"
120		DEBUGLDFLAGS="/debug"
121	elseif arg="--disable-oracle" then
122		disableoracle=true
123	elseif mid(arg,1,21)="--with-oracle-prefix=" then
124		ORACLEPREFIX=mid(arg,22)
125	elseif arg="--disable-mysql" then
126		disablemysql=true
127	elseif mid(arg,1,20)="--with-mysql-prefix=" then
128		MYSQLPREFIX=mid(arg,21)
129	elseif arg="--disable-postgresql" then
130		disablepostgresql=true
131	elseif mid(arg,1,25)="--with-postgresql-prefix=" then
132		POSTGRESQLPREFIX=mid(arg,26)
133	elseif arg="--disable-sap" then
134		disablesap=true
135	elseif mid(arg,1,18)="--with-sap-prefix=" then
136		SYBASEPREFIX=mid(arg,19)
137	elseif arg="--disable-odbc" then
138		disableodbc=true
139	elseif arg="--disable-db2" then
140		disabledb2=true
141	elseif mid(arg,1,18)="--with-db2-prefix=" then
142		DB2PREFIX=mid(arg,19)
143	elseif arg="--disable-firebird" then
144		disablefirebird=true
145	elseif mid(arg,1,23)="--with-firebird-prefix=" then
146		FIREBIRDPREFIX=mid(arg,24)
147	elseif arg="--disable-informix" then
148		disableinformix=true
149	elseif mid(arg,1,23)="--with-informix-prefix=" then
150		INFORMIXPREFIX=mid(arg,24)
151	elseif arg="--disable-router" then
152		disablerouter=true
153	elseif arg="--disable-odbc-driver" then
154		disableodbcdriver=true
155	elseif arg="--disable-perl" then
156		disableperl=true
157	elseif mid(arg,1,19)="--with-perl-prefix=" then
158		PERLPREFIX=mid(arg,20)
159	elseif mid(arg,1,20)="--with-perl-version=" then
160		PERLVERSION=mid(arg,21)
161	elseif arg="--disable-python" then
162		disablepython=true
163	elseif mid(arg,1,21)="--with-python-prefix=" then
164		PYTHONPREFIX=mid(arg,22)
165	elseif mid(arg,1,22)="--with-python-version=" then
166		PYTHONVERSION=mid(arg,23)
167	elseif arg="--disable-ruby" then
168		disableruby=true
169	elseif mid(arg,1,19)="--with-ruby-prefix=" then
170		RUBYPREFIX=mid(arg,20)
171	elseif mid(arg,1,20)="--with-ruby-version=" then
172		RUBYVERSION=mid(arg,21)
173	elseif arg="--disable-java" then
174		disablejava=true
175	elseif mid(arg,1,19)="--with-java-prefix=" then
176		JAVAPREFIX=mid(arg,20)
177	elseif arg="--disable-php" then
178		disablephp=true
179	elseif mid(arg,1,18)="--with-php-prefix=" then
180		PHPPREFIX=mid(arg,19)
181	elseif arg="--disable-tcl" then
182		disabletcl=true
183	elseif mid(arg,1,18)="--with-tcl-prefix=" then
184		TCLPREFIX=mid(arg,19)
185	elseif arg="--disable-nodejs" then
186		disablenodejs=true
187	elseif mid(arg,1,21)="--with-nodejs-prefix=" then
188		NODEJSPREFIX=mid(arg,22)
189	elseif arg="--disable-cs" then
190		disablecs=true
191	elseif mid(arg,1,12)="--with-sqlr=" then
192		SQLR=mid(arg,13)
193	elseif mid(arg,1,16)="--with-sqlrelay=" then
194		SQLRELAY=mid(arg,17)
195	elseif mid(arg,1,17)="--with-sql-relay=" then
196		SQL_RELAY=mid(arg,18)
197	elseif mid(arg,1,16)="--disable-server" then
198		disableserver=true
199		disableoracle=true
200		disablemysql=true
201		disablepostgresql=true
202		disablesap=true
203		disableodbc=true
204		disabledb2=true
205		disablefirebird=true
206		disableinformix=true
207		disablerouter=true
208	elseif mid(arg,1,16)="--disable-client" then
209		disablecmdline=true
210		disableodbcdriver=true
211		disablecpp=true
212		disableperl=true
213		disablepython=true
214		disableruby=true
215		disablejava=true
216		disablephp=true
217		disabletcl=true
218		disablecs=true
219		disablenodejs=true
220		disablerouter=true
221	elseif mid(arg,1,17)="--disable-cmdline" then
222		disablecmdline=true
223	elseif mid(arg,1,13)="--disable-doc" then
224		disabledoc=true
225	elseif mid(arg,1,23)="--with-windows-version=" then
226		hexversion=mid(arg,24)
227	end if
228next
229
230if disableserver=true and disablecmdline=true then
231	disableutil=true
232end if
233
234
235' version
236SQLR_VERSION="1.7.0"
237
238' paths
239pfix="C:\\Program Files\\Firstworks"
240prefix=pfix
241exec_prefix=prefix
242bindir=pfix+"\\bin"
243includedir=pfix+"\\include"
244libdir=pfix+"\\lib"
245javadir=pfix+"\\java"
246libexecdir=pfix+"\\libexec\\sqlrelay"
247localstatedir=pfix+"\\var"
248sysconfdir=pfix+"\\etc"
249mandir=pfix+"\\share\\man"
250datadir=pfix+"\\share"
251docdir=pfix+"\\doc\\sqlrelay"
252EXAMPLEDIR=pfix+"\\doc\\sqlrelay\\examples"
253tmpdir=pfix+"\\var\\sqlrelay\\tmp"
254cachedir=pfix+"\\var\\sqlrelay\\cache"
255debugdir=pfix+"\\var\\sqlrelay\\debug"
256logdir=pfix+"\\var\\sqlrelay\\log"
257initscript_prefix=""
258
259' extension
260EXE=".exe"
261
262
263' create file system object
264set fso=CreateObject("Scripting.FileSystemObject")
265
266' create shell object
267set WshShell=WScript.CreateObject("WScript.Shell")
268
269
270' get top_builddir
271top_builddir=chr(34) & fso.GetAbsolutePathName(".") & chr(34)
272
273
274WScript.Echo("")
275WScript.Echo("***** Platform ***************")
276
277' determine VC++ version and architecture
278set cmd=WshShell.exec("cl")
279stdout=cmd.StdOut.ReadAll()
280stderr=cmd.StdErr.ReadLine()
281parts=split(stderr)
282arch=parts(ubound(parts))
283if arch="80x86" then
284	arch="x86"
285end if
286version=""
287for i=lbound(parts) to ubound(parts)
288	if parts(i)="Version" then
289		version=parts(i+1)
290	end if
291next
292parts=split(version,".")
293version=parts(0)
294
295WScript.Echo("Visual C++ Version: " & version)
296WScript.Echo("Visual C++ Architecture: " & arch)
297
298
299' set some architecture-based flags
300USE_32BIT_TIME_T=""
301if arch="x86" then
302	USE_32BIT_TIME_T="/D _USE_32BIT_TIME_T"
303end if
304
305
306' determine OS Version number
307if len(hexversion)=0 then
308	set cmd=WshShell.exec("%comspec% /c ver")
309	stdout=cmd.StdOut.ReadAll()
310	stderr=cmd.StdErr.ReadLine()
311	if instr(stdout,"Windows NT Version 4.0")>0 then
312		hexversion="0x0400"
313	else
314		parts0=split(stdout,"[")
315		parts1=split(parts0(1)," ")
316		parts2=split(parts1(1),"]")
317		parts3=split(parts2(0),".")
318		if parts3(1)="00" then
319			parts3(1)="0"
320		end if
321		hexversion="0x0"&parts3(0)&"0"&parts3(1)
322	end if
323end if
324
325WScript.Echo("Windows Version: " & hexversion)
326
327' in general, we need to set WIN32WINNT to the hexversion
328WINVER=""
329WIN32WINDOWS=""
330WIN32WINNT=hexversion
331
332' but, for OS'es older than WinXP we have to do some special things...
333
334' for Win2k and WinNT4, set WINVER also
335if hexversion="0x0500" or hexversion="0x0400" then
336	WINVER=hexversion
337
338' for WinME, set WIN32WINDOWS and unset WIN32WINNT
339elseif hexversion="0x0490" then
340	WIN32WINDOWS=hexversion
341	WIN32WINNT=""
342
343' for Win98, set WIN32WINDOWS and WINVER and unset WIN32WINNT
344elseif hexversion="0x0410" then
345	WIN32WINDOWS=hexversion
346	WINVER=hexversion
347	WIN32WINNT=""
348
349' for Win95, set WINVER and unset WIN32WINNT
350elseif hexversion="0x0400" then
351	WINVER=hexversion
352	WIN32WINNT=""
353
354' FIXME: not sure about WinNT3X, Win3X or below
355end if
356
357' add /D and macro name
358if WINVER<>"" then
359	WINVER="/D WINVER="&WINVER
360end if
361if WIN32WINDOWS<>"" then
362	WIN32WINDOWS="/D _WIN32_WINDOWS="&WIN32WINDOWS
363end if
364if WIN32WINNT<>"" then
365	WIN32WINNT="/D _WIN32_WINNT="&WIN32WINNT
366end if
367
368
369
370' determine config.h template...
371configwindowsh="config_windows.h"
372
373
374
375' determine SDK headers and libs... (FIXME: make this configurable)
376
377' VS2002, VS2003 and VS2008 and up come with a platform SDK
378SDKINCLUDES=""
379SDKLIBS=""
380
381' VS2005 doesn't come with an SDK and there are several that are compatible
382if version=14 then
383
384	' older SDK's have various issues
385
386	' 5.2.3700.0 - Microsoft Platform SDK February 2003
387	'SDKINCLUDES="/I""C:\Program Files\Microsoft SDK\include"""
388	'SDKLIBS="/LIBPATH:""C:\Program Files\Microsoft SDK\Lib"""
389
390	' 5.2.3790.1830.15 - Windows Server 2003 SP1 Platform SDK
391	SDKINCLUDES="/I""C:\Program Files\Microsoft Platform SDK\Include"""
392	SDKLIBS="/LIBPATH:""C:\Program Files\Microsoft Platform SDK\Lib"""
393
394	' 5.2.3790.2075.51 - Windows Server 2003 R2 Platform SDK
395	'SDKINCLUDES="/I""C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include"""
396	'SDKLIBS="/LIBPATH:""C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib"""
397
398	' 6.0A (comes with VC2008)
399	'SDKINCLUDES="/I""C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include"""
400	'SDKLIBS="/LIBPATH:""C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib"""
401
402	' not sure about newer SDK's
403
404' VS6 doesn't come with a platform SDK
405elseif version=12 then
406
407	' older SDK's might work too
408
409	' 5.2.3700.0 - Microsoft Platform SDK February 2003
410	SDKINCLUDES="/I""C:\Program Files\Microsoft SDK\include"""
411	SDKLIBS="/LIBPATH:""C:\Program Files\Microsoft SDK\Lib"""
412
413	' not sure about newer SDK's
414
415' VS5 and lower don't come with a platform SDK
416elseif version<=11 then
417
418	' older SDK's might work too
419
420	' 5.1.2600.2180 - Microsoft Platform SDK for Windows XP SP2
421	' (this doesn't actually work)
422	'SDKINCLUDES="/I""C:\Program Files\Microsoft Platform SDK for Windows XP SP2\Include"""
423	'SDKLIBS="/LIBPATH:""C:\Program Files\Microsoft Platform SDK for Windows XP SP2\Lib"""
424
425	' newer SDK's give link errors
426
427end if
428
429WScript.Echo("******************************")
430
431
432' util
433ALLUTIL=""
434INSTALLUTIL=""
435if disableutil=false then
436	ALLUTIL="all-util"
437	INSTALLUTIL="install-util"
438end if
439
440
441' server
442ALLSERVER=""
443INSTALLSERVER=""
444if disableserver=false then
445	ALLSERVER="all-server all-configs all-parsers all-queries all-loggers all-notifications all-schedules all-routers all-protocols all-pwdencs all-auths all-directives all-translations all-bindvariabletranslations all-resultsettranslations all-resultsetrowtranslations all-resultsetrowblocktranslations all-resultsetheadertranslations all-filters all-triggers all-moduledatas all-connections"
446	INSTALLSERVER="install-server install-configs install-parsers install-queries install-loggers install-notifications install-schedules install-routers install-protocols install-pwdencs install-auths install-directives install-translations install-bindvariabletranslations install-resultsettranslations install-resultsetrowtranslations install-resultsetrowblocktranslations install-resultsetheadertranslations install-filters install-triggers install-moduledatas install-connections"
447end if
448
449
450
451' oracle
452WScript.Echo("")
453WScript.Echo("***** Oracle *****************")
454
455configureDatabase "Oracle","oracle",disableoracle,_
456			"C:\Program Files\Oracle","instantclient_",_
457			"sdk\include","oci.h",_
458			"sdk\lib\msvc","oci.lib","",_
459			"\include","\lib\msvc","oci.lib",_
460			ORACLEPREFIX,ORACLEINCLUDES,ORACLELIBS,_
461			ALLORACLE,INSTALLORACLE
462
463ORACLEVERSION
464
465WScript.Echo("******************************")
466
467
468
469' mysql
470WScript.Echo("")
471WScript.Echo("***** MySQL ******************")
472
473'"MySQL Connector.C ",_
474configureDatabase "MySQL","mysql",disablemysql,_
475			"C:\Program Files\MySQL",_
476			"MySQL Connector C ",_
477			"include","mysql.h",_
478			"lib","libmysql.lib","",_
479			"\include","\lib","libmysql.lib",_
480			MYSQLPREFIX,MYSQLINCLUDES,MYSQLLIBS,_
481			ALLMYSQL,INSTALLMYSQL
482
483WScript.Echo("******************************")
484
485
486' postgresql
487WScript.Echo("")
488WScript.Echo("***** PostgreSQL *************")
489
490configureDatabase "PostgreSQL","postgresql",disablepostgresql,_
491			"C:\Program Files\PostgreSQL","",_
492			"include","libpq-fe.h",_
493			"lib","libpq.lib","",_
494			"\include","\lib","libpq.lib",_
495			POSTGRESQLPREFIX,POSTGRESQLINCLUDES,POSTGRESQLLIBS,_
496			ALLPOSTGRESQL,INSTALLPOSTGRESQL
497
498WScript.Echo("******************************")
499
500
501' sqlite
502SQLITEINCLUDES=""
503SQLITELIBS=""
504ALLSQLITE=""
505INSTALLSQLITE=""
506
507
508' sap
509WScript.Echo("")
510WScript.Echo("***** SAP/Sybase *************")
511
512configureDatabase "SAP/SYBASE","sap",disablesap,_
513			"C:\SAP","OCS-",_
514			"include","ctpublic.h",_
515			"lib","libsybct64.lib",_
516			"libsybblk64.lib libsybcs64.lib",_
517			"\include","\lib","libsybct64.lib",_
518			SYBASEPREFIX,SYBASEINCLUDES,SYBASELIBS,_
519			ALLSYBASE,INSTALLSYBASE
520
521WScript.Echo("******************************")
522
523
524' odbc
525WScript.Echo("")
526WScript.Echo("***** ODBC *******************")
527ODBCINCLUDES=""
528ODBCLIBS="user32.lib gdi32.lib odbc32.lib odbccp32.lib"
529
530' VS2015 requires legacy_stdio_definitions.lib or
531' __vsnwprintf_s will be unresolved
532set WshShell=WScript.CreateObject("WScript.Shell")
533set cmd=WshShell.exec("cl")
534stdout=cmd.StdOut.ReadAll()
535stderr=cmd.StdErr.ReadLine()
536parts=split(stderr)
537arch=parts(ubound(parts))
538version=""
539for i=lbound(parts) to ubound(parts)
540	if parts(i)="Version" then
541		version=parts(i+1)
542	end if
543next
544parts=split(version,".")
545version=parts(0)
546if version=19 then
547	ODBCLIBS=ODBCLIBS+" legacy_stdio_definitions.lib"
548end if
549
550if disableodbc=false then
551	ALLODBC="all-odbc"
552	INSTALLODBC="installdll-odbc"
553
554	WScript.Echo("ODBC includes... " & ODBCINCLUDES)
555	WScript.Echo("ODBC libs... " & ODBCLIBS)
556else
557	WScript.Echo("ODBC support will not be built. ")
558end if
559WScript.Echo("******************************")
560
561
562' db2
563WScript.Echo("")
564WScript.Echo("***** DB2 ********************")
565
566configureDatabase "DB2","db2",disabledb2,_
567			"C:\Program Files\IBM","SQLLIB",_
568			"include","sqlcli1.h",_
569			"lib","db2api.lib",_
570			"",_
571			"\include","\lib","db2api.lib",_
572			DB2PREFIX,DB2INCLUDES,DB2LIBS,_
573			ALLDB2,INSTALLDB2
574
575WScript.Echo("******************************")
576
577
578' firebid
579WScript.Echo("")
580WScript.Echo("***** Firebird ***************")
581
582configureDatabase "Firebird","firebird",disablefirebird,_
583			"C:\Program Files\Firebird","Firebird_",_
584			"include","ibase.h",_
585			"lib","fbclient_ms.lib",_
586			"",_
587			"\include","\lib","fbclient_ms.lib",_
588			FIREBIRDPREFIX,FIREBIRDINCLUDES,FIREBIRDLIBS,_
589			ALLFIREBIRD,INSTALLFIREBIRD
590
591WScript.Echo("******************************")
592
593
594' informix
595WScript.Echo("")
596WScript.Echo("***** Informix ***************")
597
598configureDatabase "Informix","informix",disableinformix,_
599			"C:\Program Files","IBM Informix Software Bundle",_
600			"incl\cli","infxcli.h",_
601			"lib","iclit",_
602			"",_
603			"\incl\cli","\lib","iclit09b.lib",_
604			INFORMIXPREFIX,INFORMIXINCLUDES,INFORMIXLIBS,_
605			ALLINFORMIX,INSTALLINFORMIX
606
607WScript.Echo("******************************")
608
609
610' router
611ALLROUTER=""
612INSTALLROUTER=""
613if disablerouter=false then
614	ALLROUTER="all-router"
615	INSTALLROUTER="installdll-router"
616end if
617
618
619' cmdline programs
620ALLCMDLINE=""
621INSTALLCMDLINE=""
622if disablecmdline=false then
623	ALLCMDLINE="all-cmdline"
624	INSTALLCMDLINE="install-cmdline"
625end if
626
627
628' api's...
629APIALLSUBDIRS=""
630APICLEANSUBDIRS=""
631APIINSTALLSUBDIRS=""
632APIUNINSTALLSUBDIRS=""
633if disablecpp=false then
634	APIALLSUBDIRS=APIALLSUBDIRS+" all-cpp all-c"
635	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-cpp clean-c"
636	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-cpp install-c"
637	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+" uninstall-cpp uninstall-c"
638end if
639if disableodbcdriver=false then
640	APIALLSUBDIRS=APIALLSUBDIRS+" all-odbc"
641	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-odbc"
642	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-odbc"
643	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+" uninstall-odbc"
644end if
645
646
647' c#
648WScript.Echo("")
649WScript.Echo("***** C# *********************")
650if disablecs=false then
651	APIALLSUBDIRS=APIALLSUBDIRS+" all-cs"
652	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-cs"
653	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-cs"
654	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-cs"
655else
656	WScript.Echo("C# support will not be built. ")
657end if
658WScript.Echo("******************************")
659
660
661' perl
662WScript.Echo("")
663WScript.Echo("***** Perl *******************")
664
665if PERLPREFIX="" then
666	findPrefix "C:\","Perl",PERLPREFIX,disableperl
667end if
668
669if PERLPREFIX<>"" and PERLVERSION="" then
670	findVersion PERLPREFIX & "\lib\CORE","perl",".lib",PERLVERSION
671end if
672
673if disableperl=false then
674	APIALLSUBDIRS=APIALLSUBDIRS+" all-perl"
675	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-perl"
676	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-perl"
677	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-perl"
678
679	WScript.Echo("Perl prefix... " & PERLPREFIX)
680	WScript.Echo("Perl version... " & PERLVERSION)
681else
682	WScript.Echo("Perl support will not be built. ")
683end if
684WScript.Echo("******************************")
685
686
687' python
688WScript.Echo("")
689WScript.Echo("***** Python *****************")
690
691if PYTHONPREFIX="" then
692	findPrefix "C:\","Python",PYTHONPREFIX,disablepython
693end if
694
695if PYTHONPREFIX<>"" and PYTHONVERSION="" then
696	findVersion PYTHONPREFIX & "\libs","python",".lib",PYTHONVERSION
697end if
698
699if PYTHONVERSION<30 then
700	IMPORTEXCEPTIONS="import exceptions"
701	EXCEPTIONSSTANDARDERROR="exceptions.StandardError"
702else
703	IMPORTEXCEPTIONS=""
704	EXCEPTIONSSTANDARDERROR="Exception"
705end if
706
707if disablepython=false then
708	APIALLSUBDIRS=APIALLSUBDIRS+" all-python"
709	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-python"
710	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-python"
711	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-python"
712
713	WScript.Echo("Python prefix... " & PYTHONPREFIX)
714	WScript.Echo("Python version... " & PYTHONVERSION)
715else
716	WScript.Echo("Python support will not be built. ")
717end if
718WScript.Echo("******************************")
719
720
721' ruby
722WScript.Echo("")
723WScript.Echo("***** Ruby *******************")
724
725if RUBYPREFIX="" then
726	findPrefix "C:\","Ruby",RUBYPREFIX,disableruby
727end if
728
729if RUBYPREFIX<>"" and RUBYVERSION="" then
730	findVersion RUBYPREFIX & "\include","ruby-","",RUBYVERSION
731
732	RUBYLIBVERSION=RUBYVERSION
733	while InStr(RUBYLIBVERSION,".")>0
734		RUBYLIBVERSION=Replace(RUBYLIBVERSION,".","")
735	wend
736end if
737
738if RUBYPREFIX<>"" and RUBYVERSION<>"" then
739	if arch="x86" then
740		RUBYTARGET="i386-mswin32"
741		findVersion RUBYPREFIX & "\lib","msvcr","-ruby" & RUBYLIBVERSION & ".lib",RUBYVCVERSION
742		RUBYLIBPREFIX="msvcr" & RUBYVCVERSION
743		RUBYSITEARCHDIRSUFFIX="i386-msvcr" & RUBYVCVERSION
744	else
745		RUBYTARGET="x64-mswin64"
746		findVersion RUBYPREFIX & "\lib","x64-msvcr","-ruby" & RUBYLIBVERSION & ".lib",RUBYVCVERSION
747		RUBYLIBPREFIX="x64-msvcr" & RUBYVCVERSION
748		RUBYSITEARCHDIRSUFFIX="x64-msvcr" & RUBYVCVERSION
749	end if
750end if
751
752if disableruby=false then
753	APIALLSUBDIRS=APIALLSUBDIRS+" all-ruby"
754	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-ruby"
755	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-ruby"
756	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-ruby"
757
758	WScript.Echo("Ruby prefix... " & RUBYPREFIX)
759	WScript.Echo("Ruby version... " & RUBYVERSION)
760else
761	WScript.Echo("Ruby support will not be built. ")
762end if
763WScript.Echo("******************************")
764
765
766' php
767WScript.Echo("")
768WScript.Echo("***** PHP ********************")
769
770if PHPPREFIX="" then
771	findPrefix "C:\","PHP",PHPPREFIX,disablephp
772end if
773
774if disablephp=false then
775	APIALLSUBDIRS=APIALLSUBDIRS+" all-php all-phppdo"
776	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-php clean-phppdo"
777	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-php install-phppdo"
778	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-php uninstall-phppdo"
779
780	WScript.Echo("PHP prefix... " & PHPPREFIX)
781else
782	WScript.Echo("PHP support will not be built. ")
783end if
784WScript.Echo("******************************")
785
786
787' java
788WScript.Echo("")
789WScript.Echo("***** Java *******************")
790
791if JAVAPREFIX="" then
792	findPrefix "C:\Program Files\Java\","jdk",JAVAPREFIX,disablejava
793end if
794
795if disablejava=false then
796	APIALLSUBDIRS=APIALLSUBDIRS+" all-java all-jdbc"
797	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-java clean-jdbc"
798	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-java install-jdbc"
799	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-java uninstall-jdbc"
800
801	WScript.Echo("Java prefix... " & JAVAPREFIX)
802else
803	WScript.Echo("Java support will not be built. ")
804end if
805WScript.Echo("******************************")
806
807
808' tcl
809WScript.Echo("")
810WScript.Echo("***** TCL ********************")
811
812if TCLPREFIX="" then
813	findPrefix "C:\","Tcl",TCLPREFIX,disabletcl
814end if
815
816if disabletcl=false then
817	APIALLSUBDIRS=APIALLSUBDIRS+" all-tcl"
818	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-tcl"
819	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-tcl"
820	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-tcl"
821
822	WScript.Echo("TCL prefix... " & TCLPREFIX)
823else
824	WScript.Echo("TCL support will not be built. ")
825end if
826WScript.Echo("******************************")
827
828
829' node.js
830WScript.Echo("")
831WScript.Echo("***** node.js ****************")
832
833if NODEJSPREFIX="" then
834	findPrefix "C:\Program Files\","nodejs",NODEJSPREFIX,disablenodejs
835end if
836
837NODEJSMSVSVERSION=2005
838if version=15 then
839	NODEJSMSVSVERSION=2008
840elseif version=16 then
841	NODEJSMSVSVERSION=2010
842elseif version=17 then
843	NODEJSMSVSVERSION=2012
844elseif version=18 then
845	NODEJSMSVSVERSION=2013
846elseif version=19 then
847	NODEJSMSVSVERSION=2015
848else
849	NODEJSMSVSVERSION=2000+version-4
850end if
851
852if disablenodejs=false then
853	APIALLSUBDIRS=APIALLSUBDIRS+" all-nodejs"
854	APICLEANSUBDIRS=APICLEANSUBDIRS+" clean-nodejs"
855	APIINSTALLSUBDIRS=APIINSTALLSUBDIRS+" install-nodejs"
856	APIUNINSTALLSUBDIRS=APIUNINSTALLSUBDIRS+ " uninstall-nodejs"
857
858	WScript.Echo("node.js prefix... " & NODEJSPREFIX)
859else
860	WScript.Echo("node.js support will not be built. ")
861end if
862WScript.Echo("******************************")
863
864
865' docs
866INSTALLDOC=""
867if disabledoc=false then
868	INSTALLDOC="install-doc"
869end if
870
871TESTDBS=""
872TESTAPIS=""
873
874CMDLINEBUILD="no "
875CPPBUILD="no "
876PERLBUILD="no "
877PYTHONBUILD="no "
878RUBYBUILD="no "
879PHPBUILD="no "
880PHPPDOBUILD="no "
881ODBCDRIVERBUILD="no "
882JAVABUILD="no "
883TCLBUILD="no "
884CSBUILD="no "
885NODEJSBUILD="no "
886ODBCBUILD="no "
887if disablecmdline=false then
888	CMDLINEBUILD="yes"
889end if
890if disablecpp=false then
891	CPPBUILD="yes"
892	TESTAPIS=TESTAPIS & """c"",""c++"","
893end if
894if disableperl=false then
895	PERLBUILD="yes"
896	TESTAPIS=TESTAPIS & """perl"",""perldbi"","
897end if
898if disablepython=false then
899	PYTHONBUILD="yes"
900	TESTAPIS=TESTAPIS & """python"",""pythondb"","
901end if
902if disableruby=false then
903	RUBYBUILD="yes"
904	TESTAPIS=TESTAPIS & """ruby"","
905end if
906if disablephp=false then
907	PHPBUILD="yes"
908	TESTAPIS=TESTAPIS & """php"","
909end if
910if disablephp=false then
911	PHPPDOBUILD="yes"
912	TESTAPIS=TESTAPIS & """phppdo"","
913end if
914if disableodbcdriver=false then
915	ODBCDRIVERBUILD="yes"
916end if
917if disablejava=false then
918	JAVABUILD="yes"
919	TESTAPIS=TESTAPIS & """java"","
920end if
921if disabletcl=false then
922	TCLBUILD="yes"
923	TESTAPIS=TESTAPIS & """tcl"","
924end if
925if disablecs=false then
926	CSBUILD="yes"
927	TESTAPIS=TESTAPIS & """cs"","
928end if
929if disablenodejs=false then
930	NODEJSBUILD="yes"
931	TESTAPIS=TESTAPIS & """nodejs"","
932end if
933if disableodbc=false then
934	ODBCBUILD="yes"
935end if
936ORACLE8BUILD="no     "
937MYSQLBUILD="no     "
938POSTGRESQLBUILD="no     "
939FREETDSBUILD="no     "
940SYBASEBUILD="no     "
941ODBCBUILD="no     "
942DB2BUILD="no     "
943FIREBIRDBUILD="no     "
944MDBTOOLSBUILD="no     "
945INFORMIXBUILD="no     "
946ROUTERBUILD="no     "
947if disableoracle=false then
948	ORACLE8BUILD="yes    "
949	TESTDBS=TESTDBs&"""oracle"","
950end if
951if disablemysql=false then
952	MYSQLBUILD="yes    "
953	TESTDBS=TESTDBs&"""mysql"","
954end if
955if disablepostgresql=false then
956	POSTGRESQLBUILD="yes    "
957	TESTDBS=TESTDBs&"""postgresql"","
958end if
959if disablesap=false then
960	SYBASEBUILD="yes    "
961	TESTDBS=TESTDBs&"""sap"","
962end if
963if disableodbc=false then
964	ODBCBUILD="yes    "
965end if
966if disabledb2=false then
967	DB2BUILD="yes    "
968	TESTDBS=TESTDBs&"""db2"","
969end if
970if disablefirebird=false then
971	FIREBIRDBUILD="yes    "
972	TESTDBS=TESTDBs&"""firebird"","
973end if
974if disableinformix=false then
975	INFORMIXBUILD="yes    "
976	TESTDBS=TESTDBs&"""informix"","
977end if
978if disablerouter=false then
979	ROUTERBUILD="yes    "
980	TESTDBS=TESTDBs&"""router"","
981end if
982if disablemysql=false then
983	TESTDBS=TESTDBs&"""mysqlprotocol"","
984end if
985
986' truncate the trailing comma
987TESTDBS=left(TESTDBS,len(TESTDBS)-1)
988TESTAPIS=left(TESTAPIS,len(TESTAPIS)-1)
989
990' input and output files
991infiles=Array(_
992	"config_windows.mk",_
993	configwindowsh,_
994	"src\\common\\defines.h.in",_
995	"src\\server\\sqlrelay\\private\\sqlrshm.h.in",_
996	"bin\\sqlrclient-config.in",_
997	"bin\\sqlrclientwrapper-config.in",_
998	"bin\\sqlrserver-config.in",_
999	"test\\testall.vbs.in",_
1000	"sqlrelay-c.pc.in",_
1001	"sqlrelay-c++.pc.in",_
1002	"msvc\\setupx64\\setupx64.vdproj.in",_
1003	"msvc\\setupx86\\setupx86.vdproj.in"_
1004	)
1005outfiles=Array(_
1006	"config.mk",_
1007	"config.h",_
1008	"src\\common\\defines.h",_
1009	"src\\server\\sqlrelay\\private\\sqlrshm.h",_
1010	"bin\\sqlrclient-config",_
1011	"bin\\sqlrclientwrapper-config",_
1012	"bin\\sqlrserver-config",_
1013	"test\\testall.vbs",_
1014	"sqlrelay-c.pc",_
1015	"sqlrelay-c++.pc",_
1016	"msvc\\setupx64\\setupx64.vdproj",_
1017	"msvc\\setupx86\\setupx86.vdproj"_
1018	)
1019
1020
1021' create output files
1022for i=lbound(infiles) to ubound(infiles)
1023
1024	' read input file
1025	set infile=fso.OpenTextFile(infiles(i))
1026	content=infile.ReadAll()
1027
1028	' version
1029	content=replace(content,"@SQLR_VERSION@",SQLR_VERSION,1,-1,0)
1030
1031	' paths
1032	content=replace(content,"@prefix@",prefix,1,-1,0)
1033	content=replace(content,"@exec_prefix@",exec_prefix,1,-1,0)
1034	content=replace(content,"@bindir@",bindir,1,-1,0)
1035	content=replace(content,"@includedir@",includedir,1,-1,0)
1036	content=replace(content,"@libdir@",libdir,1,-1,0)
1037	content=replace(content,"@javadir@",javadir,1,-1,0)
1038	content=replace(content,"@mandir@",mandir,1,-1,0)
1039	content=replace(content,"@datadir@",datadir,1,-1,0)
1040	content=replace(content,"@libexecdir@",libexecdir,1,-1,0)
1041	content=replace(content,"@localstatedir@",localstatedir,1,-1,0)
1042	content=replace(content,"@sysconfdir@",sysconfdir,1,-1,0)
1043	content=replace(content,"@docdir@",docdir,1,-1,0)
1044	content=replace(content,"@EXAMPLEDIR@",EXAMPLEDIR,1,-1,0)
1045	content=replace(content,"@tmpdir@",tmpdir,1,-1,0)
1046	content=replace(content,"@cachedir@",cachedir,1,-1,0)
1047	content=replace(content,"@debugdir@",debugdir,1,-1,0)
1048	content=replace(content,"@logdir@",logdir,1,-1,0)
1049	content=replace(content,"@initscript_prefix@",initscript_prefix,1,-1,0)
1050
1051	' flags
1052	content=replace(content,"@OPTCPPFLAGS@",OPTCPPFLAGS,1,-1,0)
1053	content=replace(content,"@DEBUGCPPFLAGS@",DEBUGCPPFLAGS,1,-1,0)
1054	content=replace(content,"@DEBUGLDFLAGS@",DEBUGLDFLAGS,1,-1,0)
1055	content=replace(content,"@_USE_32BIT_TIME_T@",USE_32BIT_TIME_T,1,-1,0)
1056	content=replace(content,"@SDKINCLUDES@",SDKINCLUDES,1,-1,0)
1057	content=replace(content,"@WINVER@",WINVER,1,-1,0)
1058	content=replace(content,"@WIN32WINDOWS@",WIN32WINDOWS,1,-1,0)
1059	content=replace(content,"@WIN32WINNT@",WIN32WINNT,1,-1,0)
1060
1061	' libraries
1062	content=replace(content,"@SDKLIBS@",SDKLIBS,1,-1,0)
1063
1064	' extension
1065	content=replace(content,"@EXE@",EXE,1,-1,0)
1066
1067	' top_builddir
1068	content=replace(content,"@top_builddir@",top_builddir,1,-1,0)
1069
1070	' perl
1071	content=replace(content,"@PERLPREFIX@",PERLPREFIX,1,-1,0)
1072	content=replace(content,"@PERLVERSION@",PERLVERSION,1,-1,0)
1073
1074	' python
1075	content=replace(content,"@PYTHONPREFIX@",PYTHONPREFIX,1,-1,0)
1076	content=replace(content,"@PYTHONVERSION@",PYTHONVERSION,1,-1,0)
1077	content=replace(content,"@IMPORTEXCEPTIONS@",IMPORTEXCEPTIONS,1,-1,0)
1078	content=replace(content,"@EXCEPTIONSSTANDARDERROR@",EXCEPTIONSSTANDARDERROR,1,-1,0)
1079
1080	' ruby
1081	content=replace(content,"@RUBYPREFIX@",RUBYPREFIX,1,-1,0)
1082	content=replace(content,"@RUBYVERSION@",RUBYVERSION,1,-1,0)
1083	content=replace(content,"@RUBYLIBVERSION@",RUBYLIBVERSION,1,-1,0)
1084	content=replace(content,"@RUBYVCVERSION@",RUBYVCVERSION,1,-1,0)
1085	content=replace(content,"@RUBYTARGET@",RUBYTARGET,1,-1,0)
1086	content=replace(content,"@RUBYLIBPREFIX@",RUBYLIBPREFIX,1,-1,0)
1087	content=replace(content,"@RUBYSITEARCHDIRSUFFIX@",RUBYSITEARCHDIRSUFFIX,1,-1,0)
1088
1089	' php
1090	content=replace(content,"@PHPPREFIX@",PHPPREFIX,1,-1,0)
1091
1092	' java
1093	content=replace(content,"@JAVAPREFIX@",JAVAPREFIX,1,-1,0)
1094
1095	' tcl
1096	content=replace(content,"@TCLPREFIX@",TCLPREFIX,1,-1,0)
1097
1098	' nodejs
1099	content=replace(content,"@NODEJSPREFIX@",NODEJSPREFIX,1,-1,0)
1100	content=replace(content,"@NODEJSMSVSVERSION@",NODEJSMSVSVERSION,1,-1,0)
1101
1102	' util library
1103	content=replace(content,"@ALLUTIL@",ALLUTIL,1,-1,0)
1104	content=replace(content,"@INSTALLUTIL@",INSTALLUTIL,1,-1,0)
1105
1106	' server programs
1107	content=replace(content,"@ALLSERVER@",ALLSERVER,1,-1,0)
1108	content=replace(content,"@INSTALLSERVER@",INSTALLSERVER,1,-1,0)
1109
1110	' connections
1111	content=replace(content,"@ORACLEINCLUDES@",ORACLEINCLUDES,1,-1,0)
1112	content=replace(content,"@ORACLELIBS@",ORACLELIBS,1,-1,0)
1113	content=replace(content,"@ALLORACLE@",ALLORACLE,1,-1,0)
1114	content=replace(content,"@INSTALLORACLE@",INSTALLORACLE,1,-1,0)
1115
1116	content=replace(content,"@MYSQLINCLUDES@",MYSQLINCLUDES,1,-1,0)
1117	content=replace(content,"@MYSQLLIBS@",MYSQLLIBS,1,-1,0)
1118	content=replace(content,"@ALLMYSQL@",ALLMYSQL,1,-1,0)
1119	content=replace(content,"@INSTALLMYSQL@",INSTALLMYSQL,1,-1,0)
1120
1121	content=replace(content,"@POSTGRESQLINCLUDES@",POSTGRESQLINCLUDES,1,-1,0)
1122	content=replace(content,"@POSTGRESQLLIBS@",POSTGRESQLLIBS,1,-1,0)
1123	content=replace(content,"@ALLPOSTGRESQL@",ALLPOSTGRESQL,1,-1,0)
1124	content=replace(content,"@INSTALLPOSTGRESQL@",INSTALLPOSTGRESQL,1,-1,0)
1125
1126	content=replace(content,"@SQLITEINCLUDES@",SQLITEINCLUDES,1,-1,0)
1127	content=replace(content,"@SQLITELIBS@",SQLITELIBS,1,-1,0)
1128	content=replace(content,"@ALLSQLITE@",ALLSQLITE,1,-1,0)
1129	content=replace(content,"@INSTALLSQLITE@",INSTALLSQLITE,1,-1,0)
1130
1131	content=replace(content,"@SYBASEINCLUDES@",SYBASEINCLUDES,1,-1,0)
1132	content=replace(content,"@SYBASELIBS@",SYBASELIBS,1,-1,0)
1133	content=replace(content,"@ALLSYBASE@",ALLSYBASE,1,-1,0)
1134	content=replace(content,"@INSTALLSYBASE@",INSTALLSYBASE,1,-1,0)
1135
1136	content=replace(content,"@ODBCINCLUDES@",ODBCINCLUDES,1,-1,0)
1137	content=replace(content,"@ODBCLIBS@",ODBCLIBS,1,-1,0)
1138	content=replace(content,"@ALLODBC@",ALLODBC,1,-1,0)
1139	content=replace(content,"@INSTALLODBC@",INSTALLODBC,1,-1,0)
1140
1141	content=replace(content,"@DB2INCLUDES@",DB2INCLUDES,1,-1,0)
1142	content=replace(content,"@DB2LIBS@",DB2LIBS,1,-1,0)
1143	content=replace(content,"@ALLDB2@",ALLDB2,1,-1,0)
1144	content=replace(content,"@INSTALLDB2@",INSTALLDB2,1,-1,0)
1145
1146	content=replace(content,"@FIREBIRDINCLUDES@",FIREBIRDINCLUDES,1,-1,0)
1147	content=replace(content,"@FIREBIRDLIBS@",FIREBIRDLIBS,1,-1,0)
1148	content=replace(content,"@ALLFIREBIRD@",ALLFIREBIRD,1,-1,0)
1149	content=replace(content,"@INSTALLFIREBIRD@",INSTALLFIREBIRD,1,-1,0)
1150
1151	content=replace(content,"@INFORMIXINCLUDES@",INFORMIXINCLUDES,1,-1,0)
1152	content=replace(content,"@INFORMIXLIBS@",INFORMIXLIBS,1,-1,0)
1153	content=replace(content,"@ALLINFORMIX@",ALLINFORMIX,1,-1,0)
1154	content=replace(content,"@INSTALLINFORMIX@",INSTALLINFORMIX,1,-1,0)
1155	content=replace(content,"@ALLROUTER@",ALLROUTER,1,-1,0)
1156	content=replace(content,"@INSTALLROUTER@",INSTALLROUTER,1,-1,0)
1157
1158	' cmdline programs
1159	content=replace(content,"@ALLCMDLINE@",ALLCMDLINE,1,-1,0)
1160	content=replace(content,"@INSTALLCMDLINE@",INSTALLCMDLINE,1,-1,0)
1161
1162	' docs
1163	content=replace(content,"@INSTALLDOC@",INSTALLDOC,1,-1,0)
1164
1165	' enabled apis
1166	content=replace(content,"@APIALLSUBDIRS@",APIALLSUBDIRS,1,-1,0)
1167	content=replace(content,"@APICLEANSUBDIRS@",APICLEANSUBDIRS,1,-1,0)
1168	content=replace(content,"@APIINSTALLSUBDIRS@",APIINSTALLSUBDIRS,1,-1,0)
1169	content=replace(content,"@APIUNINSTALLSUBDIRS@",APIUNINSTALLSUBDIRS,1,-1,0)
1170
1171	' sqlr
1172	content=replace(content,"@SQLR@",SQLR,1,-1,0)
1173	content=replace(content,"@SQLRELAY@",SQLRELAY,1,-1,0)
1174	content=replace(content,"@SQL_RELAY@",SQL_RELAY,1,-1,0)
1175
1176	' max connections
1177	content=replace(content,"@ABS_MAXCONNECTIONS@",ABS_MAXCONNECTIONS,1,-1,0)
1178
1179	' tests
1180	content=replace(content,"@TESTDBS@",TESTDBS,1,-1,0)
1181	content=replace(content,"@TESTAPIS@",TESTAPIS,1,-1,0)
1182
1183	' write output file
1184	set outfile=fso.OpenTextFile(outfiles(i),2,true)
1185	call outfile.Write(content)
1186	call outfile.Close()
1187next
1188
1189
1190' summary
1191WScript.Echo("")
1192WScript.Echo("***** Summary ***********************************************")
1193WScript.Echo(" Version      : " & SQLR_VERSION)
1194WSCript.Echo("")
1195WScript.Echo(" Branding     : " & SQL_RELAY & " / " & SQLRELAY & " / " & SQLR)
1196WSCript.Echo("")
1197WScript.Echo(" Command Line : Clients     " & CMDLINEBUILD)
1198WSCript.Echo("")
1199WSCript.Echo(" APIs         : C/C++       " & CPPBUILD & "           Perl       " & PERLBUILD)
1200WSCript.Echo("                Python      " & PYTHONBUILD & "           Ruby       " & RUBYBUILD)
1201WSCript.Echo("                PHP         " & PHPBUILD & "           Java       " & JAVABUILD)
1202WSCript.Echo("                PHP PDO     " & PHPPDOBUILD & "           ODBC       " & ODBCDRIVERBUILD)
1203WSCript.Echo("                TCL         " & TCLBUILD & "           C#         " & CSBUILD)
1204WScript.Echo("                node.js     " & NODEJSBUILD)
1205WSCript.Echo("")
1206WScript.Echo(" Databases    : Oracle8     " & ORACLE8BUILD & "       MySQL      " & MYSQLBUILD)
1207WScript.Echo("                PostgreSQL  " & POSTGRESQLBUILD & "       SAP/Sybase " & SYBASEBUILD)
1208WScript.Echo("                ODBC        " & ODBCBUILD & "       DB2        " & DB2BUILD)
1209WScript.Echo("                Firebird    " & FIREBIRDBUILD & "       Informix   " & INFORMIXBUILD)
1210WScript.Echo("                Router      " & ROUTERBUILD)
1211WScript.Echo("*************************************************************")
1212WScript.Echo("")
1213WScript.Echo("If you expected a Database or API that doesn't show up in the Summary")
1214WScript.Echo("then the configure script probably couldn't find a package it needed to")
1215WScript.Echo("build it.  You can manually specify package locations using command line")
1216WScript.Echo("options.")
1217WScript.Echo("")
1218WScript.Echo("Type:  cscript /nologo configure.vbs --help   for a list of options.")
1219WScript.Echo("")
1220
1221
1222
1223Sub configureDatabase(dbname, dblowername, disabledb,_
1224			basefolder, subfolderpattern,_
1225			includessubfolder, includespattern,_
1226			libssubfolder, libpattern, extralibs,_
1227			defaultincludes, defaultlibssubfolder, defaultlibs,_
1228			DBPREFIX, DBINCLUDES, DBLIBS, ALLDB, INSTALLDB)
1229	on error resume next
1230
1231	if disabledb=false then
1232
1233		if DBPREFIX="" then
1234
1235			' if no db prefix was supplied, then look for the db
1236			includesfolder=""
1237			libsfolder=""
1238			libfile=""
1239			if findHeadersAndLibs(basefolder,subfolderpattern,_
1240						includessubfolder,_
1241						includespattern,_
1242						includesfolder,_
1243						libssubfolder,_
1244						libpattern,_
1245						libsfolder,_
1246						libfile)=true then
1247
1248				' if we found it then set the
1249				' DBINCLUDES and DBLIBS
1250				DBINCLUDES="/I """ & includesfolder & """"
1251				DBLIBS="/LIBPATH:""" & libsfolder & """ " &_
1252						libfile & " " & extralibs
1253			else
1254				' if we didn't find it then disable the db
1255				disabledb=true
1256			end if
1257
1258		else
1259
1260			' if a db prefix was supplied, then just use it
1261			DBINCLUDES="/I """ & DBPREFIX & defaultincludes & """"
1262			DBLIBS="/LIBPATH:""" & DBPREFIX &_
1263						 defaultlibssubfolder &_
1264						 " " & defaultlibs & """"
1265		end if
1266	end if
1267
1268	' display success or failure
1269	if disabledb=false then
1270		ALLDB="all-" & dblowername
1271		INSTALLDB="installdll-" & dblowername
1272
1273		WScript.Echo(dbname & " includes... " & DBINCLUDES)
1274		WScript.Echo(dbname & " libs... " & DBLIBS)
1275	else
1276		WScript.Echo(dbname & " support will not be built. ")
1277	end if
1278End Sub
1279
1280
1281Function findHeadersAndLibs(basefolder, subfolderpattern,_
1282			includessubfolder, includespattern, includesfolder,_
1283			libssubfolder, libpattern, libsfolder, libfile)
1284
1285	on error resume next
1286	Err.Number=0
1287
1288	findHeadersAndLibs=false
1289
1290	' open the base folder
1291	Set bf=fso.GetFolder(basefolder)
1292	if Err.Number<>0 then
1293		return
1294	end if
1295
1296	' get and sort its subfolders (descending)
1297	' (this makes more newly versioned folders be found first)
1298	Dim subfolders(100)
1299	i=0
1300	for each sf in bf.SubFolders
1301		if i < UBound(subfolders) then
1302			subfolders(i) = sf.Name
1303			i=i+1
1304		end if
1305	next
1306	Sort(subfolders)
1307	Reverse(subfolders)
1308
1309	' run through the subfolders...
1310	for i=0 to UBound(subfolders)
1311
1312		sfname=subfolders(i)
1313
1314		' reset output variables
1315		includesfolder=""
1316		libsfolder=""
1317		libfile=""
1318
1319		' if we find the specified subfolder pattern...
1320		if InStr(sfname,subfolderpattern)>0 then
1321
1322			' look for the includes subfolder
1323			isfname=basefolder & "\" & sfname &_
1324						"\" & includessubfolder
1325			Set isf=fso.GetFolder(isfname)
1326			if Err.Number=0 then
1327				for each fname in isf.Files
1328					if InStr(fname,includespattern)>0 then
1329						includesfolder=isfname
1330						exit for
1331					end if
1332				next
1333			end if
1334
1335			' look for the libs subfolder
1336			lsfname=basefolder & "\" & sfname &_
1337						"\" & libssubfolder
1338			Set lsf=fso.GetFolder(lsfname)
1339			if Err.Number=0 then
1340				for each fname in lsf.Files
1341					if InStr(fname,libpattern)>0 then
1342						libsfolder=lsfname
1343						if InStrRev(fname,"\")>0 then
1344							libfile=_
1345							Mid(fname,_
1346							InStrRev(fname,"\")+1)
1347						else
1348							libfile=fname
1349						end if
1350						exit for
1351					end if
1352				next
1353			end if
1354
1355			' exit if we found everything we were looking for
1356			if Len(includesfolder)>0 and _
1357				Len(libsfolder)>0 and Len(libfile)>0 then
1358				findHeadersAndLibs=true
1359				exit for
1360			end if
1361		end if
1362	next
1363End Function
1364
1365
1366Sub findPrefix(basefolder, subfolderpattern, apiprefix, disableapi)
1367
1368	on error resume next
1369	Err.Number=0
1370
1371	findPrefix=false
1372	apiprefix=""
1373
1374	if disableapi=false then
1375
1376		disableapi=true
1377
1378		' open the base folder
1379		Set bf=fso.GetFolder(basefolder)
1380		if Err.Number<>0 then
1381			return
1382		end if
1383
1384		' get and sort its subfolders (descending)
1385		' (this makes more newly versioned folders be found first)
1386		Dim subfolders(100)
1387		i=0
1388		for each sf in bf.SubFolders
1389			if i < UBound(subfolders) then
1390				if InStr(sf.Name,subfolderpattern)>0 then
1391					subfolders(i) = sf.Name
1392					i=i+1
1393				end if
1394			end if
1395		next
1396		Sort(subfolders)
1397		Reverse(subfolders)
1398
1399		' return the first matching subfolder (after the sort)
1400		if UBound(subfolders)>-1 then
1401			apiprefix=basefolder & subfolders(0)
1402			disableapi=false
1403		end if
1404
1405	end if
1406End Sub
1407
1408
1409Sub findVersion(basefolder, fileprefix, filesuffix, apiversion)
1410
1411	on error resume next
1412	Err.Number=0
1413
1414	apiversion=""
1415
1416	' open the base folder
1417	Set bf=fso.GetFolder(basefolder)
1418	if Err.Number<>0 then
1419		return
1420	end if
1421
1422	baselen=Len(basefolder)+1
1423	prefixlen=Len(fileprefix)
1424	suffixlen=Len(filesuffix)
1425
1426	' run through its files
1427	for each fname in bf.Files
1428
1429		fname=Mid(fname,baselen+1)
1430
1431		' ignore the file if it's too short
1432		if Len(fname)>prefixlen+suffixlen then
1433
1434			' get the beginning and end of the file
1435			fprefix=Left(fname,prefixlen)
1436			fsuffix=Right(fname,suffixlen)
1437
1438			if fprefix=fileprefix and fsuffix=filesuffix then
1439				apiversion=Mid(fname,prefixlen+1,_
1440						Len(fname)-prefixlen-suffixlen)
1441				exit for
1442			end if
1443		end if
1444	next
1445
1446	' if necessary, run through its folders
1447	if apiversion="" then
1448		for each sfname in bf.SubFolders
1449
1450			sfname=Mid(sfname,baselen+1)
1451
1452			' ignore the folder if it's too short
1453			if Len(sfname)>prefixlen+suffixlen then
1454
1455				' get the beginning and end of the folder
1456				sfprefix=Left(sfname,prefixlen)
1457				sfsuffix=Right(sfname,suffixlen)
1458
1459				if sfprefix=fileprefix and _
1460					sfsuffix=filesuffix then
1461					apiversion=Mid(sfname,prefixlen+1,_
1462						Len(sfname)-prefixlen-suffixlen)
1463					exit for
1464				end if
1465			end if
1466		next
1467	end if
1468
1469End Sub
1470
1471Function Sort(arr)
1472	for i=UBound(arr)-1 to 0 step -1
1473		for j=0 to i
1474			if arr(j)>arr(j+1) then
1475				temp=arr(j+1)
1476				arr(j+1)=arr(j)
1477				arr(j)=temp
1478			end if
1479		next
1480	next
1481	Sort=arr
1482End Function
1483
1484Function Reverse(arr)
1485	for i=0 to UBound(arr)/2
1486		temp=arr(i)
1487		arr(i)=arr(UBound(arr)-i)
1488		arr(UBound(arr)-i)=temp
1489	next
1490	Reverse=arr
1491End Function
1492