|
Packit |
575503 |
$! File: GENERATE_CONFIG_H_VMS_GAWK.COM
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Gawk like most open source products uses a variant of a config.h file.
|
|
Packit |
575503 |
$! Depending on the curl version, this could be config.h or curl_config.h.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! For GNV based builds, the configure script is run and that produces
|
|
Packit |
575503 |
$! a [curl_]config.h file. Configure scripts on VMS generally do not
|
|
Packit |
575503 |
$! know how to do everything, so there is also a [-.lib]config-vms.h file
|
|
Packit |
575503 |
$! that has VMS specific code that compensates for bugs in some of the
|
|
Packit |
575503 |
$! VMS shared images.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! This generates a []config.h file and also a config_vms.h file,
|
|
Packit |
575503 |
$! which is used to supplement that file.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Copyright (C) 2014, 2016 the Free Software Foundation, Inc.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! This file is part of GAWK, the GNU implementation of the
|
|
Packit |
575503 |
$! AWK Progamming Language.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! GAWK is free software; you can redistribute it and/or modify
|
|
Packit |
575503 |
$! it under the terms of the GNU General Public License as published by
|
|
Packit |
575503 |
$! the Free Software Foundation; either version 3 of the License, or
|
|
Packit |
575503 |
$! (at your option) any later version.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! GAWK is distributed in the hope that it will be useful,
|
|
Packit |
575503 |
$! but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
575503 |
$! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
575503 |
$! GNU General Public License for more details.
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! You should have received a copy of the GNU General Public License
|
|
Packit |
575503 |
$! along with this program; if not, write to the Free Software
|
|
Packit |
575503 |
$! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
|
Packit |
575503 |
$! USA
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Per assignment agreement with FSF, similar procedures may be present
|
|
Packit |
575503 |
$! in other packages under other licensing agreements and copyrights
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! 21-Jan-2014 J. Malmberg
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$!=========================================================================
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Allow arguments to be grouped together with comma or separated by spaces
|
|
Packit |
575503 |
$! Do no know if we will need more than 8.
|
|
Packit |
575503 |
$ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
|
|
Packit |
575503 |
$ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Provide lower case version to simplify parsing.
|
|
Packit |
575503 |
$ args_lower = f$edit(args, "LOWERCASE")
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$ args_len = f$length(args)
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$ if (f$getsyi("HW_MODEL") .lt. 1024)
|
|
Packit |
575503 |
$ then
|
|
Packit |
575503 |
$ arch_name = "VAX"
|
|
Packit |
575503 |
$ else
|
|
Packit |
575503 |
$ arch_name = ""
|
|
Packit |
575503 |
$ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
|
|
Packit |
575503 |
$ if (arch_name .eqs. "") then arch_name = "UNK"
|
|
Packit |
575503 |
$ endif
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Start the configuration file.
|
|
Packit |
575503 |
$! Need to do a create and then an append to make the file have the
|
|
Packit |
575503 |
$! typical file attributes of a VMS text file.
|
|
Packit |
575503 |
$ create sys$disk:[]config_vms.h
|
|
Packit |
575503 |
$ open/append cvh sys$disk:[]config_vms.h
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Write the defines to prevent multiple includes.
|
|
Packit |
575503 |
$! These are probably not needed in this case,
|
|
Packit |
575503 |
$! but are best practice to put on all header files.
|
|
Packit |
575503 |
$ write cvh "#ifndef __CONFIG_VMS_H__"
|
|
Packit |
575503 |
$ write cvh "#define __CONFIG_VMS_H__"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$ write cvh "#if __CRTL_VER >= 70000000"
|
|
Packit |
575503 |
$ write cvh "#define VMS_V7"
|
|
Packit |
575503 |
$ write cvh "#else"
|
|
Packit |
575503 |
$ write cvh "#define HAVE_TZNAME 1 /* (faked in vms/vms_misc.c) */
|
|
Packit |
575503 |
$ write cvh "#define HAVE_TZSET 1 /* (faked in vms/vms_misc.c) */
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh "#if __CRTL_VER >= 70200000"
|
|
Packit |
575503 |
$ write cvh "#define DYNAMIC 1"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#define PRINTF_HAS_F_FORMAT 1"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/* The _Noreturn keyword of C11. */"
|
|
Packit |
575503 |
$ write cvh "#ifndef _Noreturn"
|
|
Packit |
575503 |
$ write cvh "# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \"
|
|
Packit |
575503 |
$ write cvh " || 0x5110 <= __SUNPRO_C)"
|
|
Packit |
575503 |
$ write cvh "# define _Noreturn __attribute__ ((__noreturn__))"
|
|
Packit |
575503 |
$ write cvh "# elif defined _MSC_VER && 1200 <= _MSC_VER"
|
|
Packit |
575503 |
$ write cvh "# define _Noreturn __declspec (noreturn)"
|
|
Packit |
575503 |
$ write cvh "# else"
|
|
Packit |
575503 |
$ write cvh "# define _Noreturn"
|
|
Packit |
575503 |
$ write cvh "# endif"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/*"
|
|
Packit |
575503 |
$ write cvh " * VAXCRTL is pre-ANSI and does some variations of numeric"
|
|
Packit |
575503 |
$ write cvh " * formatting differently than gawk expects."
|
|
Packit |
575503 |
$ write cvh " */"
|
|
Packit |
575503 |
$ write cvh "#if defined(VAX) && !defined(__DECC)"
|
|
Packit |
575503 |
$ write cvh -
|
|
Packit |
575503 |
"/* '0' format modifier for %e,%f,%g gives wrong results in many cases */"
|
|
Packit |
575503 |
$ write cvh "#define VAXCRTL"
|
|
Packit |
575503 |
$ write cvh "/* %g format chooses %e format when should use %f */"
|
|
Packit |
575503 |
$ write cvh "#define GFMT_WORKAROUND 1"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/*"
|
|
Packit |
575503 |
$ write cvh " * VAX C"
|
|
Packit |
575503 |
$ write cvh " *"
|
|
Packit |
575503 |
$ write cvh -
|
|
Packit |
575503 |
" * As of V3.2, VAX C is not yet ANSI-compliant. But it's close enough"
|
|
Packit |
575503 |
$ write cvh -
|
|
Packit |
575503 |
" * for GAWK's purposes. Comment this out for VAX C V2.4 and earlier."
|
|
Packit |
575503 |
$ write cvh -
|
|
Packit |
575503 |
" * YYDEBUG definition is needed for combination of VAX C V2.x and Bison."
|
|
Packit |
575503 |
$ write cvh " */"
|
|
Packit |
575503 |
$ write cvh "#if defined(VAXC) && !defined(__STDC__)"
|
|
Packit |
575503 |
$ write cvh "#define __STDC__ 0"
|
|
Packit |
575503 |
$ write cvh "#define NO_TOKEN_PASTING"
|
|
Packit |
575503 |
$ write cvh "#define signed /*empty*/"
|
|
Packit |
575503 |
$ write cvh "#define inline /*empty*/"
|
|
Packit |
575503 |
$ write cvh "#ifndef __DECC /* DEC C does not support #pragma builtins */"
|
|
Packit |
575503 |
$ write cvh "#define VAXC_BUILTINS"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh "/* #define YYDEBUG 0 */"
|
|
Packit |
575503 |
$ write cvh -
|
|
Packit |
575503 |
"#define NO_MBSUPPORT /* VAX C's preprocessor can't handle mbsupport.h */"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#if __DECC_VER >= 60400000 && !defined(DEBUG)"
|
|
Packit |
575503 |
$ write cvh "/* disable ""new feature in C99"" diagnostics (for regex code); "
|
|
Packit |
575503 |
$ write cvh " NEWC99 ought to suffice but doesn't (at least in V6.4) */"
|
|
Packit |
575503 |
$ write cvh "#pragma message disable (NEWC99,DESIGNATORUSE)"
|
|
Packit |
575503 |
$ write cvh "#ifdef __VAX
|
|
Packit |
575503 |
$ write cvh "#endif
|
|
Packit |
575503 |
$ write cvh "#pragma message disable (LONGDOUBLENYI)"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! This stuff seems needed for VMS 7.3 and earlier, but not VMS 8.2+
|
|
Packit |
575503 |
$! Need some more data as to which versions these issues are fixed in.
|
|
Packit |
575503 |
$ write cvh "#if __VMS_VER <= 80200000"
|
|
Packit |
575503 |
$! mkstemp goes into an infinte loop in gawk in VAX/VMS 7.3
|
|
Packit |
575503 |
$ write cvh "#ifdef HAVE_MKSTEMP"
|
|
Packit |
575503 |
$ write cvh "#undef HAVE_MKSTEMP"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! VMS not legal for ANSI compiler to pre-define
|
|
Packit |
575503 |
$ write cvh "#ifndef VMS"
|
|
Packit |
575503 |
$ write cvh "#define VMS 1"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Need to temp hide stuff that gawk is replacing or redefining before
|
|
Packit |
575503 |
$! including the header.
|
|
Packit |
575503 |
$ write cvh "/* Need to hide some stuff */"
|
|
Packit |
575503 |
$ write cvh "#define getopt hide_getopt"
|
|
Packit |
575503 |
$ write cvh "#define optopt hide_optopt"
|
|
Packit |
575503 |
$ write cvh "#define optind hide_optind"
|
|
Packit |
575503 |
$ write cvh "#define optarg hide_optarg"
|
|
Packit |
575503 |
$ write cvh "#define opterr hide_opterr"
|
|
Packit |
575503 |
$ write cvh "#define getpgrp hide_getpgrp"
|
|
Packit |
575503 |
$ write cvh "#define unsetenv hide_unsetenv"
|
|
Packit |
575503 |
$ write cvh "#define read hide_read"
|
|
Packit |
575503 |
$ write cvh "#define delete hide_delete"
|
|
Packit |
575503 |
$ write cvh "#define getcwd hide_getcwd"
|
|
Packit |
575503 |
$ write cvh "#define getgid hide_getgid"
|
|
Packit |
575503 |
$ write cvh "#define getegid hide_getegid"
|
|
Packit |
575503 |
$ write cvh "#define setgid hide_setgid"
|
|
Packit |
575503 |
$ write cvh "#define exit hide_exit"
|
|
Packit |
575503 |
$ write cvh "#define _exit hide__exit"
|
|
Packit |
575503 |
$ write cvh "#include <unistd.h>"
|
|
Packit |
575503 |
$ write cvh "#include <stdlib.h>"
|
|
Packit |
575503 |
$ write cvh "#include <stdio.h>"
|
|
Packit |
575503 |
$ write cvh "#include <time.h>"
|
|
Packit |
575503 |
$ write cvh "#include <stsdef.h>"
|
|
Packit |
575503 |
$ write cvh "#include <string.h>"
|
|
Packit |
575503 |
$ write cvh "#undef getopt"
|
|
Packit |
575503 |
$ write cvh "#undef optopt"
|
|
Packit |
575503 |
$ write cvh "#undef optind"
|
|
Packit |
575503 |
$ write cvh "#undef optarg"
|
|
Packit |
575503 |
$ write cvh "#undef opterr"
|
|
Packit |
575503 |
$ write cvh "#undef getpgrp"
|
|
Packit |
575503 |
$ write cvh "#undef getcwd"
|
|
Packit |
575503 |
$ write cvh "#undef unsetenv"
|
|
Packit |
575503 |
$ write cvh "#undef read"
|
|
Packit |
575503 |
$ write cvh "#undef delete"
|
|
Packit |
575503 |
$ write cvh "#undef getgid"
|
|
Packit |
575503 |
$ write cvh "#undef getegid"
|
|
Packit |
575503 |
$ write cvh "#undef setgid"
|
|
Packit |
575503 |
$ write cvh "#undef exit"
|
|
Packit |
575503 |
$ write cvh "#undef _exit"
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$write cvh "#ifdef HAVE_STRNCASECMP"
|
|
Packit |
575503 |
$write cvh "#undef HAVE_STRNCASECMP"
|
|
Packit |
575503 |
$write cvh "#endif"
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$ write cvh "#define IN_CONFIG_H"
|
|
Packit |
575503 |
$ write cvh "#include ""redirect.h"""
|
|
Packit |
575503 |
$ write cvh "#undef IN_CONFIG_H"
|
|
Packit |
575503 |
$ write cvh "#define getpgrp gawk_vms_getpgrp"
|
|
Packit |
575503 |
$ write cvh "#ifdef HAVE_SETENV"
|
|
Packit |
575503 |
$ write cvh "#undef HAVE_SETENV"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh "#ifdef HAVE_UNSETENV"
|
|
Packit |
575503 |
$ write cvh "#undef HAVE_UNSETENV"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh "#ifdef HAVE_STRFTIME"
|
|
Packit |
575503 |
$ write cvh "#undef HAVE_STRFTIME"
|
|
Packit |
575503 |
$ write cvh "#define USE_INCLUDED_STRFTIME"
|
|
Packit |
575503 |
$ write cvh "#endif /* HAVE_STRFTIME */"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#include <bitypes.h>"
|
|
Packit |
575503 |
$ write cvh "#define INT32_MAX __INT32_MAX"
|
|
Packit |
575503 |
$ write cvh "#define INT32_MIN __INT32_MIN"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/*"
|
|
Packit |
575503 |
$ write cvh " * DEFPATH"
|
|
Packit |
575503 |
$ write cvh " * VMS: ""/AWK_LIBRARY"" => ""AWK_LIBRARY:"""
|
|
Packit |
575503 |
$ write cvh " * The default search path for the -f option of gawk. It is"
|
|
Packit |
575503 |
$ write cvh " * used if the AWKPATH environment variable is undefined."
|
|
Packit |
575503 |
$ write cvh " *"
|
|
Packit |
575503 |
$ write cvh " * Note: OK even if no AWK_LIBRARY logical name has been defined."
|
|
Packit |
575503 |
$ write cvh " */"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#define DEFPATH "".,/AWK_LIBRARY"""
|
|
Packit |
575503 |
$ write cvh "#define DEFLIBPATH "".,/AWK_LIBRARY"""
|
|
Packit |
575503 |
$ write cvh "#define ENVSEP ','"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/*"
|
|
Packit |
575503 |
$ write cvh " * Extended source file access."
|
|
Packit |
575503 |
$ write cvh " */"
|
|
Packit |
575503 |
$ write cvh "#define DEFAULT_FILETYPE "".awk"""
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/*"
|
|
Packit |
575503 |
$ write cvh " * fork/Pipe handling."
|
|
Packit |
575503 |
$ write cvh " */"
|
|
Packit |
575503 |
$ write cvh "#define PIPES_SIMULATED 1"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/* Extension for shared libraries */"
|
|
Packit |
575503 |
$ write cvh "#define SHLIBEXT ""exe"""
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$! GAWK does not want to use ALLOCA
|
|
Packit |
575503 |
$ write cvh "#define NO_ALLOCA"
|
|
Packit |
575503 |
$ write cvh "#define STACK_DIRECTION (-1)"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "void decc$exit(int status);"
|
|
Packit |
575503 |
$ write cvh "#define _exit(foo) vms_exit(foo)"
|
|
Packit |
575503 |
$ write cvh "#define exit(foo) vms_exit(foo)"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/* Use POSIX exit codes here */"
|
|
Packit |
575503 |
$ write cvh "#ifdef EXIT_FAILURE"
|
|
Packit |
575503 |
$ write cvh "#undef EXIT_FAILURE"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh "#define EXIT_FAILURE (1)"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#define EXIT_FATAL (2)"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#ifndef C_FACILITY_NO"
|
|
Packit |
575503 |
$ write cvh "#define C_FACILITY_NO 0x350000"
|
|
Packit |
575503 |
$ write cvh "#endif"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "/* Build a Posix Exit with VMS severity */
|
|
Packit |
575503 |
$ write cvh "static void vms_exit(int status) {"
|
|
Packit |
575503 |
$ write cvh " int vms_status;"
|
|
Packit |
575503 |
$ write cvh " /* Fake the __posix_exit with severity added */"
|
|
Packit |
575503 |
$ write cvh " /* Undocumented correct way to do this. */"
|
|
Packit |
575503 |
$ write cvh " vms_status = 0;"
|
|
Packit |
575503 |
$ write cvh " if (status != 0) {"
|
|
Packit |
575503 |
$ write cvh " vms_status = C_FACILITY_NO | 0xA000 | STS$M_INHIB_MSG;"
|
|
Packit |
575503 |
$ write cvh " vms_status |= (status << 3);"
|
|
Packit |
575503 |
$ write cvh " }"
|
|
Packit |
575503 |
$ write cvh " if (status == EXIT_FAILURE) {"
|
|
Packit |
575503 |
$ write cvh " vms_status |= STS$K_ERROR;"
|
|
Packit |
575503 |
$ write cvh " } else if (status == EXIT_FATAL) {"
|
|
Packit |
575503 |
$ write cvh " vms_status |= STS$K_SEVERE;"
|
|
Packit |
575503 |
$ write cvh " } else {"
|
|
Packit |
575503 |
$ write cvh " vms_status |= STS$K_SUCCESS;"
|
|
Packit |
575503 |
$ write cvh " }"
|
|
Packit |
575503 |
$ write cvh " decc$exit(vms_status);"
|
|
Packit |
575503 |
$ write cvh "}"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#define TIME_T_UNSIGNED 1"
|
|
Packit |
575503 |
$ write cvh "#include ""custom.h"""
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#define __attribute(a)"
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$! Close out the file
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$ write cvh ""
|
|
Packit |
575503 |
$ write cvh "#endif /* __CONFIG_VMS_H__ */"
|
|
Packit |
575503 |
$ close cvh
|
|
Packit |
575503 |
$!
|
|
Packit |
575503 |
$all_exit:
|
|
Packit |
575503 |
$ exit
|