From 054d4e1873ac334b22ab423ad4e019fb9edde006 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Wed, 10 Jun 2009 19:13:26 +0000 Subject: [PATCH] 2009-06-10 21:10 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg ! Fixed windows/dos cross-compilation. The error is very strange, it occures only when calling gcc in compiler mode with @script file. See comment in source, maybe someone has an idea. Anyway now it's possible to bundle DOS libs in the unified Windows build and create DOS apps/libs with it, using this command: hbmk2 hello.prg -arch=dos [needs DJGPP in PATH] (I couldn't make owatcom work on DOS, but that may also work along the same lines) + Added support for static lib generation for dos/djgpp. + Added support for static lib generation for os2/gcc. (untested) Where are our OS/2 developers? --- harbour/ChangeLog | 16 ++++++++++++++++ harbour/utils/hbmk2/hbmk2.prg | 24 +++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index f7450499d6..bb2cdb30b7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,22 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-06-10 21:10 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * utils/hbmk2/hbmk2.prg + ! Fixed windows/dos cross-compilation. The error is very + strange, it occures only when calling gcc in compiler + mode with @script file. See comment in source, maybe + someone has an idea. + Anyway now it's possible to bundle DOS libs in the unified + Windows build and create DOS apps/libs with it, using this command: + hbmk2 hello.prg -arch=dos + [needs DJGPP in PATH] + (I couldn't make owatcom work on DOS, but that may also work + along the same lines) + + Added support for static lib generation for dos/djgpp. + + Added support for static lib generation for os2/gcc. (untested) + Where are our OS/2 developers? + 2009-06-10 20:10 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * doc/en-EN/Makefile * config/dos/global.cf diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 6acde08876..79442ba7e7 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -2216,6 +2216,8 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 ) cLibPathPrefix := "-L" cLibPathSep := " " cLibLibExt := ".a" + cBin_Lib := "ar.exe" + cOpt_Lib := "{FA} rcs {OL} {LO}" IF hbmk[ _HBMK_lMAP ] AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,-Map,{OM}" ) ENDIF @@ -2257,13 +2259,33 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 ) IF hbmk[ _HBMK_lINC ] .AND. ! Empty( cWorkDir ) cOpt_CompC += " {IC} -o {OO}" ELSE - cOpt_CompC += " {LC}{SCRIPT}" + /* NOTE: For some reason DJGPP gcc launched from Windows builds + (win/dos cross-build scenario using -arch=dos switch) + won't work when external script usage is attempted: + --- + gcc.exe: @c:/devl/djgpp/tmp\lxwp3x.cpl: No such file or directory (ENOENT) + gcc.exe: no input files + --- + I have no idea why, tried to execute using hb_run(), + tried with the same filename parameter as the DOS build + generated, to no avail. Interestingly same *gcc in link mode* + doesn't suffer from this problem on equal conditions. + This hack will introduce command line size limitations, + which can be overcome by using -inc hbmk2 switch. + [vszakats] */ + #if defined( __PLATFORM__DOS ) + cOpt_CompC += " {LC}{SCRIPT}" + #else + cOpt_CompC += " {LC}" + #endif ENDIF cBin_Link := cBin_CompC cOpt_Link := "{LO} {LA} {FL} {DL}{SCRIPT}" cLibPathPrefix := "-L" cLibPathSep := " " cLibLibExt := ".a" + cBin_Lib := "ar.exe" + cOpt_Lib := "{FA} rcs {OL} {LO}" IF hbmk[ _HBMK_cCOMP ] == "djgpp" AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} -Wl,--end-group" ) ELSE