mirror of
https://github.com/mirror/make.git
synced 2024-12-28 05:40:10 +08:00
Add support for building with Tiny C for MS-Windows
* src/config.h.W32.template (HAVE_DIRECT_H, HAVE_STRCASECMP) (HAVE_STRNCASECMP, HAVE_UMASK): Add __TINYC__ to MinGW condition. (BATCH_MODE_ONLY_SHELL): Make this the default for Tiny C. * build_w32.bat: Support building with Tiny C's tcc compiler.
This commit is contained in:
parent
4533348826
commit
6ba5ea022a
@ -37,6 +37,7 @@ set COMPILER=cl.exe
|
|||||||
set O=obj
|
set O=obj
|
||||||
set ARCH=x64
|
set ARCH=x64
|
||||||
set DEBUG=N
|
set DEBUG=N
|
||||||
|
set DIRENT=Y
|
||||||
|
|
||||||
if exist maintMakefile (
|
if exist maintMakefile (
|
||||||
set MAINT=Y
|
set MAINT=Y
|
||||||
@ -49,6 +50,7 @@ if "%1" == "--debug" goto SetDebug
|
|||||||
if "%1" == "--without-guile" goto NoGuile
|
if "%1" == "--without-guile" goto NoGuile
|
||||||
if "%1" == "--x86" goto Set32Bit
|
if "%1" == "--x86" goto Set32Bit
|
||||||
if "%1" == "gcc" goto SetCC
|
if "%1" == "gcc" goto SetCC
|
||||||
|
if "%1" == "tcc" goto SetTCC
|
||||||
if "%1" == "" goto DoneSW
|
if "%1" == "" goto DoneSW
|
||||||
goto Usage
|
goto Usage
|
||||||
|
|
||||||
@ -77,10 +79,18 @@ echo - Building with GCC
|
|||||||
shift
|
shift
|
||||||
goto ParseSW
|
goto ParseSW
|
||||||
|
|
||||||
|
:SetTCC
|
||||||
|
set COMPILER=tcc
|
||||||
|
set O=o
|
||||||
|
echo - Building with TinyC
|
||||||
|
shift
|
||||||
|
goto ParseSW
|
||||||
|
|
||||||
:DoneSW
|
:DoneSW
|
||||||
if "%MAINT%" == "Y" echo - Enabling maintainer mode
|
if "%MAINT%" == "Y" echo - Enabling maintainer mode
|
||||||
|
|
||||||
if "%COMPILER%" == "gcc" goto FindGcc
|
if "%COMPILER%" == "gcc" goto FindGcc
|
||||||
|
if "%COMPILER%" == "tcc" goto FindTcc
|
||||||
|
|
||||||
:: Find a compiler. Visual Studio requires a lot of effort to locate :-/.
|
:: Find a compiler. Visual Studio requires a lot of effort to locate :-/.
|
||||||
%COMPILER% >nul 2>&1
|
%COMPILER% >nul 2>&1
|
||||||
@ -172,6 +182,7 @@ goto Build
|
|||||||
set OUTDIR=.\GccRel
|
set OUTDIR=.\GccRel
|
||||||
set LNKOUT=./GccRel
|
set LNKOUT=./GccRel
|
||||||
set OPTS=-O2
|
set OPTS=-O2
|
||||||
|
set DIRENT=N
|
||||||
if "%DEBUG%" == "Y" set OPTS=-O0
|
if "%DEBUG%" == "Y" set OPTS=-O0
|
||||||
if "%DEBUG%" == "Y" set OUTDIR=.\GccDebug
|
if "%DEBUG%" == "Y" set OUTDIR=.\GccDebug
|
||||||
if "%DEBUG%" == "Y" set LNKOUT=./GccDebug
|
if "%DEBUG%" == "Y" set LNKOUT=./GccDebug
|
||||||
@ -183,6 +194,21 @@ if not ERRORLEVEL 1 goto Build
|
|||||||
echo No %COMPILER% found.
|
echo No %COMPILER% found.
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
|
:FindTcc
|
||||||
|
set OUTDIR=.\TccRel
|
||||||
|
set LNKOUT=./TccRel
|
||||||
|
set OPTS=-O2
|
||||||
|
if "%DEBUG%" == "Y" set OPTS=-O0
|
||||||
|
if "%DEBUG%" == "Y" set OUTDIR=.\TccDebug
|
||||||
|
if "%DEBUG%" == "Y" set LNKOUT=./TccDebug
|
||||||
|
if "%MAINT%" == "Y" set "OPTS=%OPTS% -DMAKE_MAINTAINER_MODE"
|
||||||
|
:: Show the compiler version that we found
|
||||||
|
echo.
|
||||||
|
%COMPILER% -v
|
||||||
|
if not ERRORLEVEL 1 goto Build
|
||||||
|
echo No %COMPILER% found.
|
||||||
|
exit 1
|
||||||
|
|
||||||
:Build
|
:Build
|
||||||
:: Clean the directory if it exists
|
:: Clean the directory if it exists
|
||||||
if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR%
|
if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR%
|
||||||
@ -246,7 +272,8 @@ call :Compile lib/fnmatch
|
|||||||
call :Compile lib/glob
|
call :Compile lib/glob
|
||||||
call :Compile lib/getloadavg
|
call :Compile lib/getloadavg
|
||||||
|
|
||||||
if not "%COMPILER%" == "gcc" call :Compile src\w32\compat\dirent
|
:: Compile dirent unless it is supported by compiler library (like with gcc).
|
||||||
|
if "%DIRENT%" == "Y" call :Compile src\w32\compat\dirent
|
||||||
|
|
||||||
call :Link
|
call :Link
|
||||||
|
|
||||||
@ -272,6 +299,7 @@ set EXTRAS=
|
|||||||
if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%"
|
if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%"
|
||||||
if exist "%OUTDIR%\%1.%O%" del "%OUTDIR%\%1.%O%"
|
if exist "%OUTDIR%\%1.%O%" del "%OUTDIR%\%1.%O%"
|
||||||
if "%COMPILER%" == "gcc" goto GccCompile
|
if "%COMPILER%" == "gcc" goto GccCompile
|
||||||
|
if "%COMPILER%" == "tcc" goto TccCompile
|
||||||
|
|
||||||
:: MSVC Compile
|
:: MSVC Compile
|
||||||
echo on
|
echo on
|
||||||
@ -284,6 +312,14 @@ goto CompileDone
|
|||||||
echo on
|
echo on
|
||||||
%COMPILER% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c
|
%COMPILER% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c
|
||||||
@echo off
|
@echo off
|
||||||
|
goto CompileDone
|
||||||
|
|
||||||
|
:TccCompile
|
||||||
|
:: TCC Compile
|
||||||
|
echo on
|
||||||
|
%COMPILER% -mthreads -Wall -std=c11 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -D_cdecl= -D_MSC_VER -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c
|
||||||
|
@echo off
|
||||||
|
goto CompileDone
|
||||||
|
|
||||||
:CompileDone
|
:CompileDone
|
||||||
if not exist "%OUTDIR%\%1.%O%" exit 1
|
if not exist "%OUTDIR%\%1.%O%" exit 1
|
||||||
@ -293,6 +329,7 @@ goto :EOF
|
|||||||
echo.
|
echo.
|
||||||
echo Linking %LNKOUT%/%MAKE%.exe
|
echo Linking %LNKOUT%/%MAKE%.exe
|
||||||
if "%COMPILER%" == "gcc" goto GccLink
|
if "%COMPILER%" == "gcc" goto GccLink
|
||||||
|
if "%COMPILER%" == "tcc" goto TccLink
|
||||||
|
|
||||||
:: MSVC Link
|
:: 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 %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
|
||||||
@ -309,6 +346,14 @@ echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -l
|
|||||||
@echo off
|
@echo off
|
||||||
goto :EOF
|
goto :EOF
|
||||||
|
|
||||||
|
:TccLink
|
||||||
|
:: TCC Link
|
||||||
|
echo on
|
||||||
|
echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc
|
||||||
|
%COMPILER% -mthreads %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc
|
||||||
|
@echo off
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
:ConfigSCM
|
:ConfigSCM
|
||||||
echo Generating config from SCM templates
|
echo Generating config from SCM templates
|
||||||
sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\src\config.h.W32.sed
|
sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\src\config.h.W32.sed
|
||||||
@ -375,12 +420,14 @@ if ERRORLEVEL 1 exit /b 1
|
|||||||
goto :EOF
|
goto :EOF
|
||||||
|
|
||||||
:Usage
|
:Usage
|
||||||
echo Usage: %0 [options] [gcc]
|
echo Usage: %0 [options] [gcc] OR [tcc]
|
||||||
echo Options:
|
echo Options:
|
||||||
echo. --without-guile Do not compile Guile support even if found
|
echo. --without-guile Do not compile Guile support even if found
|
||||||
echo. --debug Make a Debug build--default is Release
|
echo. --debug Make a Debug build--default is Release
|
||||||
echo. --x86 Make a 32bit binary--default is 64bit
|
echo. --x86 Make a 32bit binary--default is 64bit
|
||||||
echo. --help Display these instructions and exit
|
echo. --help Display these instructions and exit
|
||||||
|
echo.
|
||||||
|
echo. "gcc" means compile with GCC, "tcc" means compile with Tiny C's TCC
|
||||||
goto :EOF
|
goto :EOF
|
||||||
|
|
||||||
:Reset
|
:Reset
|
||||||
|
@ -102,7 +102,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
|||||||
/* Define to 1 if you have the <direct.h> header file, and it defines getcwd()
|
/* Define to 1 if you have the <direct.h> header file, and it defines getcwd()
|
||||||
and chdir().
|
and chdir().
|
||||||
*/
|
*/
|
||||||
#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__INTERIX)
|
#if (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__TINYC__)) && !defined(__INTERIX)
|
||||||
# define HAVE_DIRECT_H 1
|
# define HAVE_DIRECT_H 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -247,7 +247,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
|||||||
#define HAVE_STDLIB_H 1
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the 'strcasecmp' function. */
|
/* Define to 1 if you have the 'strcasecmp' function. */
|
||||||
#ifdef __MINGW32__
|
#if defined(__MINGW32__) || defined(__TINYC__)
|
||||||
#define HAVE_STRCASECMP 1
|
#define HAVE_STRCASECMP 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
|||||||
#define HAVE_STRING_H 1
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the 'strncasecmp' function. */
|
/* Define to 1 if you have the 'strncasecmp' function. */
|
||||||
#ifdef __MINGW32__
|
#if defined(__MINGW32__) || defined(__TINYC__)
|
||||||
#define HAVE_STRNCASECMP 1
|
#define HAVE_STRNCASECMP 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -305,7 +305,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
|||||||
char *ttyname (int);
|
char *ttyname (int);
|
||||||
|
|
||||||
/* Define to 1 if you have the `umask' function. */
|
/* Define to 1 if you have the `umask' function. */
|
||||||
#ifdef __MINGW32__
|
#if defined(__MINGW32__) || defined(__TINYC__)
|
||||||
# define HAVE_UMASK 1
|
# define HAVE_UMASK 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -525,10 +525,14 @@ char *ttyname (int);
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* If you have a shell that does not grok 'sh -c quoted-command-line'
|
* If you have a shell that does not grok 'sh -c quoted-command-line'
|
||||||
* correctly, you need this setting. Please see below for specific
|
* correctly, you need this setting; it is the default for tcc.
|
||||||
* shell support.
|
* Please see below for specific shell support.
|
||||||
*/
|
*/
|
||||||
|
#if defined(__TINYC__)
|
||||||
|
#define BATCH_MODE_ONLY_SHELL 1
|
||||||
|
#else
|
||||||
/*#define BATCH_MODE_ONLY_SHELL 1 */
|
/*#define BATCH_MODE_ONLY_SHELL 1 */
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define if you have the Cygnus "Cygwin" GNU Windows32 tool set.
|
* Define if you have the Cygnus "Cygwin" GNU Windows32 tool set.
|
||||||
|
Loading…
Reference in New Issue
Block a user