OS4Depot.net 20130227_1013
  Home Search Mirrors Contact Info Credits

 Readme data for Root » Development » Utility » make-bin.lha

Description: GNU make including parallel compile
Install: make-bin.lha
Size: 384kb 5
Version: 53.1
Date: 22 Jan 09
Author: Roland McGrath (port by Steven Solie)
Submitter: Steven Solie
Email: ssolie/telus net
Homepage: http://www.gnu.org/software/make/
Category: development/utility
License: GPL
Distribute: yes
Min OS Version: 4.0
SUMMARY
-------
This is a self-contained port of GNU make for AmigaOS.

For maximum compatibility two different executables are produced
from the same sources: make and gmake.

The make executable defaults to using AmigaShell to execute commands.
This is the version to use for Amiga-specific projects.

The gmake executable defaults to using abc-shell to execute commands.
This is the version to use for maximum portability and porting
applications from other platforms.

Both executables behave more correctly and more consistently than
previous make ports. POSIX compliance has been chosen over Amiga-only
features. Be sure to review the NEWS file as well as the make 3.81
baseline has had many changes and old broken makefiles may no
longer work.


PATH CONVERSION FUNCTIONS
-------------------------
Two additional make functions have been made available to convert
to and from POSIX-style paths.

$(amigapath from)
  Performs a conversion from the supplied POSIX-style path to the
  returned AmigaOS-style path.

$(posixpath from)
  Performs a conversion from the supplied AmigaOS-style path to the
  returned POSIX-style path.


PARALLEL MAKE
-------------
Parallel execution is supported via the -j or --jobs option.
There is no limit on the number of parallel processes.

Please review the following short article before jumping to any
conclusions about parallel make being "broken":

 http://developers.sun.com/solaris/articles/parallel_make.html


DEBUGGING
---------
As a special debugging feature the --debug=j option will not delete
any temporary files. This is very helpful when you are trying to
determine if GNU make or abc-shell or the command itself is at fault.


SHELL
-----
You may choose which shell to execute a command with using the SHELL
make variable as documented in the GNU make manual. Note the shell path
is always a POSIX-style path.


HISTORY
-------
53.1        - compiled with GCC 4.2.4 and clib2 1.204 which fixes
              infrequent floating point alignment issues

52.1        - changed to new versioning scheme
            - now requires dos.library 52.5 or greater for alias support
            - fixed problem with sending CTRL-C to all child processes of
              the launching shell
            - fixed output of text when redirected to a file which used
              to get all jumbled up

3.81-7      - fixed problem with command_execute returning with an
              exit code of 127 even when it succeeded
              (thanks Andy Broad)
            - fixed problem with lost output text when using
              command_execute (thanks Andy Broad)
            - removed extra line feed in sh command lines

3.81-6      - compiled with latest beta SDK
            - fixed problem with lost aliases when using AmigaShell
              (thanks Daniel Allsopp)
            - added new amigapath and posixpath make functions to
              convert from one path style to the other

3.81-5      - now uses case-sensitive comparisons no matter what the
              underlying file system is capable of for maximum
              compatibility during porting
              (thanks Henning Nielsen Lund)
            - removed workaround for shell 51.x
            - removed support for AmigaOS device names; it is just
              impossible to parse out targets from device names
              (thanks Thore Böckelmann)
            - now uses getopt() from clib2
            - cleaned up Makefile.AmigaOS

3.81-4      - fixed environ building to exclude all subdirectories
              (thanks Tony Wyatt)
            - added exclusion of .xml variables from environ 
            - compiled with clib2 CVS dated 2006-11-18

3.81-3      - fixed pattern substitution rules to work correctly when
              you have patterns like "$(LIBOBJECTS):%.o:%.c importinc"
              (thanks Thore Böckelmann)

3.81-2      - changed exit code to EXIT_FAILURE on fatal signal
            - fixed break processing so the parent signals the child
              processes now (thanks Colin Wenzel)
            - added custom __check_abort() to signal child processes
              from clib2 function calls
            - added extra code to cleanup stray child processes at
              exit just in case

3.81-1      - merged with final 3.81 make sources
            - updated AmigaOS file copyright notices
            - disabled DOS requesters
            - changed default variables: CC, C++, CXX, CXXLD, LEX to
              standard SDK tools (thanks Henning Nielsen Lund)

3.81rc2-6   - fixed readme typo (thanks David Rey)
            - fixed error stream synchronization issue
              (thanks Thomas Hoffmann)

3.81rc2-5   - compiled with SDK 51.22
            - updated to clib2 1.200
            - stderr stream is utilized again when executing commands
              (thanks Thomas Hoffmann)

3.81rc2-4   - fixed make path conversion in AmigaShell version which
              makes it possible to specify make's file path
            - updated copyright banners in Amiga-specific files
            - re-implemented the '()()' token in the AmigaShell version
              which enables you to execute multi-line commands, e.g.
                if exists make ()()\
                  list make ()()\
                endif

3.81rc2-3   - recomplied with beta SDK 51.20
            - fixed bug which was not translating make's path correctly
              which broke the "cd dir && make" idiom

3.81rc2-2   - removed child process limit by switching to using
              death notification messages
            - fixed a memory leak in amiga_execvp
            - further improved error handling

