2010-03-12 11:39 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)

* utils/hbmk2/hbmk2.prg
    + Readded -pipe option for gcc (except djgpp) and icc/linux family
      compilers in a more sophisticated way. Now -pipe option is only
      used when hbmk2 controls the output filename, and in such case
      the output filename will always be deleted by hbmk2 if the
      C compiler returned error. This way -pipe can never leave
      faulty or dummy object files on disk, confusing incremental builds
      or just leaving trash behind. BTW, it'd be interesting to
      know why such seemingly buggy behavior hasn't been fixed in gcc
      in the last 6-7 years... (making -pipe option useless for Harbour 
      build process f.e.)
This commit is contained in:
Viktor Szakats
2010-03-12 10:42:29 +00:00
parent 93e56f88a3
commit 3cd5de7df6
2 changed files with 37 additions and 3 deletions

View File

@@ -17,11 +17,24 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-03-12 11:39 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Readded -pipe option for gcc (except djgpp) and icc/linux family
compilers in a more sophisticated way. Now -pipe option is only
used when hbmk2 controls the output filename, and in such case
the output filename will always be deleted by hbmk2 if the
C compiler returned error. This way -pipe can never leave
faulty or dummy object files on disk, confusing incremental builds
or just leaving trash behind. BTW, it'd be interesting to
know why such seemingly buggy behavior hasn't been fixed in gcc
in the last 6-7 years... (making -pipe option useless for Harbour
build process f.e.)
2010-03-12 01:03 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
! Fixed behavior of book-marks. Now color representation
on bookmarked lines is persistent and consistent with
! Fixed behavior of book-marks. Now color representation
on bookmarked lines is persistent and consistent with
corresponding buttons in the statusbar.
2010-03-12 02:10 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)

View File

@@ -2402,6 +2402,9 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
cOpt_CompC += " {IC} -o{OO}"
ELSE
cOpt_CompC += " {IC} -o {OO}"
IF hbmk[ _HBMK_cCOMP ] $ "icc|gcc"
AAdd( hbmk[ _HBMK_aOPTC ], "-pipe" )
ENDIF
ENDIF
ELSE
cOpt_CompC += " {LC}"
@@ -2588,6 +2591,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
cOptIncMask := "-I{DI}"
IF ! Empty( cWorkDir )
cOpt_CompC += " {IC} -o {OO}"
AAdd( hbmk[ _HBMK_aOPTC ], "-pipe" )
ELSE
cOpt_CompC += " {LC}"
ENDIF
@@ -2716,6 +2720,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
cOpt_CompC += " {FC}"
IF ! Empty( cWorkDir )
cOpt_CompC += " {IC} -o {OO}"
AAdd( hbmk[ _HBMK_aOPTC ], "-pipe" )
ELSE
cOpt_CompC += " {LC}"
ENDIF
@@ -5020,11 +5025,18 @@ STATIC FUNCTION CompileCLoop( hbmk, aTODO, cBin_CompC, cOpt_CompC, cWorkDir, cOb
LOCAL cCommand
LOCAL tmp, tmp1
LOCAL lOutputSpecified
LOCAL cOutputFile
FOR EACH tmp IN aTODO
cCommand := cOpt_CompC
lOutputSpecified := "{OO}" $ cCommand
cOutputFile := FN_DirExtSet( tmp, cWorkDir, cObjExt )
cCommand := StrTran( cCommand, "{IC}", FN_Escape( tmp, nOpt_Esc ) )
cCommand := StrTran( cCommand, "{OO}", FN_Escape( PathSepToTarget( hbmk, FN_DirExtSet( tmp, cWorkDir, cObjExt ) ), nOpt_Esc ) )
cCommand := StrTran( cCommand, "{OO}", FN_Escape( PathSepToTarget( hbmk, cOutputFile ), nOpt_Esc ) )
cCommand := cBin_CompC + " " + AllTrim( cCommand )
@@ -5048,6 +5060,15 @@ STATIC FUNCTION CompileCLoop( hbmk, aTODO, cBin_CompC, cOpt_CompC, cWorkDir, cOb
IF ! hbmk[ _HBMK_lQuiet ]
OutErr( cCommand + _OUT_EOL )
ENDIF
/* Delete output file in case of compile error.
(only if we know for sure what is the output filename, that is when we
speficied it on the command line)
This is to protect against compiler bugs (f.e. gcc with -pipe option)
when dummy or wrong object file is left on the disk, and misleading
next incremental build pass. [vszakats] */
IF lOutputSpecified
FErase( cOutputFile )
ENDIF
lResult := .F.
EXIT
ENDIF