diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 1034b29238..b79982a6a6 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,13 +16,35 @@ The license applies to all entries newer than 2009-04-28. */ +2012-04-04 15:45 UTC+0200 Viktor Szakats (harbour syenar.net) + * contrib/make.hbs + * contrib/hbpost.hbm + + use HB_LIB3RD hbmk2 macro instead of rolling custom logic + to detect and enable unicows lib. + + * utils/hbmk2/hbmk2.prg + + added HB_LIB3RD internal variable (usable as filter and as macro) + it's filled when '/lib/3rd//' directory is present + + added EXPERIMENTAL pseudo-function for filters to detect presence + of file or directory: {hb_ispath=''}. if the + value is not an absolute path, it will be meant relative to source + hbmk2 file. + + * package/harb_win.mft + * package/harb_win.rc + * package/mpkg_win.nsi + * package/mpkg_src_nightly.sh + * package/winuni/mpkg_win_uni.nsi + * "Harbour Project" -> "Harbour" + * "hbrun" shortcut -> "Harbour (Interactive shell)" + 2012-04-03 22:17 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * harbour/contrib/xhb/hboutdbg.c * eliminated HB_TCHAR_*() macros 2012-04-03 11:26 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbxbp/tests/demoxbp.prg - ! Fixed: visibility of sub-menu's was off and thus main menu was + ! Fixed: visibility of sub-menu's was off and thus main menu was not being displayed, reported by Zoran. 2012-04-03 19:02 UTC+0200 Viktor Szakats (harbour syenar.net) @@ -63,7 +85,7 @@ * contrib/hbformat/utils/hbformat.prg % changed manual logic to HB_DIRSEPADD() call - ! changed SET( _SET_DIRSEPARATOR ) to hb_ps() + ! changed SET( _SET_DIRSEPARATOR ) to HB_PS() 2012-04-03 02:28 UTC+0200 Viktor Szakats (harbour syenar.net) * src/lang/Makefile diff --git a/harbour/contrib/hbpost.hbm b/harbour/contrib/hbpost.hbm index 5d6fed24e0..845d3ce1d7 100644 --- a/harbour/contrib/hbpost.hbm +++ b/harbour/contrib/hbpost.hbm @@ -29,7 +29,7 @@ {win&allmsvc&HB_COMP_VER>'1400'}-dflag=-dynamicbase {allwin}-winuni -{allwin&_HB_UNICOWS_AVAILABLE}-lunicows +{allwin&HB_LIB3RD}-lunicows {HB_BUILD_DEBUG}-prgflag=-l- {HB_BUILD_DEBUG}-debug diff --git a/harbour/contrib/make.hbs b/harbour/contrib/make.hbs index 7f474ed37a..4ecde89726 100755 --- a/harbour/contrib/make.hbs +++ b/harbour/contrib/make.hbs @@ -347,7 +347,6 @@ PROCEDURE GNUMake( aParams, hProjectList ) hb_setenv( "_HB_INSTALL_MAN", GetEnv( "HB_INSTALL_MAN" ) ) hb_setenv( "_HB_INSTALL_ETC", GetEnv( "HB_INSTALL_ETC" ) ) hb_setenv( "_HB_INSTALL_CONTRIB", GetEnv( "HB_INSTALL_CONTRIB" ) ) - hb_setenv( "_HB_UNICOWS_AVAILABLE", iif( hb_DirExists( s_cRoot + "lib" + hb_ps() + "3rd" + hb_ps() + GetEnv( "HB_PLATFORM" ) + hb_ps() + GetEnv( "HB_COMPILER" ) ), "yes", "" ) ) /* Override hbmk2 autodetection. WARNING: Must be in sync with global.mk logic */ hb_setenv( "HB_INSTALL_PREFIX", s_cRoot ) diff --git a/harbour/package/harb_win.mft b/harbour/package/harb_win.mft index b961bb3c9b..5e47412337 100644 --- a/harbour/package/harb_win.mft +++ b/harbour/package/harb_win.mft @@ -3,7 +3,7 @@ diff --git a/harbour/package/harb_win.rc b/harbour/package/harb_win.rc index 263281f619..df7388e645 100644 --- a/harbour/package/harb_win.rc +++ b/harbour/package/harb_win.rc @@ -18,7 +18,7 @@ #define HB_VER_FILEVERSION HB_VER_PRODUCTVERSION #define HB_VER_FILEVERSION_STR HB_VER_PRODUCTVERSION_STR -#define HB_NAME "Harbour Project\0" +#define HB_NAME "Harbour\0" #define HB_COPYRIGHT "Copyright \xA9 1999-2012 (see application banner)\0" /* Version info */ diff --git a/harbour/package/mpkg_src_nightly.sh b/harbour/package/mpkg_src_nightly.sh index 9feb4fb148..a26e16624e 100755 --- a/harbour/package/mpkg_src_nightly.sh +++ b/harbour/package/mpkg_src_nightly.sh @@ -42,7 +42,7 @@ # http://sourceforge.net/apps/trac/sourceforge/wiki/SSH%20keys # -echo Starting Harbour Project nightly source package creation... +echo Starting Harbour nightly source package creation... rm -f harbour-nightly-src.zip harbour-nightly.tar.bz2 harbour-nightly.tar.gz harbour-nightly.tar.xz @@ -103,4 +103,4 @@ fi rm -f harbour-nightly-src.zip harbour-nightly.tar.bz2 harbour-nightly.tar.gz harbour-nightly.tar.xz -echo Ended Harbour Project nightly source package creation. +echo Ended Harbour nightly source package creation. diff --git a/harbour/package/mpkg_win.nsi b/harbour/package/mpkg_win.nsi index 6d6d077832..e94fd706f9 100644 --- a/harbour/package/mpkg_win.nsi +++ b/harbour/package/mpkg_win.nsi @@ -6,7 +6,7 @@ ; Copyright 2009 Viktor Szakats (harbour syenar.net) ; See COPYING for licensing terms. ; -; Harbour Project Nullsoft installer script (for Windows/DOS) +; Harbour Nullsoft installer script (for Windows/DOS) ; [ Do not try to use this script directly. It won't work. ] ; ; Please read INSTALL for further information. @@ -30,7 +30,7 @@ CRCCheck on RequestExecutionLevel user ; The name of the installer -Name "Harbour Project" +Name "Harbour" ; The file to write OutFile "$%HB_TOP%\$%HB_PKGNAME%.exe" @@ -97,14 +97,14 @@ Section "Main components" hb_main File "$%HB_INSTALL_PREFIX%\doc\*.*" ; Write the installation path into the registry -; WriteRegStr HKLM "SOFTWARE\Harbour Project" "InstallDir" "$INSTDIR" - WriteRegStr HKCU "Software\Harbour Project" "InstallDir" "$INSTDIR" +; WriteRegStr HKLM "SOFTWARE\Harbour" "InstallDir" "$INSTDIR" + WriteRegStr HKCU "Software\Harbour" "InstallDir" "$INSTDIR" ; Write the uninstall keys for Windows -; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project" "DisplayName" "Harbour Project" -; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project" "UninstallString" '"$INSTDIR\uninstall.exe"' -; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project" "NoModify" 1 -; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project" "NoRepair" 1 +; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour" "DisplayName" "Harbour" +; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour" "UninstallString" '"$INSTDIR\uninstall.exe"' +; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour" "NoModify" 1 +; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour" "NoRepair" 1 WriteUninstaller "uninstall.exe" SectionEnd @@ -125,18 +125,18 @@ Section "Start Menu and Desktop icons" hb_shortcuts ; this will be the working dir for shortcuts SetOutPath $INSTDIR - CreateShortCut "$DESKTOP\Harbour Project.lnk" "$INSTDIR" "" "$INSTDIR" 0 - CreateDirectory "$SMPROGRAMS\Harbour Project" - CreateShortCut "$SMPROGRAMS\Harbour Project\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\Harbour Project\Harbour Project (Command line).lnk" "cmd.exe" "/k cd $INSTDIR\bin" "cmd.exe" 0 - CreateShortCut "$SMPROGRAMS\Harbour Project\Harbour Project.lnk" "$INSTDIR" "" "$INSTDIR" 0 - CreateShortCut "$SMPROGRAMS\Harbour Project\hbrun.lnk" "$INSTDIR\bin\hbrun.exe" "-v" "$INSTDIR\bin\hbrun.exe" 0 - CreateDirectory "$SMPROGRAMS\Harbour Project\Links" - WriteINIStr "$SMPROGRAMS\Harbour Project\Links\Homepage.url" "InternetShortcut" "URL" "http://harbour-project.org/" - WriteINIStr "$SMPROGRAMS\Harbour Project\Links\Sourceforge Page.url" "InternetShortcut" "URL" "http://sourceforge.net/projects/harbour-project/" - WriteINIStr "$SMPROGRAMS\Harbour Project\Links\Users' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-users/" - WriteINIStr "$SMPROGRAMS\Harbour Project\Links\Developers' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-devel/" - WriteINIStr "$SMPROGRAMS\Harbour Project\Links\Development Timeline.url" "InternetShortcut" "URL" "http://sourceforge.net/apps/trac/harbour-project/timeline" + CreateShortCut "$DESKTOP\Harbour.lnk" "$INSTDIR" "" "$INSTDIR" 0 + CreateDirectory "$SMPROGRAMS\Harbour" + CreateShortCut "$SMPROGRAMS\Harbour\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\Harbour\Harbour (Command line).lnk" "cmd.exe" "/k cd $INSTDIR\bin" "cmd.exe" 0 + CreateShortCut "$SMPROGRAMS\Harbour\Harbour.lnk" "$INSTDIR" "" "$INSTDIR" 0 + CreateShortCut "$SMPROGRAMS\Harbour\Harbour (Interactive shell).lnk" "$INSTDIR\bin\hbrun.exe" "-v" "$INSTDIR\bin\hbrun.exe" 0 + CreateDirectory "$SMPROGRAMS\Harbour\Links" + WriteINIStr "$SMPROGRAMS\Harbour\Links\Homepage.url" "InternetShortcut" "URL" "http://harbour-project.org/" + WriteINIStr "$SMPROGRAMS\Harbour\Links\Sourceforge Page.url" "InternetShortcut" "URL" "http://sourceforge.net/projects/harbour-project/" + WriteINIStr "$SMPROGRAMS\Harbour\Links\Users' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-users/" + WriteINIStr "$SMPROGRAMS\Harbour\Links\Developers' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-devel/" + WriteINIStr "$SMPROGRAMS\Harbour\Links\Development Timeline.url" "InternetShortcut" "URL" "http://sourceforge.net/apps/trac/harbour-project/timeline" SectionEnd @@ -164,15 +164,15 @@ Section "Uninstall" RMDir /r $INSTDIR ; Remove directories used - Delete "$SMPROGRAMS\Harbour Project\Links\*.*" - RMDir "$SMPROGRAMS\Harbour Project\Links" - Delete "$SMPROGRAMS\Harbour Project\*.*" - RMDir "$SMPROGRAMS\Harbour Project" + Delete "$SMPROGRAMS\Harbour\Links\*.*" + RMDir "$SMPROGRAMS\Harbour\Links" + Delete "$SMPROGRAMS\Harbour\*.*" + RMDir "$SMPROGRAMS\Harbour" RMDir "$INSTDIR" - Delete "$DESKTOP\Harbour Project.lnk" + Delete "$DESKTOP\Harbour.lnk" -; DeleteRegKey HKLM "SOFTWARE\Harbour Project" - DeleteRegKey HKCU "Software\Harbour Project" +; DeleteRegKey HKLM "SOFTWARE\Harbour" + DeleteRegKey HKCU "Software\Harbour" SectionEnd diff --git a/harbour/package/winuni/mpkg_win_uni.nsi b/harbour/package/winuni/mpkg_win_uni.nsi index 399e6fe3ed..f989b7c183 100644 --- a/harbour/package/winuni/mpkg_win_uni.nsi +++ b/harbour/package/winuni/mpkg_win_uni.nsi @@ -3,7 +3,7 @@ ; ; --------------------------------------------------------------- -; NSIS installer script for Harbour Project +; NSIS installer script for Harbour ; ; Copyright 2009 Viktor Szakats (harbour syenar.net) ; See COPYING for licensing terms. @@ -37,7 +37,7 @@ RequestExecutionLevel user !define /date NOW "%Y%m%d" -Name "Harbour Project $%HB_VM%" +Name "Harbour $%HB_VM%" OutFile "$%HB_RT%harbour-$%HB_VF%-win.exe" InstallDir C:\hb$%HB_VS% @@ -127,14 +127,14 @@ Section "Main components" hb_main File "$%HB_ABSROOT%addons\HARBOUR_README_ADDONS" ; Write the installation path into the registry -; WriteRegStr HKLM "SOFTWARE\Harbour Project $%HB_VM%" "InstallDir" "$INSTDIR" - WriteRegStr HKCU "Software\Harbour Project $%HB_VM%" "InstallDir" "$INSTDIR" +; WriteRegStr HKLM "SOFTWARE\Harbour $%HB_VM%" "InstallDir" "$INSTDIR" + WriteRegStr HKCU "Software\Harbour $%HB_VM%" "InstallDir" "$INSTDIR" ; Write the uninstall keys for Windows -; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project $%HB_VM%" "DisplayName" "Harbour Project" -; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project $%HB_VM%" "UninstallString" '"$INSTDIR\uninstall.exe"' -; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project $%HB_VM%" "NoModify" 1 -; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour Project $%HB_VM%" "NoRepair" 1 +; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour $%HB_VM%" "DisplayName" "Harbour" +; WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour $%HB_VM%" "UninstallString" '"$INSTDIR\uninstall.exe"' +; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour $%HB_VM%" "NoModify" 1 +; WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Harbour $%HB_VM%" "NoRepair" 1 WriteUninstaller "uninstall.exe" SectionEnd @@ -342,22 +342,22 @@ Section "Start Menu and Desktop icons" hb_shortcuts ; this will be the working dir for shortcuts SetOutPath $INSTDIR - CreateShortCut "$DESKTOP\Harbour Project $%HB_VM%.lnk" "$INSTDIR" "" "$INSTDIR" 0 - CreateDirectory "$SMPROGRAMS\Harbour Project $%HB_VM%" - CreateShortCut "$SMPROGRAMS\Harbour Project $%HB_VM%\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\Harbour Project $%HB_VM%\Harbour Project (Command line).lnk" "cmd.exe" "/k cd $INSTDIR\bin" "cmd.exe" 0 - CreateShortCut "$SMPROGRAMS\Harbour Project $%HB_VM%\Harbour Project.lnk" "$INSTDIR" "" "$INSTDIR" 0 - CreateShortCut "$SMPROGRAMS\Harbour Project $%HB_VM%\hbrun.lnk" "$INSTDIR\bin\hbrun.exe" "-v" "$INSTDIR\bin\hbrun.exe" 0 + CreateShortCut "$DESKTOP\Harbour $%HB_VM%.lnk" "$INSTDIR" "" "$INSTDIR" 0 + CreateDirectory "$SMPROGRAMS\Harbour $%HB_VM%" + CreateShortCut "$SMPROGRAMS\Harbour $%HB_VM%\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\Harbour $%HB_VM%\Harbour (Command line).lnk" "cmd.exe" "/k cd $INSTDIR\bin" "cmd.exe" 0 + CreateShortCut "$SMPROGRAMS\Harbour $%HB_VM%\Harbour.lnk" "$INSTDIR" "" "$INSTDIR" 0 + CreateShortCut "$SMPROGRAMS\Harbour $%HB_VM%\Harbout (Interactive shell).lnk" "$INSTDIR\bin\hbrun.exe" "-v" "$INSTDIR\bin\hbrun.exe" 0 ; TOFIX: Only create this shortcut, if 'hb_ide' component was enabled at install time (or when the target filename exists) ;!ifndef PKG_NO_IDE -; CreateShortCut "$SMPROGRAMS\Harbour Project $%HB_VM%\hbide.lnk" "$INSTDIR\bin\hbide.exe" "" "$INSTDIR\bin\hbide.exe" 0 +; CreateShortCut "$SMPROGRAMS\Harbour $%HB_VM%\hbide.lnk" "$INSTDIR\bin\hbide.exe" "" "$INSTDIR\bin\hbide.exe" 0 ;!endif - CreateDirectory "$SMPROGRAMS\Harbour Project $%HB_VM%\Links" - WriteINIStr "$SMPROGRAMS\Harbour Project $%HB_VM%\Links\Homepage.url" "InternetShortcut" "URL" "http://harbour-project.org/" - WriteINIStr "$SMPROGRAMS\Harbour Project $%HB_VM%\Links\Sourceforge Page.url" "InternetShortcut" "URL" "http://sourceforge.net/projects/harbour-project/" - WriteINIStr "$SMPROGRAMS\Harbour Project $%HB_VM%\Links\Users' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-users/" - WriteINIStr "$SMPROGRAMS\Harbour Project $%HB_VM%\Links\Developers' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-devel/" - WriteINIStr "$SMPROGRAMS\Harbour Project $%HB_VM%\Links\Development Timeline.url" "InternetShortcut" "URL" "http://sourceforge.net/apps/trac/harbour-project/timeline" + CreateDirectory "$SMPROGRAMS\Harbour $%HB_VM%\Links" + WriteINIStr "$SMPROGRAMS\Harbour $%HB_VM%\Links\Homepage.url" "InternetShortcut" "URL" "http://harbour-project.org/" + WriteINIStr "$SMPROGRAMS\Harbour $%HB_VM%\Links\Sourceforge Page.url" "InternetShortcut" "URL" "http://sourceforge.net/projects/harbour-project/" + WriteINIStr "$SMPROGRAMS\Harbour $%HB_VM%\Links\Users' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-users/" + WriteINIStr "$SMPROGRAMS\Harbour $%HB_VM%\Links\Developers' Mailing List.url" "InternetShortcut" "URL" "http://groups.google.com/group/harbour-devel/" + WriteINIStr "$SMPROGRAMS\Harbour $%HB_VM%\Links\Development Timeline.url" "InternetShortcut" "URL" "http://sourceforge.net/apps/trac/harbour-project/timeline" SectionEnd @@ -511,15 +511,15 @@ Section "Uninstall" RMDir /r $INSTDIR ; Remove directories used - Delete "$SMPROGRAMS\Harbour Project $%HB_VM%\Links\*.*" - RMDir "$SMPROGRAMS\Harbour Project $%HB_VM%\Links" - Delete "$SMPROGRAMS\Harbour Project $%HB_VM%\*.*" - RMDir "$SMPROGRAMS\Harbour Project $%HB_VM%" + Delete "$SMPROGRAMS\Harbour $%HB_VM%\Links\*.*" + RMDir "$SMPROGRAMS\Harbour $%HB_VM%\Links" + Delete "$SMPROGRAMS\Harbour $%HB_VM%\*.*" + RMDir "$SMPROGRAMS\Harbour $%HB_VM%" RMDir "$INSTDIR" - Delete "$DESKTOP\Harbour Project $%HB_VM%.lnk" + Delete "$DESKTOP\Harbour $%HB_VM%.lnk" -; DeleteRegKey HKLM "SOFTWARE\Harbour Project $%HB_VM%" - DeleteRegKey HKCU "Software\Harbour Project $%HB_VM%" +; DeleteRegKey HKLM "SOFTWARE\Harbour $%HB_VM%" + DeleteRegKey HKCU "Software\Harbour $%HB_VM%" SectionEnd diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index d6a15eb596..07c6a7df27 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -314,160 +314,161 @@ REQUEST hbmk_KEYW #define _HBMK_cHB_INSTALL_BIN 12 #define _HBMK_cHB_INSTALL_LIB 13 -#define _HBMK_cHB_INSTALL_DYN 14 -#define _HBMK_cHB_INSTALL_INC 15 +#define _HBMK_cHB_INSTALL_LI3 14 +#define _HBMK_cHB_INSTALL_DYN 15 +#define _HBMK_cHB_INSTALL_INC 16 -#define _HBMK_lGUI 16 -#define _HBMK_lMT 17 -#define _HBMK_lPIC 18 -#define _HBMK_lDEBUG 19 -#define _HBMK_nHEAD 20 -#define _HBMK_aINCPATH 21 -#define _HBMK_lREBUILD 22 -#define _HBMK_lCLEAN 23 -#define _HBMK_lTRACE 24 -#define _HBMK_lDONTEXEC 25 -#define _HBMK_nHBMODE 26 -#define _HBMK_cUILNG 27 -#define _HBMK_cUICDP 28 -#define _HBMK_aLIBUSER 29 -#define _HBMK_aLIBUSERFWK 30 -#define _HBMK_aLIBUSERGT 31 -#define _HBMK_aLIBUSERSYS 32 -#define _HBMK_aLIBUSERSYSPRE 33 -#define _HBMK_aLIBFILTEROUT 34 -#define _HBMK_aLIBPATH 35 -#define _HBMK_aINSTPATH 36 -#define _HBMK_aOPTC 37 -#define _HBMK_aOPTCUSER 38 -#define _HBMK_aOPTCX 39 -#define _HBMK_aOPTCPPX 40 -#define _HBMK_aOPTPRG 41 -#define _HBMK_aOPTRES 42 -#define _HBMK_aOPTL 43 -#define _HBMK_aOPTLPOST 44 -#define _HBMK_aOPTA 45 -#define _HBMK_aOPTD 46 -#define _HBMK_aOPTDPOST 47 -#define _HBMK_aOPTI 48 -#define _HBMK_lCPP 49 -#define _HBMK_lSHARED 50 -#define _HBMK_lSTATICFULL 51 -#define _HBMK_lSHAREDDIST 52 -#define _HBMK_lNULRDD 53 -#define _HBMK_lMAP 54 -#define _HBMK_lBEEP 55 -#define _HBMK_lSTRIP 56 -#define _HBMK_lOPTIM 57 -#define _HBMK_nCOMPR 58 -#define _HBMK_nWARN 59 -#define _HBMK_lRUN 60 -#define _HBMK_lINC 61 -#define _HBMK_lREBUILDPO 62 -#define _HBMK_lMINIPO 63 -#define _HBMK_lWINUNI 64 -#define _HBMK_nCONF 65 -#define _HBMK_lIGNOREERROR 66 -#define _HBMK_lIMPLIB 67 -#define _HBMK_lHBCPPMM 68 -#define _HBMK_aVAR 69 -#define _HBMK_hDEP 70 +#define _HBMK_lGUI 17 +#define _HBMK_lMT 18 +#define _HBMK_lPIC 19 +#define _HBMK_lDEBUG 20 +#define _HBMK_nHEAD 21 +#define _HBMK_aINCPATH 22 +#define _HBMK_lREBUILD 23 +#define _HBMK_lCLEAN 24 +#define _HBMK_lTRACE 25 +#define _HBMK_lDONTEXEC 26 +#define _HBMK_nHBMODE 27 +#define _HBMK_cUILNG 28 +#define _HBMK_cUICDP 29 +#define _HBMK_aLIBUSER 30 +#define _HBMK_aLIBUSERFWK 31 +#define _HBMK_aLIBUSERGT 32 +#define _HBMK_aLIBUSERSYS 33 +#define _HBMK_aLIBUSERSYSPRE 34 +#define _HBMK_aLIBFILTEROUT 35 +#define _HBMK_aLIBPATH 36 +#define _HBMK_aINSTPATH 37 +#define _HBMK_aOPTC 38 +#define _HBMK_aOPTCUSER 39 +#define _HBMK_aOPTCX 40 +#define _HBMK_aOPTCPPX 41 +#define _HBMK_aOPTPRG 42 +#define _HBMK_aOPTRES 43 +#define _HBMK_aOPTL 44 +#define _HBMK_aOPTLPOST 45 +#define _HBMK_aOPTA 46 +#define _HBMK_aOPTD 47 +#define _HBMK_aOPTDPOST 48 +#define _HBMK_aOPTI 49 +#define _HBMK_lCPP 50 +#define _HBMK_lSHARED 51 +#define _HBMK_lSTATICFULL 52 +#define _HBMK_lSHAREDDIST 53 +#define _HBMK_lNULRDD 54 +#define _HBMK_lMAP 55 +#define _HBMK_lBEEP 56 +#define _HBMK_lSTRIP 57 +#define _HBMK_lOPTIM 58 +#define _HBMK_nCOMPR 59 +#define _HBMK_nWARN 60 +#define _HBMK_lRUN 61 +#define _HBMK_lINC 62 +#define _HBMK_lREBUILDPO 63 +#define _HBMK_lMINIPO 64 +#define _HBMK_lWINUNI 65 +#define _HBMK_nCONF 66 +#define _HBMK_lIGNOREERROR 67 +#define _HBMK_lIMPLIB 68 +#define _HBMK_lHBCPPMM 69 +#define _HBMK_aVAR 70 +#define _HBMK_hDEP 71 -#define _HBMK_lCreateLib 71 -#define _HBMK_lCreateDyn 72 -#define _HBMK_lCreateImpLib 73 -#define _HBMK_lCreatePPO 74 -#define _HBMK_lCreateHRB 75 +#define _HBMK_lCreateLib 72 +#define _HBMK_lCreateDyn 73 +#define _HBMK_lCreateImpLib 74 +#define _HBMK_lCreatePPO 75 +#define _HBMK_lCreateHRB 76 -#define _HBMK_lDynVM 76 +#define _HBMK_lDynVM 77 #define _HBMK_lBLDFLGP 77 #define _HBMK_lBLDFLGC 78 -#define _HBMK_lBLDFLGL 79 +#define _HBMK_lBLDFLGL 80 -#define _HBMK_cFIRST 80 -#define _HBMK_aPRG 81 -#define _HBMK_aC 82 -#define _HBMK_aCPP 83 -#define _HBMK_aRESSRC 84 -#define _HBMK_aRESCMP 85 -#define _HBMK_aOBJUSER 86 -#define _HBMK_aICON 87 -#define _HBMK_cMANIFEST 88 -#define _HBMK_aIMPLIBSRC 89 -#define _HBMK_aDEF 90 -#define _HBMK_aINSTFILE 91 -#define _HBMK_hDEPTS 92 -#define _HBMK_aREQUEST 93 +#define _HBMK_cFIRST 81 +#define _HBMK_aPRG 82 +#define _HBMK_aC 83 +#define _HBMK_aCPP 84 +#define _HBMK_aRESSRC 85 +#define _HBMK_aRESCMP 86 +#define _HBMK_aOBJUSER 87 +#define _HBMK_aICON 88 +#define _HBMK_cMANIFEST 89 +#define _HBMK_aIMPLIBSRC 90 +#define _HBMK_aDEF 91 +#define _HBMK_aINSTFILE 92 +#define _HBMK_hDEPTS 93 +#define _HBMK_aREQUEST 94 -#define _HBMK_aPO 94 -#define _HBMK_cHBL 95 -#define _HBMK_cHBLDir 96 -#define _HBMK_aLNG 97 -#define _HBMK_cPO 98 +#define _HBMK_aPO 95 +#define _HBMK_cHBL 96 +#define _HBMK_cHBLDir 97 +#define _HBMK_aLNG 98 +#define _HBMK_cPO 99 -#define _HBMK_hPLUGINHRB 99 -#define _HBMK_hPLUGINVars 100 -#define _HBMK_aPLUGINPars 101 -#define _HBMK_hPLUGINExt 102 +#define _HBMK_hPLUGINHRB 100 +#define _HBMK_hPLUGINVars 101 +#define _HBMK_aPLUGINPars 102 +#define _HBMK_hPLUGINExt 103 -#define _HBMK_lDEBUGTIME 103 -#define _HBMK_lDEBUGINC 104 -#define _HBMK_lDEBUGSTUB 105 -#define _HBMK_lDEBUGI18N 106 -#define _HBMK_lDEBUGDEPD 107 -#define _HBMK_lDEBUGPARS 108 +#define _HBMK_lDEBUGTIME 104 +#define _HBMK_lDEBUGINC 105 +#define _HBMK_lDEBUGSTUB 106 +#define _HBMK_lDEBUGI18N 107 +#define _HBMK_lDEBUGDEPD 108 +#define _HBMK_lDEBUGPARS 109 -#define _HBMK_cCCPATH 109 -#define _HBMK_cCCPREFIX 110 -#define _HBMK_cCCPOSTFIX 111 -#define _HBMK_cCCEXT 112 +#define _HBMK_cCCPATH 110 +#define _HBMK_cCCPREFIX 111 +#define _HBMK_cCCPOSTFIX 112 +#define _HBMK_cCCEXT 113 -#define _HBMK_cWorkDir 113 -#define _HBMK_cWorkDirDynSub 114 -#define _HBMK_nCmd_Esc 115 -#define _HBMK_nScr_Esc 116 -#define _HBMK_nCmd_FNF 117 -#define _HBMK_nScr_FNF 118 -#define _HBMK_nErrorLevel 119 +#define _HBMK_cWorkDir 114 +#define _HBMK_cWorkDirDynSub 115 +#define _HBMK_nCmd_Esc 116 +#define _HBMK_nScr_Esc 117 +#define _HBMK_nCmd_FNF 118 +#define _HBMK_nScr_FNF 119 +#define _HBMK_nErrorLevel 120 -#define _HBMK_cPROGDIR 120 -#define _HBMK_cPROGNAME 121 +#define _HBMK_cPROGDIR 121 +#define _HBMK_cPROGNAME 122 -#define _HBMK_hAUTOHBC 122 /* trigger header => .hbc associations */ -#define _HBMK_hAUTOHBCFOUND 123 /* trigger headers found */ +#define _HBMK_hAUTOHBC 123 /* trigger header => .hbc associations */ +#define _HBMK_hAUTOHBCFOUND 124 /* trigger headers found */ -#define _HBMK_aDEPTHBC 124 /* .hbc references found */ -#define _HBMK_hDEPTSDIR 125 /* Header dirs found for dependencies */ +#define _HBMK_aDEPTHBC 125 /* .hbc references found */ +#define _HBMK_hDEPTSDIR 126 /* Header dirs found for dependencies */ -#define _HBMK_lStopAfterInit 126 -#define _HBMK_lStopAfterHarbour 127 +#define _HBMK_lStopAfterInit 127 +#define _HBMK_lStopAfterHarbour 128 -#define _HBMK_nCOMPVer 128 -#define _HBMK_lDEPIMPLIB 129 /* Generate import libs configured in dependecy specification */ -#define _HBMK_lInstForce 130 /* Force to install target even if was up to date */ -#define _HBMK_lAutoHBM 131 /* Toggles processing of hbmk.hbm file in current directory */ -#define _HBMK_lContainer 132 /* Target type: container */ -#define _HBMK_lShowLevel 133 /* Show project nesting level in all output lines */ -#define _HBMK_hFiles 134 /* Cache for the header parser (common for C and Harbour) */ -#define _HBMK_cDynLibPrefix 135 /* Dynamic lib filename prefix */ -#define _HBMK_cDynLibExt 136 /* Dynamic lib filename extension */ -#define _HBMK_aLINK 137 /* Links to be created and pointing to the target */ -#define _HBMK_hDEPTMACRO 138 /* Links to be created and pointing to the target */ -#define _HBMK_cC 139 /* C dialect */ -#define _HBMK_cCPP 140 /* C++ dialect */ -#define _HBMK_aLIB_BASE_WARN 141 +#define _HBMK_nCOMPVer 129 +#define _HBMK_lDEPIMPLIB 130 /* Generate import libs configured in dependecy specification */ +#define _HBMK_lInstForce 131 /* Force to install target even if was up to date */ +#define _HBMK_lAutoHBM 132 /* Toggles processing of hbmk.hbm file in current directory */ +#define _HBMK_lContainer 133 /* Target type: container */ +#define _HBMK_lShowLevel 134 /* Show project nesting level in all output lines */ +#define _HBMK_hFiles 135 /* Cache for the header parser (common for C and Harbour) */ +#define _HBMK_cDynLibPrefix 136 /* Dynamic lib filename prefix */ +#define _HBMK_cDynLibExt 137 /* Dynamic lib filename extension */ +#define _HBMK_aLINK 138 /* Links to be created and pointing to the target */ +#define _HBMK_hDEPTMACRO 139 /* Links to be created and pointing to the target */ +#define _HBMK_cC 140 /* C dialect */ +#define _HBMK_cCPP 141 /* C++ dialect */ +#define _HBMK_aLIB_BASE_WARN 142 -#define _HBMK_aArgs 142 -#define _HBMK_nArgTarget 143 -#define _HBMK_lPause 144 -#define _HBMK_nLevel 145 +#define _HBMK_aArgs 143 +#define _HBMK_nArgTarget 144 +#define _HBMK_lPause 145 +#define _HBMK_nLevel 146 -#define _HBMK_cHBX 146 +#define _HBMK_cHBX 147 -#define _HBMK_aGT 147 +#define _HBMK_aGT 148 -#define _HBMK_MAX_ 147 +#define _HBMK_MAX_ 148 #define _HBMK_DEP_CTRL_MARKER ".control." /* must be an invalid path */ @@ -786,7 +787,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) LOCAL l_cHB_INSTALL_PREFIX LOCAL l_cHB_INSTALL_BIN LOCAL l_cHB_INSTALL_LIB - LOCAL l_cHB_INSTALL_LIB3RD + LOCAL l_cHB_INSTALL_LI3 LOCAL l_cHB_INSTALL_DYN LOCAL l_cHB_INSTALL_INC LOCAL l_cHB_INSTALL_ADD @@ -1918,13 +1919,13 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) l_cHB_INSTALL_LIB := hb_PathNormalize( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + "lib" ) ENDIF ENDIF - IF Empty( l_cHB_INSTALL_LIB3RD ) + IF Empty( l_cHB_INSTALL_LI3 ) IF hbmk[ _HBMK_cPLAT ] == "win" .AND. ; hb_DirExists( tmp := hb_PathNormalize( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) ) + "lib" +; hb_ps() + "3rd" +; hb_ps() + hbmk[ _HBMK_cPLAT ] +; hb_ps() + hbmk[ _HBMK_cCOMP ] ) - l_cHB_INSTALL_LIB3RD := tmp + l_cHB_INSTALL_LI3 := tmp ENDIF ENDIF IF Empty( l_cHB_INSTALL_INC ) @@ -1956,13 +1957,14 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) keep above code parts easier to read. [vszakats] */ hbmk[ _HBMK_cHB_INSTALL_BIN ] := l_cHB_INSTALL_BIN := hb_DirSepDel( PathSepToSelf( l_cHB_INSTALL_BIN ) ) hbmk[ _HBMK_cHB_INSTALL_LIB ] := l_cHB_INSTALL_LIB := hb_DirSepDel( PathSepToSelf( l_cHB_INSTALL_LIB ) ) + hbmk[ _HBMK_cHB_INSTALL_LI3 ] := l_cHB_INSTALL_LI3 := hb_DirSepDel( PathSepToSelf( l_cHB_INSTALL_LI3 ) ) hbmk[ _HBMK_cHB_INSTALL_DYN ] := l_cHB_INSTALL_DYN := hb_DirSepDel( PathSepToSelf( l_cHB_INSTALL_DYN ) ) hbmk[ _HBMK_cHB_INSTALL_INC ] := l_cHB_INSTALL_INC := hb_DirSepDel( PathSepToSelf( l_cHB_INSTALL_INC ) ) /* Add main Harbour library dir to lib path list */ AAddNotEmpty( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_LIB ) /* Locally hosted 3rd party binary libraries */ - AAddNotEmpty( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_LIB3RD ) + AAddNotEmpty( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_LI3 ) IF ! Empty( l_cHB_INSTALL_DYN ) .AND. !( l_cHB_INSTALL_DYN == l_cHB_INSTALL_LIB ) AAddNotEmpty( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_DYN ) ENDIF @@ -2128,7 +2130,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) /* Process command line (2nd pass) */ FOR EACH aParam IN aParams - cParam := ArchCompFilter( hbmk, aParam[ _PAR_cParam ] ) + cParam := ArchCompFilter( hbmk, aParam[ _PAR_cParam ], aParam[ _PAR_cFileName ] ) cParamL := Lower( cParam ) DO CASE @@ -9219,7 +9221,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) FOR EACH cLine IN hb_ATokens( cFile, _CHR_EOL ) - cLine := AllTrim( ArchCompFilter( hbmk, AllTrim( cLine ) ) ) + cLine := AllTrim( ArchCompFilter( hbmk, AllTrim( cLine ), cFileName ) ) DO CASE CASE Lower( Left( cLine, Len( "skip=" ) ) ) == "skip=" ; cLine := SubStr( cLine, Len( "skip=" ) + 1 ) @@ -9921,7 +9923,7 @@ STATIC FUNCTION HBM_Load( hbmk, aParams, cFileName, nNestingLevel, lProcHBP ) {[!][]['&'|'|'][...]} */ -STATIC FUNCTION ArchCompFilter( hbmk, cItem ) +STATIC FUNCTION ArchCompFilter( hbmk, cItem, cFileName ) LOCAL nStart, nEnd LOCAL cFilterSrc LOCAL cFilterHarb @@ -9934,8 +9936,8 @@ STATIC FUNCTION ArchCompFilter( hbmk, cItem ) LOCAL lSkipQuote LOCAL cRetVal - LOCAL cExpr := "hbmk_KEYW( hbmk, '%1' )" - LOCAL cExprWithValue := "hbmk_KEYW( hbmk, '%1', '%2', '%3' )" + LOCAL cExpr := "hbmk_KEYW( hbmk, cFileName, '%1' )" + LOCAL cExprWithValue := "hbmk_KEYW( hbmk, cFileName, '%1', '%2', '%3' )" LOCAL tmp nEnd := 1 @@ -10027,8 +10029,8 @@ STATIC FUNCTION ArchCompFilter( hbmk, cItem ) /* Evaluate filter */ BEGIN SEQUENCE WITH {| oError | Break( oError ) } - bFilter := &( "{| hbmk |" + cFilterHarb + "}" ) - IF hb_isLogical( xResult := Eval( bFilter, hbmk ) ) .AND. xResult + bFilter := &( "{| hbmk, cFileName |" + cFilterHarb + "}" ) + IF hb_isLogical( xResult := Eval( bFilter, hbmk, cFileName ) ) .AND. xResult cRetVal := cItem ENDIF RECOVER @@ -10134,6 +10136,8 @@ STATIC FUNCTION MacroGet( hbmk, cMacro, cFileName ) cMacro := hbmk[ _HBMK_cHB_INSTALL_BIN ] ; EXIT CASE "HB_LIB" cMacro := hbmk[ _HBMK_cHB_INSTALL_LIB ] ; EXIT + CASE "HB_LIB3RD" + cMacro := hbmk[ _HBMK_cHB_INSTALL_LI3 ] ; EXIT CASE "HB_DYN" cMacro := hbmk[ _HBMK_cHB_INSTALL_DYN ] ; EXIT CASE "HB_INC" @@ -11378,7 +11382,7 @@ STATIC FUNCTION hbmk_DYNSUFFIX( hbmk ) RETURN "" /* Keep this public, it's used from macro. */ -FUNCTION hbmk_KEYW( hbmk, cKeyword, cValue, cOperator ) +FUNCTION hbmk_KEYW( hbmk, cFileName, cKeyword, cValue, cOperator ) LOCAL tmp IF cKeyword == hbmk[ _HBMK_cPLAT ] .OR. ; @@ -11429,6 +11433,15 @@ FUNCTION hbmk_KEYW( hbmk, cKeyword, cValue, cOperator ) "|icc|iccia64|clang|open64|sunpro|diab|pcc" + ; "|x86|x86_64|ia64|arm|mips|sh" ) + /* handle pseudo-functions */ + IF cOperator == "=" .AND. cValue != NIL + SWITCH cKeyword + CASE "hb_ispath" + cValue := hb_PathNormalize( PathMakeAbsolute( PathSepToSelf( MacroProc( hbmk, cValue, cFileName ) ), cFileName ) ) + RETURN iif( Empty( hb_FNameNameExt( cValue ) ), hb_DirExists( cValue ), hb_FileExists( cValue ) ) + ENDSWITCH + ENDIF + tmp := MacroGet( hbmk, cKeyWord, "" ) IF cValue != NIL SWITCH cOperator