Annotation of embedaddon/curl/packages/vms/setup_gnv_curl_build.com, revision 1.1
1.1 ! misho 1: $! File: setup_gnv_curl_build.com
! 2: $!
! 3: $! $Id$
! 4: $!
! 5: $! Set up build environment for building Curl under GNV on VMS.
! 6: $!
! 7: $! GNV needs some files moved into the other directories to help with
! 8: $! the configure script and the build.
! 9: $!
! 10: $! Copyright 2009 - 2020, John Malmberg
! 11: $!
! 12: $! Permission to use, copy, modify, and/or distribute this software for any
! 13: $! purpose with or without fee is hereby granted, provided that the above
! 14: $! copyright notice and this permission notice appear in all copies.
! 15: $!
! 16: $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 17: $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 18: $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 19: $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 20: $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 21: $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 22: $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 23: $!
! 24: $! 30-May-2009 J. Malmberg
! 25: $!
! 26: $!=======================================================================
! 27: $!
! 28: $! Save this so we can get back.
! 29: $ default_dir = f$environment("default")
! 30: $!
! 31: $! Move to where the Configure script is.
! 32: $ set def [--]
! 33: $!
! 34: $! Get the path to where the Configure script is.
! 35: $ base_dir = f$environment("default")
! 36: $!
! 37: $! Allow arguments to be grouped together with comma or separated by spaces
! 38: $! Do no know if we will need more than 8.
! 39: $ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
! 40: $ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
! 41: $!
! 42: $! Provide lower case version to simplify parsing.
! 43: $ args_lower = f$edit(args, "LOWERCASE,COLLAPSE")
! 44: $!
! 45: $ args_len = f$length(args)
! 46: $ args_lower_len = f$length(args_lower)
! 47: $!
! 48: $ tests = 0
! 49: $ if f$locate(",test", args_lower) .lt. args_lower_len
! 50: $ then
! 51: $ tests = 1
! 52: $ endif
! 53: $!
! 54: $ examples = 0
! 55: $ if f$locate(",exam", args_lower) .lt. args_lower_len
! 56: $ then
! 57: $ examples = 1
! 58: $ endif
! 59: $!
! 60: $! We want detailed build logs.
! 61: $ clist = "/list/show=(expan,includ)"
! 62: $!
! 63: $! We want full symbol names in exact case. Need a common
! 64: $! repository for all directories.
! 65: $ cnames = "/names=(shortened,as_is)/repository=''base_dir'"
! 66: $!
! 67: $! Set the compiler options for GNV CC wrapper to inherit.
! 68: $ cc :== cc'clist''cnames'/nested_include_directory=none
! 69: $ cxx :== cxx'clist''cnames'/nested_include_directory=none
! 70: $ pointer_size = "32"
! 71: $! Note 64 bit pointers requires all libraries to either have
! 72: $! 64 bit pointers or have #pragma directives.
! 73: $! Currently building curl on VMS with 64 bit pointers does not work.
! 74: $!
! 75: $! A logical name to make it easier to find some of the hacks.
! 76: $ define/job gnv_hacks 'base_dir'
! 77: $!
! 78: $! A logical name to find the [.packages.vms] directory where we started.
! 79: $ define/job gnv_packages_vms 'default_dir'
! 80: $!
! 81: $! Kerberos headers:
! 82: $ if f$trnlnm("gssapi") .eqs. ""
! 83: $ then
! 84: $ if f$search("sys$sysroot:[kerberos]include.dir") .nes. ""
! 85: $ then
! 86: $ define/job gssapi sys$sysroot:[kerberos.include]
! 87: $ endif
! 88: $ endif
! 89: $!
! 90: $! OpenSSL headers
! 91: $ if f$trnlnm("openssl") .eqs. ""
! 92: $ then
! 93: $ if f$trnlnm("ssl$include") .nes. ""
! 94: $ then
! 95: $ define/job openssl ssl$include:
! 96: $ endif
! 97: $ endif
! 98: $!
! 99: $! C compiler include path.
! 100: $ define/job decc$system_include prj_root:[.include.curl],-
! 101: [-.packages.vms],-
! 102: ssl$include:,gnv$gnu:[usr.include],-
! 103: gnv$gnu:[usr.include.libz],gnv$gnu:[include],-
! 104: gnv$zlib_include:,-
! 105: sys$sysroot:[kerberos.include]
! 106: $!
! 107: $! Set up a include list for the compiler to find all the header files
! 108: $! that they need.
! 109: $!
! 110: $ define/job decc$user_include src_root:[.include.curl]
! 111: $ define ssl_lib sys$library:
! 112: $!
! 113: $! Calculate what is needed in the option files
! 114: $ libzshr_line = ""
! 115: $ try_shr = "gnv$libzshr''pointer_size'"
! 116: $ if f$search(try_shr) .nes. "" then libzshr_line = "''try_shr'/share"
! 117: $ if (libzshr_line .eqs. "")
! 118: $ then
! 119: $ try_shr = "sys$share:" + try_shr
! 120: $ if f$search("''try_shr'.exe") .nes. ""
! 121: $ then
! 122: $ libzshr_line = "''try_shr'/share"
! 123: $ endif
! 124: $ endif
! 125: $!
! 126: $! Kerberos
! 127: $ gssrtlshr_line = ""
! 128: $ try_shr = "sys$share:gss$rtl"
! 129: $ if f$search("''try_shr'.exe") .nes. ""
! 130: $ then
! 131: $ gssrtlshr_line = "''try_shr'/share"
! 132: $ endif
! 133: $!
! 134: $! HP OpenSSL
! 135: $ libcryptoshr_line = ""
! 136: $ try_shr = "sys$share:ssl$libcrypto_shr''pointer_size'"
! 137: $ if f$search("''try_shr'.exe") .nes. ""
! 138: $ then
! 139: $ libcryptoshr_line = "''try_shr'/share"
! 140: $ endif
! 141: $!
! 142: $ libsslshr_line = ""
! 143: $ try_shr = "sys$share:ssl$libssl_shr''pointer_size'"
! 144: $ if f$search("''try_shr'.exe") .nes. ""
! 145: $ then
! 146: $ libsslshr_line = "''try_shr'/share"
! 147: $ endif
! 148: $!
! 149: $!
! 150: $! Copy over the gnv$conftest* files to base directory.
! 151: $!-----------------------------------------------------
! 152: $ copy 'default_dir'gnv_conftest.c_first 'base_dir'gnv$conftest.c_first
! 153: $ create 'base_dir'gnv$conftest.opt
! 154: $ open/append opt 'base_dir'gnv$conftest.opt
! 155: $ if libzshr_line .nes. "" then write opt libzshr_line
! 156: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
! 157: $ if libsslshr_line .nes. "" then write opt libsslshr_line
! 158: $ close opt
! 159: $ purge 'base_dir'gnv$conftest.*
! 160: $ rename 'base_dir'gnv$conftest.* ;1
! 161: $!
! 162: $!
! 163: $!
! 164: $! GNV helper files for building the test curl binary.
! 165: $!-----------------------------------------------
! 166: $ create [.src]gnv$curl.opt
! 167: $ open/append opt [.src]gnv$curl.opt
! 168: $ write opt "gnv_packages_vms:curlmsg.obj"
! 169: $ if libzshr_line .nes. "" then write opt libzshr_line
! 170: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
! 171: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
! 172: $ if libsslshr_line .nes. "" then write opt libsslshr_line
! 173: $ close opt
! 174: $ purge [.src]gnv$*.*
! 175: $ rename [.src]gnv$*.* ;1
! 176: $!
! 177: $!
! 178: $! Create the libcurl
! 179: $!------------------------------------------------------
! 180: $ create 'default_dir'gnv_libcurl_linker.opt
! 181: $ open/append opt 'default_dir'gnv_libcurl_linker.opt
! 182: $ if libzshr_line .nes. "" then write opt libzshr_line
! 183: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
! 184: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
! 185: $ if libsslshr_line .nes. "" then write opt libsslshr_line
! 186: $ close opt
! 187: $!
! 188: $!
! 189: $! Create the template linker file
! 190: $!---------------------------------
! 191: $ create 'default_dir'gnv_template_linker.opt
! 192: $ open/append opt 'default_dir'gnv_template_linker.opt
! 193: $ write opt "gnv_vms_common:vms_curl_init_unix.obj"
! 194: $ if libzshr_line .nes. "" then write opt libzshr_line
! 195: $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line
! 196: $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line
! 197: $ if libsslshr_line .nes. "" then write opt libsslshr_line
! 198: $ close opt
! 199: $!
! 200: $! Copy over the gnv$*.opt files for [.docs.examples]
! 201: $!----------------------------------------------------
! 202: $ if examples .ne. 0
! 203: $ then
! 204: $ example_apps = "10-at-a-time,anyauthput,certinfo,cookie_interface,debug"
! 205: $ example_apps = example_apps + ",fileupload,fopen,ftpget,ftpgetresp"
! 206: $ example_apps = example_apps + ",ftpupload,getinfo,getinmemory"
! 207: $ example_apps = example_apps + ",http-post,httpcustomheader,httpput"
! 208: $ example_apps = example_apps + ",https,multi-app,multi-debugcallback"
! 209: $ example_apps = example_apps + ",multi-double,multi-post,multi-single"
! 210: $ example_apps = example_apps + ",persistent,post-callback,postit2"
! 211: $ example_apps = example_apps + ",sendrecv,sepheaders,simple,simplepost"
! 212: $ example_apps = example_apps + ",simplessl"
! 213: $!
! 214: $ i = 0
! 215: $example_loop:
! 216: $ ap_name = f$element(i, ",", example_apps)
! 217: $ if ap_name .eqs. "," then goto example_loop_end
! 218: $ if ap_name .eqs. "" then goto example_loop_end
! 219: $ copy 'default_dir'gnv_template_linker.opt -
! 220: [.docs.examples]gnv$'ap_name'.opt
! 221: $ i = i + 1
! 222: $ goto example_loop
! 223: $example_loop_end:
! 224: $!
! 225: $! clean up the copy.
! 226: $ purge [.docs.examples]gnv$*.opt
! 227: $ rename [.docs.examples]gnv$*.opt ;1
! 228: $ endif
! 229: $!
! 230: $!
! 231: $ if tests .ne. 0
! 232: $ then
! 233: $ libtest_apps = "lib500,lib501,lib502,lib503,lib504,lib505,lib506,lib507"
! 234: $ libtest_apps = libtest_apps + ",lib508,lib510,lib511,lib512,lib513,lib514"
! 235: $ libtest_apps = libtest_apps + ",lib515,lib516,lib517,lib518,lib519,lib520"
! 236: $ libtest_apps = libtest_apps + ",lib521,lib523,lib524,lib525,lib526,lib527"
! 237: $ libtest_apps = libtest_apps + ",lib529,lib530,lib532,lib533,lib536,lib537"
! 238: $ libtest_apps = libtest_apps + ",lib539,lib540,lib541,lib542,lib543,lib544"
! 239: $ libtest_apps = libtest_apps + ",lib545,lib547,lib548,lib549,lib552,lib553"
! 240: $ libtest_apps = libtest_apps + ",lib554,lib555,lib556,lib557,lib558,lib559"
! 241: $ libtest_apps = libtest_apps + ",lib560,lib562,lib564"
! 242: $ i = 0
! 243: $libtest_loop:
! 244: $ ap_name = f$element(i, ",", libtest_apps)
! 245: $ if ap_name .eqs. "," then goto libtest_loop_end
! 246: $ if ap_name .eqs. "" then goto libtest_loop_end
! 247: $ copy 'default_dir'gnv_template_linker.opt -
! 248: [.tests.libtest]gnv$'ap_name'.opt
! 249: $ i = i + 1
! 250: $ goto libtest_loop
! 251: $libtest_loop_end:
! 252: $!
! 253: $! clean up the copy.
! 254: $ purge [.tests.libtest]gnv$*.opt
! 255: $ rename [.tests.libtest]gnv$*.opt ;1
! 256: $ endif
! 257: $!
! 258: $!
! 259: $! Build the Message file.
! 260: $!--------------------------
! 261: $ if f$search("[.packages.vms]curlmsg.obj") .eqs. ""
! 262: $ then
! 263: $ message [.packages.vms]curlmsg.msg/object=[.packages.vms]
! 264: $ endif
! 265: $ if f$search("gnv$curlmsg.exe") .eqs. ""
! 266: $ then
! 267: $ link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj
! 268: $ endif
! 269: $!
! 270: $!
! 271: $!
! 272: $! Need to build the common init module.
! 273: $!-------------------------------------------
! 274: $ init_obj = "[.packages.vms]curl_crtl_init.obj"
! 275: $ if f$search(init_obj) .eqs. ""
! 276: $ then
! 277: $ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj'
! 278: $ purge 'init_obj'
! 279: $ rename 'init_obj' ;1
! 280: $ endif
! 281: $!
! 282: $all_exit:
! 283: $!
! 284: $ set def 'default_dir'
! 285: $!
! 286: $! Verify can break things in bash, especially in Configure scripts.
! 287: $ set nover
! 288: $ exit
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>