and though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here

This project is mirrored from https://git.savannah.gnu.org/git/make.git. Pull mirroring failed .
Last successful update .
  1. 22 May, 2016 1 commit
  2. 21 May, 2016 6 commits
    • Joe Crayne's avatar
      [SV 44742] Fix double-colon rules plus parallel builds. · 9bb994e8
      Joe Crayne authored
      * remake.c (update_file): Don't update double-colon target status
      if we're still building targets.
      (ftime_t): Don't propagate timestamps for double-colon targets that
      we've not examined yet.
      * tests/scripts/features/double_colon: Add parallel build tests.
      
      Copyright-paperwork-exempt: yes
      9bb994e8
    • Paul Smith's avatar
      * read.c (eval): [SV 47960] Skip record waiting files when ignoring. · e2ebea35
      Paul Smith authored
      * tests/scripts/features/conditionals: Test this scenario.
      e2ebea35
    • Paul Smith's avatar
      Separate the GNU make load ABI from internal types. · c73ed7dd
      Paul Smith authored
      Create an internal type "floc" and convert all users to that type.
      * gnumake.h (gmk_floc): Remove the offset field from this type.
      * loadapi.c (gmk_eval): Convert gmk_floc to internal floc.
      c73ed7dd
    • Paul Eggert's avatar
      Fixes for enhanced GCC warnings. · ba8383ef
      Paul Eggert authored
      Move function prototypes into header files and out of .c files.
      Use void argument lists for functions that accept no args.
      Remove unused macros.  Make private functions static.  Align
      types with printf format characters.
      ba8383ef
    • Paul Smith's avatar
      Fix compile issues with Windows and VMS. · 6f7fb050
      Paul Smith authored
      * main.c (initialize_stopchar_map): isblank() is not part of C89.
      Install bits for space and tab directly.
      * makeint.h: Don't define vfork; autoconf handles this for us.
      * vmsjobs.c: Rename NEXT_TOKEN to V_NEXT_TOKEN to avoid conflicts.
      * dir.c (print_dir_data_base): Visual Studio C doesn't have int64_t.
      * w32/subproc/sub_proc.c (process_begin): Missing arg to memset().
      * build_w32.bat: Don't use obsolete Visual Studio flags.
      6f7fb050
    • Paul Smith's avatar
      Allow compiling with an ISO C 1989/1990 compiler. · 45200a42
      Paul Smith authored
      * posixos.c (jobserver_post_child): Use C89 for loop syntax.
      * remake.c (update_goal_chain): Ditto.
      * variable.c (parse_variable_definition): Ditto.
      45200a42
  3. 17 May, 2016 1 commit
  4. 24 Apr, 2016 1 commit
    • Eli Zaretskii's avatar
      Fix the MS-Windows MinGW build · 6e640321
      Eli Zaretskii authored
      * build_w32.bat (GccCompile): Use -std=gnu99, as some code uses
      C99 features ('for' loop initial declarations).
      
      * dir.c (print_dir_data_base) [WINDOWS32]: Cast 'mtime' to
      'int64_t', and use %I64d to print it, to avoid compile-time
      warning about printing a 'time_t' value, which could be either
      a 32-bit or a 64 bit integral type.
      6e640321
  5. 23 Apr, 2016 1 commit
  6. 11 Apr, 2016 3 commits
    • Paul Smith's avatar
      * NEWS: Update for pre-release · c2be1df8
      Paul Smith authored
      c2be1df8
    • Paul Smith's avatar
      f1a96250
    • Paul Smith's avatar
      [SV 46433] Show recipe line offsets in line number messages. · 047bd5a1
      Paul Smith authored
      While displaying line numbers, show the relevant line number inside
      the recipe not just the first line of the entire recipe.
      Sample changes suggested by Brian Vandenberg <phantall@gmail.com>
      
      * gnumake.h (gmk_floc): Add an 'offset' to track the recipe offset.
      * read.c (eval, eval_makefile, eval_buffer): Initialize 'offset'.
      (record_files, install_pattern_rule): Ditto.
      * job.c (new_job, job_next_command): Update 'offset' based on the
      line of the recipe we're expanding or invoking.
      (child_error): Add 'offset' when showing the line number.
      * function.c (func_shell_base): Ditto.
      * output.c (error, fatal): Ditto.
      * NEWS: Mention the new ability.
      * tests/scripts/features/errors: Check the line number on errors.
      * tests/scripts/functions/warning: Check the line number on warnings.
      * tests/scripts/features/output-sync,
      tests/scripts/features/parallelism, tests/scripts/functions/shell,
      tests/scripts/functions/error: Update line numbers.
      047bd5a1
  7. 10 Apr, 2016 2 commits
    • Paul Smith's avatar
    • Paul Smith's avatar
      [SV 102] Don't show unnecessary include file errors. · 87a5f98d
      Paul Smith authored
      Delay the generation of error messages for included files until we
      are sure that we can't rebuild that included file.
      * dep.h (struct dep): Don't reuse "changed"; make a separate field
      to keep "flags".  Get rid of dontcare and use the flag.
      (struct goaldep): Create a new structure for goal prereqs
      that tracks an errno value and the floc where the include happened.
      Rework the structures to ensure they are supersets as expected.
      In maintainer mode with GCC, use inline to get type checking.
      * read.c (eval_makefile): Return a struct goaldep for the new
      makefile.  Ensure errno is set properly to denote a failure.
      (read_all_makefiles): Switch to goaldep and check errno.
      (eval): Don't show included file errors; instead remember them.
      * remake.c (update_goal_chain): Set global variables to the current
      goaldep we're building, and the entire chain.
      (show_goal_error): Check if the current failure is a consequence
      of building an included makefile and if so print an error.
      (complain): Call show_goal_error() on rule failure.
      * job.c (child_error): Call show_goal_error() on child error.
      * main.c (main): Switch from struct dep to goaldep.
      * misc.c (free_dep_chain): Not used; make into a macro.
      * tests/scripts/features/include: Update and include new tests.
      * tests/scripts/options/dash-B, tests/scripts/options/dash-W,
      tests/scripts/options/print-directory,
      tests/scripts/variables/MAKE_RESTARTS: Update known-good-output.
      87a5f98d
  8. 09 Apr, 2016 1 commit
  9. 04 Apr, 2016 9 commits
  10. 23 Mar, 2016 3 commits
    • Paul Smith's avatar
      * tests/run_make_tests.pl: Preserve $make_command · 40277b88
      Paul Smith authored
      * tests/scripts/options/dash-n: Use $make_command.  This fixes
      a spurious failure when running tests with valgrind enabled.
      40277b88
    • Paul Smith's avatar
      * variable.c: Clean up some memory leaks. · 35047f82
      Paul Smith authored
      35047f82
    • Paul Smith's avatar
      [SV 46995] Strip leading/trailing space from variable names · e9715974
      Paul Smith authored
      * makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP
      and MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE.  Create
      NEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros.
      * main.c (initialize_stopchar_map): Set MAP_NEWLINE only for
      newline characters.
      * Convert all uses of isblank() and isspace() to macros.
      * Examine all uses of isblank() (doesn't accept newlines) and
      change them wherever possible to ISSPACE() (does accept newlines).
      * function.c (func_foreach): Strip leading/trailing space.
      * variable.c (parse_variable_definition): Clean up.
      * tests/scripts/functions/foreach: Test settings and errors.
      * tests/scripts/functions/call: Rewrite to new-style.
      * tests/scripts/misc/bs-nl: Add many more tests for newlines.
      e9715974
  11. 21 Mar, 2016 1 commit
  12. 20 Mar, 2016 2 commits
  13. 19 Mar, 2016 1 commit
  14. 13 Mar, 2016 4 commits
    • Paul Smith's avatar
      [SV 45728] Detect changes in .VARIABLES more accurately. · 9ae02b79
      Paul Smith authored
      For performance, we only recompute .VARIABLES when (a) it's expanded
      and (b) when its value will change from a previous expansion.  To
      determine (b) we were checking the number of entries in the hash
      table which used to work until we started undefining entries: now if
      you undefine and redefine the same number of entries in between
      expanding .VARIABLES, it doesn't detect any change.  Instead, keep
      an increasing change number.
      * variables.c: Add variable_changenum.
      (define_variable_in_set, merge_variable_sets): Increment
      variable_changenum if adding a new variable to the global set.
      (undefine_variable_in_set): Increment variable_changenum if
      undefining a variable from the global set.
      (lookup_special_var): Test variable_changenum not the hash table.
      * tests/scripts/variables/special: Test undefining variables.
      9ae02b79
    • Paul Smith's avatar
    • Paul Smith's avatar
      [SV 46581] Pre-define .LOADED to avoid warnings. · e33f3d72
      Paul Smith authored
      * main.c (main): Pre-define .LOADED as a default-level variable.
      * load.c (load_file): Set the value rather than append it.  Avoid
      adding an extra initial whitespace.
      * tests/scripts/features/load: Run with --warn-undefined-variables.
      e33f3d72
    • Paul Smith's avatar
      [SV 44555] Use vfork() instead of fork() where available. · fd1dd7c3
      Paul Smith authored
      Testing has shown that vfork() is actually significantly
      more efficient on systems where it's supported, even for
      copy-on-write implementations.  If make is big enough,
      duplicating the page tables is significant overhead.
      
      * configure.ac: Check for fork/vfork.
      * makeint.h: Include vfork.h and set up #define for it.
      * os.h, posixos.c (get_bad_stdin): For children who can't use
      the normal stdin file descriptor, get a broken one.
      * job.c (start_job_command): Avoid so many ifdefs and simplify
      the invocation of child_execute_job()
      (child_execute_job): move the fork operation here so it can
      return early for the parent process.  Switch to use vfork().
      * function.c (func_shell_base): Use new child_execute_job() and
      simplify ifdefs.
      * job.h, main.c, remote-cstms.c, vmsjobs.c, w32os.c: Update
      declarations and calls.
      fd1dd7c3
  15. 09 Mar, 2016 4 commits
    • Paul Smith's avatar
    • Paul Smith's avatar
      [SV 46261] Use pselect() for jobserver where supported. · 85c78857
      Paul Smith authored
      * Makefile.am, configure.ac: Check for pselect() and sys/select.h.
      * main.c (main): Block SIGCHLD if we have pselect() support.
      * posixos.c (jobserver_acquire): If we support pselect() then use
      it to query the jobserver pipe, while also listening for SIGCHLD.
      Also pselect() supports a timeout so avoid alarm() calls.
      85c78857
    • Paul Smith's avatar
      Clean up some compiler warnings. · 8164c8ab
      Paul Smith authored
      * commands.c, commands.h: Use unsigned char for flags.
      * dir.c: Use time_t and size_t, and char for a boolean value.
      * job.c: Use unsigned and char.
      * read.c: Return a signed type since -1 is a valid return code.
      8164c8ab
    • Paul Smith's avatar
      Extract jobserver implementation into OS-specific files. · fb7a7adc
      Paul Smith authored
      * os.h, posixos.c, w32/w32os.c: New files implementing jobserver.
      * job.c, job.h, main.c, makeint.h: Move content to new files.
      * w32/include/sub_proc.h, w32/subproc/sub_proc.c: Ditto.
      * Makefile.am: Build and package OS-specific files.
      * build_w32.bat, make_msvc_net2003.vcproj, README.W32.template:
      Update for new files, and clean up the build.
      * POTFILES.in, maintMakefile, NMakefile.template: Ditto.
      * w32/subproc/build.bat: Delete as unused.
      fb7a7adc