| $! File: setup_gnv_curl_build.com |
| $! |
| $! $Id$ |
| $! |
| $! Set up build environment for building Curl under GNV on VMS. |
| $! |
| $! GNV needs some files moved into the other directories to help with |
| $! the configure script and the build. |
| $! |
| $! Copyright 2009 - 2020, John Malmberg |
| $! |
| $! Permission to use, copy, modify, and/or distribute this software for any |
| $! purpose with or without fee is hereby granted, provided that the above |
| $! copyright notice and this permission notice appear in all copies. |
| $! |
| $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
| $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| $! |
| $! 30-May-2009 J. Malmberg |
| $! |
| $!======================================================================= |
| $! |
| $! Save this so we can get back. |
| $ default_dir = f$environment("default") |
| $! |
| $! Move to where the Configure script is. |
| $ set def [--] |
| $! |
| $! Get the path to where the Configure script is. |
| $ base_dir = f$environment("default") |
| $! |
| $! Allow arguments to be grouped together with comma or separated by spaces |
| $! Do no know if we will need more than 8. |
| $ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + "," |
| $ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + "," |
| $! |
| $! Provide lower case version to simplify parsing. |
| $ args_lower = f$edit(args, "LOWERCASE,COLLAPSE") |
| $! |
| $ args_len = f$length(args) |
| $ args_lower_len = f$length(args_lower) |
| $! |
| $ tests = 0 |
| $ if f$locate(",test", args_lower) .lt. args_lower_len |
| $ then |
| $ tests = 1 |
| $ endif |
| $! |
| $ examples = 0 |
| $ if f$locate(",exam", args_lower) .lt. args_lower_len |
| $ then |
| $ examples = 1 |
| $ endif |
| $! |
| $! We want detailed build logs. |
| $ clist = "/list/show=(expan,includ)" |
| $! |
| $! We want full symbol names in exact case. Need a common |
| $! repository for all directories. |
| $ cnames = "/names=(shortened,as_is)/repository=''base_dir'" |
| $! |
| $! Set the compiler options for GNV CC wrapper to inherit. |
| $ cc :== cc'clist''cnames'/nested_include_directory=none |
| $ cxx :== cxx'clist''cnames'/nested_include_directory=none |
| $ pointer_size = "32" |
| $! Note 64 bit pointers requires all libraries to either have |
| $! 64 bit pointers or have #pragma directives. |
| $! Currently building curl on VMS with 64 bit pointers does not work. |
| $! |
| $! A logical name to make it easier to find some of the hacks. |
| $ define/job gnv_hacks 'base_dir' |
| $! |
| $! A logical name to find the [.packages.vms] directory where we started. |
| $ define/job gnv_packages_vms 'default_dir' |
| $! |
| $! Kerberos headers: |
| $ if f$trnlnm("gssapi") .eqs. "" |
| $ then |
| $ if f$search("sys$sysroot:[kerberos]include.dir") .nes. "" |
| $ then |
| $ define/job gssapi sys$sysroot:[kerberos.include] |
| $ endif |
| $ endif |
| $! |
| $! OpenSSL headers |
| $ if f$trnlnm("openssl") .eqs. "" |
| $ then |
| $ if f$trnlnm("ssl$include") .nes. "" |
| $ then |
| $ define/job openssl ssl$include: |
| $ endif |
| $ endif |
| $! |
| $! C compiler include path. |
| $ define/job decc$system_include prj_root:[.include.curl],- |
| [-.packages.vms],- |
| ssl$include:,gnv$gnu:[usr.include],- |
| gnv$gnu:[usr.include.libz],gnv$gnu:[include],- |
| gnv$zlib_include:,- |
| sys$sysroot:[kerberos.include] |
| $! |
| $! Set up a include list for the compiler to find all the header files |
| $! that they need. |
| $! |
| $ define/job decc$user_include src_root:[.include.curl] |
| $ define ssl_lib sys$library: |
| $! |
| $! Calculate what is needed in the option files |
| $ libzshr_line = "" |
| $ try_shr = "gnv$libzshr''pointer_size'" |
| $ if f$search(try_shr) .nes. "" then libzshr_line = "''try_shr'/share" |
| $ if (libzshr_line .eqs. "") |
| $ then |
| $ try_shr = "sys$share:" + try_shr |
| $ if f$search("''try_shr'.exe") .nes. "" |
| $ then |
| $ libzshr_line = "''try_shr'/share" |
| $ endif |
| $ endif |
| $! |
| $! Kerberos |
| $ gssrtlshr_line = "" |
| $ try_shr = "sys$share:gss$rtl" |
| $ if f$search("''try_shr'.exe") .nes. "" |
| $ then |
| $ gssrtlshr_line = "''try_shr'/share" |
| $ endif |
| $! |
| $! HP OpenSSL |
| $ libcryptoshr_line = "" |
| $ try_shr = "sys$share:ssl$libcrypto_shr''pointer_size'" |
| $ if f$search("''try_shr'.exe") .nes. "" |
| $ then |
| $ libcryptoshr_line = "''try_shr'/share" |
| $ endif |
| $! |
| $ libsslshr_line = "" |
| $ try_shr = "sys$share:ssl$libssl_shr''pointer_size'" |
| $ if f$search("''try_shr'.exe") .nes. "" |
| $ then |
| $ libsslshr_line = "''try_shr'/share" |
| $ endif |
| $! |
| $! |
| $! Copy over the gnv$conftest* files to base directory. |
| $!----------------------------------------------------- |
| $ copy 'default_dir'gnv_conftest.c_first 'base_dir'gnv$conftest.c_first |
| $ create 'base_dir'gnv$conftest.opt |
| $ open/append opt 'base_dir'gnv$conftest.opt |
| $ if libzshr_line .nes. "" then write opt libzshr_line |
| $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line |
| $ if libsslshr_line .nes. "" then write opt libsslshr_line |
| $ close opt |
| $ purge 'base_dir'gnv$conftest.* |
| $ rename 'base_dir'gnv$conftest.* ;1 |
| $! |
| $! |
| $! |
| $! GNV helper files for building the test curl binary. |
| $!----------------------------------------------- |
| $ create [.src]gnv$curl.opt |
| $ open/append opt [.src]gnv$curl.opt |
| $ write opt "gnv_packages_vms:curlmsg.obj" |
| $ if libzshr_line .nes. "" then write opt libzshr_line |
| $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line |
| $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line |
| $ if libsslshr_line .nes. "" then write opt libsslshr_line |
| $ close opt |
| $ purge [.src]gnv$*.* |
| $ rename [.src]gnv$*.* ;1 |
| $! |
| $! |
| $! Create the libcurl |
| $!------------------------------------------------------ |
| $ create 'default_dir'gnv_libcurl_linker.opt |
| $ open/append opt 'default_dir'gnv_libcurl_linker.opt |
| $ if libzshr_line .nes. "" then write opt libzshr_line |
| $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line |
| $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line |
| $ if libsslshr_line .nes. "" then write opt libsslshr_line |
| $ close opt |
| $! |
| $! |
| $! Create the template linker file |
| $!--------------------------------- |
| $ create 'default_dir'gnv_template_linker.opt |
| $ open/append opt 'default_dir'gnv_template_linker.opt |
| $ write opt "gnv_vms_common:vms_curl_init_unix.obj" |
| $ if libzshr_line .nes. "" then write opt libzshr_line |
| $ if gssrtlshr_line .nes. "" then write opt gssrtlshr_line |
| $ if libcryptoshr_line .nes. "" then write opt libcryptoshr_line |
| $ if libsslshr_line .nes. "" then write opt libsslshr_line |
| $ close opt |
| $! |
| $! Copy over the gnv$*.opt files for [.docs.examples] |
| $!---------------------------------------------------- |
| $ if examples .ne. 0 |
| $ then |
| $ example_apps = "10-at-a-time,anyauthput,certinfo,cookie_interface,debug" |
| $ example_apps = example_apps + ",fileupload,fopen,ftpget,ftpgetresp" |
| $ example_apps = example_apps + ",ftpupload,getinfo,getinmemory" |
| $ example_apps = example_apps + ",http-post,httpcustomheader,httpput" |
| $ example_apps = example_apps + ",https,multi-app,multi-debugcallback" |
| $ example_apps = example_apps + ",multi-double,multi-post,multi-single" |
| $ example_apps = example_apps + ",persistent,post-callback,postit2" |
| $ example_apps = example_apps + ",sendrecv,sepheaders,simple,simplepost" |
| $ example_apps = example_apps + ",simplessl" |
| $! |
| $ i = 0 |
| $example_loop: |
| $ ap_name = f$element(i, ",", example_apps) |
| $ if ap_name .eqs. "," then goto example_loop_end |
| $ if ap_name .eqs. "" then goto example_loop_end |
| $ copy 'default_dir'gnv_template_linker.opt - |
| [.docs.examples]gnv$'ap_name'.opt |
| $ i = i + 1 |
| $ goto example_loop |
| $example_loop_end: |
| $! |
| $! clean up the copy. |
| $ purge [.docs.examples]gnv$*.opt |
| $ rename [.docs.examples]gnv$*.opt ;1 |
| $ endif |
| $! |
| $! |
| $ if tests .ne. 0 |
| $ then |
| $ libtest_apps = "lib500,lib501,lib502,lib503,lib504,lib505,lib506,lib507" |
| $ libtest_apps = libtest_apps + ",lib508,lib510,lib511,lib512,lib513,lib514" |
| $ libtest_apps = libtest_apps + ",lib515,lib516,lib517,lib518,lib519,lib520" |
| $ libtest_apps = libtest_apps + ",lib521,lib523,lib524,lib525,lib526,lib527" |
| $ libtest_apps = libtest_apps + ",lib529,lib530,lib532,lib533,lib536,lib537" |
| $ libtest_apps = libtest_apps + ",lib539,lib540,lib541,lib542,lib543,lib544" |
| $ libtest_apps = libtest_apps + ",lib545,lib547,lib548,lib549,lib552,lib553" |
| $ libtest_apps = libtest_apps + ",lib554,lib555,lib556,lib557,lib558,lib559" |
| $ libtest_apps = libtest_apps + ",lib560,lib562,lib564" |
| $ i = 0 |
| $libtest_loop: |
| $ ap_name = f$element(i, ",", libtest_apps) |
| $ if ap_name .eqs. "," then goto libtest_loop_end |
| $ if ap_name .eqs. "" then goto libtest_loop_end |
| $ copy 'default_dir'gnv_template_linker.opt - |
| [.tests.libtest]gnv$'ap_name'.opt |
| $ i = i + 1 |
| $ goto libtest_loop |
| $libtest_loop_end: |
| $! |
| $! clean up the copy. |
| $ purge [.tests.libtest]gnv$*.opt |
| $ rename [.tests.libtest]gnv$*.opt ;1 |
| $ endif |
| $! |
| $! |
| $! Build the Message file. |
| $!-------------------------- |
| $ if f$search("[.packages.vms]curlmsg.obj") .eqs. "" |
| $ then |
| $ message [.packages.vms]curlmsg.msg/object=[.packages.vms] |
| $ endif |
| $ if f$search("gnv$curlmsg.exe") .eqs. "" |
| $ then |
| $ link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj |
| $ endif |
| $! |
| $! |
| $! |
| $! Need to build the common init module. |
| $!------------------------------------------- |
| $ init_obj = "[.packages.vms]curl_crtl_init.obj" |
| $ if f$search(init_obj) .eqs. "" |
| $ then |
| $ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj' |
| $ purge 'init_obj' |
| $ rename 'init_obj' ;1 |
| $ endif |
| $! |
| $all_exit: |
| $! |
| $ set def 'default_dir' |
| $! |
| $! Verify can break things in bash, especially in Configure scripts. |
| $ set nover |
| $ exit |