From 4c3a2582cdfcae635ce92e16159370c3aa83376e Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 20 Feb 2009 08:52:30 +0000 Subject: [PATCH] 2009-02-20 09:44 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * utils/hbmk2/hbmk2.prg + Added support for build level (or system level if that's needed in the future) configuration file for hbmk. Currently it will automatically pick the file named hbmkcfg.hbp from the dir where hbmk is located. This file can be used to store build settings so that they can later be used by hbmk, automatically. IOW this is the communication medium between the build process and hbmk. We can store here the selected GT, extra libraries, PRG flags, C flags, linker flags, while keeping hbmk executable free from such burnt-in information. For this to work, the build process needs to generate hbmkcfg.hbp with appropriate content, and this file needs to be added to standard distribution packages. The format is normal .hbp, described on the hbmk help screen. --- harbour/ChangeLog | 16 ++++++++ harbour/utils/hbmk2/hbmk2.prg | 73 +++++++++++++++++++++++++---------- 2 files changed, 69 insertions(+), 20 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 8b7f9ee935..6185b0847b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,22 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-02-20 09:44 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * utils/hbmk2/hbmk2.prg + + Added support for build level (or system level if that's + needed in the future) configuration file for hbmk. Currently + it will automatically pick the file named hbmkcfg.hbp from + the dir where hbmk is located. This file can be used to store + build settings so that they can later be used by hbmk, + automatically. IOW this is the communication medium + between the build process and hbmk. We can store here + the selected GT, extra libraries, PRG flags, C flags, linker + flags, while keeping hbmk executable free from such burnt-in + information. For this to work, the build process needs + to generate hbmkcfg.hbp with appropriate content, and this + file needs to be added to standard distribution packages. + The format is normal .hbp, described on the hbmk help screen. + 2009-02-20 09:26 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * utils/hbmk2/hbmk2.prg + Added CCPATH + CCPREFIX support for *nix/gcc|gpp. diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index f9ff0ac036..185f5d3c87 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -1531,6 +1531,8 @@ STATIC FUNCTION FN_ExtSet( cFileName, cExt ) RETURN hb_FNameMerge( cDir, cName, cExt ) +#define HBMK_CFG_NAME "hbmkcfg.hbp" + STATIC PROCEDURE HBP_ProcessAll( /* @ */ aLIBS,; /* @ */ aLIBPATH,; /* @ */ aOPTPRG,; @@ -1546,29 +1548,60 @@ STATIC PROCEDURE HBP_ProcessAll( /* @ */ aLIBS,; /* @ */ lSTRIP,; /* @ */ lRUN,; /* @ */ cGT ) - LOCAL aFiles := Directory( "*.hbp" ) LOCAL aFile + LOCAL cDir + LOCAL cFileName - FOR EACH aFile IN aFiles - IF t_lInfo - OutStd( "hbmk: Processing: " + aFile[ F_NAME ] + hb_osNewLine() ) + LOCAL aCFGDirs := { DirAddPathSep( hb_DirBase() ) } + + FOR EACH cDir IN aCFGDirs + IF hb_FileExists( cFileName := ( cDir + HBMK_CFG_NAME ) ) + IF t_lInfo + OutStd( "hbmk: Processing configuration: " + cFileName + hb_osNewLine() ) + ENDIF + HBP_ProcessOne( cFileName,; + @aLIBS,; + @aLIBPATH,; + @aOPTPRG,; + @aOPTC,; + @aOPTL,; + @lGUI,; + @lMT,; + @lSHARED,; + @lSTATICFULL,; + @lDEBUG,; + @lNULRDD,; + @lMAP,; + @lSTRIP,; + @lRUN,; + @cGT ) + EXIT + ENDIF + NEXT + + FOR EACH aFile IN Directory( "*.hbp" ) + cFileName := aFile[ F_NAME ] + IF !( cFileName == HBMK_CFG_NAME ) + IF t_lInfo + OutStd( "hbmk: Processing: " + cFileName + hb_osNewLine() ) + ENDIF + HBP_ProcessOne( cFileName,; + @aLIBS,; + @aLIBPATH,; + @aOPTPRG,; + @aOPTC,; + @aOPTL,; + @lGUI,; + @lMT,; + @lSHARED,; + @lSTATICFULL,; + @lDEBUG,; + @lNULRDD,; + @lMAP,; + @lSTRIP,; + @lRUN,; + @cGT ) ENDIF - HBP_ProcessOne( aFile[ F_NAME ],; - @aLIBS,; - @aLIBPATH,; - @aOPTPRG,; - @aOPTC,; - @aOPTL,; - @lGUI,; - @lMT,; - @lSHARED,; - @lSTATICFULL,; - @lDEBUG,; - @lNULRDD,; - @lMAP,; - @lSTRIP,; - @lRUN,; - @cGT ) NEXT RETURN