2009-10-29 08:36 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* utils/hbmk2/hbmk2.prg
    ! Fixes to lib dependency detection code.
      It should now work on darwin/bsd/hpux/beos gcc/clang/sunpro 
      platforms/compilers but obviously I didn't test them all
      (only darwin/clang).
      There was one typo hitting generic branch of lib detection 
      plus lib prefix was not taken into account at all there.
      Probably on some platforms it would be better to implement 
      target specific lib searching algorithm to mimic actual 
      linker behaviour. Currently, differences are to be expected.
    - Deleted gccomf from a win/wce only branch in LibExists().
This commit is contained in:
Viktor Szakats
2009-10-29 07:37:56 +00:00
parent 04765ae783
commit f91fac0cd3
2 changed files with 22 additions and 8 deletions

View File

@@ -17,6 +17,19 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-10-29 08:36 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
! Fixes to lib dependency detection code.
It should now work on darwin/bsd/hpux/beos gcc/clang/sunpro
platforms/compilers but obviously I didn't test them all
(only darwin/clang).
There was one typo hitting generic branch of lib detection
plus lib prefix was not taken into account at all there.
Probably on some platforms it would be better to implement
target specific lib searching algorithm to mimic actual
linker behaviour. Currently, differences are to be expected.
- Deleted gccomf from a win/wce only branch in LibExists().
2009-10-28 19:12 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbqt/hbqt_slots.cpp
* contrib/hbqt/hbqt_slots.h

View File

@@ -4119,10 +4119,11 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
/* We need a way to find and pick libraries according to linker rules. */
IF lTargetUpToDate
FOR EACH tmp IN l_aLIBRAW
IF ! Empty( tmp2 := FindLib( hbmk, tmp, hbmk[ _HBMK_aLIBPATH ], cLibExt ) )
IF ! Empty( tmp2 := FindLib( hbmk, tmp, hbmk[ _HBMK_aLIBPATH ], cLibLibPrefix, cLibLibExt ) )
IF hbmk[ _HBMK_lDEBUGINC ]
hbmk_OutStd( hb_StrFormat( "debuginc: EXEDEPLIB %1$s", tmp2 ) )
ENDIF
? hb_FGetDateTime( tmp2, @tmp1 ), tmp2, tmp1, tTarget, tmp1 > tTarget
IF ! hb_FGetDateTime( tmp2, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
@@ -4968,7 +4969,7 @@ STATIC FUNCTION FindHeader( hbmk, cFileName, cParentDir, aINCTRYPATH )
/* Replicating logic used by compilers. */
STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibExt )
STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibPrefix, cLibExt )
LOCAL cDir
LOCAL tmp
@@ -4989,7 +4990,7 @@ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibExt )
/* Check in current dir */
IF hbmk[ _HBMK_cCOMP ] $ "msvc|msvc64|msvcarm|bcc|pocc|pocc64|poccarm|watcom"
IF ! Empty( tmp := LibExists( hbmk, "", cLib, cLibExt ) )
IF ! Empty( tmp := LibExists( hbmk, "", cLib, cLibPrefix, cLibExt ) )
RETURN tmp
ENDIF
ENDIF
@@ -4997,7 +4998,7 @@ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibExt )
/* Check in libpaths */
FOR EACH cDir IN aLIBPATH
IF ! Empty( cDir )
IF ! Empty( tmp := LibExists( hbmk, cDir, cLib, cLibExt ) )
IF ! Empty( tmp := LibExists( hbmk, cDir, cLib, cLibPrefix, cLibExt ) )
RETURN tmp
ENDIF
ENDIF
@@ -5008,7 +5009,7 @@ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibExt )
IF hbmk[ _HBMK_cCOMP ] $ "msvc|msvc64|msvcarm"
FOR EACH cDir IN hb_ATokens( GetEnv( "LIB" ), hb_osPathListSeparator(), .T., .T. )
IF ! Empty( cDir )
IF ! Empty( tmp := LibExists( hbmk, cDir, cLib, cLibExt ) )
IF ! Empty( tmp := LibExists( hbmk, cDir, cLib, cLibPrefix, cLibExt ) )
RETURN tmp
ENDIF
ENDIF
@@ -5018,13 +5019,13 @@ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibExt )
RETURN NIL
STATIC FUNCTION LibExists( hbmk, cDir, cLib, cLibExt )
STATIC FUNCTION LibExists( hbmk, cDir, cLib, cLibPrefix, cLibExt )
LOCAL tmp
cDir := DirAddPathSep( PathSepToSelf( cDir ) )
DO CASE
CASE hbmk[ _HBMK_cCOMP ] $ "gcc|mingw|mingw64|mingwarm|cygwin|gccomf" .AND. hbmk[ _HBMK_cPLAT ] $ "win|wce"
CASE hbmk[ _HBMK_cCOMP ] $ "gcc|mingw|mingw64|mingwarm|cygwin" .AND. hbmk[ _HBMK_cPLAT ] $ "win|wce"
/* NOTE: ld/gcc option -dll-search-prefix isn't taken into account here,
So, '<prefix>xxx.dll' format libs won't be found by hbmk. */
DO CASE
@@ -5047,7 +5048,7 @@ STATIC FUNCTION LibExists( hbmk, cDir, cLib, cLibExt )
ENDCASE
OTHERWISE
DO CASE
CASE hb_FileExists( tmp := cDir + FN_ExtSet( cLib, cLibExt ) ) ; RETURN tmp
CASE hb_FileExists( tmp := cDir + cLibPrefix + FN_ExtSet( cLib, cLibExt ) ) ; RETURN tmp
ENDCASE
ENDCASE