123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468 |
- $ v0 = 0
- $ v = f$verify(v0)
- $! $LynxId: build.com,v 1.19 2011/05/23 23:49:53 tom Exp $
- $! BUILD.COM
- $!
- $! Command file to build LYNX.EXE on VMS systems.
- $! Also invokes build of the WWWLibrary if its
- $! object library does not already exist.
- $!
- $!
- $! 11-Jun-2010 Ch. Gartmann
- $! add support for "Multinet UCX emulation"
- $! 01-Jul-2007 T.Dickey
- $! add support for "TCPIP" (TCPIP Services)
- $! 04-Nov-2004 T.Dickey
- $! workarounds to build with IA64 platform.
- $! 23-Oct-2004 T.Dickey
- $! cleanup, remove duplication, etc.
- $! 08-Oct-1997 F.Macrides macrides@sci.wfeb.edu
- $! Added comments and minor tweaks for convenient addition of
- $! compiler definitions and compiler and linker options.
- $! 28-Jun-1997 F.Macrides macrides@sci.wfeb.edu
- $! Added chartrans support.
- $! 29-Feb-1996 F.Macrides macrides@sci.wfeb.edu
- $! Added LYMap to the compilation and link lists.
- $! 26-Jul-1995 F.Macrides macrides@sci.wfeb.edu
- $! Reorganized the option files into ones for the transport and
- $! ones for the compiler, and adding support for GNUC.
- $! 14-Jun-1995 F.Macrides macrides@sci.wfeb.edu
- $! Added LYList.
- $! 03-May-1995 F.Macrides macrides@sci.wfeb.edu
- $! Include /nomember for compilations with DECC. It's not the
- $! default on AXP and the code assumes byte alignment.
- $! 23-Mar-1995 F.Macrides macrides@sci.wfeb.edu
- $! Replaced references to v2.3.8 or v2.3.9 with v2.3-FM to avoid
- $! any confusion with official releases at UKans.
- $! 16-Mar-1995 F.Macrides macrides@sci.wfeb.edu
- $! Updated to permit submission to BATCH.
- $! 17-Feb-1995 F.Macrides macriees@sci.wfeb.edu
- $! Updated for v2.3-FM
- $! 07-Dec-1994 F.Macrides macrides@sci.wfeb.edu
- $! Updated for DECC/VAX, VAXC/VAX and DECC/AXP
- $! 03-OCT-1994 A.Harper A.Harper@kcl.ac.uk
- $! Mods to support SOCKETSHR/NETLIB and add a /DEBUG/NOOPT option
- $! 02-Jun-1994 F.Macrides macrides@sci.wfeb.edu
- $! Mods to support TCPWare (To use non-blocking connects, you need
- $! the DRIVERS_V405B.INC patch from FTP.PROCESS.COM for TCPware for
- $! OpenVMS Version 4.0-5, or a higher version of TCPWare, which will
- $! have that bug in the TCPDRIVER fixed. Otherwise, add NO_IOCTL to
- $! the $ cc := cc/define=(...) list in [.WWW.Library.VMS]libmake.com).
- $! 20-May-1994 Andy Harper A.Harper@bay.cc.kcl.ac.uk
- $! Mods to support CMU TCP/IP
- $! 13-Dec-1993 F.Macrides macrides@sci.wfeb.edu
- $! Mods for conditional compilations with VAXC versus DECC
- $! 10-Dec-1993 F.Macrides macrides@sci.wfeb.edu
- $! Initial version, for Lynx v2.1
- $!
- $ ON CONTROL_Y THEN GOTO CLEANUP
- $ ON ERROR THEN GOTO CLEANUP
- $ proc = f$environment("PROCEDURE")
- $ where = f$parse(proc,,,"DEVICE") + f$parse(proc,,,"DIRECTORY")
- $ set default 'where'
- $ write sys$output "Default directory:"
- $ show default
- $ write sys$output ""
- $!
- $! Compiler definitions can be added here as a comma separated
- $! list with a lead comma, e.g., ",HAVE_FOO_H,DO_BLAH". The
- $! definitions will apply only to the LYfoo.c modules. Ones
- $! for the libwww-FM modules can be added equivalently in
- $! [.WWW.Library.vms]libmake.com. - FM
- $!
- $ extra_defs = ""
- $!
- $! Include-paths can be added here as a comma separated
- $! list with a lead comma, e.g., ",foo".
- $!
- $ extra_incs = ""
- $!
- $! Library definitions can be added here as a comma separated
- $! list with a lead comma, e.g., ",foo/LIB".
- $!
- $ extra_libs = ""
- $!
- $! If no TCP/IP agent is specified (as the first argument),
- $! prompt for a number from the list. Note that the agent
- $! must be the first argument if the debugger mode is to be
- $! set via a second argument (see below). - FM
- $!
- $ agent = 0
- $ IF P1 .EQS. ""
- $ THEN
- $ If f$mode() .eqs. "BATCH"
- $ Then
- $ write sys$output "TCP/IP agent not specified!"
- $ write sys$output "Defaulting to MULTINET"
- $ agent = 1
- $ Else
- $ write sys$output "Acceptable TCP/IP agents are"
- $ write sys$output " [1] MULTINET (default)"
- $ write sys$output " [2] UCX"
- $ write sys$output " [3] WIN_TCP"
- $ write sys$output " [4] CMU_TCP"
- $ write sys$output " [5] SOCKETSHR_TCP"
- $ write sys$output " [6] TCPWARE"
- $ write sys$output " [7] DECNET"
- $ write sys$output " [8] TCPIP"
- $ write sys$output " [9] Multinet with UCX emulation"
- $ read sys$command/prompt="Agent [1,2,3,4,5,6,7,8,9] (RETURN = [1]) " agent
- $ EndIf
- $ ENDIF
- $ option = ""
- $ if agent .eq. 1 .or. agent .eqs. "" .or. p1 .eqs. "" .or. p1 .eqs. "MULTINET" then -
- option = "MULTINET"
- $ if agent .eq. 2 .or. p1 .eqs. "UCX" then option = "UCX"
- $ if agent .eq. 3 .or. p1 .eqs. "WIN_TCP" then option = "WIN_TCP"
- $ if agent .eq. 4 .or. p1 .eqs. "CMU_TCP" then option = "CMU_TCP"
- $ if agent .eq. 5 .or. p1 .eqs. "SOCKETSHR_TCP" then option = "SOCKETSHR_TCP"
- $ if agent .eq. 6 .or. p1 .eqs. "TCPWARE" then option = "TCPWARE"
- $ if agent .eq. 7 .or. p1 .eqs. "DECNET" then option = "DECNET"
- $ if agent .eq. 8 .or. p1 .eqs. "TCPIP" then option = "TCPIP"
- $ if agent .eq. 9 .or. p1 .eqs. "MULTINETUCX"
- $ then
- $ option = "UCX"
- $ mucx = 1
- $ extra_defs = extra_defs + ",MUCX"
- $ ELSE
- $ mucx = 0
- $ ENDIF
- $!
- $ if option .eqs. ""
- $ then
- $ write sys$output "TCP/IP agent could not be determined"
- $ exit 18
- $ endif
- $!
- $ if option .eqs. "TCPWARE"
- $ then
- $ write sys$output "Building Lynx for TCPWARE with UCX emulation..."
- $ extra_defs = extra_defs + ",UCX"
- $ endif
- $!
- $ optfile = "''option'"
- $!
- $! Compiler and linker options can be specified here. If
- $! there was a second argument (with any value), then debugger
- $! mode with no optimization will be specified as well. The
- $! compiler options will apply only to the LYfoo.c and UCfoo.c
- $! modules. Ones for the libwww-FM modules can be specified
- $! in [.WWW.Library.vms]libmake.com. - FM
- $!
- $ cc_opts = ""
- $ link_opts = ""
- $!
- $! The second parameter is a comma-separated list of the optional
- $! libraries:
- $! bzlib, slang, ssl, zlib
- $! Because these are normally not installed in a standard place,
- $! you must define their locations (see below for the symbols ending
- $! with "_INC" or "_LIB").
- $!
- $ if P2 .nes. ""
- $ then
- $ count_parm = 0
- $ parse_p2:
- $ value_parm = f$element('count_parm, ",", "''p2'")
- $ if value_parm .nes. ","
- $ then
- $ if value_parm .eqs. "BZLIB"
- $ then
- $ write sys$output "** adding BZlib to build."
- $ extra_defs = extra_defs + ",USE_BZLIB"
- $ extra_incs = extra_incs + "," + BZLIB_INC
- $ extra_libs = extra_libs + "," + BZLIB_LIB + "libbz2/LIB"
- $ endif
- $ if value_parm .eqs. "SLANG"
- $ then
- $ write sys$output "** adding SLang to build."
- $ extra_defs = extra_defs + ",USE_SLANG"
- $ extra_incs = extra_incs + "," + SLANG_INC
- $ extra_libs = extra_libs + "," + SLANG_LIB + "slang.olb/lib"
- $ endif
- $ if value_parm .eqs. "SSL"
- $ then
- $ write sys$output "** adding SSL to build."
- $ IF F$TYPE( ssl_lib ) .EQS. "" THEN ssl_lib = F$TRNLNM("SSLLIB")
- $ IF F$TYPE( ssl_inc ) .EQS. "" THEN ssl_inc = F$TRNLNM("SSLINCLUDE")
- $ extra_defs = extra_defs + ",USE_SSL,USE_OPENSSL_INCL"
- $ extra_libs = extra_libs + "," + SSL_LIB + "libssl/LIB," + SSL_LIB + "libcrypto/LIB"
- $!
- $! The "#include <openssl/ssl.h>" requires a logical variable "openssl".
- $!
- $ define/nolog openssl 'SSL_INC
- $ endif
- $ if value_parm .eqs. "ZLIB"
- $ then
- $ write sys$output "** adding Zlib to build."
- $ extra_defs = extra_defs + ",USE_ZLIB"
- $ extra_incs = extra_incs + "," + ZLIB_INC
- $ extra_libs = extra_libs + "," + ZLIB_LIB + "libz/LIB"
- $ endif
- $ count_parm = count_parm + 1
- $ goto parse_p2
- $ endif
- $ endif
- $!
- $! The third parameter is nonempty to make a debug build
- $!
- $ if P3 .nes. ""
- $ then
- $ debug_arg = "DEBUG"
- $ cc_opts = cc_opts + "/DEBUG/NOOPT"
- $ link_opts = link_opts + "/DEBUG"
- $ else
- $ debug_arg = ""
- $ endif
- $!
- $ IF f$search("[.WWW.Library.Implementation]WWWLib_''option'.olb") .nes. ""
- $ THEN
- $ write sys$output " WWWLib_''option'.olb already exists."
- $ If f$mode() .eqs. "BATCH"
- $ Then
- $ write sys$output " Updating WWWLib_''option'.olb"
- $ Else
- $ read sys$command/prompt=" Update it [default Y]? " reply
- $ if reply .nes. "" .and. -
- f$extract(0,1,f$edit(reply, "TRIM, UPCASE")) .nes. "Y" then -
- $ goto Compile_CHRTRANS
- $ EndIf
- $ ENDIF
- $ v1 = f$verify(1)
- $!
- $! Build the WWWLibrary
- $!
- $ set default [.WWW.Library.VMS]
- $ v1 = f$verify(v0)
- $ @libmake "''option'" "''P2'" "''debug_arg'"
- $ v1 = f$verify(1)
- $ set default [-.-.-]
- $ v1 = f$verify(v0)
- $ ON CONTROL_Y THEN GOTO CLEANUP
- $ ON ERROR THEN GOTO CLEANUP
- $!
- $Compile_CHRTRANS:
- $ IF f$search("[.src.chrtrans]makeuctb.exe") .nes. ""
- $ THEN
- $ write sys$output " [.src.chrtrans]makeuctb.exe already exists."
- $ If f$mode() .eqs. "BATCH"
- $ Then
- $ write sys$output " Updating makeuctb.exe and chrtrans header files."
- $ Else
- $ read sys$command -
- /prompt=" Update it and chrtrans header files [default Y]? " reply
- $ if reply .nes. "" .and. -
- f$extract(0,1,f$edit(reply, "TRIM, UPCASE")) .nes. "Y" then -
- $ goto Compile_SRC
- $ EndIf
- $ ENDIF
- $!
- $ v1 = f$verify(1)
- $!
- $! Build the chrtrans modules.
- $!
- $ set default [.src.chrtrans]
- $ v1 = 'f$verify(v0)
- $ @build-chrtrans
- $ v1 = f$verify(1)
- $ set default [-.-]
- $ v1 = f$verify(v0)
- $ ON CONTROL_Y THEN GOTO CLEANUP
- $ ON ERROR THEN GOTO CLEANUP
- $!
- $Compile_SRC:
- $ v1 = f$verify(1)
- $!
- $! Compile the Lynx [.SRC] modules
- $!
- $ set default [.SRC]
- $ v1 = f$verify(v0)
- $ IF f$getsyi("ARCH_NAME") .eqs. "Alpha" .or. -
- f$getsyi("ARCH_NAME") .eqs. "IA64" .or. -
- f$trnlnm("VAXCMSG") .eqs. "DECC$MSG" .or. -
- f$trnlnm("DECC$CC_DEFAULT") .eqs. "/DECC" .or. -
- f$trnlnm("DECC$CC_DEFAULT") .eqs. "/VAXC"
- $ THEN
- $ compiler := "DECC"
- $!
- $ if option .eqs. "UCX"
- $ then
- $ optfile = "UCXSHR"
- $ IF mucx THEN optfile = "MULTINET_UCX"
- $ ENDIF
- $ if option .eqs. "TCPIP" then optfile = "TCPIPSHR"
- $ if option .eqs. "TCPWARE" then optfile = "TCPWARESHR"
- $!
- $ if option .eqs. "SOCKETSHR_TCP" then extra_defs = extra_defs + ",_DECC_V4_SOURCE"
- $ if option .eqs. "TCPIP" then extra_defs = extra_defs + ",TCPIP_SERVICES"
- $ if option .eqs. "MULTINET" then -
- extra_defs = extra_defs + ",_DECC_V4_SOURCE,__SOCKET_TYPEDEFS"
- $!
- $ if option .eqs. "TCPIP"
- $ then
- $ if f$trnlnm("TCPIP$IPC_SHR") .eqs. "" then define TCPIP$IPC_SHR SYS$LIBRARY:TCPIP$IPC_SHR
- $ endif
- $!
- $ v1 = f$verify(1)
- $! DECC:
- $ cc := cc/decc/prefix=all/nomember'cc_opts' -
- /DEFINE=(ACCESS_AUTH,'option''extra_defs',__VMS_CURSES)-
- /INCLUDE=([],[-],[-.WWW.Library.Implementation],[.chrtrans]'extra_incs')
- $ v1 = f$verify(v0)
- $ ELSE
- $ IF option .eqs. "UCX"
- $ THEN
- $ optfile = "UCXSHR"
- $ IF mucx THEN optfile = "MULTINET_UCX"
- $ ENDIF
- $ if option .eqs. "TCPIP" then optfile = "TCPIPOLB"
- $ if option .eqs. "TCPWARE" then optfile = "TCPWAREOLB"
- $ IF f$search("gnu_cc:[000000]gcclib.olb") .nes. ""
- $ THEN
- $ compiler := "GNUC"
- $ v1 = f$verify(1)
- $! GNUC:
- $ cc := gcc'cc_opts' -
- /DEFINE=(ACCESS_AUTH,'option''extra_defs')-
- /INCLUDE=([],[-],[-.WWW.Library.Implementation],[.chrtrans]'extra_incs')
- $ v1 = f$verify(v0)
- $ ELSE
- $ compiler := "VAXC"
- $ v1 = f$verify(1)
- $! VAXC:
- $ cc := cc'cc_opts' -
- /DEFINE=(ACCESS_AUTH,'option''extra_defs')-
- /INCLUDE=([],[-],[-.WWW.Library.Implementation],[.chrtrans]'extra_incs')
- $ v1 = f$verify(v0)
- $ ENDIF
- $ ENDIF
- $ v1 = f$verify(1)
- $!
- $ cc DefaultStyle
- $ cc GridText
- $ cc HTAlert
- $ cc HTFWriter
- $ cc HTInit
- $ cc HTML
- $ cc LYBookmark
- $ cc LYCgi
- $ cc LYCharSets
- $ cc LYCharUtils
- $ cc LYClean
- $ cc LYCookie
- $ cc/nooptimize LYCurses
- $ cc LYDownload
- $ cc LYEdit
- $ cc LYEditmap
- $ cc LYexit
- $ cc LYForms
- $ cc LYGetFile
- $ cc LYHistory
- $ cc LYJump
- $ cc LYKeymap
- $ cc LYLeaks
- $ cc LYList
- $ cc LYMail
- $ cc LYMain
- $ cc LYMainLoop
- $ cc LYMap
- $ cc LYMktime
- $ cc LYNews
- $ cc LYOptions
- $ cc LYPrint
- $ cc LYrcFile
- $ cc LYReadCFG
- $ cc LYSearch
- $ cc LYSession
- $ cc LYShowInfo
- $ cc LYStrings
- $ cc LYTraversal
- $ cc LYUpload
- $ cc LYUtils
- $ cc PARSDATE
- $ cc TRSTable
- $ cc UCAuto
- $ cc UCAux
- $ cc UCdomap
- $!
- $! Link the objects and libaries.
- $!
- $ IF f$getsyi("ARCH_NAME") .eqs. "IA64"
- $ THEN
- $ optslibs="''extra_libs'"
- $ ELSE
- $ optslibs=", sys$disk:[]''optfile'.opt/opt, sys$disk:[]''compiler'.opt/opt ''extra_libs'"
- $ ENDIF
- $!
- $ link/exe=lynx.exe/map=lynx 'link_opts' -
- DefaultStyle.obj, -
- GridText.obj, -
- HTAlert.obj, -
- HTFWriter.obj, -
- HTInit.obj, -
- HTML.obj, -
- LYBookmark.obj, -
- LYCgi.obj, -
- LYCharSets.obj, -
- LYCharUtils.obj, -
- LYClean.obj, -
- LYCookie.obj, -
- LYCurses.obj, -
- LYDownload.obj, -
- LYEdit.obj, -
- LYEditmap.obj, -
- LYexit.obj, -
- LYForms.obj, -
- LYGetFile.obj, -
- LYHistory.obj, -
- LYJump.obj, -
- LYKeymap.obj, -
- LYLeaks.obj, -
- LYList.obj, -
- LYMail.obj, -
- LYMain.obj, -
- LYMainLoop.obj, -
- LYMap.obj, -
- LYMktime.obj, -
- LYNews.obj, -
- LYOptions.obj, -
- LYPrint.obj, -
- LYrcFile.obj, -
- LYReadCFG.obj, -
- LYSearch.obj, -
- LYSession.obj, -
- LYShowInfo.obj, -
- LYStrings.obj, -
- LYTraversal.obj, -
- LYUpload.obj, -
- LYUtils.obj, -
- Parsdate.obj, -
- TRSTable.obj, -
- UCAuto.obj, -
- UCAux.obj, -
- UCdomap.obj, -
- [-.WWW.Library.Implementation]WWWLib_'option'.olb/library 'optslibs
- $!
- $! Copy the executable to the top directory and restore the default.
- $!
- $ copy lynx.exe [-]
- $ set def [-]
- $!
- $ v1 = f$verify(v0)
- $!
- $! Issue message on how to include LYNX.HLP in the system HELP library
- $!
- $ write sys$output ""
- $ write sys$output " To install or update lynx.hlp in the system HELP library,"
- $ write sys$output " use:"
- $ write sys$output " library/replace sys$help:helplib.hlb lynx.hlp"
- $ write sys$output ""
- $!
- $ CLEANUP:
- $ v1 = f$verify(v0)
- $ set default 'where'
- $ write sys$output "Default directory:"
- $ show default
- $ v1 = f$verify(v)
- $ exit
|