2009-04-02 13:42 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* bin/hb-mkdyn.bat
  * bin/postinst.bat
    + Added support for GCC family .dll creation. (Cygwin not tested)
      This will also create .def files. Also implib .a files are possible,
      code is there commented.
    + Added 'wce' ARCH support.
    ! Fixed to not include gtwin in WinCE .dlls.
    + Added support for HB_DLLIBS envvar.
    ; NOTE: The benefits of using cmd shell instead of msys to create
            mingw builds is that hbrun-dll and hbtest-dll are also
            created and you don't have use forward slashes in HB_INC_*
            envvars. It also allows to more easily add implib creation
            in the future. Overall the Windows build environment is
            more uniform this way. msys build output though is much
            sleeker and also seems faster.
            If this method turns out to be okay, it may become the
            default/support/standard way to build Harbour with MinGW
            on Windows. (if not we can return to the msys method)

    ; TOFIX: Shared MinGW executables cannot be built if Harbour was built
             with -DHB_DYNLIB. IMO this macro should be ignored in MinGW
             builds as there is no separate DLL build and non-DLL.
             [ I cannot fix this. ]
             Until then I had to a hack to starter batch files.

  * mpkg_win.bat
    * Switched to use make_gnu.bat instead of make_gnu.sh to build
      GCC family targets.

  * make_gnu.bat
    + Added special codepath for GCC familty as it needs one pass only
      to create .dlls.

  * INSTALL
    * Updated to reflect now possible non-msys MinGW build.
    * Updated example to use non-msys flavours.
    + Readded MinGW + msys example.
    % Minor simplification in mingw64/mingwce targets.
      (HB_CCPATH no longer needed on Windows)
This commit is contained in:
Viktor Szakats
2009-04-02 11:46:27 +00:00
parent 6087611f6c
commit c2bfed14d8
6 changed files with 238 additions and 73 deletions

View File

@@ -8,6 +8,47 @@
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2009-04-02 13:42 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* bin/hb-mkdyn.bat
* bin/postinst.bat
+ Added support for GCC family .dll creation. (Cygwin not tested)
This will also create .def files. Also implib .a files are possible,
code is there commented.
+ Added 'wce' ARCH support.
! Fixed to not include gtwin in WinCE .dlls.
+ Added support for HB_DLLIBS envvar.
; NOTE: The benefits of using cmd shell instead of msys to create
mingw builds is that hbrun-dll and hbtest-dll are also
created and you don't have use forward slashes in HB_INC_*
envvars. It also allows to more easily add implib creation
in the future. Overall the Windows build environment is
more uniform this way. msys build output though is much
sleeker and also seems faster.
If this method turns out to be okay, it may become the
default/support/standard way to build Harbour with MinGW
on Windows. (if not we can return to the msys method)
; TOFIX: Shared MinGW executables cannot be built if Harbour was built
with -DHB_DYNLIB. IMO this macro should be ignored in MinGW
builds as there is no separate DLL build and non-DLL.
[ I cannot fix this. ]
Until then I had to a hack to starter batch files.
* mpkg_win.bat
* Switched to use make_gnu.bat instead of make_gnu.sh to build
GCC family targets.
* make_gnu.bat
+ Added special codepath for GCC familty as it needs one pass only
to create .dlls.
* INSTALL
* Updated to reflect now possible non-msys MinGW build.
* Updated example to use non-msys flavours.
+ Readded MinGW + msys example.
% Minor simplification in mingw64/mingwce targets.
(HB_CCPATH no longer needed on Windows)
2009-04-02 11:19 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* make_gnu_xmingwce.sh
* bin/hb-mkdyn.sh

View File

