diff --git a/.gitignore b/.gitignore index 07649663..89036d48 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ ID TAGS .*gdbinit .gdb_history +.vscode *~ #* .#* @@ -11,6 +12,7 @@ TAGS ABOUT-NLS Makefile Makefile.in +Basic.mk aclocal.m4 autom4te.cache config.cache @@ -44,13 +46,10 @@ GccRel/ .dep_segment .check-git-HEAD ChangeLog -Makefile.DOS -NMakefile README README.DOS README.OS2 README.W32 -SMakefile build.sh build.sh.in config.ami diff --git a/Basic.mk.template b/Basic.mk.template new file mode 100644 index 00000000..ab45f87f --- /dev/null +++ b/Basic.mk.template @@ -0,0 +1,103 @@ +# Basic GNU -*-Makefile-*- to build GNU make +# +# NOTE: +# If you have no 'make' program at all to process this makefile: +# * On Windows, run ".\buildw32.bat" to bootstrap one. +# * On MS-DOS, run ".\builddos.bat" to bootstrap one. +# +# Once you have a GNU make program created, you can use it with this makefile +# to keep it up to date if you make changes, as: +# +# make.exe -f Makew32.mk +# +# Copyright (C) 2017 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 3 of the License, 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 +# this program. If not, see . + +all: + +make_SOURCES = %make_SOURCES% remote-stub.c +glob_SOURCES = %glob_SOURCES% +w32_SOURCES = %w32_SOURCES% +vms_SOURCES = %vms_SOURCES% +amiga_SOURCES = %amiga_SOURCES% + +OUTDIR = . +SRCDIR = . + +OBJEXT = o +EXEEXT = + +PROG = $(OUTDIR)/make$(EXEEXT) + +LD = $(CC) + +# Reserved for command-line override +CPPFLAGS = +CFLAGS = -g -O2 +LDFLAGS = + +prog_SOURCES = $(make_SOURCES) + +extra_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR) -I$(SRCDIR) +extra_CFLAGS = +extra_LDFLAGS = $(extra_CFLAGS) $(CFLAGS) + +C_SOURCE = -c +OUTPUT_OPTION = -o $@ +LINK_OUTPUT = -o $@ + +# Command lines + +COMPILE.cmd = $(CC) $(extra_CFLAGS) $(CFLAGS) $(extra_CPPFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OUTPUT_OPTION) $(C_SOURCE) $< + +LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) $(LINK_OUTPUT) + +CHECK.cmd = cd tests && ./run_make_tests -make $(shell cd $(. - -SHELL = /bin/sh - -srcdir = . -VPATH = $(srcdir) -# $DJDIR is defined automatically by DJGPP to point -# to the root of the DJGPP installation tree. -prefix = /dev/env/DJDIR -exec_prefix = ${prefix} - -bindir = /bin -datadir = /share -libdir = /lib -infodir = /info -mandir = /man -includedir = /include -oldincludedir = c:/djgpp/include - -DESTDIR = /dev/env/DJDIR - -pkgdatadir = $(datadir)/make -pkglibdir = $(libdir)/make -pkgincludedir = $(includedir)/make -localedir = $(datadir)/locale - -INSTALL = ${exec_prefix}/bin/ginstall -c -INSTALL_PROGRAM = ${exec_prefix}/bin/ginstall -c -INSTALL_DATA = ${exec_prefix}/bin/ginstall -c -m 644 -INSTALL_SCRIPT = ${exec_prefix}/bin/ginstall -c -transform = s,x,x, - -# This will fail even if they don't have a Unix-like shell (stock DOS -# shell doesn't know about `false'). The only difference is that they -# get "Error -1" instead of "Error 1". -EXIT_FAIL = false - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -EXEEXT = .exe -OBJEXT = o - -AR = ar -AWK = gawk -CC = gcc -CPP = gcc -E -LIBOBJS = -MAKEINFO = ${exec_prefix}/bin/makeinfo -PACKAGE = make -PERL = perl -RANLIB = ranlib -REMOTE = stub -VERSION = %VERSION% - -AUTOMAKE_OPTIONS = 1.2 - -bin_PROGRAMS = %PROGRAMS%$(EXEEXT) - -make_SOURCES = %SOURCES% -# This should include the glob/ prefix -libglob_a_SOURCES = %GLOB_SOURCES% -make_LDADD = glob/libglob.a - -man_MANS = make.1 - -INCLUDES = -I$(srcdir)/glob -DLIBDIR=\"$(prefix)$(libdir)\" -DINCLUDEDIR=\"$(prefix)$(includedir)\" -DLOCALEDIR=\"$(prefix)$(localedir)\" - -BUILT_SOURCES = README build.sh-in - -EXTRA_DIST = $(BUILT_SOURCES) $(man_MANS) README.customs remote-cstms.c make-stds.texi texinfo.tex SCOPTIONS SMakefile Makefile.ami README.Amiga config.ami amiga.c amiga.h NMakefile README.DOS configh.dos configure.bat makefile.com README.W32 build_w32.bat config.h-W32 subproc.bat make.lnk config.h-vms makefile.vms README.VMS vmsdir.h vmsfunctions.c vmsify.c gmk-default.scm gmk-default.h - -SUBDIRS = glob doc -mkinstalldirs = ${exec_prefix}/bin/gmkdir -p -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = build.sh -PROGRAMS = $(bin_PROGRAMS) - -MAKE_HOST = i386-pc-msdosdjgpp - - -DEFS = -I. -I$(srcdir) -I. -CPPFLAGS = -DHAVE_CONFIG_H -LDFLAGS = -LIBS = -make_OBJECTS = %OBJECTS% -make_DEPENDENCIES = glob/libglob.a -make_LDFLAGS = -libglob_a_LIBADD = -libglob_a_OBJECTS = %GLOB_OBJECTS% -noinst_LIBRARIES = glob/libglob.a -CFLAGS = -O2 -g -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ -TEXI2DVI = texi2dvi -TEXINFO_TEX = $(srcdir)/config/texinfo.tex -INFO_DEPS = doc/make.info -DVIS = doc/make.dvi -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 - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -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 - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f config.h - -maintainer-clean-hdr: - -mostlyclean-binPROGRAMS: - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -distclean-binPROGRAMS: - -maintainer-clean-binPROGRAMS: - -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do if test -f $$p; then echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`"; $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; else :; fi; done - -uninstall-binPROGRAMS: - $(NORMAL_UNINSTALL) - list='$(bin_PROGRAMS)'; for p in $$list; do rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`.exe; done - -.c.o: - $(COMPILE) -c $< - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) *$(EXEEXT) make.new core - -clean-compile: - -distclean-compile: - -rm -f *.tab.c *_tab.c - -maintainer-clean-compile: - -make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) - @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.ps: make.dvi make.texi -make.html: make.texi - - -DVIPS = dvips - -.texi.info: - @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: - @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) $< - -.dvi.ps: - $(DVIPS) $< -o $@ - -# Other documentation formats - -html: html-recursive - -.texi.html: - @command.com /c if exist make.html* del make.html* - $(MAKEINFO) --html -I$(srcdir) --no-split $< -o ./$@ - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(infodir) - @for file in $(INFO_DEPS); do iifile=`echo $$file | sed "s|doc/||"`; d=$(srcdir); for ifile in `cd $$d && echo $$file`; do if test -f $$d/$$ifile; then echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$iifile"; $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$iifile; else : ; fi; done; done - @$(POST_INSTALL) - @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then for file in $(INFO_DEPS); do iifile=`echo $$file | sed "s|doc/||"`; echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$iifile"; install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$iifile || :; done; else : ; fi - -uninstall-info: - $(PRE_UNINSTALL) - @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then ii=yes; else ii=; fi; for file in $(INFO_DEPS); do test -z $ii || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; done - $(NORMAL_UNINSTALL) - for file in $(INFO_DEPS); do (cd $(DESTDIR)$(infodir) && rm -f $$file); done - -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 - -clean-aminfo: - -distclean-aminfo: - -maintainer-clean-aminfo: - for i in $(INFO_DEPS); do rm -f $$i*; done - -install-man1: - $(mkinstalldirs) $(DESTDIR)$(man1dir) - @list='$(man1_MANS)'; \ - l2='$(man_MANS)'; for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ - done - -uninstall-man1: - @list='$(man1_MANS)'; \ - l2='$(man_MANS)'; for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ - rm -f $(DESTDIR)$(man1dir)/$$inst; \ - done -install-man: $(MANS) - @$(NORMAL_INSTALL) - $(MAKE) install-man1 -uninstall-man: - @$(NORMAL_UNINSTALL) - $(MAKE) uninstall-man1 - -# Assume that the only thing to do in glob is to build libglob.a, -# but do a sanity check: if $SUBDIRS will ever have more than -# a single directory, yell bloody murder. -all-recursive: -ifeq ($(findstring glob, $(SUBDIRS)), glob) - @command.com /c if not exist glob\\nul md glob - @echo Making all in glob - $(MAKE) -C glob -f ../Makefile INCLUDES='-I$(srcdir) -I$(srcdir)/glob' DEFS='-I.. -I$(srcdir)' VPATH=$(srcdir)/glob libglob.a -endif - -$(SUBDIRS): - command.com /c md $@ - -libglob.a: $(libglob_a_OBJECTS) - command.com /c if exist libglob.a del libglob.a - $(AR) cru libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD) - $(RANLIB) libglob.a - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive check-recursive: -ifeq ($(words $(SUBDIRS)), 2) - @echo Making $(shell echo $@ | sed s/-recursive//) in glob - $(MAKE) -C glob -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am - @echo Making $(shell echo $@ | sed s/-recursive//) in doc - $(MAKE) -C doc -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am -else - @echo FATAL: There is more than two directory in "($(SUBDIRS))" - @$(EXIT_FAIL) -endif - -tags-in-glob: $(libglob_a_SOURCES) - etags $(addprefix $(srcdir)/,$^) -o ./glob/TAGS - -tags-recursive: -ifeq ($(words $(SUBDIRS)), 2) - $(MAKE) tags-in-glob -else - @echo FATAL: There is more than two directory in "($(SUBDIRS))" - @$(EXIT_FAIL) -endif - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) - mkid $(srcdir)/$(SOURCES) $(srcdir)/$(libglob_a_SOURCES) ./config.h $(HEADERS) - -TAGS: tags-recursive $(HEADERS) $(srcdir)/$(SOURCES) config.h $(TAGS_DEPENDENCIES) - etags -i ./glob/TAGS $(ETAGS_ARGS) $(srcdir)/$(SOURCES) ./config.h $(HEADERS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - rm -rf $(distdir) - GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; cd $(distdir)/=build && ../configure --srcdir=.. --prefix=$$dc_install_base && $(MAKE) && $(MAKE) dvi && $(MAKE) check && $(MAKE) install && $(MAKE) installcheck && $(MAKE) dist - rm -rf $(distdir) - @echo "========================"; echo "$(distdir).tar.gz is ready for distribution"; echo "========================" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir) - rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir) - rm -rf $(distdir) -distdir: $(DISTFILES) - rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - @for file in $(DISTFILES); do d=$(srcdir); test -f $(distdir)/$$file || ln $$d/$$file $(distdir)/$$file 2> /dev/null || cp -p $$d/$$file $(distdir)/$$file; done; for subdir in $(SUBDIRS); do test -d $(distdir)/$$subdir || mkdir $(distdir)/$$subdir || exit 1; chmod 777 $(distdir)/$$subdir; (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir)/$$subdir distdir=../$(distdir)/$$subdir distdir) || exit 1; done - $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info - $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook - -info: info-recursive -info-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.info -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 - -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 - -html-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.html -endif - -check: all-am check-recursive check-local - @: -installcheck: installcheck-recursive -all-recursive-am: config.h - $(MAKE) all-recursive - -all-am: Makefile $(PROGRAMS) config.h info - -install-exec-am: install-binPROGRAMS - -install-data-am: install-info-am - -uninstall-am: uninstall-binPROGRAMS uninstall-info - -install-exec: install-exec-recursive install-exec-am - @$(NORMAL_INSTALL) - -install-data: install-data-recursive install-data-am - @$(NORMAL_INSTALL) - -install-recursive uninstall-recursive: - @: - -install: install-recursive install-exec-am install-data-am - @: - -uninstall: uninstall-recursive uninstall-am - -all: all-recursive-am all-am - -install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install -installdirs: installdirs-recursive - $(mkinstalldirs) $(bindir) $(infodir) - - -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f Makefile $(DISTCLEANFILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS mostlyclean-compile mostlyclean-aminfo mostlyclean-tags mostlyclean-generic - -clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-aminfo clean-tags clean-generic mostlyclean-am - -distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile distclean-aminfo distclean-tags distclean-generic clean-am - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS maintainer-clean-compile maintainer-clean-aminfo maintainer-clean-tags maintainer-clean-generic distclean-am - -mostlyclean: mostlyclean-recursive mostlyclean-am - -clean: clean-noinstLIBRARIES clean-recursive clean-am - -distclean: distclean-recursive distclean-am - rm -f config.status - -maintainer-clean: maintainer-clean-recursive maintainer-clean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f config.status - -.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \ -maintainer-clean-hdr mostlyclean-binPROGRAMS distclean-binPROGRAMS \ -clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \ -install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile install-info-am uninstall-info \ -mostlyclean-aminfo distclean-aminfo clean-aminfo \ -maintainer-clean-aminfo install-data-recursive uninstall-data-recursive \ -install-exec-recursive uninstall-exec-recursive installdirs-recursive \ -uninstalldirs-recursive all-recursive check-recursive check-am \ -installcheck-recursive info-recursive dvi-recursive \ -mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir \ -mostlyclean-depend distclean-depend clean-depend \ -maintainer-clean-depend info dvi check-local installcheck \ -all-recursive-am all-am install-exec-am install-data-am uninstall-am \ -install-exec install-data install uninstall all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean \ -html - - -# --------------- Local DIST Section - -# Install the w32 subdirectory -# -dist-hook: - (cd $(srcdir); \ - w32=`find w32 -follow \( -name .git -prune \) -o -type f -print`; \ - tar chf - $$w32) \ - | (cd $(distdir); tar xfBp -) - -# --------------- Local CHECK Section - -# Note: check-loadavg is NOT a prerequisite of check-local, since -# there's no uptime utility, and the test it does doesn't make sense -# on MSDOS anyway. -check-local: check-shell check-regression - @banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - echo - -.PHONY: check-loadavg check-shell check-regression - -# > check-shell -# -# check-shell is designed to fail if they don't have a Unixy shell -# installed. The test suite requires such a shell. -check-shell: - @echo If Make says Error -1, you do not have Unix-style shell installed - @foo=bar.exe : - -# > check-loadavg -# -loadavg: loadavg.c config.h - @rm -f loadavg - $(LINK) -DTEST $(make_LDFLAGS) loadavg.c $(LIBS) -# We copy getloadavg.c into a different file rather than compiling it -# directly because some compilers clobber getloadavg.o in the process. -loadavg.c: getloadavg.c - ln $(srcdir)/getloadavg.c loadavg.c || \ - cp $(srcdir)/getloadavg.c loadavg.c -check-loadavg: loadavg - @echo The system uptime program believes the load average to be: - -uptime - @echo The GNU load average checking code believes: - -./loadavg - -# > check-regression -# -# Look for the make test suite, and run it if found. Look in MAKE_TEST if -# specified, or else in the srcdir or the distdir, their parents, and _their_ -# parents. -# -check-regression: - @if test -f "$(srcdir)/tests/run_make_tests"; then \ - if $(PERL) -v >/dev/null 2>&1; then \ - case `cd $(srcdir); pwd` in `pwd`) : ;; \ - *) test -d tests || mkdir tests; \ - for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \ - rm -rf tests/$$f; cp -pr $(srcdir)/tests/$$f tests; \ - done ;; \ - esac; \ - echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS)"; \ - cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS); \ - else \ - echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ - fi; \ - else \ - echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \ - fi - -# --------------- Maintainer's Section - -# Note this requires GNU make. Not to worry, since it will only be included -# in the Makefile if we're in the maintainer's environment. -#include $(srcdir)/maintMakefile - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: - -# --------------- DEPENDENCIES diff --git a/Makefile.am b/Makefile.am index 86b1841e..89e345e7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -16,84 +16,89 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see . -AUTOMAKE_OPTIONS = dist-bzip2 silent-rules std-options +AUTOMAKE_OPTIONS = dist-bzip2 silent-rules std-options subdir-objects ACLOCAL_AMFLAGS = -I config MAKE_HOST = @MAKE_HOST@ -# Only process if target is MS-Windows -if WINDOWSENV - MAYBE_W32 = w32 - W32INC = -I $(top_srcdir)/w32/include - W32LIB = -Lw32 -lw32 - ossrc = -else - ossrc = posixos.c -endif - -SUBDIRS = glob config po doc $(MAYBE_W32) +SUBDIRS = glob config po doc bin_PROGRAMS = make include_HEADERS = gnumake.h -if USE_CUSTOMS - remote = remote-cstms.c -else - remote = remote-stub.c -endif - -make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c \ - function.c getopt.c getopt1.c guile.c implicit.c job.c load.c \ - loadapi.c main.c misc.c $(ossrc) output.c read.c remake.c \ - rule.c signame.c strcache.c variable.c version.c vpath.c \ - hash.c $(remote) - -EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c - -noinst_HEADERS = commands.h dep.h filedef.h job.h makeint.h rule.h variable.h \ - debug.h getopt.h gettext.h hash.h output.h os.h - -make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \ - $(GUILE_LIBS) -# Only process if target is MS-Windows -if WINDOWSENV - make_LDADD += $(W32LIB) -endif - man_MANS = make.1 -DEFS = -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@ +make_SRCS = ar.c arscan.c commands.c commands.h debug.h default.c dep.h \ + dir.c expand.c file.c filedef.h function.c getopt.c getopt.h \ + getopt1.c gettext.h guile.c hash.c hash.h implicit.c job.c \ + job.h load.c loadapi.c main.c makeint.h misc.c os.h output.c \ + output.h read.c remake.c rule.c rule.h signame.c strcache.c \ + variable.c variable.h version.c vpath.c + +glob_SRCS = glob/fnmatch.c glob/fnmatch.h glob/glob.c glob/glob.h + +w32_SRCS = w32/pathstuff.c w32/w32os.c w32/compat/dirent.c \ + w32/compat/posixfcn.c w32/include/dirent.h w32/include/dlfcn.h \ + w32/include/pathstuff.h w32/include/sub_proc.h \ + w32/include/w32err.h w32/subproc/misc.c w32/subproc/proc.h \ + w32/subproc/sub_proc.c w32/subproc/w32err.c + +vms_SRCS = vms_exit.c vms_export_symbol.c vms_progname.c vmsdir.h \ + vmsfunctions.c vmsify.c vmsjobs.c + +amiga_SRCS = amiga.c amiga.h + +make_SOURCES = $(make_SRCS) +EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) + +make_LDADD = $(GUILE_LIBS) $(LIBOBJS) $(ALLOCA) $(GLOBLIB) \ + @GETLOADAVG_LIBS@ @LIBINTL@ + +localedir = $(datadir)/locale + +AM_CPPFLAGS = -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" \ + -DLOCALEDIR=\"$(localedir)\" $(GLOBINC) -AM_CPPFLAGS = $(GLOBINC) AM_CFLAGS = $(GUILE_CFLAGS) -# Only process if target is MS-Windows + if WINDOWSENV - AM_CPPFLAGS += $(W32INC) + make_SOURCES += $(w32_SRCS) + AM_CPPFLAGS += -I $(top_srcdir)/w32/include +else + make_SOURCES += posixos.c endif +if USE_CUSTOMS + make_SOURCES += remote-cstms.c +else + make_SOURCES += remote-stub.c +endif # Extra stuff to include in the distribution. +mk_FILES = Basic.mk mk/Amiga.mk mk/Windows32.mk mk/msdosdjgpp.mk + +# test/scripts are added via dist-hook below. +test_FILES = tests/run_make_tests tests/run_make_tests.bat \ + tests/run_make_tests.pl tests/test_driver.pl \ + tests/config-flags.pm.in tests/config_flags_pm.com \ + tests/mkshadow tests/jhelp.pl tests/guile.supp tests/README + EXTRA_DIST = ChangeLog README build.sh.in $(man_MANS) \ README.customs README.OS2 \ - SCOPTIONS SMakefile \ - README.Amiga Makefile.ami config.ami make.lnk amiga.c amiga.h \ - README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\ - README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \ - make_msvc_net2003.sln make_msvc_net2003.vcproj \ + README.Amiga SCOPTIONS config.ami \ + README.DOS builddos.bat configh.dos \ + README.W32 config.h.W32 build_w32.bat \ README.VMS makefile.vms makefile.com config.h-vms \ - vmsdir.h vmsfunctions.c vmsify.c vms_exit.c vms_progname.c \ - vms_export_symbol.c vms_export_symbol_test.com \ - gmk-default.scm gmk-default.h + vms_export_symbol_test.com \ + gmk-default.scm gmk-default.h \ + $(mk_FILES) $(test_FILES) + # This is built during configure, but behind configure's back DISTCLEANFILES = build.sh -# --------------- Internationalization Section - -localedir = $(datadir)/locale - # --------------- Local INSTALL Section # If necessary, change the gid of the app and turn on the setgid flag. @@ -101,7 +106,7 @@ localedir = $(datadir)/locale # Whether or not make needs to be installed setgid. # The value should be either 'true' or 'false'. -# On many systems, the getloadavg function (used to implement the '-l' +# On some systems, the getloadavg function (used to implement the '-l' # switch) will not work unless make is installed setgid kmem. # inst_setgid = @NEED_SETGID@ @@ -134,11 +139,11 @@ gmk-default.h: $(srcdir)/gmk-default.scm # --------------- Local DIST Section -# Install the w32 and tests subdirectories +# Install the mk and tests subdirectories # dist-hook: (cd $(srcdir); \ - sub=`find w32 tests -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name Makefile \) -prune -o -type f -print`; \ + sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ tar chf - $$sub) \ | (cd $(distdir); tar xfBp -) diff --git a/NEWS b/NEWS index 3cd0cb93..a452faed 100644 --- a/NEWS +++ b/NEWS @@ -35,6 +35,14 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set already contains some value. Similarly, appending an empty string does not add a trailing space. +* WARNING: Backward-incompatibility! + On Linux, and other systems that provide a /proc/loadavg with similar + syntax, the -l/--load-average option will use the contents of that file to + determine how many jobs are running at any given instant, and compare that + value to the load value requested. This allows usage such as "-j -lN" for + N-processor systems with less fear of overload. + Patch provided by Sven C. Dack + * The previous limit of 63 jobs under -jN on MS-Windows is now increased to 4095. That limit includes the subprocess started by the $(shell) function. diff --git a/NMakefile.template b/NMakefile.template deleted file mode 100644 index fdc6857e..00000000 --- a/NMakefile.template +++ /dev/null @@ -1,132 +0,0 @@ -# -*-Makefile-*- to build GNU make with nmake -# -# NOTE: If you have no 'make' program at all to process this makefile, -# run 'build_w32.bat' instead. -# -# Copyright (C) 1996-2017 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 3 of the License, 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 -# this program. If not, see . - -LINK = link -CC = cl -MAKE = nmake - -OUTDIR=. -MAKEFILE=NMakefile -SUBPROC_MAKEFILE=NMakefile - -CFLAGS_any = /nologo /MT /W4 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H -CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug/make.pch /Fo.\WinDebug/ /Fd.\WinDebug/make.pdb -CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/ - -LDFLAGS_debug = w32\subproc\WinDebug\subproc.lib /NOLOGO /SUBSYSTEM:console\ - /STACK:0x400000 /INCREMENTAL:no /PDB:WinDebug/make.pdb /OUT:WinDebug/make.exe /DEBUG -LDFLAGS_release = w32\subproc\WinRel\subproc.lib /NOLOGO /SUBSYSTEM:console\ - /STACK:0x400000 /INCREMENTAL:no /OUT:WinRel/make.exe - -all: config.h subproc Release Debug - -# -# Make sure we build the subproc library first. It has it's own -# makefile. To be portable to Windows 95, we put the instructions -# on how to build the library into a batch file. On NT, we could -# simply have done foo && bar && dog, but this doesn't port. -# -subproc: w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib - -w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib: w32/subproc/misc.c w32/subproc/sub_proc.c w32/subproc/w32err.c - subproc.bat $(SUBPROC_MAKEFILE) $(MAKE) - if exist WinDebug\make.exe erase WinDebug\make.exe - if exist WinRel\make.exe erase WinRel\make.exe - -config.h: config.h.W32 - copy $? $@ - -Release: - $(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_release)" CFLAGS="$(CFLAGS_release)" OUTDIR=WinRel WinRel/make.exe -Debug: - $(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_debug)" CFLAGS="$(CFLAGS_debug)" OUTDIR=WinDebug WinDebug/make.exe - -clean: - if exist WinDebug\nul rmdir /s /q WinDebug - if exist WinRel\nul rmdir /s /q WinRel - if exist w32\subproc\WinDebug\nul rmdir /s /q w32\subproc\WinDebug - if exist w32\subproc\WinRel\nul rmdir /s /q w32\subproc\WinRel - if exist config.h erase config.h - erase *.pdb - -$(OUTDIR): - if not exist .\$@\nul mkdir .\$@ - -LIBS = kernel32.lib user32.lib advapi32.lib - -guile = $(OUTDIR)/guile.obj - -OBJS = \ - $(OUTDIR)/ar.obj \ - $(OUTDIR)/arscan.obj \ - $(OUTDIR)/commands.obj \ - $(OUTDIR)/default.obj \ - $(OUTDIR)/dir.obj \ - $(OUTDIR)/expand.obj \ - $(OUTDIR)/file.obj \ - $(OUTDIR)/function.obj \ - $(OUTDIR)/getloadavg.obj \ - $(OUTDIR)/getopt.obj \ - $(OUTDIR)/getopt1.obj \ - $(OUTDIR)/hash.obj \ - $(OUTDIR)/implicit.obj \ - $(OUTDIR)/job.obj \ - $(OUTDIR)/load.obj \ - $(OUTDIR)/main.obj \ - $(OUTDIR)/misc.obj \ - $(OUTDIR)/output.obj \ - $(OUTDIR)/read.obj \ - $(OUTDIR)/remake.obj \ - $(OUTDIR)/remote-stub.obj \ - $(OUTDIR)/rule.obj \ - $(OUTDIR)/signame.obj \ - $(OUTDIR)/strcache.obj \ - $(OUTDIR)/variable.obj \ - $(OUTDIR)/version.obj \ - $(OUTDIR)/vpath.obj \ - $(OUTDIR)/glob.obj \ - $(OUTDIR)/fnmatch.obj \ - $(OUTDIR)/dirent.obj \ - $(OUTDIR)/pathstuff.obj \ - $(OUTDIR)/posixfcn.obj \ - $(OUTDIR)/w32os.obj \ - $(guile) - -$(OUTDIR)/make.exe: $(OUTDIR) $(OBJS) - $(LINK) @<< - $(LDFLAGS) $(LIBS) $(OBJS) -<< - -.c{$(OUTDIR)}.obj: - $(CC) $(CFLAGS) /c $< - -$(OUTDIR)/glob.obj : glob/glob.c - $(CC) $(CFLAGS) /c $? -$(OUTDIR)/fnmatch.obj : glob/fnmatch.c - $(CC) $(CFLAGS) /c $? -$(OUTDIR)/dirent.obj : w32/compat/dirent.c - $(CC) $(CFLAGS) /c $? -$(OUTDIR)/posixfcn.obj : w32/compat/posixfcn.c - $(CC) $(CFLAGS) /c $? -$(OUTDIR)/pathstuff.obj : w32/pathstuff.c - $(CC) $(CFLAGS) /c $? -$(OUTDIR)/w32os.obj : w32/w32os.c - $(CC) $(CFLAGS) /c $? diff --git a/README.Amiga b/README.Amiga index bca913f6..dd4de7b3 100644 --- a/README.Amiga +++ b/README.Amiga @@ -42,15 +42,18 @@ place). You have to use "$(wildcard src/*.c)" instead. COMPILING FROM SCRATCH ---------------------- -To recompile, you need SAS/C 6.51. make itself is not necessary, there -is an smakefile. +To recompile, you need SAS/C 6.51. -1. Copy config.ami to config.h -2. If you use make to compile, copy Makefile.ami to Makefile and - glob/Makefile.ami to glob/Makefile. Copy make into the current - directory. +As of GNU make 4.3, the build environment has been cleaned up and alternate +make files (including smakefiles) have been removed. If you have an existing +version of GNU make available you _should_ be able to run: -3. Run smake/make + make -f Basic.mk + +However this is untested. + +If you have an Amiga system and would like to collaborate on getting +bootstrapping to work properly please contact bug-make@gnu.org. INSTALLATION diff --git a/README.DOS.template b/README.DOS.template index 1535e6ca..ae15bd7c 100644 --- a/README.DOS.template +++ b/README.DOS.template @@ -27,8 +27,8 @@ New (since 3.74) DOS-specific features: 8. Can be built without (a previous version of) Make. 9. The build process requires only standard tools. (Optional - targets like "install:" and "clean:" still need additional - programs, though, see below.) + targets like "check:" still need additional programs, though, + see below.) 10. Beginning with v3.78, the test suite works in the DJGPP environment (requires Perl and auxiliary tools; see below). @@ -55,72 +55,34 @@ To build from sources: either DJTAR (which is part of the DJGPP development environment), or the DJGPP port of GNU Tar. - 2. Invoke the 'configure.bat' batch file. + 2. If you have a working Make already, you can run: - If you are building Make in-place, i.e. in the same directory - where its sources are kept, just type "configure.bat" and press - [Enter]. Otherwise, you need to supply the path to the source - directory as an argument to the batch file, like this: + make -f Basic.mk - c:\djgpp\gnu\make-%VERSION%\configure.bat c:/djgpp/gnu/make-%VERSION% + 3. If you don't have a working Make already you can bootstrap one + by running: - Note the forward slashes in the source path argument: you MUST - use them here. + .\builddos.bat - 3. If configure.bat doesn't find a working Make, it will suggest to - use the 'dosbuild.bat' batch file to build Make. Either do as it - suggests or install another Make program (a pre-compiled binary - should be available from the usual DJGPP sites) and rerun - configure.bat. - - 4. Invoke Make. - - If you are building from outside of the source directory, you + 4. If you are building from outside of the source directory, you need to tell Make where the sources are, like this: - make srcdir=c:/djgpp/gnu/make-%VERSION% + make srcdir=c:/djgpp/gnu/make - (configure.bat will tell you this when it finishes). You MUST - use a full, not relative, name of the source directory here, or - else Make might fail. + or: - 5. After Make finishes, if you have a Unix-style shell installed, - you can use the 'install' target to install the package. You - will also need GNU Fileutils and GNU Sed for this (they should - be available from the DJGPP sites). + c:/djgpp/gnu/make/builddos.bat c:/djgpp/gnu/make - By default, GNU make will install into your DJGPP installation - area. If you wish to use a different directory, override the - DESTDIR variable when invoking "make install", like this: - - make install DESTDIR=c:/other/dir - - This causes the make executable to be placed in c:/other/dir/bin, - the man pages in c:/other/dir/man, etc. - - Without a Unix-style shell, you will have to install programs - and the docs manually. Copy make.exe to a directory on your - PATH, make.i* info files to your Info directory, and update the - file 'dir' in your Info directory by adding the following item - to the main menu: - - * Make: (make.info). The GNU make utility. - - If you have the 'install-info' program (from the GNU Texinfo - package), it will do that for you if you invoke it like this: - - install-info --info-dir=c:/djgpp/info c:/djgpp/info/make.info - - (If your Info directory is other than C:\DJGPP\INFO, change this - command accordingly.) - - 6. The 'clean' targets also require Unix-style shell, and GNU Sed - and 'rm' programs (the latter from Fileutils). - - 7. To run the test suite, type "make check". This requires a Unix + 5. To run the test suite, type "make check". This requires a Unix shell (I used the DJGPP port of Bash 2.03), Perl, Sed, Fileutils and Sh-utils. + 6. To install copy make.exe to the preferred location. + + Since GNU make 4.3, support for customized platform installations + has been removed. If you'd like to collaborate on reinstating + these capabilities, contact bug-make@gnu.org. + Notes: ----- diff --git a/README.W32.template b/README.W32.template index 048f0197..92701061 100644 --- a/README.W32.template +++ b/README.W32.template @@ -41,14 +41,6 @@ Do this first, regardless of the build method you choose: case, while Makefile rules are written for lower-case versions.) -Using make_msvc_net2003.vcproj ------------------------------- - - 2. Open make_msvc_net2003.vcproj in MSVS71 or MSVC71 or any compatible IDE, - then build this project as usual. There's also a solution file for - Studio 2003. - - Building with (MinGW-)GCC using build_w32.bat --------------------------------------------- @@ -58,8 +50,9 @@ Building with (MinGW-)GCC using build_w32.bat .\build_w32.bat gcc This produces gnumake.exe in the GccRel directory. + If you want a version of GNU make built with debugging enabled, - add the --debug option. + add the --debug option. Output goes into the GccDebug directory. The batch file will probe for Guile installation, and will build gnumake.exe with Guile if it finds it. If you have Guile @@ -82,7 +75,8 @@ Building with (MSVC++-)cl using build_w32.bat If you want a 32bit version of GNU make, add the --x86 option. - If you want a Debug build of GNU make, add the --debug option. + If you want a Debug build of GNU make, add the --debug option. Output + will go into the .\WinDebug directory. The batch file will probe for Guile installation, and will build gnumake.exe with Guile if it finds it. If Guile is installed, @@ -90,18 +84,46 @@ Building with (MSVC++-)cl using build_w32.bat --without-guile option. -Building with (MSVC++-)cl using NMakefile ------------------------------------------ +Building with (MinGW-)GCC using GNU make +---------------------------------------- - 2. Open a W32 command prompt for your installed (MSVC++-)cl, setup a - correct PATH and other environment variables for it (usually via - executing vcvars32.bat or vsvars32.bat from the cl-installation, or - using a corresponding start menu entry from the cl-installation), - then execute ... + 2. If you already have a version of GNU make available you can use it + to build this version. Open a W32 command prompt for your installed + (MinGW-)GCC, setup a correct PATH and other environment variables + for it, then execute ... - nmake /f NMakefile + make -f Basic.mk TOOLCHAIN=gcc - (this produces WinDebug/make.exe and WinRel/make.exe). + This produces GccRel\gnumake.exe. + If you want a version of GNU make built with debugging enabled, + add the TARGET_TYPE=debug option: + + make -f Basic.mk TOOLCHAIN=gcc TARGET_TYPE=debug + + The makefile doesn't support Guile integration. Use build_w32.bat + if you want to build with Guile support. + + +Building with (MSVC++-)cl using GNU make +---------------------------------------- + + 2. If you already have a version of GNU make available you can use it + to build this version. Open a W32 command prompt for your installed + (MSVC++-)cl, setup a correct PATH and other environment variables + for it (usually via executing vcvars32.bat or vsvars32.bat from the + cl-installation, or using a corresponding start menu entry from the + cl-installation), then execute ... + + make -f Basic.mk + + This produces an optimized WinRel/gnumake.exe. + If you want a version of GNU make built with debugging enabled, + add the TARGET_TYPE=debug option: + + make -f Basic.mk TARGET_TYPE=debug + + The makefile doesn't support Guile integration. Use build_w32.bat + if you want to build with Guile support. Running the test suite @@ -110,7 +132,11 @@ Running the test suite 3. You will need an installation of Perl. Be sure to use a relatively modern version: older versions will sometimes throw spurious errors. - To run the suite after building, use: + To run the suite after building using GNU make, use: + + make -f Basic.mk check + + Alternatively if you'd like to run tests by hand, use: cd tests .\run_make_tests.bat -make diff --git a/SMakefile.template b/SMakefile.template deleted file mode 100644 index 2b60c5c8..00000000 --- a/SMakefile.template +++ /dev/null @@ -1,217 +0,0 @@ -# -*-Makefile-*- for building GNU make with smake -# -# NOTE: If you have no 'make' program at all to process this makefile, -# run 'build.sh' instead. -# -# Copyright (C) 1995-2017 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 3 of the License, 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 -# this program. If not, see . - -# -# Makefile for GNU Make -# - -# Ultrix 2.2 make doesn't expand the value of VPATH. -VPATH = /make-%VERSION%/ -# This must repeat the value, because configure will remove 'VPATH = .'. -srcdir = /make-%VERSION%/ - -CC = sc -RM = delete -MAKE = smake - -CFLAGS = -CPPFLAGS = -LDFLAGS = - -# Define these for your system as follows: -# -DNO_ARCHIVES To disable 'ar' archive support. -# -DENUM_BITFIELDS If the compiler isn't GCC but groks enum foo:2. -# Some compilers apparently accept this -# without complaint but produce losing code, -# so beware. -# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline. -# See also 'config.h'. -defines = - -# Which flavor of remote job execution support to use. -# The code is found in 'remote-$(REMOTE).c'. -REMOTE = stub - -# If you are using the GNU C library, or have the GNU getopt functions in -# your C library, you can comment these out. -GETOPT = getopt.o getopt1.o -GETOPT_SRC = $(srcdir)getopt.c $(srcdir)getopt1.c $(srcdir)getopt.h - -# If you are using the GNU C library, or have the GNU glob functions in -# your C library, you can comment this out. GNU make uses special hooks -# into the glob functions to be more efficient (by using make's directory -# cache for globbing), so you must use the GNU functions even if your -# system's C library has the 1003.2 glob functions already. Also, the glob -# functions in the AIX and HPUX C libraries are said to be buggy. -GLOB = Lib glob/glob.lib - -# If your system doesn't have alloca, or the one provided is bad, define this. -ALLOCA = alloca.o -ALLOCA_SRC = $(srcdir)alloca.c - -# If your system needs extra libraries loaded in, define them here. -# System V probably need -lPW for alloca. HP-UX 7.0's alloca in -# libPW.a is broken on HP9000s300 and HP9000s400 machines. Use -# alloca.c instead on those machines. -LOADLIBES = - -# Any extra object files your system needs. -extras = amiga.o - -# Common prefix for machine-independent installed files. -prefix = -# Common prefix for machine-dependent installed files. -exec_prefix = - -# Directory to install 'make' in. -bindir = sc:c -# Directory to find libraries in for '-lXXX'. -libdir = lib: -# Directory to search by default for included makefiles. -includedir = include: -# Directory to install the Info files in. -infodir = doc: -# Directory to install the man page in. -mandir = t: -# Number to put on the man page filename. -manext = 1 -# Prefix to put on installed 'make' binary file name. -binprefix = -# Prefix to put on installed 'make' man page file name. -manprefix = $(binprefix) - -# Whether or not make needs to be installed setgid. -# The value should be either 'true' or 'false'. -# On many systems, the getloadavg function (used to implement the '-l' -# switch) will not work unless make is installed setgid kmem. -install_setgid = false -# Install make setgid to this group so it can read /dev/kmem. -group = sys - -# Program to install 'make'. -INSTALL_PROGRAM = copy -# Program to install the man page. -INSTALL_DATA = copy -# Generic install program. -INSTALL = copy - -# Program to format Texinfo source into Info files. -MAKEINFO = makeinfo -# Program to format Texinfo source into DVI files. -TEXI2DVI = texi2dvi - -# Programs to make tags files. -ETAGS = etags -w -CTAGS = ctags -w - -#guile = guile.o - -objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o \ - rule.o implicit.o default.o variable.o expand.o function.o \ - vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o \ - output.o remote-$(REMOTE).o $(GLOB) $(GETOPT) $(ALLOCA) \ - $(extras) $(guile) - -srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c \ - $(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c \ - $(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c \ - $(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c \ - $(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c \ - $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c \ - $(srcdir)guile.c $(srcdir)remote-$(REMOTE).c \ - $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c \ - $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC) \ - $(srcdir)commands.h $(srcdir)dep.h $(srcdir)file.h \ - $(srcdir)job.h $(srcdir)makeint.h $(srcdir)rule.h \ - $(srcdir)output.c $(srcdir)output.h \ - $(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in - - -.SUFFIXES: -.SUFFIXES: .o .c .h .ps .dvi .info .texinfo - -all: make -info: make.info -dvi: make.dvi -# Some makes apparently use .PHONY as the default goal if it is before 'all'. -.PHONY: all check info dvi - -make.info: make.texinfo - $(MAKEINFO) -I$(srcdir) $(srcdir)make.texinfo -o make.info - -make.dvi: make.texinfo - $(TEXI2DVI) $(srcdir)make.texinfo - -make.ps: make.dvi - dvi2ps make.dvi > make.ps - -make: $(objs) glob/glob.lib - $(CC) Link $(LDFLAGS) $(objs) $(LOADLIBES) To make.new - -delete quiet make - rename make.new make - -# -I. is needed to find config.h in the build directory. -.c.o: - $(CC) $(defines) IDir "" IDir $(srcdir)glob \ - $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION) - -glob/glob.lib: - execute << - cd glob - smake -< - -tagsrcs = $(srcs) $(srcdir)remote-*.c -TAGS: $(tagsrcs) - $(ETAGS) $(tagsrcs) -tags: $(tagsrcs) - $(CTAGS) $(tagsrcs) - -.PHONY: install installdirs -install: - copy make sc:c - -loadavg: loadavg.c config.h - $(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \ - loadavg.c $(LOADLIBES) -o $@ - -clean: glob-clean - -$(RM) -f make loadavg *.o core make.dvi - -distclean: clean glob-realclean - -$(RM) -f Makefile config.h config.status build.sh - -$(RM) -f config.log config.cache - -$(RM) -f TAGS tags - -$(RM) -f make.?? make.??s make.log make.toc make.*aux - -$(RM) -f loadavg.c - -realclean: distclean - -$(RM) -f make.info* - -mostlyclean: clean - -.PHONY: glob-clean glob-realclean - -glob-clean glob-realclean: - execute << - cd glob - smake $@ -< diff --git a/build_w32.bat b/build_w32.bat index 4e0f51e9..73afa5d3 100755 --- a/build_w32.bat +++ b/build_w32.bat @@ -190,12 +190,12 @@ call :Compile strcache call :Compile variable call :Compile version call :Compile vpath -call :Compile w32\compat\posixfcn call :Compile w32\pathstuff +call :Compile w32\w32os +call :Compile w32\compat\posixfcn call :Compile w32\subproc\misc call :Compile w32\subproc\sub_proc call :Compile w32\subproc\w32err -call :Compile w32\w32os if not "%COMPILER%" == "gcc" call :Compile w32\compat\dirent @@ -204,6 +204,7 @@ call :Link echo. if not exist %OUTDIR%\%MAKE%.exe echo %OUTDIR% build FAILED! if exist %OUTDIR%\%MAKE%.exe echo %OUTDIR% build succeeded. +if exist %OUTDIR%\%MAKE%.exe copy /Y Basic.mk Makefile goto :EOF :Compile diff --git a/builddos.bat b/builddos.bat new file mode 100644 index 00000000..b96318d5 --- /dev/null +++ b/builddos.bat @@ -0,0 +1,89 @@ +@echo off +rem Copyright (C) 1998-2017 Free Software Foundation, Inc. +rem This file is part of GNU Make. +rem +rem GNU Make is free software; you can redistribute it and/or modify it under +rem the terms of the GNU General Public License as published by the Free +rem Software Foundation; either version 3 of the License, or (at your option) +rem any later version. +rem +rem GNU Make is distributed in the hope that it will be useful, but WITHOUT +rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. +rem more details. +rem +rem You should have received a copy of the GNU General Public License along +rem with this program. If not, see . + +echo Building Make for MSDOS with DJGPP + +rem The SmallEnv trick protects against too small environment block, +rem in which case the values will be truncated and the whole thing +rem goes awry. COMMAND.COM will say "Out of environment space", but +rem many people don't care, so we force them to care by refusing to go. + +rem Where is the srcdir? +set XSRC=. +if not "%XSRC%"=="." goto SmallEnv +if "%1%"=="" goto SrcDone +set XSRC=%1 +if not "%XSRC%"=="%1" goto SmallEnv + +:SrcDone + +copy /Y %XSRC%/configh.dos ./config.h + +if not exist glob mkdir glob + +rem Echo ON so they will see what is going on. +@echo on +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/commands.c -o commands.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/output.c -o output.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/job.c -o job.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/dir.c -o dir.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/file.c -o file.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/misc.c -o misc.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/main.c -o main.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g %XSRC%/read.c -o read.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g %XSRC%/remake.c -o remake.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/rule.c -o rule.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/implicit.c -o implicit.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/default.c -o default.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/variable.c -o variable.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/expand.c -o expand.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/function.c -o function.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/vpath.c -o vpath.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/hash.c -o hash.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/strcache.c -o strcache.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/version.c -o version.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/ar.c -o ar.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/arscan.c -o arscan.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/signame.c -o signame.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/remote-stub.c -o remote-stub.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/getopt.c -o getopt.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/getopt1.c -o getopt1.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/glob/glob.c -o glob/glob.o +gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/glob/fnmatch.c -o glob/fnmatch.o +@echo off +echo commands.o > respf.$$$ +for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$ +for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$ +for %%f in (glob/glob glob/fnmatch) do echo %%f.o >> respf.$$$ +rem gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/guile.c -o guile.o +rem echo guile.o >> respf.$$$ +@echo Linking... +@echo on +gcc -o make.exe @respf.$$$ +@echo off +if not exist make.exe echo Make.exe build failed... +if exist make.exe echo make.exe is now built! +if exist make.exe del respf.$$$ +if exist make.exe copy /Y Basic.mk Makefile +goto End + +:SmallEnv +echo Your environment is too small. Please enlarge it and run me again. + +:End +set XRSC= +@echo on diff --git a/configure.ac b/configure.ac index 9b8aed96..b7500ce4 100644 --- a/configure.ac +++ b/configure.ac @@ -27,8 +27,6 @@ AC_CONFIG_HEADERS([config.h]) # Automake setup # We have to enable "foreign" because ChangeLog is auto-generated -# We cannot enable -Werror because gettext 0.18.1 has invalid content -# When we update gettext to 0.18.3 or better we can add it again. AM_INIT_AUTOMAKE([1.15 foreign -Werror -Wall]) # Checks for programs. @@ -41,9 +39,6 @@ AC_CHECK_PROG([AR], [ar], [ar], [ar]) # Perl is needed for the test suite (only) AC_CHECK_PROG([PERL], [perl], [perl], [perl]) -# Needed for w32/Makefile.am -AM_PROG_AR - # Specialized system macros AC_CANONICAL_HOST AC_AIX @@ -509,7 +504,7 @@ AS_IF([test "x$make_cv_load" = xno && test "x$user_load" = xyes], # Specify what files are to be created. AC_CONFIG_FILES([Makefile glob/Makefile po/Makefile.in config/Makefile \ - doc/Makefile w32/Makefile tests/config-flags.pm]) + doc/Makefile tests/config-flags.pm]) # OK, do it! diff --git a/configure.bat b/configure.bat deleted file mode 100644 index fa5ae468..00000000 --- a/configure.bat +++ /dev/null @@ -1,60 +0,0 @@ -@echo off -rem Copyright (C) 1994-2017 Free Software Foundation, Inc. -rem This file is part of GNU Make. -rem -rem GNU Make is free software; you can redistribute it and/or modify it under -rem the terms of the GNU General Public License as published by the Free -rem Software Foundation; either version 3 of the License, or (at your option) -rem any later version. -rem -rem GNU Make is distributed in the hope that it will be useful, but WITHOUT -rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. -rem more details. -rem -rem You should have received a copy of the GNU General Public License along -rem with this program. If not, see . - -echo Configuring MAKE for DJGPP - -rem The SmallEnv trick protects against too small environment block, -rem in which case the values will be truncated and the whole thing -rem goes awry. COMMAND.COM will say "Out of environment space", but -rem many people don't care, so we force them to care by refusing to go. - -rem Where is the srcdir? -set XSRC=. -if not "%XSRC%"=="." goto SmallEnv -if "%1%"=="" goto SrcDone -set XSRC=%1 -if not "%XSRC%"=="%1" goto SmallEnv - -:SrcDone - -update %XSRC%/configh.dos ./config.h - -rem Do they have Make? -redir -o junk.$$$ -eo make -n -f NUL -rem REDIR will return 1 if it cannot run Make. -rem If it can run Make, it will usually return 2, -rem but 0 is also OK with us. -if errorlevel 2 goto MakeOk -if not errorlevel 1 goto MakeOk -if exist junk.$$$ del junk.$$$ -echo No Make program found--use DOSBUILD.BAT to build Make. -goto End - -rem They do have Make. Generate the Makefile. - -:MakeOk -del junk.$$$ -update %XSRC%/Makefile.DOS ./Makefile -echo Done. -if not "%XSRC%"=="." echo Invoke Make thus: "make srcdir=%XSRC%" -goto End - -:SmallEnv -echo Your environment is too small. Please enlarge it and run me again. - -:End -set XRSC= diff --git a/dosbuild.bat b/dosbuild.bat deleted file mode 100644 index 91d7804c..00000000 --- a/dosbuild.bat +++ /dev/null @@ -1,65 +0,0 @@ -@echo off -rem Copyright (C) 1998-2017 Free Software Foundation, Inc. -rem This file is part of GNU Make. -rem -rem GNU Make is free software; you can redistribute it and/or modify it under -rem the terms of the GNU General Public License as published by the Free -rem Software Foundation; either version 3 of the License, or (at your option) -rem any later version. -rem -rem GNU Make is distributed in the hope that it will be useful, but WITHOUT -rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. -rem more details. -rem -rem You should have received a copy of the GNU General Public License along -rem with this program. If not, see . - -echo Building Make for MSDOS - -rem Echo ON so they will see what is going on. -@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 -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 -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g strcache.c -o strcache.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g version.c -o version.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g ar.c -o ar.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g arscan.c -o arscan.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g signame.c -o signame.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g remote-stub.c -o remote-stub.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g getopt.c -o getopt.o -gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g getopt1.c -o getopt1.o -@cd glob -@if exist libglob.a del libglob.a -gcc -I. -c -DHAVE_CONFIG_H -I.. -O2 -g glob.c -o glob.o -gcc -I. -c -DHAVE_CONFIG_H -I.. -O2 -g fnmatch.c -o fnmatch.o -ar rv libglob.a glob.o fnmatch.o -@echo off -cd .. -echo commands.o > respf.$$$ -for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$ -for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$ -echo glob/libglob.a >> respf.$$$ -rem gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g guile.c -o guile.o -rem echo guile.o >> respf.$$$ -@echo Linking... -@echo on -gcc -o make.new @respf.$$$ -@if exist make.exe echo Make.exe is now built! -@if not exist make.exe echo Make.exe build failed... -@if exist make.exe del respf.$$$ diff --git a/glob/Makefile.am b/glob/Makefile.am index 93fd60a7..b5adf0a2 100644 --- a/glob/Makefile.am +++ b/glob/Makefile.am @@ -26,5 +26,4 @@ endif libglob_a_SOURCES = glob.c glob.h fnmatch.c fnmatch.h -EXTRA_DIST = COPYING.LIB Makefile.ami SCOPTIONS SMakefile \ - configure.bat +EXTRA_DIST = COPYING.LIB diff --git a/glob/SCOPTIONS b/glob/SCOPTIONS deleted file mode 100644 index 3d69fb42..00000000 --- a/glob/SCOPTIONS +++ /dev/null @@ -1,12 +0,0 @@ -ERRORREXX -OPTIMIZE -NOVERSION -OPTIMIZERTIME -OPTIMIZERALIAS -DEFINE INCLUDEDIR="include:" -DEFINE LIBDIR="lib:" -DEFINE NO_ALLOCA -DEFINE NO_ARCHIVES -IGNORE=161 -IGNORE=100 -STARTUP=cres diff --git a/glob/SMakefile b/glob/SMakefile deleted file mode 100644 index 0476a15e..00000000 --- a/glob/SMakefile +++ /dev/null @@ -1,67 +0,0 @@ -# Makefile for standalone distribution of libglob.a (fnmatch, glob). -# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007 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 3 of the License, 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 -# this program. If not, see . - -# Ultrix 2.2 make doesn't expand the value of VPATH. -VPATH = /glob/ -# This must repeat the value, because configure will remove `VPATH = .'. -srcdir = /glob/ - -CC = sc -CPPFLAGS = -CFLAGS = -MAKE = smake -RM = delete - -# Information determined by configure. -DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \ - Define HAVE_DIRENT_H - -# How to invoke ar. -AR = join -ARFLAGS = as - -# How to invoke ranlib. -RANLIB = ; - -.PHONY: all -all: glob.lib - -glob.lib : glob.o fnmatch.o - $(AR) $(ARFLAGS) $@ glob.o fnmatch.o - $(RANLIB) $@ - -# For some reason, Unix make wants the dependencies on the source files. -# Otherwise it refuses to use an implicit rule! -# And, get this: it doesn't work to use $(srcdir)foo.c!! -glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c -fnmatch.o: $(srcdir)fnmatch.h fnmatch.c - -.c.o: - $(CC) IDir "" \ - $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION) - -.PHONY: clean realclean glob-clean glob-realclean distclean -clean glob-clean: - -$(RM) -f glob.lib *.o core -distclean glob-realclean: clean - -$(RM) -f TAGS tags Makefile config.status config.h config.log -realcean: distclean - -# For inside the C library. -glob.tar glob.tar.Z: - $(MAKE) -C .. $@ diff --git a/glob/configure.bat b/glob/configure.bat deleted file mode 100644 index 672d7334..00000000 --- a/glob/configure.bat +++ /dev/null @@ -1,43 +0,0 @@ -@echo off -rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -rem 2004, 2005, 2006, 2007 Free Software Foundation, Inc. -rem This file is part of GNU Make. -rem -rem GNU Make is free software; you can redistribute it and/or modify it under -rem the terms of the GNU General Public License as published by the Free -rem Software Foundation; either version 3 of the License, or (at your option) -rem any later version. -rem -rem GNU Make is distributed in the hope that it will be useful, but WITHOUT -rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. -rem more details. -rem -rem You should have received a copy of the GNU General Public License along -rem with this program. If not, see . - -echo Configuring glob for DJGPP -rem This batch file assumes a unix-type "sed" program - -echo # Makefile generated by "configure.bat"> Makefile - -if exist config.sed del config.sed - -echo "s/@srcdir@/./ ">> config.sed -echo "s/@CC@/gcc/ ">> config.sed -echo "s/@CFLAGS@/-O2 -g/ ">> config.sed -echo "s/@CPPFLAGS@/-DHAVE_CONFIG_H -I../ ">> config.sed -echo "s/@AR@/ar/ ">> config.sed -echo "s/@RANLIB@/ranlib/ ">> config.sed -echo "s/@LDFLAGS@// ">> config.sed -echo "s/@DEFS@// ">> config.sed -echo "s/@ALLOCA@// ">> config.sed -echo "s/@LIBS@// ">> config.sed -echo "s/@LIBOBJS@// ">> config.sed -echo "s/^Makefile *:/_Makefile:/ ">> config.sed -echo "s/^config.h *:/_config.h:/ ">> config.sed - -sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed -sed -f config2.sed Makefile.in >> Makefile -del config.sed -del config2.sed diff --git a/maintMakefile b/maintMakefile index 4a2d62ce..19a154f4 100644 --- a/maintMakefile +++ b/maintMakefile @@ -35,16 +35,8 @@ AM_CPPFLAGS += $(MAKE_MAINTAINER_MODE) # I want this one but I have to wait for the const cleanup! # -Wwrite-strings -# Find the glob source files... this might be dangerous, but we're maintainers! -globsrc := $(wildcard glob/*.c) -globhdr := $(wildcard glob/*.h) - TEMPLATES = README README.DOS README.W32 README.OS2 \ config.ami configh.dos config.h.W32 config.h-vms -MTEMPLATES = Makefile.DOS SMakefile - -# These are built as a side-effect of the dist rule -#all-am: $(TEMPLATES) $(MTEMPLATES) build.sh.in # Create preprocessor output files--GCC specific! %.i : %.c @@ -61,24 +53,20 @@ $(TEMPLATES) : % : %.template Makefile # Construct Makefiles by adding on dependencies, etc. # -$(MTEMPLATES) : % : %.template .dep_segment Makefile +Basic.mk: Basic.mk.template .dep_segment Makefile rm -f $@ sed -e 's@%VERSION%@$(VERSION)@g' \ - -e 's@%PROGRAMS%@$(bin_PROGRAMS)@g' \ - -e 's@%SOURCES%@$(filter-out remote-%,$(make_SOURCES)) remote-$$(REMOTE).c@g' \ - -e 's@%OBJECTS%@$(filter-out remote-%,$(make_OBJECTS)) remote-$$(REMOTE).o@g' \ - -e 's@%GLOB_SOURCES%@$(globsrc) $(globhdr)@g' \ - -e 's@%GLOB_OBJECTS%@$(globsrc:glob/%.c=%.o)@g' \ + -e 's@%make_SOURCES%@$(filter %.c,$(make_SRCS))@g' \ + -e 's@%glob_SOURCES%@$(filter %.c,$(glob_SRCS))@g' \ + -e 's@%w32_SOURCES%@$(filter %.c,$(w32_SRCS))@g' \ + -e 's@%vms_SOURCES%@$(filter %.c,$(vms_SRCS))@g' \ + -e 's@%amiga_SOURCES%@$(filter %.c,$(amiga_SRCS))@g' \ $< > $@ echo >>$@; echo '# --------------- DEPENDENCIES' >>$@; echo '#' >>$@; \ - cat $(word 2,$^) >>$@ - chmod a-w $@ - -NMakefile: NMakefile.template .dep_segment Makefile - rm -f $@ - cp $< $@ - echo >>$@; echo '# --------------- DEPENDENCIES' >>$@; echo '#' >>$@; \ - sed 's/^\([^ ]*\)\.o:/$$(OUTDIR)\/\1.obj:/' $(word 2,$^) >>$@ + sed -e 's@^\([^ ]*\)\.o:@$$(OUTDIR)/\1.$$(OBJEXT):@' \ + -e 's@\([^ ]*\.[ch]\)@$$(SRCDIR)/\1@g' \ + -e 's@$$(SRCDIR)/config.h@$$(OUTDIR)/config.h@g' \ + $(word 2,$^) >>$@ chmod a-w $@ # Construct build.sh.in @@ -86,15 +74,14 @@ NMakefile: NMakefile.template .dep_segment Makefile build.sh.in: build.template Makefile rm -f $@ sed -e 's@%objs%@$(patsubst %.o,%.$${OBJEXT},$(filter-out remote-%,$(make_OBJECTS)))@g' \ - -e 's@%globobjs%@$(patsubst %.c,%.$${OBJEXT},$(globsrc))@g' \ + -e 's@%globobjs%@$(patsubst %.c,%.$${OBJEXT},$(filter %.c,$(glob_SRCS)))@g' \ $< > $@ chmod a-w+x $@ -# Use automake to build a dependency list file, for "foreign" makefiles like -# Makefile.DOS. +# Use automake to build a dependency list file, for Makebase.mk. # -# Automake used to have a --generate-deps flag, but it's gone now, so we have +# Automake used to have a --generate-deps flag but it's gone now, so we have # to do it ourselves. # DEP_FILES := $(wildcard $(DEPDIR)/*.Po) diff --git a/make.lnk b/make.lnk deleted file mode 100644 index 0d983bff..00000000 --- a/make.lnk +++ /dev/null @@ -1,5 +0,0 @@ -FROM LIB:cres.o "commands.o"+"job.o"+"dir.o"+"file.o"+"misc.o"+"main.o"+"read.o"+"remake.o"+"rule.o"+"implicit.o"+"default.o"+"variable.o"+"expand.o"+"function.o"+"vpath.o"+"version.o"+"ar.o"+"arscan.o"+"signame.o"+"remote-stub.o"+"getopt.o"+"getopt1.o"+"alloca.o"+"amiga.o"+"hash.o"+"strcache.o"+"output.o" -TO "make.new" -LIB glob/glob.lib LIB:sc.lib LIB:amiga.lib -QUIET - diff --git a/make_msvc_net2003.sln b/make_msvc_net2003.sln deleted file mode 100644 index e993896d..00000000 --- a/make_msvc_net2003.sln +++ /dev/null @@ -1,21 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_msvc.net2003", "make_msvc_net2003.vcproj", "{E96B5060-3240-4723-91C9-E64F1C877A04}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {E96B5060-3240-4723-91C9-E64F1C877A04}.Debug.ActiveCfg = Debug|Win32 - {E96B5060-3240-4723-91C9-E64F1C877A04}.Debug.Build.0 = Debug|Win32 - {E96B5060-3240-4723-91C9-E64F1C877A04}.Release.ActiveCfg = Release|Win32 - {E96B5060-3240-4723-91C9-E64F1C877A04}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/make_msvc_net2003.vcproj b/make_msvc_net2003.vcproj deleted file mode 100644 index bcc2e8bc..00000000 --- a/make_msvc_net2003.vcproj +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/w32/Makefile.am b/mk/Amiga.mk similarity index 56% rename from w32/Makefile.am rename to mk/Amiga.mk index eea9d693..fe2a1f64 100644 --- a/w32/Makefile.am +++ b/mk/Amiga.mk @@ -1,5 +1,8 @@ -# Makefile.am to create libw32.a for mingw32 host. -# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# GNU -*-Makefile-*- to build GNU make on Amiga +# +# Amiga overrides for use with Basic.mk. +# +# Copyright (C) 2017 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 @@ -15,12 +18,24 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see . -AUTOMAKE_OPTIONS = subdir-objects +CC = sc +LD = $(CC) Link +RM = delete +MKDIR = makedir -noinst_LIBRARIES = libw32.a +CPPFLAGS = +CFLAGS = +LDFLAGS = -libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \ - compat/posixfcn.c pathstuff.c w32os.c +prog_SOURCES += alloca.c getloadavg.c $(glob_SOURCES) $(amiga_SOURCES) -libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir) \ - -I$(top_srcdir)/glob +extra_CPPFLAGS = IDir "" IDir $(SRCDIR)/glob + +C_SOURCE = +OUTPUT_OPTION = +LDFLAGS = From LIB:cres.o +LDLIBS = Lib LIB:sc.lib LIB:amiga.lib +LINK_OUTPUT = To $@ + +$(OUTDIR)/config.h: $(SRCDIR)/config.ami + copy $< To $@ diff --git a/mk/Windows32.mk b/mk/Windows32.mk new file mode 100644 index 00000000..8848827b --- /dev/null +++ b/mk/Windows32.mk @@ -0,0 +1,116 @@ +# GNU -*-Makefile-*- to build GNU make on Windows +# +# Windows overrides for use with Makebase.mk. +# +# Copyright (C) 2017 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 3 of the License, 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 +# this program. If not, see . + +# TARGET_TYPE can be either "release" or "debug" +TARGET_TYPE = release + +# TOOLCHAIN can be either "msvc" or "gcc" +TOOLCHAIN = msvc + + +prog_SOURCES += getloadavg.c $(glob_SOURCES) $(w32_SOURCES) + +w32_LIBS = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 \ + oleaut32 uuid odbc32 odbccp32 + +CPPFLAGS = +CFLAGS = +LDFLAGS = + +# --- Visual Studio +msvc_CC = cl.exe +msvc_LD = link.exe + +msvc_CPPFLAGS = /DHAVE_CONFIG_H /DWINDOWS32 /DWIN32 /D_CONSOLE +msvc_CPPFLAGS += /I$(OUTDIR) /I$(SRCDIR) /I$(SRCDIR)/glob /I$(SRCDIR)/w32/include + +msvc_CFLAGS = /nologo /MT /W4 /EHsc +msvc_CFLAGS += /FR$(OUTDIR) /Fp$(BASE_PROG).pch /Fd$(BASE_PROG).pdb + +msvc_LDFLAGS = /nologo /SUBSYSTEM:console /PDB:$(BASE_PROG).pdb + +msvc_LDLIBS = $(addsuffix .lib,$(w32_LIBS)) + +msvc_C_SOURCE = /c +msvc_OUTPUT_OPTION = /Fo$@ +msvc_LINK_OUTPUT = /OUT:$@ + +release_msvc_OUTDIR = ./WinRel +release_msvc_CPPFLAGS = /D NDEBUG +release_msvc_CFLAGS = /O2 + +debug_msvc_OUTDIR = ./WinDebug +debug_msvc_CPPFLAGS = /D _DEBUG +debug_msvc_CFLAGS = /Zi /Od +debug_msvc_LDFLAGS = /DEBUG + +# --- GCC +gcc_CC = gcc +gcc_LD = $(gcc_CC) + +release_gcc_OUTDIR = ./GccRel +debug_gcc_OUTDIR = ./GccDebug + +gcc_CPPFLAGS = -DHAVE_CONFIG_H -I$(OBJDIR) -I$(SRCDIR) -I$(SRCDIR)/glob -I$(SRCDIR)/w32/include +gcc_CFLAGS = -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 +gcc_LDFLAGS = -mthreads -gdwarf-2 -g3 +gcc_LDLIBS = $(addprefix -l,$(w32_libs)) + +gcc_C_SOURCE = -c +gcc_OUTPUT_OPTION = -o $@ +gcc_LINK_OUTPUT = -o $@ + +debug_gcc_CFLAGS = -O0 +release_gcc_CFLAGS = -O2 + +# --- + +LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) $(LINK_OUTPUT) + +CHECK.cmd = cmd /c cd tests \& .\run_make_tests.bat -make ../$(PROG) + +MKDIR.cmd = cmd /c mkdir $(subst /,\\,$@) +RM.cmd = cmd /c del /F /Q $(subst /,\\,$(OBJECTS) $(PROG)) + +CC = $($(TOOLCHAIN)_CC) +LD = $($(TOOLCHAIN)_LD) + +C_SOURCE = $($(TOOLCHAIN)_C_SOURCE) +OUTPUT_OPTION = $($(TOOLCHAIN)_OUTPUT_OPTION) +LINK_OUTPUT = $($(TOOLCHAIN)_LINK_OUTPUT) + +OUTDIR = $($(TARGET_TYPE)_$(TOOLCHAIN)_OUTDIR) + +OBJEXT = obj +EXEEXT = .exe + +_CUSTOM = $($(TOOLCHAIN)_$1) $($(TARGET_TYPE)_$1) $($(TARGET_TYPE)_$(TOOLCHAIN)_$1) + +# I'm not sure why this builds gnumake rather than make...? +PROG = $(OUTDIR)/gnumake$(EXEEXT) +BASE_PROG = $(basename $(PROG)) + +extra_CPPFLAGS = $(call _CUSTOM,CPPFLAGS) +extra_CFLAGS = $(call _CUSTOM,CFLAGS) +extra_LDFLAGS = $(call _CUSTOM,LDFLAGS) +LDLIBS = $(call _CUSTOM,LDLIBS) + +$(OUTDIR)/config.h: $(SRCDIR)/config.h.W32 + cmd /c copy /Y $(subst /,\\,$< $@) diff --git a/mk/msdosdjgpp.mk b/mk/msdosdjgpp.mk new file mode 100644 index 00000000..a9dd2501 --- /dev/null +++ b/mk/msdosdjgpp.mk @@ -0,0 +1,34 @@ +# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP +# +# MS-DOS overrides for use with Makebase.mk. +# +# Copyright (C) 2017 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 3 of the License, 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 +# this program. If not, see . + +OBJEXT = o +EXEEXT = .exe + +CC = gcc + +prog_SOURCES += getloadavg.c $(glob_SOURCES) + +extra_CPPFLAGS += -I$(SRCDIR)/glob -DINCLUDEDIR=\"c:/djgpp/include\" -DLIBDIR=\"c:/djgpp/lib\" + +MKDIR.cmd = command.com /c mkdir $(subst /,\\,$@) +RM.cmd = command.com /c del /F /Q $(subst /,\\,$(OBJECTS) $(PROG)) + +$(OUTDIR)/config.h: $(SRCDIR)/configh.dos + command.com /c copy /Y $(subst /,\\,$< $@) diff --git a/subproc.bat b/subproc.bat deleted file mode 100644 index 1154be09..00000000 --- a/subproc.bat +++ /dev/null @@ -1,24 +0,0 @@ -@echo off -rem Copyright (C) 1996-2017 Free Software Foundation, Inc. -rem This file is part of GNU Make. -rem -rem GNU Make is free software; you can redistribute it and/or modify it under -rem the terms of the GNU General Public License as published by the Free -rem Software Foundation; either version 3 of the License, or (at your option) -rem any later version. -rem -rem GNU Make is distributed in the hope that it will be useful, but WITHOUT -rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. -rem more details. -rem -rem You should have received a copy of the GNU General Public License along -rem with this program. If not, see . - -cd w32\subproc -set MAKE=%2 -set MAKEFILE=%1 -if x%2 == x set MAKE=nmake -%MAKE% /f %MAKEFILE% -if ERRORLEVEL 1 exit /B -cd ..\.. diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl index 90c7c584..de960475 100644 --- a/tests/run_make_tests.pl +++ b/tests/run_make_tests.pl @@ -71,7 +71,10 @@ use FindBin; use lib "$FindBin::Bin"; require "test_driver.pl"; -require "config-flags.pm"; +if (! eval { require "config-flags.pm" }) { + # Some target systems don't create config-flags.pm + %CONFIG_FLAGS = (); +} # Some target systems might not have the POSIX module... $has_POSIX = eval { require "POSIX.pm" }; diff --git a/tests/scripts/features/load b/tests/scripts/features/load index 2e9318d5..dcc1cdfb 100644 --- a/tests/scripts/features/load +++ b/tests/scripts/features/load @@ -6,6 +6,12 @@ $details = "Test dynamic loading of modules."; # Don't do anything if this system doesn't support "load" exists $FEATURES{load} or return -1; +# CONFIG_FLAGS are loaded from config-flags.pm and set by configure +if (! exists $CONFIG_FLAGS{CC}) { + $verbose and print "Skipping load test: no CC defined\n"; + return -1; +} + # First build a shared object # Provide both a default and non-default load symbol @@ -39,7 +45,6 @@ EOF close($F) or die "close: testload.c: $!\n"; # Make sure we can compile -# CONFIG_FLAGS are loaded from config-flags.pm and set by configure my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testload.so testload.c"; diff --git a/tests/scripts/features/loadapi b/tests/scripts/features/loadapi index 8c824c04..acc3c780 100644 --- a/tests/scripts/features/loadapi +++ b/tests/scripts/features/loadapi @@ -6,6 +6,12 @@ $details = "Verify the different aspects of the shared object API."; # Don't do anything if this system doesn't support "load" exists $FEATURES{load} or return -1; +# CONFIG_FLAGS are loaded from config-flags.pm and set by configure +if (! exists $CONFIG_FLAGS{CC}) { + $verbose and print "Skipping load test: no CC defined\n"; + return -1; +} + # First build a shared object # Provide both a default and non-default load symbol @@ -72,6 +78,8 @@ testapi_gmk_setup () EOF close($F) or die "close: testapi.c: $!\n"; +# Make sure we can compile + my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testapi.so testapi.c"; my $clog = `$sobuild 2>&1`; diff --git a/w32/subproc/NMakefile b/w32/subproc/NMakefile deleted file mode 100644 index 4a8b4037..00000000 --- a/w32/subproc/NMakefile +++ /dev/null @@ -1,60 +0,0 @@ -# NOTE: If you have no 'make' program at all to process this makefile, run -# 'build.bat' instead. -# -# Copyright (C) 1996-2017 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 3 of the License, 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 -# this program. If not, see . - -# -# NMakefile for GNU Make (subproc library) -# -LIB = lib -CC = cl -MAKE = nmake - -OUTDIR=. -MAKEFILE=NMakefile - -CFLAGS_any = /nologo /MT /W4 /GX /Z7 /YX /D WIN32 /D WINDOWS32 /D _WINDOWS -I. -I../include -I../../ -CFLAGS_debug = $(CFLAGS_any) /Od /D _DEBUG /FR.\WinDebug\ /Fp.\WinDebug\subproc.pch /Fo.\WinDebug/ -CFLAGS_release = $(CFLAGS_any) /O2 /FR.\WinRel\ /Fp.\WinRel\subproc.pch /Fo.\WinRel/ - -all: Release Debug - -Release: - $(MAKE) /f $(MAKEFILE) OUTDIR=WinRel CFLAGS="$(CFLAGS_release)" WinRel/subproc.lib -Debug: - $(MAKE) /f $(MAKEFILE) OUTDIR=WinDebug CFLAGS="$(CFLAGS_debug)" WinDebug/subproc.lib - -clean: - rmdir /s /q WinRel WinDebug - erase *.pdb - -$(OUTDIR): - if not exist .\$@\nul mkdir .\$@ - -OBJS = $(OUTDIR)/misc.obj $(OUTDIR)/w32err.obj $(OUTDIR)/sub_proc.obj - -$(OUTDIR)/subproc.lib: $(OUTDIR) $(OBJS) - $(LIB) -out:$@ @<< - $(OBJS) -<< - -.c{$(OUTDIR)}.obj: - $(CC) $(CFLAGS) /c $< - -$(OUTDIR)/misc.obj: misc.c proc.h -$(OUTDIR)/sub_proc.obj: sub_proc.c ../include/sub_proc.h ../include/w32err.h proc.h -$(OUTDIR)/w32err.obj: w32err.c ../include/w32err.h