mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-12 08:40:55 +00:00
No description
07187db947
Appending to a pattern specific variable produces an incorrect value in the presence of a command line definition or an env override of the variable. Also, fix pattern/target-specific appending to a variable with origin override. * At parse time record_target_var sets the value of a pattern specific variable to the value defined on command line or to the value of the env override. * Later, at build time, recursively_expand_for_file appends this value of the variable (set in record_target_var) to the command line value again, regardless of the origin of the variable. This patch modifies recursively_expand_for_file to avoid appending, unless the origin of the variable beats or equals the origin of one of the parent definitions of this variable. Reported by Rob <robw9739@gmail.com>, Brian Vandenberg <phantall@gmail.com>, Markus Oberhumer <markus@oberhumer.com>. * NEWS: Note the change. * src/variable.c (do_variable_definition): Avoid merging a pattern-specific variable with the parent definition when a command line or env override is present. * src/expand.c (recursively_expand_for_file): Avoid appending to a pattern-specific variable, unless the origin of this pattern-specific variable beats or equals the origin of one of the parent definitions of this variable. * doc/make.texi (Override Directive): Add missing cross-reference. * tests/scripts/variables/append: Add tests. |
||
---|---|---|
doc | ||
gl | ||
mk | ||
po | ||
scripts | ||
src | ||
tests | ||
.ccls | ||
.clangd | ||
.dir-locals.el | ||
.gitignore | ||
AUTHORS | ||
autogen.sh | ||
autopull.sh | ||
Basic.mk.template | ||
bootstrap | ||
bootstrap-funclib.sh | ||
bootstrap.bat | ||
bootstrap.conf | ||
build.cfg.in | ||
build.sh | ||
build_w32.bat | ||
builddos.bat | ||
ChangeLog.1 | ||
ChangeLog.2 | ||
ChangeLog.3 | ||
configure.ac | ||
COPYING | ||
maintMakefile | ||
make-gdb.py | ||
Makefile.am | ||
makefile.com | ||
NEWS | ||
prepare_vms.com | ||
README.customs | ||
README.DOS | ||
README.git | ||
README.in | ||
README.OS2 | ||
README.VMS | ||
README.W32 | ||
README.zOS | ||
TODO.private | ||
vms_export_symbol_test.com |
-*-text-*- GNU Make has been ported to z/OS, tested on z/OS V2R4. PREREQUISITES ------------- Building GNU Make requires certain tools be installed on your z/OS system. These tools can be downloaded from: https://github.com/ZOSOpenTools For detailed instructions on how to set up these tools, visit https://zosopentools.github.io/meta/#/Guides/Pre-req You will need curl, tar, and gzip to download and unpack the GNU Make release package, but presumably you've already worked this out if you're reading this document! You will need the IBM C/C++ compiler. You can download a web deliverable add-on feature to your XL C/C++ compiler here: https://www-40.ibm.com/servers/resourcelink/svc00100.nsf/pages/xlCC++V241ForZOsV24 Alternatively, you can install and manage C/C++ for Open Enterprise Languages on z/OS using RedHat OpenShift Container Platform and IBM Z and Cloud Modernization Stack. GNU Make has a dependency on the ZOSLIB library, which is documented here: https://zosopentools.github.io/meta/#/Guides/Zoslib. To obtain the latest release of zoslib, you can download it from here: https://github.com/ZOSOpenTools/zoslibport/releases. BUILDING -------- If you are trying to build from a checked-out Git workspace, see README.git. Before building GNU Make, you will need to ensure that the following environment variables are set, to turn on z/OS enhanced ASCII support: export _BPXK_AUTOCVT=ON export _CEE_RUNOPTS="$_CEE_RUNOPTS FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)" export _TAG_REDIR_ERR=txt export _TAG_REDIR_IN=txt export _TAG_REDIR_OUT=txt To ensure proper functioning of xlclang, set the following environment variables before building: export _CC_CCMODE=1 export _C89_CCMODE=1 export _CXX_CCMODE=1 Set PATH_TO_ZOSLIB to the location of your zoslib installation; e.g.: PATH_TO_ZOSLIB=$HOME/zopen/prod/zoslib Invoke ./configure as follows: ./configure \ CC=xlclang \ CPPFLAGS="-DNSIG=42 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE -D_OPEN_SYS_FILE_EXT=1 -D_AE_BIMODAL=1 -D_ENHANCED_ASCII_EXT=0xFFFFFFF -DZOSLIB_OVERRIDE_CLIB=1" \ CFLAGS="-qascii -std=gnu11 -qnocsect -qenum=int -I$PATH_TO_ZOSLIB/include" \ LDFLAGS="-L$PATH_TO_ZOSLIB/lib" \ LIBS="-lzoslib $PATH_TO_ZOSLIB/lib/CXXRT64.x" If you have an instance of make already available you can build with: make If not, you can build with: ./build.sh TESTING ------- To run the regression tests you'll need to install Perl and enable it. Then you can run: ./make check INSTALLING ---------- Copy the "make" program to wherever you want it to be installed, on your PATH.