> Would it be possible that the default include path is (1) an > environment or (2) a Make variable? If you want me to file a feature request somewhere, could you please pass on where to do that?
Before we consider taking the value from an environment variable, IMO we should augment the default value to include the default places where MinGW is installed. Feature requests are better submitted as Savannah bug reports, see http://savannah.gnu.org/bugs/?func=additem&group=make Thanks. --- A feature request re (1) and (2) is posted (http://savannah.gnu.org/bugs/index.php?47880) including a patch which might serve a starting point for the implementation of option (1) above; here the Windows environment variable MAKELIBPATH is used. Just as a side remark: The standard installation path of MinGW is C:\MinGW to where I think some users might have restricted access only, if at all. Separately attached an enhanced version of build_w32.bat (incl. .diff against the current Savannah git version) allowing for MinGW compilation, as well. This is useful if - as here - MinGW and Cygwin exist in tandem on the system. Please note that the script includes the definition of hard coded explicit include paths (-D INCLUDEDIR = ...). Thanks, J.
build_w32.diff
Description: Binary data
@echo off rem Copyright (C) 1996-2016 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 <http://www.gnu.org/licenses/>. set GCC_FLAG=-DINCLUDEDIR="\".\",\"C:/mydevel/mybin/makelib\"" call :Reset if "%1" == "-h" goto Usage if "%1" == "--help" goto Usage set MAKE=gnumake set GUILE=Y set COMPILER=msvc :ParseSW if "%1" == "--debug" goto SetDebug if "%1" == "--without-guile" goto NoGuile if "%1" == "gcc" goto SetCC if "%1" == "MinGW" goto SetMinGW if "%1" == "" goto DoneSW :SetDebug set DEBUG=Y shift goto ParseSW :NoGuile set GUILE=N echo Building without Guile shift goto ParseSW :SetCC set COMPILER=gcc set GCC=gcc echo Building with GCC shift goto ParseSW :SetMinGW set COMPILER=gcc set GCC=mingw32-gcc echo Building with MinGW shift goto ParseSW rem Build with Guile is supported only on NT and later versions :DoneSW echo. echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10 if "%DEBUG%" == "Y" echo Building without compiler optimizations if "%COMPILER%" == "gcc" goto GccBuild set OUTDIR=.\WinRel set "OPTS=/O2 /D NDEBUG" set LINKOPTS= if "%DEBUG%" == "Y" set OUTDIR=.\WinDebug if "%DEBUG%" == "Y" set "OPTS=/Zi /Od /D _DEBUG" if "%DEBUG%" == "Y" set LINKOPTS=/DEBUG call :Build goto Done :GccBuild set OUTDIR=.\GccRel set OPTS=-O2 set GCC_LFLAGS=-s if "%DEBUG%" == "Y" set OPTS=-O0 if "%DEBUG%" == "Y" set OUTDIR=.\GccDebug if "%DEBUG%" == "Y" set GCC_LFLAGS= call :Build goto Done :Done call :Reset goto :EOF :Build :: Clean the directory if it exists if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR% :: Recreate it mkdir %OUTDIR% mkdir %OUTDIR%\glob mkdir %OUTDIR%\w32 mkdir %OUTDIR%\w32\compat mkdir %OUTDIR%\w32\subproc if "%GUILE%" == "Y" call :ChkGuile echo. echo Compiling %OUTDIR% version if exist config.h.W32.template call :ConfigSCM copy config.h.W32 %OUTDIR%\config.h call :Compile ar call :Compile arscan call :Compile commands call :Compile default call :Compile dir call :Compile expand call :Compile file call :Compile function call :Compile getloadavg call :Compile getopt call :Compile getopt1 call :Compile glob\fnmatch call :Compile glob\glob call :Compile guile GUILE call :Compile hash call :Compile implicit call :Compile job call :Compile load call :Compile loadapi call :Compile main GUILE call :Compile misc call :Compile output call :Compile read call :Compile remake call :Compile remote-stub call :Compile rule call :Compile signame call :Compile strcache call :Compile variable call :Compile version call :Compile vpath call :Compile w32\compat\posixfcn call :Compile w32\pathstuff 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 call :Link echo. if not exist %OUTDIR%\%MAKE%.exe echo %OUTDIR% build FAILED! if exist %OUTDIR%\%MAKE%.exe echo %OUTDIR% build succeeded. goto :EOF :Compile set EXTRAS= if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%" if "%COMPILER%" == "gcc" goto GccCompile :: MSVC Compile echo on cl.exe /nologo /MT /W4 /GX /YX %OPTS% /I %OUTDIR% /I . /I glob /I w32/include /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.obj /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c @echo off echo %OUTDIR%\%1.obj >>%OUTDIR%\link.sc goto :EOF :GccCompile :: GCC Compile echo on %GCC% %GCC_FLAG% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%\%1.o -c %1.c @echo off goto :EOF :Link echo Linking %OUTDIR%/%MAKE%.exe if "%COMPILER%" == "gcc" goto GccLink :: MSVC Link echo %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib >>%OUTDIR%\link.sc echo on link.exe /NOLOGO /SUBSYSTEM:console /PDB:%OUTDIR%\%MAKE%.pdb %LINKOPTS% /OUT:%OUTDIR%\%MAKE%.exe @%OUTDIR%\link.sc @echo off goto :EOF :GccLink :: GCC Link echo on %GCC% %GCC_LFLAGS% -o %OUTDIR%\%MAKE%.exe %OUTDIR%\variable.o %OUTDIR%\rule.o %OUTDIR%\remote-stub.o %OUTDIR%\commands.o %OUTDIR%\file.o %OUTDIR%\getloadavg.o %OUTDIR%\default.o %OUTDIR%\signame.o %OUTDIR%\expand.o %OUTDIR%\dir.o %OUTDIR%\main.o %OUTDIR%\getopt1.o %OUTDIR%\guile.o %OUTDIR%\job.o %OUTDIR%\output.o %OUTDIR%\read.o %OUTDIR%\version.o %OUTDIR%\getopt.o %OUTDIR%\arscan.o %OUTDIR%\remake.o %OUTDIR%\misc.o %OUTDIR%\hash.o %OUTDIR%\strcache.o %OUTDIR%\ar.o %OUTDIR%\function.o %OUTDIR%\vpath.o %OUTDIR%\implicit.o %OUTDIR%\loadapi.o %OUTDIR%\load.o %OUTDIR%\glob\glob.o %OUTDIR%\glob\fnmatch.o %OUTDIR%\w32\pathstuff.o %OUTDIR%\w32\compat\posixfcn.o %OUTDIR%\w32\w32os.o %OUTDIR%\w32\subproc\misc.o %OUTDIR%\w32\subproc\sub_proc.o %OUTDIR%\w32\subproc\w32err.o %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -Wl,--out-implib=%OUTDIR%\libgnumake-1.dll.a @echo off goto :EOF :ConfigSCM echo Generating config from SCM templates sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\config.h.W32.sed echo s,%%PACKAGE%%,make,g >> %OUTDIR%\config.h.W32.sed sed -f %OUTDIR%\config.h.W32.sed config.h.W32.template > config.h.W32 echo static const char *const GUILE_module_defn = ^" \> gmk-default.h sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" gmk-default.scm >> gmk-default.h echo ^";>> gmk-default.h goto :EOF :ChkGuile if not "%OS%" == "Windows_NT" goto NoGuile pkg-config --help > %OUTDIR%\guile.tmp 2> NUL if ERRORLEVEL 1 goto NoPkgCfg echo Checking for Guile 2.0 if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax pkg-config --cflags --short-errors "guile-2.0" > %OUTDIR%\guile.tmp if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\guile.tmp pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > %OUTDIR%\guile.tmp if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\guile.tmp if not "%GUILECFLAGS%" == "" goto GuileDone echo Checking for Guile 1.8 pkg-config --cflags --short-errors "guile-1.8" > %OUTDIR%\guile.tmp if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\guile.tmp pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > %OUTDIR%\guile.tmp if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\guile.tmp if not "%GUILECFLAGS%" == "" goto GuileDone echo No Guile found, building without Guile goto GuileDone :NoPkgCfg echo pkg-config not found, building without Guile :GuileDone if "%GUILECFLAGS%" == "" goto :EOF echo Guile found, building with Guile set "GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE" goto :EOF :Usage echo Usage: %0 [options] [gcc^|MinGW] echo Options: echo. --debug For GCC only, make a debug build echo. (MSVC build always makes both debug and release) echo. --without-guile Do not compile Guile support even if found echo. --help Display these instructions and exit goto :EOF :Reset set COMPILER= set DEBUG= set GUILE= set GUILECFLAGS= set GUILELIBS= set LINKOPTS= set GCC_LFLAGS= set MAKE= set NOGUILE= set OPTS= set OUTDIR= set PKGMSC= goto :EOF
_______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make