3.81rc2-1   - merged with official 3.81rc2 code base
            - removes backslash newlines when executing commands with
              AmigaShell (POSIX requirement)
            - now uses ProcessScan() for breaking child processes

3.81beta4-3 - compiled with clib2 1.199
            - fixed bug which was stripping double-quotes in shell commands,
              they are not supposed to be stripped away
              (bug introduced in 3.81beta3-1)
            - fixed problem with deleting files during the child
              process exit routine; now done by the parent process instead

3.81beta4-2 - compiled with beta SDK 51.17
            - added UNUSED definition check to make.h
            - split into two executables: make (AmigaShell default) and
              gmake (abc-shell default)
            - removed AmigaShell support from gmake

3.81beta4-1 - merged with official 3.81beta4 code base
            - now filters out env vars containing ".cfg" sub-string
            - changed wait() to avoid infinite looping
            - compiled with GCC 4.0.2 and clib2 1.198
            - removed job launch delay
            - now uses new dos.library features to eliminate spawning
              extra processes and environment fiddling
            - return code is now left untouched; this may break some
              Amiga-only makefiles but it will ensure correct behaviour
              for all UN*X makefiles so I think it is worth it
            - fixed Makefile.AmigaOS to enable parallel make
            - added automatic dependency generation to Makefile.AmigaOS
            - added archive support (e.g. foolib(hack.o))
            - requires at least AmigaOS 4.0 update 4 to work correctly

3.81beta3-2 - added code to open CONSOLE: when executing commands
              which fixes problems with ctrl-c breaking
              (thanks Jeff Gilpin)
            - fixed problem with wait() returning SIGINT which
              caused problems cleaning up during parallel make
            - added back in special handling of targets so that it
              is possible to have Amiga-style paths in target names
              as may be output by the gcc tools (thanks Andy Broad)
            - now names SystemTags() process as make.executor
            - added debug feature to keep temp files if level is 'j'
            - fixed possible memory leak in function execution
            - updated to use clib2 from CVS dated 2005-10-26

3.81beta3-1 - merged with official 3.81beta3 code base
            - re-applied .ALIAS patch under conditional compile which
              is only required for compiling AWeb
            - added parallel execution (-j) support
            - fixed ctrl-c interrupt support
            - BSD style error code (1) is passed through untouched
              (thanks Alan Broad)
            - removed support for the MAKESHELL variable (obsolete)
            - added support for the SHELL variable (thanks Alan Broad)
            - set SHELL to the shell to use to execute commands
            - note SHELL is never set from the environment (see make docs)
            - don't set SHELL or set SHELL to nothing to use AmigaShell
            - if you use a path for SHELL it must be a Un*x-style path
            - when SHELL is defined the backslash-newline-tab sequence
              is handled according to POSIX
            - MAKE & MAKE_COMMAND is set to a Un*x-style path and
              converted to an Amiga-style path at execution time when
              required (thanks Alan Broad)
            - don't forget to escape your quotes with backslash or
              make will parse them away now
            - added slight delay when launching parallel jobs to help
              avoid flooding the system
            - compiled with clib2 1.196
            - added version suffix to help with package labelling
            - added SIGINT handler
            - now filters out env vars containing ".prefs" sub-string

27/09/2005 - added variable export support
           - command environment is now properly controlled which may
             slow down execution
           - removed broken MAKELEVEL global environment variable setting;
             let me know if it breaks anything
           - added MAKESHELL support so the user can choose which
             shell will be used to execute commands
           - leave MAKESHELL unset to use the default AmigaOS shell
           - set MAKESHELL to SDK:Local/C/sh to use bourne shell
           - fixed the $(shell) function to have consistent behaviour
           - updated to clib2 1.195 + tmpnam fix
           - compiled with SDK 51.15
           - filters out env vars that are not plain ASCII

17/07/2005 - adjusted config.amigaos file for newest clib2
           - merged in .ALIAS support for compiling AWeb
           - enabled floating point support
           - added help target with target explanations

19/02/2005 - fixed char eating bug reported by Steen Lund Nielsen
             fixed more pathing issues
             executes each shell command one at a time now
             added more memory allocation failure checks
             default paths were not set correctly
             command path is converted to AmigaOS path before execution
             adjusted AmigaOS makefiles to use UNIX paths

11/02/2005 - removed the AmigaOS enhancements
             moved to UNIX paths

06/02/2005 - applied env import fix from Sebastian Bauer

05/02/2005 - fixed removal of temporary files
             fixed another bug in $(shell) function

03/02/2005 - fixed crashing with wrong $(shell) command
             improved memory handling
             removed debug code during compile
             increased size of internal buffers
             updated config.h to use new clib2 features

24/06/2004 - make included with OS4 SDK 51.5

??/??/???? - unknown changes


CREDITS
-------
Original SAS/C Amiga port for 68k AmigaOS by Aaron "Optimizer" Digulla

Initial AmigaOS 4.0 port by Hans-Jörg Frieden
 (Hans-JoergF()hyperion-entertainment.com)

Further modifications for AmigaOS 4.x by Steven Solie
 (ssolie()telus.net)

-------------------------------------------------------------------------------
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 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 2, 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
GNU Make; see the file COPYING.  If not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.





Copyright (c) 2004-2013 Björn Hagström. All rights reserved.
OS4 and its logos are registered trademarks of Hyperion Entertainment