@@ -33,6 +33,45 @@ HOW TO BUILD AND INSTALL HARBOUR
$ ./hello
You should see 'Hello world!' on screen.
Windows
-------
Platform specific prerequisites:
1.) Windows NT or compatible system is required to build Harbour.
2.) Make sure to have your C compiler of choice properly installed.
Refer to your C compiler installation and setup instructions for
details. It's recommended to make sure no tools in your PATH
belonging to other C compilers are interfering with your setup.
For the list of supported compilers, please look up the
relevant section of this file.
3.) Make sure to have GNU Make. Certain older versions and builds
are untested and may not work. We recommend the one distributed
by MinGW team. Use this link to get it:
https://sourceforge.net/project/showfiles.php?group_id=2435&package_id=23918
If you have it, you have three choices:
- Copy mingw32-make.exe or make.exe into a separate directory
and add that directory to the beginning of your PATH.
(recommended)
- Put mingw32-make.exe anywhere in your PATH.
- Put mingw32-make.exe in Harbour source root dir.
If you're using MinGW compiler, you don't have to bother with
all this.
> set HB_COMPILER=<mingw|msvc|owatcom|bcc|pocc|...>
> set HB_INSTALL_PREFIX=<DIR>
> make_gnu.bat install
To test it, go to <DIR>\bin directory and type:
> hbmk2 ..\tests\hello.prg
> hello
You should see 'Hello world!' on screen.
NOTE: <DIR> is your destination directory where executables,
libraries and headers will be created. Use absolute paths
only. For a peace of mind, avoid using spaces, quotes
in the name. You can leave it empty, in this case the
results will be created under the current directory tree.
Windows with MinGW + msys
-------------------------
This is the recommended way to build with MinGW.
@@ -62,43 +101,6 @@ HOW TO BUILD AND INSTALL HARBOUR
NOTE: <DIR> should use Cygwin drive notation: /cygdrive/c for C:
Windows with other compilers (MSVC, Watcom, Borland, Pelles, etc.)
----------------------------
Platform specific prerequisites:
1.) Windows NT or compatible system is required to build Harbour.
2.) Make sure to have your C compiler of choice properly installed.
Refer to your C compiler installation and setup instructions for
details. It's recommended to make sure no tools in your PATH
belonging to other C compilers are interfering with your setup.
For the list of supported compilers, please look up the
relevant section of this file.
3.) Make sure to have GNU Make. Certain older versions and builds
are untested and may not work. We recommend the one distributed
by MinGW team. Use this link to get it:
https://sourceforge.net/project/showfiles.php?group_id=2435&package_id=23918
If you have it, you have three choices:
- Copy mingw32-make.exe or make.exe into a separate directory
and add that directory to the beginning of your PATH.
(recommended)
- Put mingw32-make.exe anywhere in your PATH.
- Put mingw32-make.exe in Harbour source root dir.
> set HB_COMPILER=<msvc|owatcom|bcc|pocc|...>
> set HB_INSTALL_PREFIX=<DIR>
> make_gnu.bat install
To test it, go to <DIR>\bin directory and type:
> hbmk2 ..\tests\hello.prg
> hello
You should see 'Hello world!' on screen.
NOTE: <DIR> is your destination directory where executables,
libraries and headers will be created. Use absolute paths
only. For a peace of mind, avoid using spaces, quotes
in the name. You can leave it empty, in this case the
results will be created under the current directory tree.
DOS
---
> set HB_COMPILER=<[djgpp]|owatcom>
@@ -150,7 +152,7 @@ HOW TO ENABLE OPTIONAL COMPONENTS BEFORE BUILD
HB_INC_QT=C:\Qt\2009.01\qt\include
HB_INC_SQLITE3=C:\sqlite3 (defaults to locally hosted version on win/os2)
NOTES: - For mingw and cygwin you have to use forward slashes
NOTES: - For mingw+msys and cygwin you have to use forward slashes
and also cygwin drive notation for cygwin.
- Space in directory names isn't currently supported.
- Don't put the dir inside double quotes.
@@ -348,7 +350,17 @@ EXAMPLES
---
--- MinGW GCC
set PATH=C:\devl\msys\1.0.11\bin;C:\devl\MinGW-433\bin;%PATH%
set PATH=C:\devl\MinGW-433\bin;%PATH%
rem
set HB_COMPILER=mingw
rem
set HB_INSTALL_PREFIX=C:\hb-%HB_COMPILER%
call make_gnu.bat %1 %2 > log-%HB_COMPILER%.txt 2>&1
---
--- MinGW GCC with msys
set PATH=C:\devl\msys\1.0.11\bin;%PATH%
set PATH=C:\devl\MinGW-433\bin;%PATH%
rem
set HB_COMPILER=mingw
rem
@@ -357,31 +369,29 @@ EXAMPLES
---
--- MinGW GCC for x64 (requires native x86 Harbour binaries)
set HB_CCPATH=C:\devl\MinGW-440-64\bin
set PATH=C:\devl\MinGW-440-64\bin;%PATH%
set HB_CCPREFIX=x86_64-pc-mingw32-
set PATH=C:\devl\msys\1.0.11\bin;%HB_CCPATH%;%PATH%
rem
set HB_COMPILER=mingw64
rem
set HB_BIN_COMPILE=C:\hb-mingw\bin
set HB_PPGEN_PATH=%HB_BIN_COMPILE%
rem
set HB_INSTALL_PREFIX=/c/hb-%HB_COMPILER%
sh make_gnu.sh %1 %2 > log-%HB_COMPILER%.txt 2>&1
set HB_INSTALL_PREFIX=C:\hb-%HB_COMPILER%
call make_gnu.bat %1 %2 > log-%HB_COMPILER%.txt 2>&1
---
--- MinGW GCC for WinCE/ARM (requires native x86 Harbour binaries)
set HB_CCPATH=C:\devl\MinGW-410-ce\opt\mingw32ce\bin
set PATH=C:\devl\MinGW-410-ce\opt\mingw32ce\bin;%PATH%
set HB_CCPREFIX=arm-wince-mingw32ce-
set PATH=C:\devl\msys\1.0.11\bin;%HB_CCPATH%;%PATH%
rem
set HB_COMPILER=mingwce
rem
set HB_BIN_COMPILE=C:\hb-mingw\bin
set HB_PPGEN_PATH=%HB_BIN_COMPILE%
rem
set HB_INSTALL_PREFIX=/c/hb-%HB_COMPILER%
sh make_gnu.sh %1 %2 > log-%HB_COMPILER%.txt 2>&1
set HB_INSTALL_PREFIX=C:\hb-%HB_COMPILER%
call make_gnu.bat %1 %2 > log-%HB_COMPILER%.txt 2>&1
---
--- Open Watcom C++
@@ -509,7 +519,7 @@ EXAMPLES
--8<--
rem ; To create installation packages (.exe + .zip),
rem replace last lines (calling make_gnu.*) with these two:
rem replace last line (calling make_gnu.bat) with these two:
set PATH=C:\devl\NSIS-2.44;%PATH%
call mpkg_win.bat > log-%HB_COMPILER%.txt 2>&1
-->8--

