aboutsummaryrefslogtreecommitdiff
path: root/packages/vms/build_curlbuild_h.com
diff options
context:
space:
mode:
Diffstat (limited to 'packages/vms/build_curlbuild_h.com')
-rw-r--r--packages/vms/build_curlbuild_h.com327
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