diff options
Diffstat (limited to 'packages/vms/build_curlbuild_h.com')
-rw-r--r-- | packages/vms/build_curlbuild_h.com | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/packages/vms/build_curlbuild_h.com b/packages/vms/build_curlbuild_h.com new file mode 100644 index 000000000..cc74bb26c --- /dev/null +++ b/packages/vms/build_curlbuild_h.com @@ -0,0 +1,327 @@ +$! File: config_h.com +$! +$! $Id: config_h.com,v 1.1.1.1 2012/12/02 19:25:21 wb8tyw Exp $ +$! +$! This procedure attempts to figure out how to build a config.h file +$! for the current project. +$! +$! P1 specifies the config.h.in file or equivalent. If it is not specified +$! then this procedure will search for several common names of the file. +$! +$! The CONFIGURE shell script will be examined for hints and a few symbols +$! but most of the tests will not produce valid results on OpenVMS. Some +$! will produce false positives and some will produce false negatives. +$! +$! It is easier to just read the config.h_in file and make up tests based +$! on what is in it! +$! +$! This file will create an empty config_vms.h file if one does not exist. +$! The config_vms.h is intended for manual edits to handle things that +$! this procedure can not. +$! +$! The config_vms.h will be invoked by the resulting config.h file. +$! +$! This procedure knows about the DEC C RTL on the system it is on. +$! Future versions may be handle the GNV, the OpenVMS porting library, +$! and others. +$! +$! This procedure may not guess the options correctly for all architectures, +$! and is a work in progress. +$! +$! Copyright 2011, 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. +$! +$! 15-Jan-2001 J. Malmberg Original +$! 29-Apr-2001 J. Malmberg Also look for config.*in* in a [.include] +$! subdirectory +$! 30-Apr-2001 J. Malmberg Update for SAMBA checks +$! 09-Apr-2005 J. Malmberg Update for RSYNC and large file. +$! 29-Sep-2011 J. Malmberg Update for Bash 4.2 +$! 01-Mar-2012 J. Malmberg Warn about getcwd(0,0) +$! 21-Dec-2012 J. Malmberg Update for gawk +$! 29-Dec-2012 J. Malmberg Update for curl +$!============================================================================ +$! +$ss_normal = 1 +$ss_abort = 44 +$ss_control_y = 1556 +$status = ss_normal +$on control_y then goto control_y +$on warning then goto general_error +$! +$! Some information for writing timestamps to created files +$!---------------------------------------------------------- +$my_proc = f$environment("PROCEDURE") +$my_proc_file = f$parse(my_proc,,,"NAME") + f$parse(my_proc,,,"TYPE") +$tab[0,8] = 9 +$datetime = f$element(0,".",f$cvtime(,"ABSOLUTE","DATETIME")) +$username = f$edit(f$getjpi("","USERNAME"),"TRIM") +$! +$pid = f$getjpi("","PID") +$tfile1 = "SYS$SCRATCH:config_h_temp1_''pid'.TEMP" +$dchfile = "SYS$SCRATCH:config_h_decc_''pid'.TEMP" +$configure_script = "SYS$SCRATCH:configure_script_''pid'.TEMP" +$! +$! Get the system type +$!---------------------- +$arch_type = f$getsyi("arch_type") +$! +$! +$! Write out the header +$!---------------------- +$gosub write_curlbuild_h_header +$! +$! +$! config.h.in could have at least five different names depending +$! on how it was transferred to OpenVMS +$!------------------------------------------------------------------ +$base_curlbuild = "sys$disk:[.include.curl]" +$if p1 .nes. "" +$then +$ cfile = p1 +$else +$ cfile = f$search("''base_curlbuild'curlbuild.h.in") +$ if cfile .eqs. "" +$ then +$ cfile = f$search("''base_curlbuild'curlbuild.h_in") +$ if cfile .eqs. "" +$ then +$ cfile = f$search("''base_curlbuild'curlbuildh.in") +$ if cfile .eqs. "" +$ then +$ cfile = f$search("''base_curlbuild'curlbuild__2eh.in") +$ if cfile .eqs. "" +$ then +$ cfile = f$search("''base_curlbuild'curlbuild.h__2ein") +$ if cfile .eqs. "" +$ then +$ cfile = f$search("''base_curlbuild'curlbuild.h$5nin") +$ endif +$ endif +$ endif +$ endif +$ endif +$endif +$! +$if cfile .eqs. "" +$then +$ write sys$output "Can not find ''base_curlbuild'curlbuild.h.in" +$ line_out = "Looked for curlbuild.h.in, curlbuild.h_in, curlbuild.in, " +$ line_out = line_out + "curlbuild__2eh.in, curlbuild.h__2ein, " +$ line_out = line_out + "curlbuild.h$5nin" +$ write/symbol sys$output line_out +$ goto general_error +$endif +$! +$open/read inf 'cfile' +$do_comment = 0 +$if_block = 0 +$cfgh_in_loop1: +$!set nover +$ read/end=cfgh_in_loop1_end inf line_in +$ xline = f$edit(line_in,"TRIM,COMPRESS") +$! +$! Blank line handling +$!--------------------- +$ if xline .eqs. "" +$ then +$ write tf "" +$ goto cfgh_in_loop1 +$ endif +$ xlen = f$length(xline) +$ key = f$extract(0,2,xline) +$! +$! deal with comments by copying exactly +$!----------------------------------------- +$ if (do_comment .eq. 1) .or. (key .eqs. "/*") +$ then +$ do_comment = 1 +$ write tf line_in +$ key = f$extract(xlen - 2, 2, xline) +$ if key .eqs. "*/" then do_comment = 0 +$ goto cfgh_in_loop1 +$ endif +$! +$! Some quick parsing +$!---------------------- +$ keyif = f$extract(0,3,xline) +$ key1 = f$element(0," ",xline) +$ key2 = f$element(1," ",xline) +$ key2a = f$element(0,"_",key2) +$ key2b = f$element(1,"_",key2) +$ key2_len = f$length(key2) +$ key2_h = f$extract(key2_len - 2, 2, key2) +$ key2_t = f$extract(key2_len - 5, 5, key2) +$ if key2_t .eqs. "_TYPE" then key2_h = "_T" +$ key64 = 0 +$ if f$locate("64", xline) .lt. xlen then key64 = 1 +$! +$!write sys$output "xline = ''xline'" +$! +$ if key1 .nes. "#undef" +$ then +$ write tf line_in +$ goto cfgh_in_loop1 +$ endif +$! +$! All versions of VMS have sys/types.h +$!---------------------------------------- +$ if (key2 .eqs. "CURL_PULL_SYS_TYPES_H") +$ then +$ write tf "#define ''key2' 1" +$ goto cfgh_in_loop1 +$ endif +$! +$! Most have sys/socket.h +$!------------------------- +$ if (key2 .eqs. "CURL_PULL_SYS_SOCKET_H") +$ then +$ write tf "#ifdef HAVE_SYS_SOCKET_H" +$ write tf "#define ''key2' 1" +$ write tf "#else" +$ write tf "#undef ''key2'" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$! VAX/VMS 7.3 does not have sys/poll.h +$!---------------------------------------- +$ if (key2 .eqs. "CURL_PULL_SYS_POLL_H") +$ then +$ write tf "#ifdef HAVE_POLL_H" +$ write tf "#define ''key2' 1" +$ write tf "#else" +$ write tf "#undef ''key2'" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_SIZEOF_LONG") +$ then +$ write tf "#define ''key2' SIZEOF_INT" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_SIZEOF_CURL_SOCKLEN_T") +$ then +$ write tf "#define ''key2' SIZEOF_INT" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_TYPEOF_CURL_SOCKLEN_T") +$ then +$ write tf "#define ''key2' size_t" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_TYPEOF_CURL_OFF_T") +$ then +$ write tf "#define ''key2' off_t" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_FORMAT_CURL_OFF_T") +$ then +$ write tf "#if (SIZEOF_OFF_T == 8)" +$ write tf "#define ''key2' ""lld""" +$ write tf "#else" +$ write tf "#define ''key2' ""ld""" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_FORMAT_CURL_OFF_TU") +$ then +$ write tf "#if (SIZEOF_OFF_T == 8)" +$ write tf "#define ''key2' ""llu""" +$ write tf "#else" +$ write tf "#define ''key2' ""lu""" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_FORMAT_OFF_T") +$ then +$ write tf "#if (SIZEOF_OFF_T == 8)" +$ write tf "#define ''key2' ""%lld""" +$ write tf "#else" +$ write tf "#define ''key2' ""%ld""" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_SIZEOF_CURL_OFF_T") +$ then +$ write tf "#define ''key2' SIZEOF_OFF_T" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_SUFFIX_CURL_OFF_T") +$ then +$ write tf "#if (SIZEOF_OFF_T == 8)" +$ write tf "#define ''key2' LL" +$ write tf "#else" +$ write tf "#define ''key2' L" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$ if (key2 .eqs. "CURL_SUFFIX_CURL_OFF_TU") +$ then +$ write tf "#if (SIZEOF_OFF_T == 8)" +$ write tf "#define ''key2' ULL" +$ write tf "#else" +$ write tf "#define ''key2' UL" +$ write tf "#endif" +$ goto cfgh_in_loop1 +$ endif +$! +$! +$! +$! If it falls through everything else, comment it out +$!----------------------------------------------------- +$ write tf "/* ", xline, " */" +$ goto cfgh_in_loop1 +$cfgh_in_loop1_end: +$close inf +$close tf +$! +$! Exit and clean up +$!-------------------- +$general_error: +$status = '$status' +$all_exit: +$set noon +$if f$trnlnm("tf","lnm$process",,"SUPERVISOR") .nes. "" then close tf +$if f$trnlnm("inf","lnm$process",,"SUPERVISOR") .nes. "" then close inf +$exit 'status' +$! +$! +$control_y: +$ status = ss_control_y +$ goto all_exit +$! +$! +$! gosub to write out a documentation header for config.h +$!---------------------------------------------------------------- +$write_curlbuild_h_header: +$outfile = "sys$disk:[.include.curl]curlbuild.h" +$create 'outfile' +$open/append tf 'outfile' +$write tf - + "/* [.include.curl]curlbuild.h. Generated from curlbuild.h.in by */" +$write tf - + "/* ", my_proc_file, tab, datetime, tab, username, tab, " */" +$write tf "" +$return |