View File

@@ -20,21 +20,34 @@ if "%HB_ARCHITECTURE%" == "" ( echo HB_ARCHITECTURE needs to be set. && goto END
if "%HB_COMPILER%" == "" ( echo HB_COMPILER needs to be set. && goto END )
set HB_DLL_VERSION=11
set HB_DLL_LIBS=hbcommon hbpp hbrtl hbmacro hblang hbcpage hbpcre hbzlib hbextern hbrdd rddntx rddnsx rddcdx rddfpt hbsix hbhsx hbusrrdd gtcgi gtpca gtstd gtwin gtwvt gtgui hbmaindllh
set HB_DLL_LIBS=hbcommon hbpp hbrtl hbmacro hblang hbcpage hbpcre hbzlib hbextern hbrdd rddntx rddnsx rddcdx rddfpt hbsix hbhsx hbusrrdd gtcgi gtpca gtstd gtwvt gtgui hbmaindllh
set HB_DLL_LIBS_WIN=gtwin
set HB_DLL_LIBS_ST=hbvm
set HB_DLL_LIBS_MT=hbvmmt
if "%HB_ARCHITECTURE%" == "wce" set HB_DLL_LIBS_WIN=
if "%HB_COMPILER%" == "msvcce" set HB_DLL_LIBS_WIN=
if "%HB_COMPILER%" == "mingwce" set HB_DLL_LIBS_WIN=
if "%HB_COMPILER%" == "poccce" set HB_DLL_LIBS_WIN=
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_icc" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_msvcarm" goto DO_MSVC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw64" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingwce" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_mingwarm" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_cygwin" goto DO_GCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_bcc" goto DO_BCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_owatcom" goto DO_OWATCOM
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" goto DO_POCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc64" goto DO_POCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" goto DO_POCC
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_poccarm" goto DO_POCC
echo Platform %HB_ARCHITECTURE% / %HB_COMPILER% isn't supported.
goto END
@@ -55,7 +68,7 @@ if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_iccia64" set _BIN_LINK=xilink
rem ; Extract neutral objects
echo.> _hboneut.txt
for %%f in (%HB_DLL_LIBS%) do (
for %%f in (%HB_DLL_LIBS% %HB_DLL_LIBS_WIN%) do (
if exist "%HB_LIB_INSTALL%\%%f.lib" (
echo Processing library: %%f
%_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt
@@ -117,16 +130,19 @@ if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" set _DST_NAME_ST=harbour-
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_msvcarm" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_msvcarm" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvc64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ia64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ia64
if not "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _SYSLIBS=wininet.lib ws2.lib
set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_msvcce" set _SYSLIBS=wininet.lib ws2.lib
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_msvcarm" set _SYSLIBS=wininet.lib ws2.lib
echo Making %_DST_NAME_ST%.dll... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt %_SYSLIBS%
echo Making %_DST_NAME_MT%.dll... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt %_SYSLIBS%
echo Making %_DST_NAME_ST%.dll... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt %_SYSLIBS% %HB_DLLIBS%
echo Making %_DST_NAME_MT%.dll... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt %_SYSLIBS% %HB_DLLIBS%
if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib"
if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib"
@@ -161,7 +177,7 @@ echo. c0d32.obj +> _hballmt.txt
rem ; Extract neutral objects
echo.> _hboneut.txt
for %%f in (%HB_DLL_LIBS%) do (
for %%f in (%HB_DLL_LIBS% %HB_DLL_LIBS_WIN%) do (
if exist "%HB_LIB_INSTALL%\%%f.lib" (
echo Processing library: %%f
tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul
@@ -243,8 +259,8 @@ cd ..
set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-bcc
set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-bcc
echo. , "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll",, cw32mt.lib import32.lib >> _hballst.txt
echo. , "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll",, cw32mt.lib import32.lib >> _hballmt.txt
echo. , "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll",, cw32mt.lib import32.lib %HB_DLLIBS% >> _hballst.txt
echo. , "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll",, cw32mt.lib import32.lib %HB_DLLIBS% >> _hballmt.txt
echo Making %_DST_NAME_ST%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x c0d32.obj @_hballst.txt
echo Making %_DST_NAME_MT%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x c0d32.obj @_hballmt.txt
@@ -280,7 +296,7 @@ cd _dll
echo.> _hbsst.txt
echo.> _hbsmt.txt
for %%f in (%HB_DLL_LIBS%) do (
for %%f in (%HB_DLL_LIBS% %HB_DLL_LIBS_WIN%) do (
echo FILE '%HB_LIB_INSTALL%\%%f.lib'>> _hbsst.txt
echo FILE '%HB_LIB_INSTALL%\%%f.lib'>> _hbsmt.txt
)
@@ -319,7 +335,7 @@ cd _dll
rem ; Extract neutral objects
echo.> _hboneut.txt
for %%f in (%HB_DLL_LIBS%) do (
for %%f in (%HB_DLL_LIBS% %HB_DLL_LIBS_WIN%) do (
if exist "%HB_LIB_INSTALL%\%%f.lib" (
echo Processing library: %%f
polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode >> _hboneut.txt
@@ -372,13 +388,16 @@ if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc64" set _DST_NAME_ST=harbour-
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_poccarm" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_poccarm" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_pocc64" set _SYSLIBS=user32.lib ws2_32.lib advapi32.lib gdi32.lib
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_poccce" set _SYSLIBS=wininet.lib ws2.lib
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_poccarm" set _SYSLIBS=wininet.lib ws2.lib
echo Making %_DST_NAME_ST%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt %_SYSLIBS%
echo Making %_DST_NAME_MT%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt %_SYSLIBS%
echo Making %_DST_NAME_ST%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt %_SYSLIBS% %HB_DLLIBS%
echo Making %_DST_NAME_MT%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt %_SYSLIBS% %HB_DLLIBS%
polib "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" /out:"%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib"
polib "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" /out:"%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib"
@@ -403,6 +422,96 @@ rmdir _dll
goto END
:DO_GCC
echo Making .dlls for %HB_ARCHITECTURE% / %HB_COMPILER%...
md _dll
cd _dll
rem ; Extract neutral objects
echo.> _hboneut.txt
for %%f in (%HB_DLL_LIBS% %HB_DLL_LIBS_WIN%) do (
if exist "%HB_LIB_INSTALL%\lib%%f.a" (
echo Processing library: %%f
%HB_CCPREFIX%ar -x "%HB_LIB_INSTALL%\lib%%f.a"
%HB_CCPREFIX%ar -t "%HB_LIB_INSTALL%\lib%%f.a" >> _hboneut.txt
) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib )
)
md _st
cd _st
rem ; Extract ST objects
echo.> _hbost.txt
for %%f in (%HB_DLL_LIBS_ST%) do (
if exist "%HB_LIB_INSTALL%\lib%%f.a" (
echo Processing library: %%f
%HB_CCPREFIX%ar -x "%HB_LIB_INSTALL%\lib%%f.a"
%HB_CCPREFIX%ar -t "%HB_LIB_INSTALL%\lib%%f.a" >> _hbost.txt
) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib )
)
cd ..
md _mt
cd _mt
rem ; Extract MT objects
echo.> _hbomt.txt
for %%f in (%HB_DLL_LIBS_MT%) do (
if exist "%HB_LIB_INSTALL%\lib%%f.a" (
echo Processing library: %%f
%HB_CCPREFIX%ar -x "%HB_LIB_INSTALL%\lib%%f.a"
%HB_CCPREFIX%ar -t "%HB_LIB_INSTALL%\lib%%f.a" >> _hbomt.txt
) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib )
)
cd ..
setlocal enabledelayedexpansion
set _HBOST=
for /f %%f in (_hboneut.txt) do set _HBOST=!_HBOST! %%f
for /f %%f in (_st\_hbost.txt) do set _HBOST=!_HBOST! _st\%%f
set _HBOMT=
for /f %%f in (_hboneut.txt) do set _HBOMT=!_HBOMT! %%f
for /f %%f in (_mt\_hbomt.txt) do set _HBOMT=!_HBOMT! _mt\%%f
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingw64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-x64
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingwce" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingwce" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_mingwarm" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-arm
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_mingwarm" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-arm
set _SYSLIBS=-luser32 -lws2_32 -ladvapi32 -lgdi32
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "win_mingwce" set _SYSLIBS=-lwininet -lws2
if "%HB_ARCHITECTURE%_%HB_COMPILER%" == "wce_mingwarm" set _SYSLIBS=-lwininet -lws2
echo Making %_DST_NAME_ST%.dll... && %HB_CCPREFIX%gcc -shared -o "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" %_HBOST% %HB_USER_LDFLAGS% %_SYSLIBS% %HB_DLLIBS% -Wl,--output-def,"%HB_BIN_INSTALL%\%_DST_NAME_ST%.def"
echo Making %_DST_NAME_MT%.dll... && %HB_CCPREFIX%gcc -shared -o "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" %_HBOMT% %HB_USER_LDFLAGS% %_SYSLIBS% %HB_DLLIBS% -Wl,--output-def,"%HB_BIN_INSTALL%\%_DST_NAME_MT%.def"
rem ,--out-implib,"%HB_LIB_INSTALL%\lib%_DST_NAME_ST%.a"
rem ,--out-implib,"%HB_LIB_INSTALL%\lib%_DST_NAME_MT%.a"
rem ; Cleanup
cd _st
for /F %%o in (_hbost.txt) do ( del %%o )
del _hbost.txt
cd ..
rmdir _st
cd _mt
for /F %%o in (_hbomt.txt) do ( del %%o )
del _hbomt.txt
cd ..
rmdir _mt
for /F %%o in (_hboneut.txt) do ( del %%o )
del _hboneut.txt
cd ..
rmdir _dll
goto END
:END
endlocal

View File

@@ -27,6 +27,12 @@ goto inst_%HB_ARCHITECTURE%
rem Windows post install part
if not "%OS%" == "Windows_NT" goto end
if "%HB_COMPILER%" == "mingw" set HB_DYNLIB=yes
if "%HB_COMPILER%" == "mingw64" set HB_DYNLIB=yes
if "%HB_COMPILER%" == "mingwce" set HB_DYNLIB=yes
if "%HB_COMPILER%" == "mingwarm" set HB_DYNLIB=yes
if "%HB_COMPILER%" == "cygwin" set HB_DYNLIB=yes
if not "%HB_DYNLIB%" == "yes" goto _SKIP_DLL_BIN
call %~dp0hb-mkdyn.bat

View File

@@ -30,12 +30,6 @@ if "%HB_ARCHITECTURE%" == "" set HB_ARCHITECTURE=dos
if "%HB_COMPILER%" == "" if not "%WINDIR%" == "" goto HELP
if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp
if "%HB_COMPILER%" == "mingw" ( echo For %HB_COMPILER% builds, use 'sh make_gnu.sh'. See INSTALL for more. && goto :EOF )
if "%HB_COMPILER%" == "mingw64" ( echo For %HB_COMPILER% builds, use 'sh make_gnu.sh'. See INSTALL for more. && goto :EOF )
if "%HB_COMPILER%" == "mingwce" ( echo For %HB_COMPILER% builds, use 'sh make_gnu.sh'. See INSTALL for more. && goto :EOF )
if "%HB_COMPILER%" == "mingwarm" ( echo For %HB_COMPILER% builds, use 'sh make_gnu.sh'. See INSTALL for more. && goto :EOF )
if "%HB_COMPILER%" == "cygwin" ( echo For %HB_COMPILER% builds, use 'sh make_gnu.sh'. See INSTALL for more. && goto :EOF )
if "%HB_INSTALL_PREFIX%" == "" if "%OS%" == "Windows_NT" set HB_INSTALL_PREFIX=%~dp0
rem Set to constant value to be consistent with the non-GNU make files.
@@ -121,6 +115,11 @@ if not exist %HB_DOC_INSTALL%\*.* md %HB_DOC_INSTALL%
rem the .dlls and a final pass for the regular version.
if not "%HB_ARCHITECTURE%" == "win" goto SKIP_WINDLL
if "%HB_COMPILER%" == "mingw" goto DO_GCC
if "%HB_COMPILER%" == "mingw64" goto DO_GCC
if "%HB_COMPILER%" == "mingwce" goto DO_GCC
if "%HB_COMPILER%" == "mingwarm" goto DO_GCC
if "%HB_COMPILER%" == "cygwin" goto DO_GCC
if not "%HB_BUILD_DLL%" == "yes" goto SKIP_WINDLL
set _HB_CONTRIBLIBS=%HB_CONTRIBLIBS%
@@ -137,6 +136,12 @@ if not exist %HB_DOC_INSTALL%\*.* md %HB_DOC_INSTALL%
%_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9
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
goto MAKE_DONE
:SKIP_WINDLL
%_HB_MAKE% %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -50,13 +50,7 @@ set HB_BUILD_IMPLIB=no
set HB_USER_CFLAGS=%HB_USER_CFLAGS% -DHB_FM_STATISTICS_OFF
rem ; Build Harbour
if "%HB_COMPILER%" == "mingw" ( sh make_gnu.sh clean install && goto MK_PKG )
if "%HB_COMPILER%" == "mingw64" ( sh make_gnu.sh clean install && goto MK_PKG )
if "%HB_COMPILER%" == "mingwce" ( sh make_gnu.sh clean install && goto MK_PKG )
if "%HB_COMPILER%" == "mingwarm" ( sh make_gnu.sh clean install && goto MK_PKG )
if "%HB_COMPILER%" == "cygwin" ( sh make_gnu.sh clean install && goto MK_PKG )
call make_gnu.bat
:MK_PKG
rem if errorlevel 1 goto MK_ERROR