Mail Archives: djgpp/2016/06/12/13:18:39
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f
|
X-Recipient: | djgpp AT delorie DOT com
|
Message-ID: | <575D996C.1000507@gmx.de>
|
Date: | Sun, 12 Jun 2016 19:18:36 +0200
|
From: | "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via djgpp AT delorie DOT com]" <djgpp AT delorie DOT com>
|
User-Agent: | Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.13) Gecko/20101206 SUSE/3.1.7 Thunderbird/3.1.7
|
MIME-Version: | 1.0
|
To: | bug-make AT gnu DOT org, djgpp AT delorie DOT com
|
Subject: | Some DJGPP specific fixes for Make 4.2.1 and later.
|
X-Provags-ID: | V03:K0:Oh0KC4Ty421yWKuSnRPLqVENmNT3XD17dH7Z2Sa9kRbINr9bMYx
|
| SUB6HrrAvFDHU6e56ZyCwwPT1oDLrnLEIeP64tqTRmRAPwdELVaBv4pBpqY53haY33g4hOe
|
| NJ/KMYE3gC8fMwCIIlHhMHewOHEOmkFMn4qXjpZ65DvwMQFtXG0jAzaOzstEnzVfviADo6s
|
| vyA4wb3BdwSWOq8bd+DEg==
|
X-UI-Out-Filterresults: | notjunk:1;V01:K0:K8PQIUMTKc0=:n1Q9CJGNy1VG+FXBJtCRZL
|
| gKn13CeDr7IgI5w38Z1o4uyvsJEDKXD19lNt8qx8IX8tT6GK6AzqyDYXewdbqHadOufMAJ/N/
|
| SiWcO7rN2JMYHcL0nWuAfxFZBuQz64N+i9YofIaD8ibCaeriYV42ZyIrR0hWYKaB8GzKYhgeU
|
| j4zYn/t9n024PRFvjV7qSxTfZXUdFoa73J8GME3ENZSzvF5AmVbxSBqzAX9SaiaPR1OiKpviV
|
| +pyKZIFxOmMfKthSQ0iy1fIIBDcOQcjUlm05nKXoncZ8hlqIz2sYGGrLofrbBXbv4RfOMUL7l
|
| NJFvfhXuc/RMl1Ba3mDgyY6nt+QCP2kjJdHNrm8fkNV6MlMFM1ya/8ouDNoRGQwrr+jJ8a3re
|
| iodOZILOMx5Y5gvxop1VgdCLnbXoI1Ip3p/jL++Zw/Z03KU1qGxVajJhIP0j6cllIc8Q8nVir
|
| msu3T10Ha8lGpszfTSQ1DVOFrEyTIvcniL8prRCHuetVvkakjEbCMbtYIUnd4sy3RV9GxS4l8
|
| Bf0HD/TPyP7sNCJTjOqFYIoe9pb57kSFoZH3KYxR6f7r9yzRFhRQpGbgK8esxZkkXabljNPb7
|
| JkM17IWu1sIkV4yHLX9/jJArUGFQH5qxkGLH0uSDgHPBLlpx2Zt1XYGyzhDq54nVErP/p/Mmm
|
| Rzi5cFj4BSZmzkq7pFbTsxZrnsfW8pQqiKvVUBBcsuiyx6LXVef7mt86JUOg4jcOyj76W4O4X
|
| DSiq1YFTp9TZ22MznPArgd00DSuZHM0iYoDWdaSuM8fKI7f3b1seLOyQ7UWpVHt8WfTBKzYvR
|
| 92Qbxy2
|
Reply-To: | djgpp AT delorie DOT com
|
I would like to suggest some fixes that are DJGPP specific but that may also be
usefull for other systems.
A) General issues.
- The current version produces for absolute every run the warning:
"Parallel jobs (-j) are not supported on this platform."
although "-j" has never been passed as argument to the make program.
The reason is that arg_job_slots is initialized to -1 and no code
changes this value to 1 for platforms that do not support parallel
jobs. Because -1 is different to 1, the warning is countinuously
issued. An explicit check for greather than 1 seems the better
approach. Please inspect the patch below.
- For systems like MSDOS, WINDOWS32 and other ones, the function get_bad_stdin
is defined as a no-op macro in os.h but at the same time exists an
implementation of the function in posixos.c. This implementation
is always compiled no matter if __MSDOS__ and/or MAKE_JOBSERVER is
defined or not in posixos.c. To avoid this contradiction, I have put
the get_bad_stdin definition inside the same #ifdef than the ones used
in os.h. Please inspect the patch. This approach is only a suggestion;
may be there is a different way to solve this issue.
B) DJGPP specific issues.
- Use "/dev/env/DJDIR" to get the installation directory instead of the
hard coded "c:/djgpp".
- Support the creation of documentation in pdf format. The Makefile.DOS
has been adjusted accordingly
As usual suggestions, objections, comments are welcome.
Regards,
Juan M. Guerrero
2016-06-12 Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
* Makefile.DOS: Added rule to create pdf formated documentation.
* dosbuild.bat: Use /dev/env/DJDIR instead of c:/djgpp.
* main.c (main): Issue message about not supported parallel jobs only
if arg_job_slots is set greather than 1.
* posixos.c (get_bad_stdin): Compile only if not replaced by macro
defined in os.h.
diff -aprNU8 make-4.2.1.orig/dosbuild.bat make-4.2.1/dosbuild.bat
--- make-4.2.1.orig/dosbuild.bat 2016-02-28 18:48:44 +0100
+++ make-4.2.1/dosbuild.bat 2016-06-12 17:13:24 +0200
@@ -21,18 +21,18 @@ rem Echo ON so they will see what is goi
@echo on
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g commands.c -o commands.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g output.c -o output.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g job.c -o job.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g dir.c -o dir.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g file.c -o file.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g misc.c -o misc.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g main.c -o main.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g read.c -o read.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g remake.c -o remake.o
+gcc -c -I. -I./glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"/dev/env/DJDIR/include\" -O2 -g read.c -o read.o
+gcc -c -I. -I./glob -DHAVE_CONFIG_H -DLIBDIR=\"/dev/env/DJDIR/include\" -O2 -g remake.c -o remake.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g rule.c -o rule.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g implicit.c -o implicit.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g default.c -o default.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g variable.c -o variable.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g expand.c -o expand.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g function.c -o function.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g vpath.c -o vpath.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g hash.c -o hash.o
diff -aprNU8 make-4.2.1.orig/main.c make-4.2.1/main.c
--- make-4.2.1.orig/main.c 2016-05-31 09:17:26 +0200
+++ make-4.2.1/main.c 2016-06-12 17:13:24 +0200
@@ -2039,19 +2039,22 @@ main (int argc, char **argv, char **envp
#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS)
if (arg_job_slots != 1
# ifdef __EMX__
&& _osmode != OS2_MODE /* turn off -j if we are in DOS mode */
# endif
)
{
- O (error, NILF,
- _("Parallel jobs (-j) are not supported on this platform."));
- O (error, NILF, _("Resetting to single job (-j1) mode."));
+ if (arg_job_slots > 1)
+ {
+ O (error, NILF,
+ _("Parallel jobs (-j) are not supported on this platform."));
+ O (error, NILF, _("Resetting to single job (-j1) mode."));
+ }
arg_job_slots = job_slots = 1;
}
#endif
/* If we have >1 slot at this point, then we're a top-level make.
Set up the jobserver.
Every make assumes that it always has one job it can run. For the
diff -aprNU8 make-4.2.1.orig/Makefile.DOS make-4.2.1/Makefile.DOS
--- make-4.2.1.orig/Makefile.DOS 2016-06-11 01:03:54 +0200
+++ make-4.2.1/Makefile.DOS 2016-06-12 17:16:20 +0200
@@ -108,19 +108,21 @@ make_DEPENDENCIES = glob/libglob.a
make_LDFLAGS =
libglob_a_LIBADD =
libglob_a_OBJECTS = fnmatch.o glob.o
noinst_LIBRARIES = glob/libglob.a
CFLAGS = -O2 -g
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
TEXINFO_TEX = $(srcdir)/config/texinfo.tex
INFO_DEPS = doc/make.info
DVIS = doc/make.dvi
+PDFS = doc/make.pdf
TEXINFOS = doc/make.texi
noinst_TEXINFOS = doc/fdl.texi doc/make-stds.texi
man1dir = $(mandir)/man1
MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 alloca.c build.sh-in config.h-in configure configure.ac getloadavg.c
@@ -130,17 +132,17 @@ TAR = gtar
GZIP = --best
SOURCES = $(make_SOURCES)
OBJECTS = $(make_OBJECTS)
HEADERS = $(wildcard $(srcdir)/*.h)
default: all
.SUFFIXES:
-.SUFFIXES: .c .dvi .info .o .obj .ps .texi .tex .html
+.SUFFIXES: .c .dvi .info .o .obj .pdf .ps .texi .tex .html
mostlyclean-hdr:
clean-hdr:
distclean-hdr:
-rm -f config.h
@@ -184,16 +186,17 @@ make$(EXEEXT): $(make_OBJECTS) $(make_DE
@command.com /c if exist make del make
@command.com /c if exist make.exe del make.exe
$(LINK) $(make_LDFLAGS) $(make_OBJECTS) $(make_LDADD) $(LIBS)
# Documentation
make.info: make.texi
make.dvi: make.texi
+make.pdf: make.texi
make.ps: make.dvi make.texi
make.html: make.texi
DVIPS = dvips
.texi.info:
@command.com /c if exist make.info* del make.info*
@@ -203,16 +206,19 @@ DVIPS = dvips
.texi:
@command.com /c if exist make.info* del make.info*
@command.com /c if exist make.i* del make.i*
$(MAKEINFO) -I$(srcdir) --no-split $< -o ./$@
.texi.dvi:
TEXINPUTS="$(srcdir);$$TEXINPUTS" MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
+.texi.pdf:
+ TEXINPUTS="$(srcdir);$$TEXINPUTS" MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2PDF) $<
+
.dvi.ps:
$(DVIPS) $< -o $@
# Other documentation formats
html: html-recursive
.texi.html:
@@ -236,17 +242,17 @@ dist-info: $(INFO_DEPS)
for base in $(INFO_DEPS); do d=$(srcdir); for file in `cd $$d && eval echo $$base*`; do test -f $(distdir)/$$file || ln $$d/$$file $(distdir)/$$file 2> /dev/null || cp -p $$d/$$file $(distdir)/$$file; done; done
mostlyclean-aminfo:
-rm -f $(srcdir)/doc/make.aux $(srcdir)/doc/make.cp $(srcdir)/doc/make.cps $(srcdir)/doc/make.dvi \
$(srcdir)/doc/make.fn $(srcdir)/doc/make.fns $(srcdir)/doc/make.ky $(srcdir)/doc/make.kys \
$(srcdir)/doc/make.ps $(srcdir)/doc/make.log $(srcdir)/doc/make.pg $(srcdir)/doc/make.toc \
$(srcdir)/doc/make.tp $(srcdir)/doc/make.tps $(srcdir)/doc/make.vr $(srcdir)/doc/make.vrs \
$(srcdir)/doc/make.op $(srcdir)/doc/make.tr $(srcdir)/doc/make.cv $(srcdir)/doc/make.cn \
- $(srcdir)/doc/make.html
+ $(srcdir)/doc/make.html $(srcdir)/doc/make.pdf
clean-aminfo:
distclean-aminfo:
maintainer-clean-aminfo:
for i in $(INFO_DEPS); do rm -f $$i*; done
@@ -388,16 +394,24 @@ endif
dvi: dvi-recursive
dvi-recursive:
ifeq ($(findstring doc, $(SUBDIRS)), doc)
@command.com /c if not exist doc\\nul md doc
@echo Making all in doc
$(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.dvi
endif
+pdf: pdf-recursive
+pdf-recursive:
+ifeq ($(findstring doc, $(SUBDIRS)), doc)
+ @command.com /c if not exist doc\\nul md doc
+ @echo Making all in doc
+ $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.pdf
+endif
+
ps: ps-recursive
ps-recursive:
ifeq ($(findstring doc, $(SUBDIRS)), doc)
@command.com /c if not exist doc\\nul md doc
@echo Making all in doc
$(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.ps
endif
diff -aprNU8 make-4.2.1.orig/posixos.c make-4.2.1/posixos.c
--- make-4.2.1.orig/posixos.c 2016-05-21 22:21:52 +0200
+++ make-4.2.1/posixos.c 2016-06-12 17:13:24 +0200
@@ -395,16 +395,17 @@ jobserver_acquire (int timeout)
return 0;
}
#endif
#endif /* MAKE_JOBSERVER */
+#if !defined(VMD) && !defined(WINDOWS32) && !defined(_AMIGA) && !defined(__MSDOS__)
/* Create a "bad" file descriptor for stdin when parallel jobs are run. */
int
get_bad_stdin (void)
{
static int bad_stdin = -1;
/* Set up a bad standard input that reads from a broken pipe. */
@@ -424,8 +425,9 @@ get_bad_stdin (void)
child's descriptor table. When it is dup2'd onto descriptor 0,
that descriptor will not close on exec. */
CLOSE_ON_EXEC (bad_stdin);
}
}
return bad_stdin;
}
+#endif
- Raw text -