Return to setup_gnv_curl_build.com CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / packages / vms |
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