* INSTALL
* Minor simplification.
* make_gnu.bat
* Minor cleanup.
- Deleted 'don't modify, this is a template' text.
* utils/hbmk2/hbmk2.prg
+ Targets will now get an alternate workdir by default
on win/wce platforms when using -hbdyn.
; TOFIX: ? HB_DYNLIB usage should be cleaned and synced with
GNU Make system.
Current HB_DYNLIB usage:
GNU Make system: ( win or wce ) and non-gcc
hbmk2: ( win or wce )
* contrib/Makefile
- contrib/hbmsql
+ examples/hbmsql
* Moved hbmsql to examples.
- examples/hbmsql/Makefile
+ examples/hbmsql/hbmsql.hbp
+ Changed GNU Make file to hbmk2 make file.
* examples/hbmake/hbmake.hbp
* Minor to comment.
213 lines
7.1 KiB
Batchfile
213 lines
7.1 KiB
Batchfile
@rem
|
|
@rem $Id$
|
|
@rem
|
|
|
|
@echo off
|
|
|
|
rem ---------------------------------------------------------------
|
|
rem Copyright 1999-2009 Viktor Szakats (harbour.01 syenar.hu)
|
|
rem See COPYING for licensing terms.
|
|
rem
|
|
rem Initialize environment for GNU Make system to build Harbour
|
|
rem
|
|
rem For further information about the GNU Make system please
|
|
rem check doc/gmake.txt
|
|
rem ---------------------------------------------------------------
|
|
|
|
rem Setup defaults
|
|
if "%HB_ARCHITECTURE%" == "" if not "%WINDIR%" == "" set HB_ARCHITECTURE=win
|
|
if "%HB_ARCHITECTURE%" == "" set HB_ARCHITECTURE=dos
|
|
if "%HB_COMPILER%" == "" if not "%WINDIR%" == "" goto WIN_AUTODETECT
|
|
if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp
|
|
|
|
:CONTINUE_MAKE
|
|
|
|
if "%HB_INSTALL_PREFIX%" == "" if "%OS%" == "Windows_NT" set HB_INSTALL_PREFIX=%~dp0
|
|
|
|
rem Set to constant value.
|
|
if "%HB_BIN_INSTALL%" == "" set HB_BIN_INSTALL=%HB_INSTALL_PREFIX%\bin
|
|
if "%HB_LIB_INSTALL%" == "" set HB_LIB_INSTALL=%HB_INSTALL_PREFIX%\lib
|
|
if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=%HB_INSTALL_PREFIX%\include
|
|
if "%HB_DOC_INSTALL%" == "" set HB_DOC_INSTALL=%HB_INSTALL_PREFIX%\doc
|
|
|
|
rem Try to create install dirs.
|
|
if not exist %HB_BIN_INSTALL%\*.* md %HB_BIN_INSTALL%
|
|
if not exist %HB_LIB_INSTALL%\*.* md %HB_LIB_INSTALL%
|
|
if not exist %HB_INC_INSTALL%\*.* md %HB_INC_INSTALL%
|
|
if not exist %HB_DOC_INSTALL%\*.* md %HB_DOC_INSTALL%
|
|
|
|
if "%HB_ARCHITECTURE%" == "" goto BAD_ARCH
|
|
if "%HB_COMPILER%" == "" goto BAD_COMP
|
|
|
|
goto MAKE
|
|
|
|
:WIN_AUTODETECT
|
|
|
|
rem We need some batch features to autodetect compiler
|
|
if not "%OS%" == "Windows_NT" goto HELP
|
|
|
|
rem Order is significant
|
|
call :COMP_DET_ONE gcc.exe mingw win
|
|
call :COMP_DET_ONE wpp386.exe owatcom win
|
|
call :COMP_DET_ONE ml64.exe msvc64 win
|
|
call :COMP_DET_ONE icl.exe icc win
|
|
call :COMP_DET_ONE cl.exe msvc win
|
|
call :COMP_DET_ONE bcc32.exe bcc win
|
|
call :COMP_DET_ONE porc64.exe pocc64 win
|
|
call :COMP_DET_ONE pocc.exe pocc win
|
|
call :COMP_DET_ONE cygstart.exe cygwin win
|
|
call :COMP_DET_ONE xcc.exe xcc win
|
|
call :COMP_DET_ONE x86_64-pc-mingw32-gcc.exe mingw64 win x86_64-pc-mingw32-
|
|
call :COMP_DET_ONE arm-wince-mingw32ce-gcc.exe mingwarm wce arm-wince-mingw32ce-
|
|
call :COMP_DET_ONE arm-mingw32ce-gcc.exe mingwarm wce arm-mingw32ce-
|
|
|
|
if "%HB_COMPILER%" == "" ( echo HB_COMPILER couldn't be automatically determined. && goto HELP )
|
|
|
|
echo Autodetected HB_COMPILER: %HB_COMPILER%
|
|
echo Autodetected HB_ARCHITECTURE: %HB_ARCHITECTURE%
|
|
if not "%HB_CCPREFIX%" == "" echo Autodetected HB_CCPREFIX: %HB_CCPREFIX%
|
|
|
|
goto CONTINUE_MAKE
|
|
|
|
:HELP
|
|
|
|
echo.
|
|
echo Usage: make_gnu [command]
|
|
echo.
|
|
echo The following commands are supported:
|
|
echo - all (default)
|
|
echo - clean
|
|
echo - install
|
|
echo.
|
|
echo Please read INSTALL for HOWTOs and description
|
|
echo of available options.
|
|
goto END
|
|
|
|
:BAD_ARCH
|
|
|
|
echo Error: HB_ARCHITECTURE is not set.
|
|
goto HELP
|
|
|
|
:BAD_COMP
|
|
|
|
echo Error: HB_COMPILER is not set.
|
|
goto HELP
|
|
|
|
:MAKE
|
|
|
|
set _HB_HARBOUR_OLD=%HARBOUR%
|
|
set _HB_CLIPPER_OLD=%CLIPPER%
|
|
set HARBOUR=
|
|
set CLIPPER=
|
|
|
|
rem ---------------------------------------------------------------
|
|
rem Detect name of GNU Make
|
|
rem
|
|
rem Look for mingw32-make.exe and use it if found. Works only
|
|
rem on Windows NT and upper. [vszakats]
|
|
|
|
set _HB_MAKE=make.exe
|
|
|
|
if "%HB_ARCHITECTURE%" == "dos" goto SKIP_WINDLL
|
|
|
|
if "%HB_COMPILER%%HB_CCPREFIX%" == "mingw64" set HB_CCPREFIX=x86_64-pc-mingw32-
|
|
if "%HB_COMPILER%%HB_CCPREFIX%" == "mingwarm" set HB_CCPREFIX=arm-wince-mingw32ce-
|
|
|
|
if not exist config\mingw32-make.exe goto _FM_NOLOCAL
|
|
set _HB_MAKE=config\mingw32-make.exe
|
|
goto _FM_DONE
|
|
:_FM_NOLOCAL
|
|
if not "%OS%" == "Windows_NT" goto _FM_DONE
|
|
set _HB_CHECK=mingw32-make.exe
|
|
if exist "%_HB_CHECK%" ( set _HB_MAKE=%_HB_CHECK%&& goto _FM_DONE )
|
|
set _HB_PATH=%PATH%
|
|
:_FM_LOOP
|
|
for /F "delims=; tokens=1,2*" %%p in ("%_HB_PATH%") do (
|
|
if exist "%%p\%_HB_CHECK%" ( set _HB_MAKE=%_HB_CHECK%&& goto _FM_DONE )
|
|
if exist "%%p%_HB_CHECK%" ( set _HB_MAKE=%_HB_CHECK%&& goto _FM_DONE )
|
|
set _HB_PATH=%%~q;%%~r
|
|
)
|
|
if not "%_HB_PATH%"==";" goto _FM_LOOP
|
|
:_FM_DONE
|
|
set _HB_CHECK=
|
|
set _HB_PATH=
|
|
|
|
rem ---------------------------------------------------------------
|
|
rem Start the GNU Make system
|
|
|
|
rem ---------------------------------------------------------------
|
|
rem Special build mode when HB_BUILD_DLL=yes on Windows platform.
|
|
rem It will automatically build Harbour in two passes, one for
|
|
rem the .dlls and a final pass for the regular version.
|
|
|
|
if not "%HB_BUILD_DLL%" == "yes" goto SKIP_WINDLL
|
|
|
|
if "%HB_COMPILER%" == "mingw" goto DO_GCC
|
|
if "%HB_COMPILER%" == "mingw64" goto DO_GCC
|
|
if "%HB_COMPILER%" == "mingwarm" goto DO_GCC
|
|
if "%HB_COMPILER%" == "cygwin" goto DO_GCC
|
|
|
|
set _HB_CONTRIBLIBS=%HB_CONTRIBLIBS%
|
|
set _HB_CONTRIB_ADDONS=%HB_CONTRIB_ADDONS%
|
|
set _HB_EXTERNALLIBS=%HB_EXTERNALLIBS%
|
|
set _HB_EXTERNAL_ADDONS=%HB_EXTERNAL_ADDONS%
|
|
set HB_DYNLIB=yes
|
|
set HB_CONTRIBLIBS=no
|
|
set HB_CONTRIB_ADDONS=
|
|
set HB_EXTERNALLIBS=no
|
|
set HB_EXTERNAL_ADDONS=
|
|
%_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9
|
|
if errorlevel 1 echo GNU Make returned: %ERRORLEVEL%
|
|
set HB_DYNLIB=no
|
|
set HB_CONTRIBLIBS=%_HB_CONTRIBLIBS%
|
|
set HB_CONTRIB_ADDONS=%_HB_CONTRIB_ADDONS%
|
|
set HB_EXTERNALLIBS=%_HB_EXTERNALLIBS%
|
|
set HB_EXTERNAL_ADDONS=%_HB_EXTERNAL_ADDONS%
|
|
set _HB_CONTRIBLIBS=
|
|
set _HB_CONTRIB_ADDONS=
|
|
set _HB_EXTERNALLIBS=
|
|
set _HB_EXTERNAL_ADDONS=
|
|
%_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9
|
|
if errorlevel 1 echo GNU Make returned: %ERRORLEVEL%
|
|
goto MAKE_DONE
|
|
|
|
:DO_GCC
|
|
|
|
set HB_DYNLIB=no
|
|
%_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9
|
|
if errorlevel 1 echo GNU Make returned: %ERRORLEVEL%
|
|
goto MAKE_DONE
|
|
|
|
:SKIP_WINDLL
|
|
|
|
%_HB_MAKE% %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9
|
|
if errorlevel 1 echo GNU Make returned: %ERRORLEVEL%
|
|
goto MAKE_DONE
|
|
|
|
:MAKE_DONE
|
|
|
|
set _HB_MAKE=
|
|
set HARBOUR=%_HB_HARBOUR_OLD%
|
|
set CLIPPER=%_HB_CLIPPER_OLD%
|
|
set _HB_HARBOUR_OLD=
|
|
set _HB_CLIPPER_OLD=
|
|
goto END
|
|
|
|
:COMP_DET_ONE
|
|
|
|
if not "%HB_COMPILER%" == "" goto END
|
|
if exist "%1" ( set HB_COMPILER=%2&& set HB_ARCHITECTURE=%3&& set HB_CCPREFIX=%4&& goto _CDO_EXIT )
|
|
set _PATH=%PATH%
|
|
:_CDO_LOOP
|
|
for /F "delims=; tokens=1,2*" %%p in ("%_PATH%") do (
|
|
if exist "%%p\%1" ( set HB_COMPILER=%2&& set HB_ARCHITECTURE=%3&& set HB_CCPREFIX=%4&& goto _CDO_EXIT )
|
|
if exist "%%p%1" ( set HB_COMPILER=%2&& set HB_ARCHITECTURE=%3&& set HB_CCPREFIX=%4&& goto _CDO_EXIT )
|
|
set _PATH=%%~q;%%~r
|
|
)
|
|
if not "%_PATH%"==";" goto _CDO_LOOP
|
|
:_CDO_EXIT
|
|
set _PATH=
|
|
goto END
|
|
|
|
:END
|