delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2007/11/26/11:11:01

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
Message-Id: <200711261609.lAQG9OTu001728@delorie.com>
X-Authenticated: #27081556
X-Provags-ID: V01U2FsdGVkX184MAR1IfI4jLznTAps8APq+u4UHWx7EO/5kPsodj
wjA4TlBgaMirwZ
From: Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
To: djgpp-announce AT delorie DOT com
Subject: ANNOUNCE: DJGPP port of GNU Make 3.81 uploaded
Date: Sun, 25 Nov 2007 08:43:25 +0100
X-Y-GMX-Trusted: 0

This is a port of GNU Make 3.81 to MSDOS/DJGPP.

  Make is a program for building other programs, given a description of
  the dependencies between the files.


  DJGPP specific changes.
  =======================

  The are two kind of required djgpp specific changes to the sources:
  1) Those ones required to get the sources configured and compiled at all.
     This is because the djgpp port has not been actively maintained by the
     Make maintainers since a couple of years.
  2) Those changes required to get a working binary.  This concerns two
     different points.  First the correct handling of the path strings;
     here new functions have been introduced that are written in a unix centric
     way, completely ignore the DOS specific path syntax like leading drive
     letters and backslashes as directory separator.  Second and more difficult
     to solve is that there is a posix rule that seems to impose that the value
     of the SHELL Makefile variable is no longer exported automatically.  This
     has the consequence that when the system() function of djgpp's libc is
     called to execute some bash shell script that is contained in the Makefile,
     because SHELL has been deleted from the environment, the default shell of
     MSDOS, command.com is invoked to execute it.  Of corse, command.com is not
     able at all to interpret that bash script and the Makefile execution is
     aborted with an error message from command.com that is usually very
     difficult to relate to the real error reason.

  After inspecting the bug mailing list of GNU make I found a patch proposed by
  Eli Zaretskii some years ago that tried to address those issues.  It can be
  inspected at:
    <http://lists.gnu.org/archive/html/bug-make/2005-02/msg00022.html>
  It is completely unclear to me why those propositions have not been adopted.
  After having fixed some bugs in the logic that handles the path strings, the
  patch propossed by Eli has become a very good starting point for this port.
  The real difficult issue is that the SHELL value is no longer exported so that
  on non-POSIX systems like MSDOS/WINDOWS the default shell (command.com or
  cmd.exe) is used.  This POSIX rule breaks backward compatibily of the DJGPP
  port of make and is really a show stopper because it breaks Makefiles in non-
  POSIX environments like MSDOS.  There are two ways to solve this issue:
  1) Impose to the user to explicitly set the environment variables SHELL and/or
     the new MAKESHELL to bash.
  2) Patch the code in such a way that it exports the SHELL value from the
     Makefile as it used to be.
  The first approach can be done by adding to djgpp.env the following lines:

    [make]
    MAKESHELL=/bin/sh

  In the end, this modification should be done in the CVS version from djgpp.env
  by the maintainers of djgpp.  Because it can not be assumed that a new update
  of djgpp will be released in the near future I have opted for the second
  approach.

  The things I have changed are documented as usual with the diffs files stored
  in /djgpp.  The diffs1 file is almost identical to Eli's patch.  diffs2 contains
  my bug-fixes to diffs1 and some other changes.  diffs3 contains mostly those
  changes required to get the testsuite running.  There are two kind of fixes
  here:
  1) The error message issued by djgpp's libc when a file is not found always
     includes a string like (ENOENT).  The gnu libc seems not to issue such a
     string.  This difference confuses the testsuite and lets it claim that
     the particular test case has failed.
  2) There is a test case that plays around with the SHELL variable.  Because I
     have modified the make code to export the SHELL value, this test case will
     not work and I have inhibt it at all.

  No test shall fail.  To run the testsuite you need a port of perl and bash
  installed.

  If you want to apply the patches to the original sources downloaded from some
  gnu.org mirror, you have to apply first diffs1 then diffs2 and last diffs3.


  Please read the Make specific news, readme and changelog files for more
  information.



  Please note that there will be no binary archive compiled with djdev203.
  Using djdev203 increases the amount of porting work even more and I have not
  the time to waist it in such a task.  Anyway the binaries produced with
  djdev204 are as good as the ones produced with stock djdev203.
  The source archive is not SFN clean.  To compile the sources you will need
  some OS with LFN support like Win98 or WinXP.  Also the testsuite requires
  long filename support.


  The port consists of the usual three packages that have been compiled
  using djdev204 and it can be downloaded from ftp.delorie.com and mirrors
  as (timestamp 2007-11-25):

    Make 3.81 binary, info and man format documentation:
    ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/mak381b.zip

    Make 3.81 html, dvi, pdf and ps format documentation:
    ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/mak381d.zip

    Make 3.81 source:
    ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/mak381b.zip


  Send GNU Marst specific bug reports to <bug-make AT gnu DOT org>.
  Send suggestions and bug reports concerning the DJGPP port to
  comp.os.msdos.djgpp or <djgpp AT delorie DOT com>.


Enjoy.

        Guerrero, Juan Manuel <juan DOT guerrero AT gmx DOT de>

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019