2009-08-20 09:55 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* utils/hbmk2/hbmk2.prg
  * config/global.mk
    + Added autodetection for old MSVC for WinCE versions (clarm.exe based ones).
    + Added autodetection for HB_VISUALC_VER_PRE80 value for msvcarm targets.

  * INSTALL
    + Added cross-build matrix. Tweaked cross-build information.
    + Added MSVC 2005 for WinCE/ARM example.
    ; TODO: Create separate example section for native and cross-builds.
This commit is contained in:
Viktor Szakats
2009-08-20 07:56:27 +00:00
parent 1351010ae4
commit 02b1a335b0
4 changed files with 89 additions and 27 deletions

View File

@@ -17,6 +17,17 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-08-20 09:55 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
* config/global.mk
+ Added autodetection for old MSVC for WinCE versions (clarm.exe based ones).
+ Added autodetection for HB_VISUALC_VER_PRE80 value for msvcarm targets.
* INSTALL
+ Added cross-build matrix. Tweaked cross-build information.
+ Added MSVC 2005 for WinCE/ARM example.
; TODO: Create separate example section for native and cross-builds.
2009-08-20 08:27 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbwin/legacy.prg
* contrib/hbwin/legacyco.c

View File

@@ -342,17 +342,52 @@ OPTIONS AVAILABLE WHEN BUILDING HARBOUR
Cross building
--------------
Point this envvar to the directory where native Harbour executables for
your host platform can be found:
You can build Harbour for target platforms different than host
platform. F.e. you can create Windows build on *nix systems, Linux
builds on Windows systems, etc. It's also possible to build targets
for different than host CPU architectures. F.e. you can create
Windows 64-bit build on 32-bit Windows platform, or Linux x86_64
build on x86 hosts, or Linux MIPS build on x86 host.
Currently possible cross-platform scenarios, sorted by host platform:
on Windows hosts:
-> wce/mingwarm
-> wce/poccarm
-> wce/msvcarm
-> dos/djgpp (using DOS GNU make)
-> dos/watcom
-> os2/watcom
-> linux/watcom
on MS-DOS hosts:
-> win/watcom (*)
-> os2/watcom (*)
-> linux/watcom (*)
on OS/2 hosts:
-> win/watcom
-> dos/watcom (*)
-> linux/watcom (*)
on Linux hosts:
-> wce/mingwarm
-> win/mingw
-> win/watcom
-> dos/watcom
-> os2/watcom
On other *nix hosts:
-> wce/mingwarm
-> win/mingw
(*): Theoretically possible, but not heard of such build yet.
Point this envvar to the directory where native Harbour executables
for your host platform can be found:
HB_BIN_COMPILE=<HARBOUR_NATIVE_BUILD_DIR>\bin
You need these when building for a platform different than host
(f.e. to create Windows builds on Linux, to create a Windows x64
build on 32-bit Windows or to create Windows CE/ARM build on any
operating systems). For this to work, you will need to point
above environment variables to a native Harbour build available on
your system. You don't need a full native build, harbour, hbpp and
hbmk2 executables are enough for the process to succeed.
If you leave this value empty, the make system will try to autodetect it,
so in practice all you have to do is to create native build first, then
create the cross-build. If you set this value manually, it may be useful
to know that only harbour, hbpp and hbmk2 executables are required for
a cross-build process to succeed.
EXAMPLES
@@ -401,6 +436,14 @@ EXAMPLES
mingw32-make %1 %2 > log.txt 2>&1
---
--- MSVC 2005 WinCE/ARM (requires preceding build for native target)
set INCLUDE=%ProgramFiles%\Microsoft Visual Studio 8\VC\ce\include;%ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Include\Armv4i
set LIB=%ProgramFiles%\Microsoft Visual Studio 8\VC\ce\lib\armv4i;%ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Lib\ARMV4I
set PATH=%ProgramFiles%\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE;%PATH%
rem
mingw32-make %1 %2 > log.txt 2>&1
---
--- MSVC .NET 2003 (untested)
call "%ProgramFiles%\Microsoft Visual Studio .NET 2003\VC7\vcvarsall.bat"
rem

