[packages/make] up to 4.4.1
atler
atler at pld-linux.org
Mon Feb 27 18:45:23 CET 2023
commit ce6db130e9506c37bb012a23ee02f76149aa14f7
Author: Jan Palus <atler at pld-linux.org>
Date: Mon Feb 27 18:44:54 2023 +0100
up to 4.4.1
make.spec | 6 +-
sub-make-makeflags.patch | 865 -----------------------------------------------
2 files changed, 2 insertions(+), 869 deletions(-)
---
diff --git a/make.spec b/make.spec
index 6e6a6d9..f874306 100644
--- a/make.spec
+++ b/make.spec
@@ -12,17 +12,16 @@ Summary(ru.UTF-8): GNU Make
Summary(tr.UTF-8): GNU Make
Summary(uk.UTF-8): GNU Make
Name: make
-Version: 4.4
+Version: 4.4.1
Release: 1
Epoch: 1
License: GPL v3+
Group: Development/Building
Source0: http://ftp.gnu.org/gnu/make/%{name}-%{version}.tar.lz
-# Source0-md5: 5da8b0fcc500de9c254ca59e58558b27
+# Source0-md5: c8b13b7477e812d4213a9b88ff0ff1d6
Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
# Source1-md5: ab6da7a1ba3bcf9e86e4e3fdecca61a7
Patch0: %{name}-info.patch
-Patch1: sub-make-makeflags.patch
URL: http://www.gnu.org/software/make/
BuildRequires: autoconf >= 2.69
BuildRequires: automake >= 1:1.16.1
@@ -111,7 +110,6 @@ Plik nagłówkowy interfejsu modułów GNU Make'a.
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
%build
%{__gettextize}
diff --git a/sub-make-makeflags.patch b/sub-make-makeflags.patch
deleted file mode 100644
index 5ad9599..0000000
--- a/sub-make-makeflags.patch
+++ /dev/null
@@ -1,865 +0,0 @@
-From dc2d963989b96161472b2cd38cef5d1f4851ea34 Mon Sep 17 00:00:00 2001
-From: Dmitry Goncharov <dgoncharov at users.sf.net>
-Date: Sun, 27 Nov 2022 14:09:17 -0500
-Subject: [SV 63347] Always add command line variable assignments to MAKEFLAGS
-
-This commit introduces two visible changes:
-1. Keep command line variable assignments in MAKEFLAGS at all times,
- even while parsing makefiles.
-2. Define makeflags immediately when a makefile modifies MAKEFLAGS.
-
-The new MAKEFLAGS and MAKEOVERRIDES initialization procedure:
-1. decode_switches (argc, argv, o_command) is called to parse command
- line variable assignments.
-2. Command line variable assignments go through quote_for_env.
- Initialize -*-command-variables-*- to the quoted values.
-3. MAKEOVERRIDES is initialized to refer to -*-command-variables-*-
- with origin o_env to keep the definitions in the database intact.
-4. define_makeflags() is called which adds MAKEOVERRIDES to MAKEFLAGS.
-5. Makefiles are parsed. If a makefile modifies MAKEFLAGS, the new
- value of MAKEFLAGS is defined right away.
-6. Env switches are decoded again as o_env. The definitions set by
- decode_switches at step 1 stay intact, as o_command beats o_env.
-
-We must preserve the original intact definitions in order to detect
-failure cases; for example:
- $ cat makefile
- all:; $(hello)
- $ make hello='$(world'
- makefile:1: *** unterminated variable reference. Stop.
-
-* src/makeint.h: Declare enum variable_origin, struct variable and
-define_makeflags(). Add parameter origin to decode_env_switches().
-* src/main.c (define_makeflags): Remove "all". If a variable is
-assigned on the command line then append MAKEOVERRIDES to MAKEFLAGS.
-(decode_env_switches): Replace parameter env with origin.
-(decode_switches): Replace parameter env with origin.
-Treat origin == o_command as env == 0.
-(handle_non_switch_argument): Replace parameter env with origin.
-Treat origin == o_command as env == 0.
-(main): Call decode_switches() with origin==o_command before parsing
-makefiles. Call decode_switches() with origin==o_env after parsing
-makefiles.
-* src/variable.c (set_special_var): Define makeflags at parse time,
-each time a makefile modifies MAKEFLAGS.
-(do_variable_definition): Strip command line variable assignments from
-MAKEFLAGS before appending extra flags. set_special_var() adds them
-back.
-* tests/scripts/variables/MAKEFLAGS: Add tests.
----
- src/main.c | 90 ++++++-------
- src/makeint.h | 6 +-
- src/variable.c | 72 ++++++----
- tests/scripts/variables/MAKEFLAGS | 273 +++++++++++++++++++++++++++++++++-----
- 4 files changed, 336 insertions(+), 105 deletions(-)
-
-diff --git a/src/main.c b/src/main.c
-index b31ddd4..d8a7372 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -105,8 +105,8 @@ double atof ();
- static void clean_jobserver (int status);
- static void print_data_base (void);
- static void print_version (void);
--static void decode_switches (int argc, const char **argv, int env);
--static struct variable *define_makeflags (int all, int makefile);
-+static void decode_switches (int argc, const char **argv,
-+ enum variable_origin origin);
- static char *quote_for_env (char *out, const char *in);
- static void initialize_global_hash_tables (void);
-
-@@ -1572,13 +1572,13 @@ main (int argc, char **argv, char **envp)
- /* Decode the switches. */
- if (lookup_variable (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME)))
- {
-- decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME));
-+ decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME), o_command);
-
- /* Clear GNUMAKEFLAGS to avoid duplication. */
- define_variable_cname (GNUMAKEFLAGS_NAME, "", o_env, 0);
- }
-
-- decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME));
-+ decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME), o_command);
-
- #if 0
- /* People write things like:
-@@ -1599,7 +1599,7 @@ main (int argc, char **argv, char **envp)
- int env_slots = arg_job_slots;
- arg_job_slots = INVALID_JOB_SLOTS;
-
-- decode_switches (argc, (const char **)argv, 0);
-+ decode_switches (argc, (const char **)argv, o_command);
- argv_slots = arg_job_slots;
-
- if (arg_job_slots == INVALID_JOB_SLOTS)
-@@ -2022,7 +2022,7 @@ main (int argc, char **argv, char **envp)
-
- /* Set up the MAKEFLAGS and MFLAGS variables for makefiles to see.
- Initialize it to be exported but allow the makefile to reset it. */
-- define_makeflags (0, 0)->export = v_export;
-+ define_makeflags (0)->export = v_export;
-
- /* Define the default variables. */
- define_default_variables ();
-@@ -2072,12 +2072,12 @@ main (int argc, char **argv, char **envp)
- arg_job_slots = INVALID_JOB_SLOTS;
-
- /* Decode switches again, for variables set by the makefile. */
-- decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME));
-+ decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME), o_env);
-
- /* Clear GNUMAKEFLAGS to avoid duplication. */
- define_variable_cname (GNUMAKEFLAGS_NAME, "", o_override, 0);
-
-- decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME));
-+ decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME), o_env);
- #if 0
- decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
- #endif
-@@ -2260,7 +2260,7 @@ main (int argc, char **argv, char **envp)
-
- /* Set up MAKEFLAGS and MFLAGS again, so they will be right. */
-
-- define_makeflags (1, 0);
-+ define_makeflags (0);
-
- /* Make each 'struct goaldep' point at the 'struct file' for the file
- depended on. Also do magic for special targets. */
-@@ -2420,7 +2420,7 @@ main (int argc, char **argv, char **envp)
- }
-
- /* Set up 'MAKEFLAGS' specially while remaking makefiles. */
-- define_makeflags (1, 1);
-+ define_makeflags (1);
-
- {
- int orig_db_level = db_level;
-@@ -2812,7 +2812,7 @@ main (int argc, char **argv, char **envp)
- }
-
- /* Set up 'MAKEFLAGS' again for the normal targets. */
-- define_makeflags (1, 0);
-+ define_makeflags (0);
-
- /* Set always_make_flag if -B was given. */
- always_make_flag = always_make_set;
-@@ -3000,7 +3000,7 @@ init_switches (void)
-
- /* Non-option argument. It might be a variable definition. */
- static void
--handle_non_switch_argument (const char *arg, int env)
-+handle_non_switch_argument (const char *arg, enum variable_origin origin)
- {
- struct variable *v;
-
-@@ -3033,7 +3033,7 @@ handle_non_switch_argument (const char *arg, int env)
- }
- }
- #endif
-- v = try_variable_definition (0, arg, o_command, 0);
-+ v = try_variable_definition (0, arg, origin, 0);
- if (v != 0)
- {
- /* It is indeed a variable definition. If we don't already have this
-@@ -3053,11 +3053,12 @@ handle_non_switch_argument (const char *arg, int env)
- command_variables = cv;
- }
- }
-- else if (! env)
-+ else if (arg[0] != '\0' && origin == o_command)
- {
-- /* Not an option or variable definition; it must be a goal
-- target! Enter it as a file and add it to the dep chain of
-- goals. */
-+ /* Not an option or variable definition; it must be a goal target.
-+ Enter it as a file and add it to the dep chain of goals.
-+ Check ARG[0] because if the top makefile resets MAKEOVERRIDES
-+ then ARG points to an empty string in the submake. */
- struct file *f = enter_file (strcache_add (expand_command_line_file (arg)));
- f->cmd_target = 1;
-
-@@ -3105,7 +3106,7 @@ handle_non_switch_argument (const char *arg, int env)
- They came from the environment if ENV is nonzero. */
-
- static void
--decode_switches (int argc, const char **argv, int env)
-+decode_switches (int argc, const char **argv, enum variable_origin origin)
- {
- int bad = 0;
- const struct command_switch *cs;
-@@ -3119,7 +3120,7 @@ decode_switches (int argc, const char **argv, int env)
-
- /* Let getopt produce error messages for the command line,
- but not for options from the environment. */
-- opterr = !env;
-+ opterr = origin == o_command;
- /* Reset getopt's state. */
- optind = 0;
-
-@@ -3135,7 +3136,7 @@ decode_switches (int argc, const char **argv, int env)
- break;
- else if (c == 1)
- /* An argument not starting with a dash. */
-- handle_non_switch_argument (coptarg, env);
-+ handle_non_switch_argument (coptarg, origin);
- else if (c == '?')
- /* Bad option. We will print a usage message and die later.
- But continue to parse the other options so the user can
-@@ -3149,7 +3150,7 @@ decode_switches (int argc, const char **argv, int env)
- this switch. We test this individually inside the
- switch below rather than just once outside it, so that
- options which are to be ignored still consume args. */
-- int doit = !env || cs->env;
-+ int doit = origin == o_command || cs->env;
-
- switch (cs->type)
- {
-@@ -3299,9 +3300,9 @@ decode_switches (int argc, const char **argv, int env)
- to be returned in order, this only happens when there is a "--"
- argument to prevent later arguments from being options. */
- while (optind < argc)
-- handle_non_switch_argument (argv[optind++], env);
-+ handle_non_switch_argument (argv[optind++], origin);
-
-- if (bad && !env)
-+ if (bad && origin == o_command)
- print_usage (bad);
-
- /* If there are any options that need to be decoded do it now. */
-@@ -3321,7 +3322,7 @@ decode_switches (int argc, const char **argv, int env)
- decode_switches. */
-
- void
--decode_env_switches (const char *envar, size_t len)
-+decode_env_switches (const char *envar, size_t len, enum variable_origin origin)
- {
- char *varref = alloca (2 + len + 2);
- char *value, *p, *buf;
-@@ -3383,7 +3384,7 @@ decode_env_switches (const char *envar, size_t len)
- argv[1] = buf;
-
- /* Parse those words. */
-- decode_switches (argc, argv, 1);
-+ decode_switches (argc, argv, origin);
- }
-
- /* Quote the string IN so that it will be interpreted as a single word with
-@@ -3408,11 +3409,11 @@ quote_for_env (char *out, const char *in)
- }
-
- /* Define the MAKEFLAGS and MFLAGS variables to reflect the settings of the
-- command switches. Include options with args if ALL is nonzero.
-+ command switches. Always include options with args.
- Don't include options with the 'no_makefile' flag set if MAKEFILE. */
-
--static struct variable *
--define_makeflags (int all, int makefile)
-+struct variable *
-+define_makeflags (int makefile)
- {
- const char ref[] = "MAKEOVERRIDES";
- const char posixref[] = "-*-command-variables-*-";
-@@ -3597,25 +3598,24 @@ define_makeflags (int all, int makefile)
- p = mempcpy (p, evalref, CSTRLEN (evalref));
- }
-
-- if (all)
-- {
-- /* If there are any overrides to add, write a reference to
-- $(MAKEOVERRIDES), which contains command-line variable definitions.
-- Separate the variables from the switches with a "--" arg. */
-+ {
-+ /* If there are any overrides to add, write a reference to
-+ $(MAKEOVERRIDES), which contains command-line variable definitions.
-+ Separate the variables from the switches with a "--" arg. */
-
-- const char *r = posix_pedantic ? posixref : ref;
-- size_t l = strlen (r);
-- v = lookup_variable (r, l);
-+ const char *r = posix_pedantic ? posixref : ref;
-+ size_t l = strlen (r);
-+ v = lookup_variable (r, l);
-
-- if (v && v->value && v->value[0] != '\0')
-- {
-- p = stpcpy (p, " -- ");
-- *(p++) = '$';
-- *(p++) = '(';
-- p = mempcpy (p, r, l);
-- *(p++) = ')';
-- }
-- }
-+ if (v && v->value && v->value[0] != '\0')
-+ {
-+ p = stpcpy (p, " -- ");
-+ *(p++) = '$';
-+ *(p++) = '(';
-+ p = mempcpy (p, r, l);
-+ *(p++) = ')';
-+ }
-+ }
-
- /* If there is a leading dash, omit it. */
- if (flagstring[0] == '-')
-diff --git a/src/makeint.h b/src/makeint.h
-index c726abe..d6ac21b 100644
---- a/src/makeint.h
-+++ b/src/makeint.h
-@@ -558,7 +558,11 @@ void out_of_memory (void) NORETURN;
- #define ONS(_t,_a,_f,_n,_s) _t((_a), INTSTR_LENGTH + strlen (_s), \
- (_f), (_n), (_s))
-
--void decode_env_switches (const char*, size_t line);
-+enum variable_origin;
-+void decode_env_switches (const char*, size_t line,
-+ enum variable_origin origin);
-+struct variable;
-+struct variable *define_makeflags (int makefile);
- void temp_stdin_unlink (void);
- void die (int) NORETURN;
- void pfatal_with_name (const char *) NORETURN;
-diff --git a/src/variable.c b/src/variable.c
-index 0bd9963..d8bf428 100644
---- a/src/variable.c
-+++ b/src/variable.c
-@@ -1215,7 +1215,7 @@ target_environment (struct file *file, int recursive)
- }
-
- static struct variable *
--set_special_var (struct variable *var)
-+set_special_var (struct variable *var, enum variable_origin origin)
- {
- if (streq (var->name, RECIPEPREFIX_NAME))
- {
-@@ -1225,7 +1225,10 @@ set_special_var (struct variable *var)
- cmd_prefix = var->value[0]=='\0' ? RECIPEPREFIX_DEFAULT : var->value[0];
- }
- else if (streq (var->name, MAKEFLAGS_NAME))
-- decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME));
-+ {
-+ decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME), origin);
-+ define_makeflags (rebuilding_makefiles);
-+ }
-
- return var;
- }
-@@ -1261,7 +1264,7 @@ do_variable_definition (const floc *flocp, const char *varname,
- const char *value, enum variable_origin origin,
- enum variable_flavor flavor, int target_var)
- {
-- const char *p;
-+ const char *newval;
- char *alloc_value = NULL;
- struct variable *v;
- int append = 0;
-@@ -1276,7 +1279,7 @@ do_variable_definition (const floc *flocp, const char *varname,
- We have to allocate memory since otherwise it'll clobber the
- variable buffer, and we may still need that if we're looking at a
- target-specific variable. */
-- p = alloc_value = allocated_variable_expand (value);
-+ newval = alloc_value = allocated_variable_expand (value);
- break;
- case f_expand:
- {
-@@ -1285,16 +1288,16 @@ do_variable_definition (const floc *flocp, const char *varname,
- tokens to '$$' to resolve to '$' when recursively expanded. */
- char *t = allocated_variable_expand (value);
- char *np = alloc_value = xmalloc (strlen (t) * 2 + 1);
-- p = t;
-- while (p[0] != '\0')
-+ char *op = t;
-+ while (op[0] != '\0')
- {
-- if (p[0] == '$')
-+ if (op[0] == '$')
- *(np++) = '$';
-- *(np++) = *(p++);
-+ *(np++) = *(op++);
- }
- *np = '\0';
-- p = alloc_value;
- free (t);
-+ newval = alloc_value;
- break;
- }
- case f_shell:
-@@ -1302,9 +1305,10 @@ do_variable_definition (const floc *flocp, const char *varname,
- /* A shell definition "var != value". Expand value, pass it to
- the shell, and store the result in recursively-expanded var. */
- char *q = allocated_variable_expand (value);
-- p = alloc_value = shell_result (q);
-+ alloc_value = shell_result (q);
- free (q);
- flavor = f_recursive;
-+ newval = alloc_value;
- break;
- }
- case f_conditional:
-@@ -1320,7 +1324,7 @@ do_variable_definition (const floc *flocp, const char *varname,
- case f_recursive:
- /* A recursive variable definition "var = value".
- The value is used verbatim. */
-- p = value;
-+ newval = value;
- break;
- case f_append:
- case f_append_value:
-@@ -1345,15 +1349,16 @@ do_variable_definition (const floc *flocp, const char *varname,
- {
- /* There was no old value.
- This becomes a normal recursive definition. */
-- p = value;
-+ newval = value;
- flavor = f_recursive;
- }
- else
- {
- /* Paste the old and new values together in VALUE. */
-
-- size_t oldlen, vallen;
-+ size_t oldlen, vallen, alloclen;
- const char *val;
-+ char *cp;
- char *tp = NULL;
-
- val = value;
-@@ -1378,18 +1383,25 @@ do_variable_definition (const floc *flocp, const char *varname,
- }
-
- oldlen = strlen (v->value);
-- p = alloc_value = xmalloc (oldlen + 1 + vallen + 1);
-+ alloclen = oldlen + 1 + vallen + 1;
-+ cp = alloc_value = xmalloc (alloclen);
-
- if (oldlen)
- {
-- memcpy (alloc_value, v->value, oldlen);
-- alloc_value[oldlen] = ' ';
-- ++oldlen;
-+ char *s;
-+ if (streq (varname, MAKEFLAGS_NAME)
-+ && (s = strstr (v->value, " -- ")))
-+ /* We found a separator in MAKEFLAGS. Ignore variable
-+ assignments: set_special_var() will reconstruct things. */
-+ cp = mempcpy (cp, v->value, s - v->value);
-+ else
-+ cp = mempcpy (cp, v->value, oldlen);
-+ *(cp++) = ' ';
- }
-
-- memcpy (&alloc_value[oldlen], val, vallen + 1);
--
-+ memcpy (cp, val, vallen + 1);
- free (tp);
-+ newval = alloc_value;
- }
- }
- break;
-@@ -1399,6 +1411,8 @@ do_variable_definition (const floc *flocp, const char *varname,
- abort ();
- }
-
-+ assert (newval);
-+
- #ifdef __MSDOS__
- /* Many Unix Makefiles include a line saying "SHELL=/bin/sh", but
- non-Unix systems don't conform to this default configuration (in
-@@ -1440,16 +1454,16 @@ do_variable_definition (const floc *flocp, const char *varname,
- char *fake_env[2];
- size_t pathlen = 0;
-
-- shellbase = strrchr (p, '/');
-- bslash = strrchr (p, '\\');
-+ shellbase = strrchr (newval, '/');
-+ bslash = strrchr (newval, '\\');
- if (!shellbase || bslash > shellbase)
- shellbase = bslash;
-- if (!shellbase && p[1] == ':')
-- shellbase = p + 1;
-+ if (!shellbase && newval[1] == ':')
-+ shellbase = newval + 1;
- if (shellbase)
- shellbase++;
- else
-- shellbase = p;
-+ shellbase = newval;
-
- /* Search for the basename of the shell (with standard
- executable extensions) along the $PATH. */
-@@ -1490,7 +1504,7 @@ do_variable_definition (const floc *flocp, const char *varname,
- set no_default_sh_exe to indicate sh was found and
- set new value for SHELL variable. */
-
-- if (find_and_set_default_shell (p))
-+ if (find_and_set_default_shell (newval))
- {
- v = define_variable_in_set (varname, strlen (varname), default_shell,
- origin, flavor == f_recursive,
-@@ -1504,11 +1518,11 @@ do_variable_definition (const floc *flocp, const char *varname,
- {
- char *tp = alloc_value;
-
-- alloc_value = allocated_variable_expand (p);
-+ alloc_value = allocated_variable_expand (newval);
-
- if (find_and_set_default_shell (alloc_value))
- {
-- v = define_variable_in_set (varname, strlen (varname), p,
-+ v = define_variable_in_set (varname, strlen (varname), newval,
- origin, flavor == f_recursive,
- (target_var
- ? current_variable_set_list->set
-@@ -1536,7 +1550,7 @@ do_variable_definition (const floc *flocp, const char *varname,
- invoked in places where we want to define globally visible variables,
- make sure we define this variable in the global set. */
-
-- v = define_variable_in_set (varname, strlen (varname), p, origin,
-+ v = define_variable_in_set (varname, strlen (varname), newval, origin,
- flavor == f_recursive || flavor == f_expand,
- (target_var
- ? current_variable_set_list->set : NULL),
-@@ -1546,7 +1560,7 @@ do_variable_definition (const floc *flocp, const char *varname,
-
- done:
- free (alloc_value);
-- return v->special ? set_special_var (v) : v;
-+ return v->special ? set_special_var (v, origin) : v;
- }
-
- /* Parse P (a null-terminated string) as a variable definition.
-diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS
-index a41f1cf..e81c327 100644
---- a/tests/scripts/variables/MAKEFLAGS
-+++ b/tests/scripts/variables/MAKEFLAGS
-@@ -65,79 +65,113 @@ rmdir('bar');
- # Test that command line switches are all present in MAKEFLAGS.
- # sv 62514.
- my @opts;
-+my @flavors;
-
- # Simple flags.
- @opts = ('i', 'k', 'n', 'q', 'r', 's', 'w', 'd');
- exists $FEATURES{'check-symlink'} and push @opts, 'L';
-+ at flavors = ('=', ':=', ':::=', '+=-');
-
-+for my $fl (@flavors) {
- for my $opt (@opts) {
-- run_make_test(q!
--MAKEFLAGS:=B
--all:; $(info makeflags='$(MAKEFLAGS)')
--!, "-$opt", "/makeflags='B$opt'/");
-+ run_make_test("
-+MAKEFLAGS${fl}B
-+all:; \$(info makeflags='\$(MAKEFLAGS)')
-+", "-$opt", "/makeflags='B$opt'/");
-+}
- }
-
- # Switches which carry arguments.
- @opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5');
-+for my $fl (@flavors) {
- for my $opt (@opts) {
-- run_make_test(q!
--MAKEFLAGS:=B
--all:; $(info makeflags='$(MAKEFLAGS)')
--!, "$opt", "/makeflags='B$opt'/");
-+ run_make_test("
-+MAKEFLAGS${fl}B
-+all:; \$(info makeflags='\$(MAKEFLAGS)')
-+", "$opt", "/makeflags='B$opt'/");
-+}
- }
-
- # Long options which take no arguments.
- # sv 62514.
- @opts = (' --no-print-directory', ' --warn-undefined-variables', ' --trace');
-+for my $fl (@flavors) {
- for my $opt (@opts) {
--run_make_test(q!
--MAKEFLAGS:=B
--all:; $(info makeflags='$(MAKEFLAGS)')
--!, "$opt", "/makeflags='B$opt'/");
-+run_make_test("
-+MAKEFLAGS${fl}B
-+all:; \$(info makeflags='\$(MAKEFLAGS)')
-+", "$opt", "/makeflags='B$opt'/");
-+}
- }
-
- # Test that make filters out duplicates.
- # Each option is specified in the makefile, env and on the command line.
- @opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5');
--$ENV{'MAKEFLAGS'} = $opt;
-+for my $fl (@flavors) {
- for my $opt (@opts) {
-+$ENV{'MAKEFLAGS'} = $opt;
- run_make_test("
--MAKEFLAGS:=B $opt
-+MAKEFLAGS${fl}B $opt
- all:; \$(info makeflags='\$(MAKEFLAGS)')
- ", "$opt", "/makeflags='B$opt'/");
- }
-+}
-
- # Test that make filters out duplicates.
- # Each option is specified in the makefile, env and on the command line.
- # decode_switches reallocates when the number of parameters in sl->list exceeds 5.
- # This test exercises the realloc branch.
-+for my $fl (@flavors) {
- $ENV{'MAKEFLAGS'} = '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2';
--run_make_test(q!
--MAKEFLAGS:=B -I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2
--all:; $(info makeflags='$(MAKEFLAGS)')
--!,
-+run_make_test("
-+MAKEFLAGS${fl}B -I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2
-+all:; \$(info makeflags='\$(MAKEFLAGS)')
-+",
- '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6',
- "/makeflags='B -I1 -I2 -I3 -I4 -I5 -I6 -l2.5 -Onone --debug=b'/");
-+}
-
- # A mix of multiple flags from env, the makefile and command line.
- # Skip -L since it's not available everywhere
-+for my $fl (@flavors) {
- $ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables --trace';
--run_make_test(q!
--MAKEFLAGS:=iknqrswd -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5
--all:; $(info makeflags='$(MAKEFLAGS)')
--!,
-+run_make_test("
-+MAKEFLAGS${fl}iknqrswd -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5
-+all:; \$(info makeflags='\$(MAKEFLAGS)')
-+",
- '-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrswd -i -n -s -k -I/tmp',
- "/makeflags='Bdiknqrsw -I/tmp -l2.5 -Onone --trace --warn-undefined-variables'/");
-+}
-
--# Verify MAKEFLAGS are all available to shell functions
-+# Verify MAKEFLAGS are all available to shell function at parse time.
-+for my $fl (@flavors) {
-+my $answer = 'Biknqrs -I/tmp -l2.5 -Onone --no-print-directory --warn-undefined-variables';
- $ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables';
--run_make_test(q!
--MAKEFLAGS := iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory
--XX := $(shell echo "$$MAKEFLAGS")
--all:; $(info makeflags='$(XX)')
--!,
-- '-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrs -i -n -s -k -I/tmp',
-- "makeflags='iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory'");
-+run_make_test("
-+MAKEFLAGS${fl}iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory
-+\$(info at parse time '\$(MAKEFLAGS)')
-+XX := \$(shell echo \"\$\$MAKEFLAGS\")
-+all:; \$(info at build time makeflags='\$(XX)')
-+",
-+'-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrs -i -n -s -k -I/tmp',
-+"at parse time '$answer'
-+at build time makeflags='$answer'");
-+}
-+
-+# Verify MAKEFLAGS and command line definitions are all available to shell function at parse time.
-+for my $fl (@flavors) {
-+$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables';
-+my $answer = 'Biknqrs -I/tmp -l2.5 -Onone --no-print-directory --warn-undefined-variables -- hello=world';
-+run_make_test("
-+MAKEFLAGS${fl}iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory
-+\$(info at parse time '\$(MAKEFLAGS)')
-+XX := \$(shell echo \"\$\$MAKEFLAGS\")
-+all:; \$(info at build time makeflags='\$(XX)')
-+",
-+'-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrs -i -n -s -k -I/tmp hello=world',
-+"at parse time '$answer'
-+at build time makeflags='$answer'");
-+}
-
- # Verify that command line arguments are included in MAKEFLAGS
- run_make_test(q!
-@@ -155,4 +189,183 @@ echo /erR --trace --no-print-directory -- FOO=bar/
- /erR --trace --no-print-directory -- FOO=bar/");
-
-
-+# sv 63347.
-+# Verify that command line arguments are included in MAKEFLAGS
-+# when makefiles are parsed.
-+my $answer = 'erR -- hello:=world FOO=bar';
-+run_make_test(q!
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, '-e FOO=bar -r -R hello:=world',
-+"$answer
-+$answer
-+#MAKE#: 'all' is up to date.\n");
-+
-+# sv 63347.
-+# Same as above, with makefile setting the value of the same variables as
-+# defined on the cli.
-+my $answer = 'erR -- hello:=world FOO=bar';
-+run_make_test(q!
-+$(info $(MAKEFLAGS))
-+FOO=moon
-+hello:=moon
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, '-e FOO=bar -r -R hello:=world',
-+"$answer
-+$answer
-+$answer
-+#MAKE#: 'all' is up to date.\n");
-+
-+# sv 63347.
-+# Same as above, with makefile overriding the value of cli definition.
-+my $answer = 'erR -- hello:=world FOO=bar';
-+run_make_test(q!
-+$(info $(MAKEFLAGS))
-+override FOO=moon
-+override hello:=moon
-+export hello
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, '-e FOO=bar -r -R hello:=world',
-+"$answer
-+$answer
-+$answer
-+#MAKE#: 'all' is up to date.\n");
-+
-+# Same as above, and makefile overrides the value of cli definition.
-+# resets MAKEOVERRIDES.
-+my $answer = 'rR -- hello:=world FOO=bar';
-+run_make_test(q!
-+$(info $(MAKEFLAGS))
-+override FOO=moon
-+override hello:=moon
-+export hello
-+$(info $(MAKEFLAGS))
-+MAKEOVERRIDES=
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, 'FOO=bar -r -R hello:=world',
-+"$answer
-+$answer
-+rR -- \nrR
-+#MAKE#: 'all' is up to date.\n");
-+
-+# sv 63347.
-+# MAKEFLAGS set is env and makefile sets MAKEFLAGS and there is a command
-+# line definition.
-+my $answer = ' -- bye=moon hello=world';
-+$ENV{'MAKEFLAGS'} = 'hello=world';
-+run_make_test(q!
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, 'bye=moon',
-+" -- bye=moon hello=world
-+ -- bye=moon hello=world
-+#MAKE#: 'all' is up to date.\n");
-+
-+# sv 63347.
-+# Conditional assignment and MAKEFLAGS.
-+my $answer = 'B -- bye=moon hello=world';
-+$ENV{'MAKEFLAGS'} = 'hello=world';
-+run_make_test(q!
-+$(info $(MAKEFLAGS))
-+MAKEFLAGS?=-k
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, '-B bye=moon',
-+"$answer
-+$answer
-+$answer
-+#MAKE#: 'all' is up to date.\n");
-+
-+# sv 63347.
-+# MAKEFLAGS set is env and makefile sets MAKEFLAGS and there is a command
-+# line definition.
-+for my $fl (@flavors) {
-+my $answer = ' -- bye=moon hello=world';
-+$ENV{'MAKEFLAGS'} = 'hello=world';
-+run_make_test("
-+\$(info \$(MAKEFLAGS))
-+MAKEFLAGS${fl}R
-+\$(info \$(MAKEFLAGS))
-+all:; \$(info \$(MAKEFLAGS))
-+", 'bye=moon',
-+"$answer
-+R$answer
-+rR$answer
-+#MAKE#: 'all' is up to date.\n");
-+}
-+
-+# sv 63347.
-+# Test changes introduced by makefiles to MAKEFLAGS.
-+for my $fl (@flavors) {
-+my $answer = 'rR --no-print-directory -- hello:=world FOO=bar';
-+run_make_test(q!
-+MAKEFLAGS+=--no-print-directory
-+$(info $(MAKEFLAGS))
-+MAKEFLAGS+=-k
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, 'FOO=bar -r -R hello:=world',
-+"$answer
-+k$answer
-+k$answer
-+#MAKE#: 'all' is up to date.\n");
-+}
-+
-+# sv 63347.
-+# Test changes introduced by makefiles to MAKEFLAGS.
-+# Same as above, but with -e.
-+for my $fl (@flavors) {
-+my $answer = 'erR -- hello:=world FOO=bar';
-+run_make_test(q!
-+MAKEFLAGS+=--no-print-directory
-+$(info $(MAKEFLAGS))
-+MAKEFLAGS+=-k
-+$(info $(MAKEFLAGS))
-+all:; $(info $(MAKEFLAGS))
-+!, '-e FOO=bar -r -R hello:=world',
-+"$answer
-+$answer
-+$answer
-+#MAKE#: 'all' is up to date.\n");
-+}
-+
-+mkdir('bye', 0777);
-+
-+create_file('bye/makefile',
-+'hello=moon
-+all:; $(info $(hello))');
-+
-+# sv 63347.
-+# Test that a cli definition takes precendence over a definition set in
-+# submake.
-+run_make_test(q!
-+v:=$(shell $(MAKE) -C bye --no-print-directory)
-+all: ; $(info $(v))
-+!, 'hello=world', "world #MAKE#[1]: 'all' is up to date.\n#MAKE#: 'all' is up to date.");
-+
-+# Same as above with the shell assignment operator.
-+run_make_test(q!
-+v \!= $(MAKE) -C bye --no-print-directory
-+all: ; $(info $(v))
-+!, 'hello=world', "world #MAKE#[1]: 'all' is up to date.\n#MAKE#: 'all' is up to date.");
-+
-+unlink('bye/makefile');
-+rmdir('bye');
-+
-+# sv 63347
-+# Invalid command line variable definition.
-+run_make_test(q!
-+all:; $(info $(hello))
-+!, 'hello=\'$(world\'', "#MAKEFILE#:2: *** unterminated variable reference. Stop.\n", 512);
-+
-+# sv 63347
-+# An unused invalid command line variable definition is ignored.
-+run_make_test(q!
-+all:; $(info good)
-+!, 'hello=\'$(world\'', "good\n#MAKE#: 'all' is up to date.\n");
-+
-+
- 1;
---
-cgit v1.1
-
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/make.git/commitdiff/ce6db130e9506c37bb012a23ee02f76149aa14f7
More information about the pld-cvs-commit
mailing list