mirror of
https://github.com/mirror/make.git
synced 2024-12-27 13:20:34 +08:00
273 lines
8.1 KiB
Plaintext
Executable File
273 lines
8.1 KiB
Plaintext
Executable File
$! Test_make.com
|
|
$!
|
|
$! This is a wrapper for the GNU Make perl test programs on VMS.
|
|
$!
|
|
$! Parameter "-help" for description on how to use described below.
|
|
$!
|
|
$! Copyright (C) 2014-2023 Free Software Foundation, Inc.
|
|
$! This file is part of GNU Make.
|
|
$!
|
|
$! GNU Make is free software; you can redistribute it and/or modify it under
|
|
$! the terms of the GNU General Public License as published by the Free Software
|
|
$! Foundation; either version 3 of the License, or (at your option) any later
|
|
$! version.
|
|
$!
|
|
$! GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
$! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
$! FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
$! details.
|
|
$!
|
|
$! You should have received a copy of the GNU General Public License along with
|
|
$! this program. If not, see <https://www.gnu.org/licenses/>.
|
|
$!
|
|
$!
|
|
$! Allow more than 8 parameters with using commas as a delimiter.
|
|
$!
|
|
$ params = "''p1',''p2',''p3',''p4',''p5',''p6',''p7',''p8'"
|
|
$!
|
|
$ test_flags = ",verbose,detail,keep,usage,help,debug,"
|
|
$ test_flags_len = f$length(test_flags)
|
|
$ verbose_flag = ""
|
|
$ detail_flag = ""
|
|
$ keep_flag = ""
|
|
$ usage_flag = ""
|
|
$ help_flag = ""
|
|
$ debug_flag = ""
|
|
$!
|
|
$ ignored_options = "profile,make,srcdir,valgrind,memcheck,massif,"
|
|
$ ignored_option_len = f$length(ignored_options)
|
|
$!
|
|
$ testname = ""
|
|
$ make :== $bin:make.exe"
|
|
$!
|
|
$ i = 0
|
|
$param_loop:
|
|
$ param = f$element(i, ",", params)
|
|
$ i = i + 1
|
|
$ if param .eqs. "" then goto param_loop
|
|
$ if param .eqs. "," then goto param_loop_end
|
|
$ param_len = f$length(param)
|
|
$ if f$locate("/", param) .lt. param_len
|
|
$ then
|
|
$ if testname .nes. ""
|
|
$ then
|
|
$ write sys$output "Only the last test name specified will be run!"
|
|
$ endif
|
|
$ testname = param
|
|
$ goto param_loop
|
|
$ endif
|
|
$ lc_param = f$edit(param,"LOWERCASE") - "-"
|
|
$ if f$locate(",''lc_param',", ignored_options) .lt. ignored_option_len
|
|
$ then
|
|
$ write sys$output "parameter ''param' is ignored on VMS for now."
|
|
$ goto param_loop
|
|
$ endif
|
|
$ if f$locate(",''lc_param',", test_flags) .lt. test_flags_len
|
|
$ then
|
|
$ 'lc_param'_flag = "-" + lc_param
|
|
$ goto param_loop
|
|
$ endif
|
|
$ write sys$output "parameter ''param' is not known to VMS."
|
|
$ goto param_loop
|
|
$!
|
|
$param_loop_end:
|
|
$!
|
|
$no_gnv = 1
|
|
$no_perl = 1
|
|
$!
|
|
$! Find GNV 2.1.3 + manditory updates
|
|
$! If properly updated, the GNV$GNU logical name is present.
|
|
$! Updated GNV utilities have a gnv$ prefix on them.
|
|
$ gnv_root = f$trnlnm("GNV$GNU", "LNM$SYSTEM_TABLE")
|
|
$ if gnv_root .nes. ""
|
|
$ then
|
|
$ no_gnv = 0
|
|
$ ! Check for update ar utility.
|
|
$ new_ar = "gnv$gnu:[usr.bin]gnv$ar.exe"
|
|
$ if f$search(new_ar) .nes. ""
|
|
$ then
|
|
$ ! See if a new port of ar exists.
|
|
$ ar :== $'new_ar'
|
|
$ else
|
|
$ ! Fall back to legacy GNV AR wrapper.
|
|
$ old_ar = "gnv$gnu:[bin]ar.exe"
|
|
$ if f$search(old_ar) .nes. ""
|
|
$ then
|
|
$ ar :== $'old_ar'
|
|
$ else
|
|
$ no_gnv = 1
|
|
$ endif
|
|
$ endif
|
|
$ ! Check for updated bash
|
|
$ if no_gnv .eq. 0
|
|
$ then
|
|
$ new_bash = "gnv$gnu:[bin]gnv$bash.exe"
|
|
$ if f$search(new_bash) .nes. ""
|
|
$ then
|
|
$ bash :== $'new_bash'
|
|
$ sh :== $'new_bash'
|
|
$ else
|
|
$ no_gnv = 1
|
|
$ endif
|
|
$ endif
|
|
$ ! Check for updated coreutils
|
|
$ if no_gnv .eq. 0
|
|
$ then
|
|
$ new_cat = "gnv$gnu:[bin]gnv$cat.exe"
|
|
$ if f$search(new_cat) .nes. ""
|
|
$ then
|
|
$ cat :== $'new_cat'
|
|
$ cp :== $gnv$gnu:[bin]gnv$cp.exe
|
|
$ echo :== $gnv$gnu:[bin]gnv$echo.exe
|
|
$ false :== $gnv$gnu:[bin]gnv$false.exe
|
|
$ true :== $gnv$gnu:[bin]gnv$true.exe
|
|
$ touch :== $gnv$gnu:[bin]gnv$touch.exe
|
|
$ mkdir :== $gnv$gnu:[bin]gnv$mkdir.exe
|
|
$ rm :== $gnv$gnu:[bin]gnv$rm.exe
|
|
$ sleep :== $gnv$gnu:[bin]gnv$sleep.exe
|
|
$ else
|
|
$ no_gnv = 1
|
|
$ endif
|
|
$ endif
|
|
$ ! Check for updated diff utility.
|
|
$ if no_gnv .eq. 0
|
|
$ then
|
|
$ new_diff = "gnv$gnu:[usr.bin]gnv$diff.exe"
|
|
$ if f$search(new_diff) .nes. ""
|
|
$ then
|
|
$ ! See if a new port of diff exists.
|
|
$ diff :== $'new_diff'
|
|
$ else
|
|
$ ! Fall back to legacy GNV diff
|
|
$ old_diff = "gnv$gnu:[bin]diff.exe"
|
|
$ if f$search(old_diff) .nes. ""
|
|
$ then
|
|
$ diff :== $'old_diff'
|
|
$ else
|
|
$ no_gnv = 1
|
|
$ endif
|
|
$ endif
|
|
$ endif
|
|
$ endif
|
|
$!
|
|
$if no_gnv
|
|
$then
|
|
$ write sys$output "Could not find an up to date GNV installed!"
|
|
$ help_flag = 1
|
|
$endif
|
|
$!
|
|
$! Find perl 5.18.1 or later.
|
|
$!
|
|
$! look in perl_root:[000000]perl_setup.com
|
|
$ perl_root = f$trnlnm("perl_root")
|
|
$ ! This works with known perl installed from PCSI kits.
|
|
$ if perl_root .nes. ""
|
|
$ then
|
|
$ perl_ver = f$element(1, ".", perl_root)
|
|
$ if f$locate("-", perl_ver) .lt. f$length(perl_ver)
|
|
$ then
|
|
$ no_perl = 0
|
|
$ endif
|
|
$ endif
|
|
$ if no_perl
|
|
$ then
|
|
$! look for sys$common:[perl-*]perl_setup.com
|
|
$ perl_setup = f$search("sys$common:[perl-*]perl_setup.com")
|
|
$ if perl_setup .eqs. ""
|
|
$ then
|
|
$ if gnv_root .nes. ""
|
|
$ then
|
|
$ gnv_device = f$parse(gnv_root,,,"DEVICE")
|
|
$ perl_templ = "[vms$common.perl-*]perl_setup.com"
|
|
$ perl_search = f$parse(perl_templ, gnv_device)
|
|
$ perl_setup = f$search(perl_search)
|
|
$ endif
|
|
$ endif
|
|
$ if perl_setup .nes. ""
|
|
$ then
|
|
$ @'perl_setup'
|
|
$ no_perl = 0
|
|
$ endif
|
|
$ endif
|
|
$!
|
|
$ if no_perl
|
|
$ then
|
|
$ write sys$output "Could not find an up to date Perl installed!"
|
|
$ help_flag = "-help"
|
|
$ endif
|
|
$!
|
|
$!
|
|
$ if help_flag .nes. ""
|
|
$ then
|
|
$ type sys$input
|
|
$DECK
|
|
This is a test script wrapper for the run_make_tests.pl script.
|
|
|
|
This wrapper makes sure that the DCL symbols and logical names needed to
|
|
run the perl script are in place.
|
|
|
|
The test wrapper currently requires that the DCL symbols be global symbols.
|
|
Those symbols will be left behind after the procedure is run.
|
|
|
|
The PERL_ROOT will be set to a compatible perl if such a perl is found and
|
|
is not the default PERL_ROOT:. This setting will persist after the test.
|
|
|
|
This wrapper should be run with the default set to the base directory
|
|
of the make source.
|
|
|
|
The HELP parameter will bring up this text and then run the help script
|
|
for the Perl wrapper. Not all options for the perl script have been
|
|
implemented, such as valgrind or specifying the make path or source path.
|
|
|
|
Running the wrapper script requires:
|
|
Perl 5.18 or later.
|
|
PCSI kits available from https://sourceforge.net/projects/vmsperlkit/files/
|
|
|
|
GNV 2.1.3 or later. GNV 3.0.1 has not tested with this script.
|
|
Bash 4.2.47 or later.
|
|
Coreutils 8.21 or later.
|
|
https://sourceforge.net/projects/gnv/files/
|
|
Read before installing:
|
|
https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/
|
|
As updates for other GNV components get posted, those updates should
|
|
be used.
|
|
|
|
$EOD
|
|
$ endif
|
|
$!
|
|
$ if no_gnv .or. no_perl then exit 44
|
|
$!
|
|
$!
|
|
$ default = f$environment("DEFAULT")
|
|
$ default_dev = f$element(0, ":", default) + ":"
|
|
$ this = f$environment("PROCEDURE")
|
|
$ on error then goto all_error
|
|
$ set default 'default_dev''f$parse(this,,,"DIRECTORY")'
|
|
$!
|
|
$! Need to make sure that the config-flags.pm exists.
|
|
$ if f$search("config-flags.pm") .eqs. ""
|
|
$ then
|
|
$ @config_flags_pm.com
|
|
$ endif
|
|
$ define/user bin 'default_dev'[-],gnv$gnu:[bin]
|
|
$ define/user decc$filename_unix_noversion enable
|
|
$ define/user decc$filename_unix_report enable
|
|
$ define/user decc$readdir_dropdotnotype enable
|
|
$ flags = ""
|
|
$ if verbose_flag .nes. "" then flags = verbose_flag
|
|
$ if detail_flag .nes. "" then flags = flags + " " + detail_flag
|
|
$ if keep_flag .nes. "" then flags = flags + " " + keep_flag
|
|
$ if usage_flag .nes. "" then flags = flags + " " + usage_flag
|
|
$ if help_flag .nes. "" then flags = flags + " " + help_flag
|
|
$ if debug_flag .nes. "" then flags = flags + " " + debug_flag
|
|
$ flags = f$edit(flags, "TRIM, COMPRESS")
|
|
$ if testname .nes. ""
|
|
$ then
|
|
$ perl run_make_tests.pl "''testname'" 'flags'
|
|
$ else
|
|
$ perl run_make_tests.pl 'flags'
|
|
$ endif
|
|
$all_error:
|
|
$ set default 'default'
|
|
$!
|