diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 14bebf0f1a..c7a8ebda65 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,4 +1,4 @@ -/* +/* * $Id$ */ @@ -17,6 +17,22 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-05-20 11:21 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * utils/hbmk2/hbmk2.prg + + Added hbmk2 level support for multiple input .def files. + NOTE: Multiple .def files are only supported by gcc family + compilers (mingw/cygwin) (and maybe watcom, but I can't + tell by looking at the output), so for portable scripts, + stick to using only one .def file per .dll. bcc, + msvc, pocc will either ignore some of them, or + stop with error. + + * ChangeLog + - Deleted accented (UTF8) char. + ! Deleted UTF8 file marked added by subsequent committer's editor. + + ; --- Pls remember to use ASCII 7-bit chars in our files --- + 2010-05-19 20:45 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * contrib/hbide/ideprojmanager.prg ! Fixed: project location was shown blank. Itamar reported. @@ -35,19 +51,19 @@ * contrib/hbide/ideedit.prg * contrib/hbide/ideeditor.prg * contrib/hbide/ideshortcuts.prg - % Shifted: all actions which operate on editing instance, to - the micro levels. This implies that ::IdeEdit() object can be + % Shifted: all actions which operate on editing instance, to + the micro levels. This implies that ::IdeEdit() object can be used independent of interface constraints and hence becomes - eligible to be included in hbXBP as a HBP class. + eligible to be included in hbXBP as a HBP class. This also implies that hbIDEMap can be manipulated through Keyboard Mappings macros the same way as main editing instance with the exception that it cannot be editied. For example, you can call ::zoom( nPointSizeORKey ) to adjust its size. You can also use Ctrl+C to copy and can use block operations. - + Added: option. Tabs - are set to stop at same distance of 3 characters which - makes it possible to modify sources with/without tabs but + + Added: option. Tabs + are set to stop at same distance of 3 characters which + makes it possible to modify sources with/without tabs but with same visual display. 2010-05-20 01:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) @@ -56,7 +72,7 @@ + added new C function hb_hashGetCItemPos() * harbour/src/rtl/hbcom.c - ! fixed typo located by Bisz István + ! fixed typo located by Bisz Istvan 2010-05-19 10:35 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.pt_BR.po diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 67f2a42ac0..113642c140 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -339,7 +339,7 @@ REQUEST hbmk_KEYW #define _HBMK_aOBJUSER 74 #define _HBMK_aICON 75 #define _HBMK_aIMPLIBSRC 76 -#define _HBMK_cDEF 77 +#define _HBMK_aDEF 77 #define _HBMK_hDEPTS 78 #define _HBMK_aPO 79 @@ -652,6 +652,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) LOCAL cLibLibPrefix := "" LOCAL cLibObjPrefix LOCAL cDynObjPrefix := NIL + LOCAL cDynDefPrefix := NIL LOCAL cLibPathPrefix LOCAL cLibPathSep LOCAL cDynLibNamePrefix @@ -1528,7 +1529,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) hbmk[ _HBMK_aOBJUSER ] := {} hbmk[ _HBMK_aICON ] := {} hbmk[ _HBMK_aIMPLIBSRC ] := {} - hbmk[ _HBMK_cDEF ] := "" + hbmk[ _HBMK_aDEF ] := {} l_aOBJA := {} l_cPROGDIR := NIL l_cPROGNAME := NIL @@ -2165,8 +2166,9 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := ArchCompFilter( hbmk, cParam ) IF ! Empty( cParam ) - cParam := PathProc( cParam, aParam[ _PAR_cFileName ] ) - hbmk[ _HBMK_cDEF ] := PathSepToTarget( hbmk, cParam ) + FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aDEF ], PathSepToTarget( hbmk, cParam ) ) + NEXT ENDIF CASE FN_ExtGet( cParamL ) == ".o" .OR. ; @@ -2709,7 +2711,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cOpt_CompC += " {LC}" ENDIF cBin_Dyn := cBin_CompC - cOpt_Dyn := "-shared -o {OD} {IM} {LO} {FD} {DL} {LS}" + cOpt_Dyn := "-shared -o {OD} {LO} {FD} {IM} {DL} {LS}" cBin_Link := cBin_CompC cOpt_Link := "{LO} {LA} {LS} {FL} {DL}" bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_gcc( hbmk, hbmk[ _HBMK_cCCPREFIX ] + "dlltool" + hbmk[ _HBMK_cCCPOSTFIX ] + hbmk[ _HBMK_cCCEXT ] + " {FI} -d {ID} -l {OL}", nCmd_Esc, cSourceDLL, cTargetLib, cFlags ) } @@ -2845,7 +2847,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cOpt_CompC += " {LC}" ENDIF cBin_Dyn := cBin_CompC - cOpt_Dyn := "-shared -o {OD} {IM} {LO} {LL} {LB} {FD} {DL} {LS}" + cOpt_Dyn := "-shared -o {OD} {LO} {LL} {LB} {FD} {IM} {DL} {LS}" cBin_Link := cBin_CompC cOpt_Link := "{LO} {LA} {FL} {DL}" bBlk_ImpLib := {| cSourceDLL, cTargetLib | hb_FCopy( cSourceDLL, cTargetLib ) != F_ERROR } @@ -3095,14 +3097,14 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, GetEnv( "WATCOM") + hb_osPathSeparator() + "lib386" ) ) AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, GetEnv( "WATCOM") + hb_osPathSeparator() + "lib386" + hb_osPathSeparator() + "linux" ) ) ENDIF - CASE hbmk[ _HBMK_cPLAT ] == "win" ; cOpt_Dyn := "OP quiet SYS nt_dll {FD} NAME {OD} {LO} {DL} {LL} {LB} {LS}{SCRIPT}" - CASE hbmk[ _HBMK_cPLAT ] == "os2" ; cOpt_Dyn := "OP quiet SYS os2v2_dll {FD} NAME {OD} {LO} {DL} {LL} {LB} {LS}{SCRIPT}" + CASE hbmk[ _HBMK_cPLAT ] == "win" ; cOpt_Dyn := "OP quiet SYS nt_dll {FD} {IM} NAME {OD} {LO} {DL} {LL} {LB} {LS}{SCRIPT}" + CASE hbmk[ _HBMK_cPLAT ] == "os2" ; cOpt_Dyn := "OP quiet SYS os2v2_dll {FD} {IM} NAME {OD} {LO} {DL} {LL} {LB} {LS}{SCRIPT}" ENDCASE - IF hbmk[ _HBMK_cPLAT ] $ "win|os2" .AND. ! Empty( hbmk[ _HBMK_cDEF ] ) + IF hbmk[ _HBMK_cPLAT ] $ "win|os2" .AND. ! Empty( hbmk[ _HBMK_aDEF ] ) /* TODO: Watcom wlink requires a non-standard layout for .def files. We will need a converter and implement on-the-fly conversion to a temp file and pass that via {IM}. */ - AAdd( hbmk[ _HBMK_aOPTD ], "@{IM}" ) + cDynDefPrefix := "@" ENDIF IF hbmk[ _HBMK_cPLAT ] == "dos" /* workaround for not included automatically CLIB in pure C mode DOS builds */ @@ -3332,7 +3334,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cBin_CompCPP := cBin_CompC nCmd_Esc := _ESC_DBLQUOTE cOpt_Lib := "-nologo {FA} -out:{OL} {LO}" - cOpt_Dyn := "{FD} -dll -out:{OD} {DL} {LO} {LL} {LB} {LS}" + cOpt_Dyn := "{FD} {IM} -dll -out:{OD} {DL} {LO} {LL} {LB} {LS}" cOpt_CompC := "-nologo -c" IF hbmk[ _HBMK_lOPTIM ] IF hbmk[ _HBMK_cPLAT ] == "wce" @@ -3383,7 +3385,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ENDIF cOpt_CompC += " {FC} {LC}" cOptIncMask := "-I{DI}" - cOpt_Link := "-nologo -out:{OE} {LO} {DL} {FL} {LL} {LB} {LS}" + cOpt_Link := "-nologo -out:{OE} {LO} {DL} {FL} {IM} {LL} {LB} {LS}" SWITCH hbmk[ _HBMK_cCOMP ] CASE "msvc" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x86" ) ; EXIT CASE "msvc64" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x64" ) ; EXIT @@ -3397,9 +3399,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_msvc( hbmk, cBin_Lib + " -nologo {FI} -def:{ID} -out:{OL}", nCmd_Esc, cSourceDLL, cTargetLib, cFlags ) } cLibPathPrefix := "-libpath:" cLibPathSep := " " - IF ! Empty( hbmk[ _HBMK_cDEF ] ) - AAdd( hbmk[ _HBMK_aOPTD ], "-def:{IM}" ) - ENDIF + cDynDefPrefix := "-def:" IF hbmk[ _HBMK_lMAP ] AAdd( hbmk[ _HBMK_aOPTL ], "-map" ) AAdd( hbmk[ _HBMK_aOPTD ], "-map" ) @@ -3512,7 +3512,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cWorkDir := "." ENDIF cOptIncMask := "-I{DI}" - cOpt_Dyn := "{FD} -dll -out:{OD} {DL} {LO} {LL} {LB} {LS}" + cOpt_Dyn := "{FD} {IM} -dll -out:{OD} {DL} {LO} {LL} {LB} {LS}" bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command( hbmk, cBin_Lib + " {ID} -out:{OL}", nCmd_Esc, cSourceDLL, cTargetLib, cFlags ) } IF hbmk[ _HBMK_cPLAT ] == "wce" AAdd( hbmk[ _HBMK_aOPTC ], "-DUNICODE" ) @@ -3544,12 +3544,10 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF hbmk[ _HBMK_lMT ] AAdd( hbmk[ _HBMK_aOPTC ], "-MT" ) ENDIF - cOpt_Link := "-out:{OE} {LO} {DL} {FL} {LL} {LB} {LS}" + cOpt_Link := "-out:{OE} {LO} {DL} {FL} {IM} {LL} {LB} {LS}" cLibPathPrefix := "-libpath:" cLibPathSep := " " - IF ! Empty( hbmk[ _HBMK_cDEF ] ) - AAdd( hbmk[ _HBMK_aOPTD ], "-def:{IM}" ) - ENDIF + cDynDefPrefix := "-def:" IF hbmk[ _HBMK_lMAP ] AAdd( hbmk[ _HBMK_aOPTL ], "-map" ) AAdd( hbmk[ _HBMK_aOPTD ], "-map" ) @@ -4920,7 +4918,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cOpt_Dyn := StrTran( cOpt_Dyn, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], cWorkDir, cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, cResPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, cLibPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{IM}" , FN_Escape( PathSepToTarget( hbmk, hbmk[ _HBMK_cDEF ] ), nOpt_Esc ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{IM}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, cDynDefPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{OD}" , FN_Escape( PathSepToTarget( hbmk, l_cPROGNAME ), nOpt_Esc ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{OM}" , FN_Escape( PathSepToTarget( hbmk, FN_ExtSet( l_cPROGNAME, ".map" ) ), nOpt_Esc ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{OI}" , FN_Escape( PathSepToTarget( hbmk, l_cIMPLIBNAME ), nOpt_Esc ) ) @@ -6630,7 +6628,9 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) NEXT ENDIF CASE FN_ExtGet( cItemL ) == ".def" - hbmk[ _HBMK_cDEF ] := PathSepToSelf( cItem ) + FOR EACH tmp IN FN_Expand( cItem ) + AAddNew( hbmk[ _HBMK_aDEF ], PathSepToTarget( hbmk, tmp ) ) + NEXT OTHERWISE /* .prg */ IF Empty( FN_ExtGet( cItem ) ) cItem := FN_ExtSet( cItem, ".prg" )