View File

@@ -596,31 +596,37 @@ ifeq ($(HB_COMPILER),)
ifneq ($(call find_in_path,wpp386),)
HB_COMPILER := watcom
else
ifneq ($(call find_in_path,armasm),)
ifneq ($(call find_in_path,clarm),)
HB_COMPILER := msvcarm
HB_ARCHITECTURE := wce
export HB_VISUALC_VER_PRE80 := yes
else
ifneq ($(call find_in_path,ml64),)
HB_COMPILER := msvc64
ifneq ($(call find_in_path,armasm),)
HB_COMPILER := msvcarm
HB_ARCHITECTURE := wce
else
ifneq ($(call find_in_path,icl),)
HB_COMPILER := icc
ifneq ($(call find_in_path,ml64),)
HB_COMPILER := msvc64
else
ifneq ($(call find_in_path,cl),)
HB_COMPILER := msvc
ifneq ($(call find_in_path,icl),)
HB_COMPILER := icc
else
ifneq ($(call find_in_path,bcc32),)
HB_COMPILER := bcc
ifneq ($(call find_in_path,cl),)
HB_COMPILER := msvc
else
ifneq ($(call find_in_path,pocc),)
HB_COMPILER := pocc
ifneq ($(call find_in_path,bcc32),)
HB_COMPILER := bcc
else
ifneq ($(call find_in_path,xcc),)
HB_COMPILER := xcc
ifneq ($(call find_in_path,pocc),)
HB_COMPILER := pocc
else
ifneq ($(call find_in_path,x86_64-w64-mingw32-gcc),)
HB_COMPILER := mingw64
HB_CCPREFIX := x86_64-w64-mingw32-
ifneq ($(call find_in_path,xcc),)
HB_COMPILER := xcc
else
ifneq ($(call find_in_path,x86_64-w64-mingw32-gcc),)
HB_COMPILER := mingw64
HB_CCPREFIX := x86_64-w64-mingw32-
endif
endif
endif
endif

View File

@@ -899,6 +899,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 )
{ {|| iif( ! Empty( GetEnv( "WATCOM" ) ),;
FindInPath( "wpp386" ),;
NIL ) }, "watcom" },;
{ {|| FindInPath( "clarm" ) }, "msvcarm" },;
{ {|| FindInPath( "armasm" ) }, "msvcarm" },;
{ {|| FindInPath( "ml64" ) }, "msvc64" },;
{ {|| iif( FindInPath( "wpp386" ) == NIL,;
@@ -924,7 +925,8 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 )
l_aLIBSYSMISC := { "winspool", "comctl32", "comdlg32", "shell32", "uuid", "ole32", "oleaut32", "mpr", "winmm", "mapi32", "imm32", "msimg32", "wininet" }
CASE hbmk[ _HBMK_cARCH ] == "wce"
aCOMPDET := { { {|| FindInPath( hbmk[ _HBMK_cCCPREFIX ] + "gcc" ) }, "mingwarm" },;
{ {|| FindInPath( "cl" ) }, "msvcarm" },;
{ {|| FindInPath( "clarm" ) }, "msvcarm" },;
{ {|| FindInPath( "armasm" ) }, "msvcarm" },;
{ {|| FindInPath( "pocc" ) }, "poccarm" },;
{ {|| FindInPath( "arm-mingw32ce-gcc" ) }, "mingwarm", "arm-mingw32ce-" } ,;
{ {|| FindInPath( "arm-wince-mingw32ce-gcc" ) }, "mingwarm", "arm-wince-mingw32ce-" } }
@@ -2558,7 +2560,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 )
IF Empty( nCCompVer )
/* Compatibility with Harbour GNU Make system */
IF Empty( GetEnv( "HB_VISUALC_VER_PRE80" ) )
IF Empty( GetEnv( "HB_VISUALC_VER_PRE80" ) ) .AND. !( hbmk[ _HBMK_cCOMP ] == "msvcarm" .AND. FindInPath( "clarm" ) )
nCCompVer := 800 /* Visual Studio 2005 */
ELSE
nCCompVer := 710 /* Visual Studio .NET 2003 */