OpenVMS Source Code Demos
mysql_demo_alt
$!=======================================================================================
$! title : mysql_demo_alt.com (build script for my "mysql" demo programs)
$! author : Neil Rieck ( https://neilrieck.net MAILTO:[email protected] )
$! : Waterloo, Ontario, Canada.
$! platform : OpenVMS 8.4 for Itanium or Alpha
$! notes : 1) MariaDB is an alternate fork of MySQL
$! 2) your OpenVMS system will have one of three TCPIP stacks: MultiNet,
$! TCPIP Services, and TCPware which place different include files in
$! sys$library. The cleanest compile comes from MultiNet
$! 3) Mark's object libraries require that you link against ssl and crypto
$! with mixed-case names (libraries from HP/HPE have upcased names)
$! 4) always reference zlib (or libz) before the ssl and crypto libraries
$! 5) my c-only demo programs are numbered 01-09
$! 6) my BASIC-c hybrids are numbered 11-19
$! when who what
$! 20140120 NSR a build script for my MariaDB-5.5-25 demo programs (Alpha only)
$! 20170419 NSR added additional support for Itanium
$! 20171031 NSR added support for MariaDB-5.5-57 and MariaDB-5.5-58
$! 20171103 NSR added support for SSL$LIBSSL_SHR32.EXE and SSL1$LIBSSL_SHR32.EXE (will never work)
$! 20171123 NSR this script can now build all my demos
$! 20180412 NSR this script is now much smaller
$! 20180416 NSR now include a wrapper for small foot-print executables (a deleted bad idea)
$! 20180424 NSR added support for SSL_LIBSSL_SHR32.EXE (my mixed-case build of OpenSSL-1.0.2a)
$!================================================================================================
$ say :== write sys$output !
$ ask :== inquire/nopunct !
$ on error then goto fini !
$ set on !
$ say "=========================================================="
$ say "-i-script:",f$environment("procedure")
$ say " (a build script for MySQL/MariaDB client demos on OpenVMS)"
$ if P1 .eqs. ""
$ then
$ say "-w-oops, no version number was detected"
$ say "-i-usage: @mysql_demo xx (where xx = version)"
$ say "-i-generating a directory listing""
$ say "=========================================================="
$ dir/col=1/width=file=52/nohead/notrail/date mysql_demo*.c;,mysql_demo*.bas;
$ savedstatus = $STATUS
$ if ((f$integer(savedstatus).and.7).ne.1)
$ then
$ say "-w-oops, none found"
$ exit
$ endif
$ say ""
$ ask junk "build which project number? (eg. 01) "
$ if (junk .eqs. "") then goto fini
$ p1 = junk
$ endif
$ if f$length(p1).eq.1 then p1 = "0"+p1 !
$ if (p1 .ges. "01") .and. (p1 .les. "09") !
$ then !
$ hybrid = 0 ! not a hybrid
$ pgm_c = "mysql_demo"+p1 ! c-program
$ app = "mysql_demo"+p1 !
$ goto got_name !
$ endif !
$ if (p1 .ge. "10") .and. (p1 .le. "19") !
$ then !
$ hybrid = 1 ! hybrid program
$ pgm_b = "mysql_demo"+p1 ! BASIC program
$ app = "mysql_demo"+p1 !
$ pgm_c = "mysql_api_demo"+p1 ! c-based API
$ goto got_name !
$ endif !
$ say "-e-processing cannot continue with p1 = (",p1,")" !
$ exit !
$!
$got_name:
$ arch = f$getsyi("ARCH_NAME") !
$ path = f$trnlnm("mysql055_root") ! eg. KAWC90$DKB1:[MYSQL055.]
$ path = path - "]" !
$ path = path + "lib."'arch'"]" ! eg. KAWC09$DKB1:[MYSQL055.lib.ia64]
$!
$ if (hybrid.eq.1)
$ then
$ say "-i-BASIC compiling: ",pgm_b,".bas"
$ wait 0:0:01
$ basic 'pgm_b'.bas
$ wait 0:0:01
$ endif
$ say "-i-C compiling: ",pgm_c,".c"
$ wait 0:0:01
$ cc 'pgm_c'.c -
/pointer=32 -
/float=ieee -
/ieee=denorm -
/name=(as_is,shorten) -
/prefix_library_entries=all_entries -
/include=mysql055_root:[include.mysql]
$ set noon
$!===============================================================
$! now generate a build script to cobble everything together
$!===============================================================
$ build_script = app +".bld_scratch"
$ if f$search(build_script.nes."") then delete/nolog 'build_script';*
$ open/write my_bld 'build_script'
$ write my_bld "$link -"
$ if (hybrid.eq.1)
$ then
$ write my_bld pgm_b, ".obj, ", pgm_c,".obj -"
$ else
$ write my_bld pgm_c,".obj -"
$ endif
$ write my_bld " /MAP -"
$ write my_bld " /NOinformationals -"
$ write my_bld " , sys$input/opt"
$ write my_bld " ",path,"libclientlib.olb/library"
$!~ write my_bld " ",path,"libdbug.olb/library" ! debug
$ write my_bld " ",path,"libmysys.olb/library"
$!~ write my_bld " ",path,"libsql.olb/library" ! not required
$ write my_bld " ",path,"libstrings.olb/library"
$ write my_bld " ",path,"libvio.olb/library"
$!
$ say "-i-ALERT: SSL will not work with SMALL"
$ ask junk "footprint: large,medium,small? (L/M/S,default=L) "
$ if ((junk.eqs."L").or.(junk.eqs.""))
$ then
$ write my_bld " ",path,"libz.olb/library"
$! these two files are libraries by Mark Berryman
$! they have mixed-case names
$ write my_bld " ",path,"ssl_libssl32.olb/library"
$ write my_bld " ",path,"ssl_libcrypto32.olb/library"
$ goto finish_build
$ endif
$ if (junk.eqs."M")
$ then
$ write my_bld " ",path,"libz.olb/library"
$! these two files are custom libraries I built from OpenSSL sources
$! they have mixed-case names
$ write my_bld " ","sys$share:SSL_LIBSSL_SHR32.EXE/share"
$ write my_bld " ","sys$share:SSL_LIBCRYPTO_SHR32.EXE/share"
$ goto finish_build
$ endif
$!
$! find the zlib (shares will generate a smaller footprint)
$!
$ zlib = "" ! init
$ junk = f$search("sys$share:libzshr.exe") ! from a third-party source
$ if (junk.nes."") then zlib = junk + "/share"
$ junk = f$search("sys$share:gnv$libzshr32.exe") ! from vmsports at sourceforge.net
$ if (junk.nes."") then zlib = junk + "/share"
$ junk = f$search(path +"libz.olb") ! provided with mariadb-5.5-57
$ if (junk.nes."") then zlib = junk + "/library"
$ if (zlib.nes."")
$ then
$ write my_bld " ",zlib
$ else
$ say "-e-oops. ZLIB could not be found"
$ wait 0:0:02
$ endif
$!
$! find the ssl libraries (shares will generate a smaller footprint)
$!
$ slib = "" ! init
$!~~~ junk = f$search(path +"libyassl.olb") ! provided with mariadb-5.5-25
$!~~~ if (junk.nes."") then slib = junk + "/library"
$ junk = f$search(path +"ssl_libssl32.olb") ! provided with mariadb-5.5-57
$ if (junk.nes."") then slib = junk + "/library"
$ if (1.eq.0) ! permanently disabled
$ then
$ junk = f$search("sys$share:ssl$libssl_shr32.exe") ! upcase names
$ if (junk.nes."") then slib = junk + "/share"
$ junk = f$search("sys$share:ssl1$libssl_shr32.exe") ! upcase names
$ if (junk.nes."") then slib = junk + "/share"
$ endif
$ junk = f$search("sys$share:ssl_libssl_shr32.exe") ! mixed-case names
$ if (junk.nes."") then slib = junk + "/share"
$ if (slib.nes."")
$ then
$ write my_bld " ",slib
$ else
$ say "-e-oops. An SSL library could not be found"
$ wait 0:0:02
$ endif
$!
$! find the crypro libraries (shares will generate a smaller footprint)
$!
$ clib = "" ! init
$ junk = f$search(path +"ssl_libcrypto32.olb") ! provided with mariadb-5.5-57
$ if (junk.nes."") then clib = junk + "/library"
$ if (1.eq.0) ! permanently disabled
$ then
$ junk = f$search("sys$share:ssl$libcrypto_shr32.exe") ! upcase names
$ if (junk.nes."") then clib = junk + "/share"
$ junk = f$search("sys$share:ssl1$libcrypto_shr32.exe") ! upcase names
$ if (junk.nes."") then clib = junk + "/share"
$ endif
$ junk = f$search("sys$share:ssl_libcrypto_shr32.exe") ! mixed-case names
$ if (junk.nes."") then clib = junk + "/share"
$ if (clib.nes."")
$ then
$ write my_bld " ",clib
$ else
$ say "-e-oops. A CRYPTO library could not be found"
$ wait 0:0:02
$ endif
$!
$! build the wrapper
$!
$ if (1.eq.0) ! a bad idea
$ then
$ wlib = ""
$ cc/names=as_is MYSQL_SHRLIB_WRAPPER.c
$ junk = f$search("MYSQL_SHRLIB_WRAPPER.obj")
$ if (junk.nes."") then wlib = junk
$ if (wlib.nes."")
$ then
$ write my_bld " ",wlib
$ else
$ say "-e-oops. A library wrapper could not be found"
$ wait 0:0:02
$ endif
$ endif
$finish_build:
$ close my_bld
$ say "-i-linking"
$ @'build_script'
$ savedstatus = $status
$ say "-i-linking without MMK is sometimes noisy so here is a summary:"
$ say "-i-exit status: ",savedstatus
$ if ((savedstatus .and. 1).eq.0) then say "-i-there were LINKER warnings"
$ if ((savedstatus .and. 2).eq.2) then say "-i-there were LINKER errors"
$ if ((savedstatus .and. 4).eq.4) then say "-i-there were LINKER fatals"
$ if ((savedstatus .and. 6).eq.0)
$ then
$ say "-i-there were NO LINKER errors"
$ say "-i-you can ignore LINKER warnings if they pertain to SSL (and you are not using SSL)"
$ say "-i-look what I just built:"
$ say "==============================================================="
$ dir/col=1/date/width=file=50/nohead/notrail/since="-0 0:0:10" 'app'*.exe;/siz
$ say "==============================================================="
$ endif
$
$fini:
$ set noon
$ say "-i-exiting script"
$ exit
Back to
Home
Neil Rieck
Waterloo, Ontario, Canada.