Annotation of embedaddon/curl/packages/vms/setup_gnv_curl_build.com, revision 1.1.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>