diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 84b5e0cfd0..7a3a71a710 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,78 @@ The license applies to all entries newer than 2009-04-28. */ +2010-06-09 19:56 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * utils/hbmk2/hbmk2.prg + + Quite big commit aiming to clean path forming in different + situations. After this is change it should be more or less + true that internally hbmk2 always uses native path format, + it should accept _any_ format regardless of platform, + and it should convert filenames to proper format only when + calling external compiler tools, according to their specific + taste. + F.e. this should fix problems when doing Windows cross-build + on *nix systems, with watcom, or other compilers (except + mingw) which has native compiler. It should continue to + work with WINE based on compilers in similar situations. + There is one specific exception when passing around + filenames as part of options. In this case hbmk2 cannot do + too much magic, so try to avoid it. + Though I never actualluy tried this latter case. + Please test it, regressions are possible. I'd be happy to + see stress tests with passing various combination of pathseps + and watching -trace output whether everything is properly + converted to right format. + + Will now convert filenames to Cygwin format for Cygwin + targets. + ! Fixed to accept .hbi files without '@' prefix. + + * config/postinst.prg + % Do not add '@' prefix when referring to .hbi files. + + * src/vm/extend.c + ! Fixed TRACE message of new hb_parnintdef() function. + + * src/rtl/hbcomhb.c + * Minor correction to one function description in comment. + + * src/rtl/hbsocket.c + * Minor formatting. + + * include/hbcom.ch + + Added comments. + * Formatting. + + Added comment that code is used by .c code. + + * contrib/hbtpathy/telepath.prg + * Rewritten to use native HB_COM*() API (instead of hbct + specific COM_() one). + + tp_send() code rewritten to use core timeout functionality. + + Implemented formerly disabled tp_ctrldtr() function. + (pls review it) + % FetchChars() internal function simplified. + + * contrib/hbcomm/hbcomm.prg + * Rewritten to use native HB_COM*() API (instead of hbct + specific COM_() one). + + * contrib/hbsms/hbsms.prg + * Rewritten to use native HB_COM*() API (instead of hbct + specific COM_() one). + * Receive code rewritten to rely on core timeout functionality + instead of rolling local implementation. + + ; I didn't make any tests with API converted COM code, so please + review and test these changes. + + * contrib/hbtpathy/hbtpathy.hbc + * contrib/hbcomm/hbcomm.hbc + * contrib/hbsms/hbsms.hbc + - Deleted hbct dependency. + + * INSTALL + * package/winuni/RELNOTES + * QT 4.6.2 -> 4.6.3 + 2010-06-09 18:42 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/examples/commouse/commouse.prg * added $id$ @@ -58,8 +130,8 @@ + harbour/examples/commouse + harbour/examples/commouse/commouse.prg + sample application to decode and display COM port mouse data. - Two types of mouse protocol is supported. You just need to - find COM port mouse! :) + Two types of mouse protocol is supported. You just need to + find COM port mouse! :) * harbour/src/rtl/hbcom.c ! fixed timeouts on Windows platform (thanks Przemek!) diff --git a/harbour/INSTALL b/harbour/INSTALL index a0b7c51a1c..8a9e3ee66b 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -1394,7 +1394,7 @@ HARBOUR http://get.qt.nokia.com/qt/source/ Currently supported Windows binary package: http://get.qt.nokia.com/qt/source/qt-win-opensource-4.5.3-mingw.exe - http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.2-mingw.exe + http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.3-mingw.exe How to create static and MSVC builds: http://doc.trolltech.com/4.5/deployment-windows.html NOTES: diff --git a/harbour/config/postinst.prg b/harbour/config/postinst.prg index d630f02be1..f253f5eb71 100644 --- a/harbour/config/postinst.prg +++ b/harbour/config/postinst.prg @@ -86,7 +86,7 @@ PROCEDURE Main() IF hb_FileExists( "contrib" + _PS_ + tmp + _PS_ + tmp + ".hbi" ) mk_hb_processRun( GetEnv( "HB_HOST_BIN_DIR" ) + _PS_ + "hbmk2" +; " -quiet -lang=en" +; - " @contrib/" + tmp + "/" + tmp + ".hbi" +; + " contrib/" + tmp + "/" + tmp + ".hbi" +; " -o${HB_LIB_INSTALL}/" ) ENDIF NEXT diff --git a/harbour/contrib/hbcomm/hbcomm.hbc b/harbour/contrib/hbcomm/hbcomm.hbc index 2b175fd4b1..d73afd134a 100644 --- a/harbour/contrib/hbcomm/hbcomm.hbc +++ b/harbour/contrib/hbcomm/hbcomm.hbc @@ -5,5 +5,3 @@ incpaths=. libs=${hb_name} - -libs=../hbct/hbct.hbc diff --git a/harbour/contrib/hbcomm/hbcomm.prg b/harbour/contrib/hbcomm/hbcomm.prg index 21edab0dca..b2ad96ac3d 100644 --- a/harbour/contrib/hbcomm/hbcomm.prg +++ b/harbour/contrib/hbcomm/hbcomm.prg @@ -52,6 +52,8 @@ #include "common.ch" +#include "hbcom.ch" + STATIC s_hPort := { => } STATIC s_hbcomm_mutex := hb_mutexCreate() @@ -68,10 +70,11 @@ FUNCTION INIT_PORT( cPort, nBaud, nData, nParity, nStop, nBufferSize ) nPort := Len( s_hPort ) + 1 IF ISCHARACTER( cPort ) - cOldPortName := com_DevName( nPort, cPort ) + cOldPortName := hb_comGetDevice( nPort ) + hb_comSetDevice( nPort, cPort ) ENDIF - IF com_Open( nPort ) + IF hb_comOpen( nPort ) IF ! ISNUMBER( nBaud ) nBaud := 9600 @@ -93,17 +96,17 @@ FUNCTION INIT_PORT( cPort, nBaud, nData, nParity, nStop, nBufferSize ) HB_SYMBOL_UNUSED( nBufferSize ) - IF com_Init( nPort, nBaud, cParity, nData, nStop ) + IF hb_comInit( nPort, nBaud, cParity, nData, nStop ) s_hPort[ nPort ] := cOldPortName hb_mutexUnLock( s_hbcomm_mutex ) RETURN nPort ELSE - com_Close( nPort ) + hb_comClose( nPort ) ENDIF ENDIF IF cOldPortName != NIL - com_DevName( nPort, cOldPortName ) + hb_comSetDevice( nPort, cOldPortName ) ENDIF hb_mutexUnLock( s_hbcomm_mutex ) @@ -112,7 +115,7 @@ FUNCTION INIT_PORT( cPort, nBaud, nData, nParity, nStop, nBufferSize ) /* Purge output buffer */ FUNCTION OUTBUFCLR( nPort ) - RETURN com_sflush( nPort ) + RETURN hb_comFlush( nPort, HB_COM_OFLUSH ) /* See if port is opened correctly */ FUNCTION ISWORKING( nPort ) @@ -124,20 +127,19 @@ FUNCTION ISWORKING( nPort ) [vszakats] */ /* Fetch chars into */ FUNCTION INCHR( nPort, nCount, /* @ */ cString ) - cString := com_read( nPort, nCount ) - RETURN Len( cString ) + RETURN hb_comRecv( nPort, @cString, nCount ) /* Send out characters. Returns .t. if successful. */ FUNCTION OUTCHR( nPort, cString ) - RETURN com_send( nPort, cString ) == 0 + RETURN hb_comSend( nPort, cString ) == Len( cString ) /* Find out how many chars are in input buffer */ FUNCTION INBUFSIZE( nPort ) - RETURN com_count( nPort ) + RETURN hb_comInputCount( nPort ) /* Find out how many characters are in out buf? */ FUNCTION OUTBUFSIZE( nPort ) - RETURN com_scount( nPort ) + RETURN hb_comOutputCount( nPort ) /* Close port and clear handle */ FUNCTION UNINT_PORT( nPort ) @@ -146,10 +148,10 @@ FUNCTION UNINT_PORT( nPort ) hb_mutexLock( s_hbcomm_mutex ) IF nPort $ s_hPort - IF com_Close( nPort ) + IF hb_comClose( nPort ) /* Restore com port name */ IF s_hPort[ nPort ] != NIL - com_DevName( nPort, s_hPort[ nPort ] ) + hb_comSetDevice( nPort, s_hPort[ nPort ] ) ENDIF hb_HDel( s_hPort, nPort ) lRetVal := .T. diff --git a/harbour/contrib/hbsms/hbsms.hbc b/harbour/contrib/hbsms/hbsms.hbc index 2b175fd4b1..d73afd134a 100644 --- a/harbour/contrib/hbsms/hbsms.hbc +++ b/harbour/contrib/hbsms/hbsms.hbc @@ -5,5 +5,3 @@ incpaths=. libs=${hb_name} - -libs=../hbct/hbct.hbc diff --git a/harbour/contrib/hbsms/hbsms.prg b/harbour/contrib/hbsms/hbsms.prg index 423de994f5..2449115d01 100644 --- a/harbour/contrib/hbsms/hbsms.prg +++ b/harbour/contrib/hbsms/hbsms.prg @@ -61,27 +61,12 @@ #include "common.ch" STATIC FUNCTION port_send( h, s ) - RETURN com_send( h, s ) + RETURN hb_comSend( h, s ) -/* NOTE: EXPERIMENTAL CODE. USE AT YOUR OWN RISK. NO GUARANTEES. */ STATIC FUNCTION port_rece( h, n, t ) - LOCAL cString - LOCAL nEnd + LOCAL cString := "" - IF ! ISNUMBER( n ) - n := 64 - ENDIF - - IF ! ISNUMBER( t ) - t := 5 - ENDIF - - cString := "" - nEnd := hb_milliSeconds() + ( t * 1000 ) - DO WHILE Len( cString ) < t .AND. hb_milliSeconds() < nEnd - cString += com_read( h, n - Len( cString ) ) - hb_idleSleep( 0.01 ) - ENDDO + hb_comRecv( h, @cString, n, t ) RETURN cString @@ -128,17 +113,18 @@ FUNCTION smsctx_New( xPort ) smsctx[ _SMSCTX_cPrevName ] := NIL ELSEIF ISCHARACTER( xPort ) smsctx[ _SMSCTX_xHnd ] := 1 - smsctx[ _SMSCTX_cPrevName ] := com_DevName( smsctx[ _SMSCTX_xHnd ], xPort ) + smsctx[ _SMSCTX_cPrevName ] := hb_comGetDevice( smsctx[ _SMSCTX_xHnd ] ) + hb_comSetDevice( smsctx[ _SMSCTX_xHnd ], xPort ) ELSE smsctx[ _SMSCTX_xHnd ] := NIL ENDIF IF smsctx[ _SMSCTX_xHnd ] != NIL - IF com_Open( smsctx[ _SMSCTX_xHnd ] ) - IF com_Init( smsctx[ _SMSCTX_xHnd ], 9600, "N", 8, 1 ) + IF hb_comOpen( smsctx[ _SMSCTX_xHnd ] ) + IF hb_comInit( smsctx[ _SMSCTX_xHnd ], 9600, "N", 8, 1 ) RETURN smsctx ELSE - com_Close( smsctx[ _SMSCTX_xHnd ] ) + hb_comClose( smsctx[ _SMSCTX_xHnd ] ) ENDIF ENDIF ENDIF @@ -151,13 +137,13 @@ FUNCTION smsctx_Close( smsctx ) RETURN .F. ENDIF - IF ! com_Close( smsctx[ _SMSCTX_xHnd ] ) + IF ! hb_comClose( smsctx[ _SMSCTX_xHnd ] ) RETURN .F. ENDIF /* Restore com port name */ IF smsctx[ _SMSCTX_cPrevName ] != NIL - com_DevName( smsctx[ _SMSCTX_xHnd ], smsctx[ _SMSCTX_cPrevName ] ) + hb_comSetDevice( smsctx[ _SMSCTX_xHnd ], smsctx[ _SMSCTX_cPrevName ] ) ENDIF RETURN .T. diff --git a/harbour/contrib/hbtpathy/hbtpathy.hbc b/harbour/contrib/hbtpathy/hbtpathy.hbc index 2b175fd4b1..d73afd134a 100644 --- a/harbour/contrib/hbtpathy/hbtpathy.hbc +++ b/harbour/contrib/hbtpathy/hbtpathy.hbc @@ -5,5 +5,3 @@ incpaths=. libs=${hb_name} - -libs=../hbct/hbct.hbc diff --git a/harbour/contrib/hbtpathy/telepath.prg b/harbour/contrib/hbtpathy/telepath.prg index f50f6b9305..6dc8486af1 100644 --- a/harbour/contrib/hbtpathy/telepath.prg +++ b/harbour/contrib/hbtpathy/telepath.prg @@ -61,6 +61,8 @@ #include "common.ch" #include "telepath.ch" +#include "hbcom.ch" + #define TPFP_NAME 1 /* Structure of ports array */ #define TPFP_HANDLE 2 @@ -92,7 +94,7 @@ FUNCTION tp_baud( nPort, nNewBaud ) ENDIF IF nNewBaud > 0 - IF com_Init( t_aPorts[ nPort, TPFP_HANDLE ], nNewBaud, t_aPorts[ nPort, TPFP_PARITY ], t_aPorts[ nPort, TPFP_DBITS ], t_aPorts[ nPort, TPFP_SBITS ] ) + IF hb_comInit( t_aPorts[ nPort, TPFP_HANDLE ], nNewBaud, t_aPorts[ nPort, TPFP_PARITY ], t_aPorts[ nPort, TPFP_DBITS ], t_aPorts[ nPort, TPFP_SBITS ] ) t_aPorts[ nPort, TPFP_BAUD ] := nNewBaud ELSE // set error code @@ -144,7 +146,7 @@ FUNCTION tp_close( nPort, nTimeout ) IF t_aPorts[ nPort, TPFP_HANDLE ] >= 0 - com_Close( t_aPorts[ nPort, TPFP_HANDLE ] ) + hb_comClose( t_aPorts[ nPort, TPFP_HANDLE ] ) /* Port parameters should stay the same for the case the port gets reopened @@ -197,7 +199,7 @@ FUNCTION tp_open( nPort, nInSize, nOutSize, nBaud, nData, cParity, nStop, cPortn nStop := 1 ENDIF IF ISCHARACTER( cPortname ) - com_DevName( nPort, cPortname ) + hb_comSetDevice( nPort, cPortname ) ENDIF t_aPorts[ nPort, TPFP_NAME ] := cPortname @@ -210,11 +212,11 @@ FUNCTION tp_open( nPort, nInSize, nOutSize, nBaud, nData, cParity, nStop, cPortn t_aPorts[ nPort, TPFP_INBUF_SIZE ] := nInSize t_aPorts[ nPort, TPFP_HANDLE ] := -1 - IF com_Open( nPort ) + IF hb_comOpen( nPort ) t_aPorts[ nPort, TPFP_HANDLE ] := nPort - IF com_Init( t_aPorts[ nPort, TPFP_HANDLE ], t_aPorts[ nPort, TPFP_BAUD ], t_aPorts[ nPort, TPFP_PARITY ], t_aPorts[ nPort, TPFP_DBITS ], t_aPorts[ nPort, TPFP_SBITS ] ) + IF hb_comInit( t_aPorts[ nPort, TPFP_HANDLE ], t_aPorts[ nPort, TPFP_BAUD ], t_aPorts[ nPort, TPFP_PARITY ], t_aPorts[ nPort, TPFP_DBITS ], t_aPorts[ nPort, TPFP_SBITS ] ) t_aPorts[ nPort, TPFP_OC ] := .T. RETURN 0 ELSE @@ -273,49 +275,20 @@ FUNCTION tp_recv( nPort, nLength, nTimeout ) FUNCTION tp_send( nPort, cString, nTimeout ) - LOCAL nWritten, nTotWritten, nDone - IF ! ISCHARACTER( cString ) cString := "" ENDIF IF ! ISNUMBER( nTimeout ) nTimeout := 0 ENDIF - IF ! isopenport( nPort ) RETURN 0 ENDIF - IF Len( cString ) == 0 RETURN 0 ENDIF - nDone := Seconds() + iif( nTimeout >= 0, nTimeout, 0) - nTotWritten := 0 - - DO WHILE nTotWritten < Len( cString ) .AND. ; - ( nTimeout < 0 .OR. Seconds() <= nDone ) - - nWritten := com_send( t_aPorts[ nPort, TPFP_HANDLE ], SubStr( cString, nTotWritten + 1 ) ) - - IF nWritten >= 0 - - nTotWritten += nWritten - - IF nTotWritten < Len( cString ) - - IF ! tp_idle() - hb_idleSleep( 1 ) - ELSE - EXIT - ENDIF - ENDIF - ELSE // nWritten < 0, error occurred - EXIT - ENDIF - ENDDO - - RETURN nTotWritten + RETURN hb_comSend( t_aPorts[ nPort, TPFP_HANDLE ], cString ) FUNCTION tp_sendsub( nPort, cString, nStart, nLength, nTimeout ) @@ -554,17 +527,25 @@ FUNCTION tp_waitfor( ... ) /* We cannot set, well, _I_ think we cannot, CTS without setting RTS flowcontrol, so this function and tp_ctrlrts() do the same thing, that is set/reset CRTSCTS flowcontol */ FUNCTION tp_ctrlcts( nPort, nNewCtrl ) - LOCAL nCurValue + LOCAL nFlag IF ! isopenport( nPort ) RETURN 0 ENDIF - IF Valtype( nNewCtrl ) == "U" - nCurValue := __tp_ctrlcts( t_aPorts[ nPort, TPFP_HANDLE ] ) - ELSE - nCurValue := __tp_ctrlcts( t_aPorts[ nPort, TPFP_HANDLE ], nNewCtrl ) + IF hb_comFlowControl( t_aPorts[ nPort, TPFP_HANDLE ], @nCurValue ) + nFlag := hb_bitOr( HB_COM_FLOW_IRTSCTS, HB_COM_FLOW_ORTSCTS ) + IF ISNUMBER( nNewCtrl ) + IF nNewCtrl == 0 + nNewCtrl := hb_bitAnd( nCurValue, hb_bitNot( nFlag ) ) + ELSE + nNewCtrl := hb_bitOr( nCurValue, nFlag ) + ENDIF + + hb_comFlowControl( t_aPorts[ nPort, TPFP_HANDLE ], NIL, nNewCtrl ) + ENDIF + nCurValue := iif( hb_bitAnd( nCurValue, nFlag ) != 0, 1, 0 ) ENDIF RETURN nCurValue @@ -575,57 +556,77 @@ FUNCTION tp_ctrlrts( nPort, nNewCtrl ) RETURN tp_ctrlcts( nPort, nNewCtrl ) - -/* - // telepathy says... // returns old dtr value 0,1,2 // sets to 0 = dtr off, 1 dtr on, 2 = dtr flow control autotoggle // I don't support 2. who uses dtr for flow control anyway... -FUNCTION tp_ctrldtr( nPort, nParamNewval ) - LOCAL nph, nnewval, noldval +FUNCTION tp_ctrldtr( nPort, nNewCtrl ) + LOCAL nCurValue + LOCAL nFlag IF ! isopenport( nPort ) - RETURN TE_PARAM + RETURN 0 ENDIF - nph := t_aPorts[ nPort, TPFP_HANDLE ] - __tp_ctrldtr( nph, @nnewval, @noldval ) + IF hb_comFlowControl( t_aPorts[ nPort, TPFP_HANDLE ], @nCurValue ) + nFlag := hb_bitOr( HB_COM_FLOW_IDTRDSR, HB_COM_FLOW_ODTRDSR ) + IF ISNUMBER( nNewCtrl ) + IF nNewCtrl == 0 + nNewCtrl := hb_bitAnd( nCurValue, hb_bitNot( nFlag ) ) + ELSE + nNewCtrl := hb_bitOr( nCurValue, nFlag ) + ENDIF - RETURN noldval -*/ + hb_comFlowControl( t_aPorts[ nPort, TPFP_HANDLE ], NIL, nNewCtrl ) + ENDIF + nCurValue := iif( hb_bitAnd( nCurValue, nFlag ) != 0, 1, 0 ) + ENDIF + + RETURN nCurValue FUNCTION tp_isdcd( nPort ) + LOCAL nValue IF ! isopenport( nPort ) RETURN .F. ENDIF - RETURN com_DCD( t_aPorts[ nPort, TPFP_HANDLE ] ) + hb_comMSR( nPort, @nValue ) + + RETURN hb_bitAnd( nValue, HB_COM_MSR_DCD ) != 0 FUNCTION tp_isri( nPort ) + LOCAL nValue IF ! isopenport( nPort ) RETURN .F. ENDIF - RETURN com_Ring( t_aPorts[ nPort, TPFP_HANDLE ] ) + hb_comMSR( nPort, @nValue ) + + RETURN hb_bitAnd( nValue, HB_COM_MSR_RI ) != 0 FUNCTION tp_isdsr( nPort ) + LOCAL nValue IF ! isopenport( nPort ) RETURN .F. ENDIF - RETURN com_DSR( t_aPorts[ nPort, TPFP_HANDLE ] ) + hb_comMSR( nPort, @nValue ) + + RETURN hb_bitAnd( nValue, HB_COM_MSR_DSR ) != 0 FUNCTION tp_iscts( nPort ) + LOCAL nValue IF ! isopenport( nPort ) RETURN .F. ENDIF - RETURN com_CTS( t_aPorts[ nPort, TPFP_HANDLE ] ) + hb_comMSR( nPort, @nValue ) + + RETURN hb_bitAnd( nValue, HB_COM_MSR_CTS ) != 0 FUNCTION tp_flush( nPort, nTimeout ) @@ -694,11 +695,10 @@ STATIC FUNCTION FetchChars( nPort ) RETURN 0 ENDIF - cStr := com_read( t_aPorts[ nPort, TPFP_HANDLE ] ) + cStr := "" + hb_comRecv( t_aPorts[ nPort, TPFP_HANDLE ], @cStr ) - IF Len( cStr ) > 0 - t_aPorts[ nPort, TPFP_INBUF ] += cStr - ENDIF + t_aPorts[ nPort, TPFP_INBUF ] += cStr RETURN Len( cStr ) @@ -774,12 +774,6 @@ STATIC FUNCTION __TP_INFREE() STATIC FUNCTION __TP_OUTFREE() RETURN -1 -STATIC FUNCTION __TP_CTRLCTS( nPort, nValue ) - RETURN com_Hard( nPort, iif( ISNUMBER( nValue ), nValue != 0, NIL ), .F. ) - -STATIC FUNCTION __TP_CTRLDTR( nPort, nValue ) - RETURN com_Hard( nPort, iif( ISNUMBER( nValue ), nValue != 0, NIL ), .T. ) - FUNCTION BIN_AND( ... ) RETURN HB_BITAND( ... ) diff --git a/harbour/include/hbcom.ch b/harbour/include/hbcom.ch index 7cc75f2055..e29cd089fe 100644 --- a/harbour/include/hbcom.ch +++ b/harbour/include/hbcom.ch @@ -50,28 +50,34 @@ * */ +/* NOTE: This file is also used by C code. */ + #ifndef HB_COM_CH_ #define HB_COM_CH_ -#define HB_COM_IFLUSH 1 -#define HB_COM_OFLUSH 2 -#define HB_COM_IOFLUSH 3 +/* HB_COMFLUSH() modes */ +#define HB_COM_IFLUSH 1 +#define HB_COM_OFLUSH 2 +#define HB_COM_IOFLUSH 3 -#define HB_COM_MCR_DTR 0x01 /* Data terminal ready (DTR) TIOCM_DTR */ -#define HB_COM_MCR_RTS 0x02 /* Request to send (RTS) TIOCM_RTS */ -#define HB_COM_MCR_OUT1 0x04 /* OUT 1 TIOCM_OUT1 */ -#define HB_COM_MCR_OUT2 0x08 /* OUT 2 TIOCM_OUT2 */ -#define HB_COM_MCR_LOOP 0x10 /* LOOP TIOCM_LOOP */ +/* HB_COMMCR() parameters */ +#define HB_COM_MCR_DTR 0x01 /* Data terminal ready (DTR) TIOCM_DTR */ +#define HB_COM_MCR_RTS 0x02 /* Request to send (RTS) TIOCM_RTS */ +#define HB_COM_MCR_OUT1 0x04 /* OUT 1 TIOCM_OUT1 */ +#define HB_COM_MCR_OUT2 0x08 /* OUT 2 TIOCM_OUT2 */ +#define HB_COM_MCR_LOOP 0x10 /* LOOP TIOCM_LOOP */ -#define HB_COM_MSR_DELTA_CTS 0x01 /* DELTA ready to send (DCTS) */ -#define HB_COM_MSR_DELTA_DSR 0x02 /* DELTA data terminal ready (DDSR) */ -#define HB_COM_MSR_TERI 0x04 /* Trailing edge RING (TERI) */ -#define HB_COM_MSR_DELTA_DCD 0x08 /* DELTA data carrier detected (DDCD) */ -#define HB_COM_MSR_CTS 0x10 /* Clear to send (CTS) TIOCM_CTS */ -#define HB_COM_MSR_DSR 0x20 /* Data terminal ready (DSR) TIOCM_DSR */ -#define HB_COM_MSR_RI 0x40 /* RING indicator (RI) TIOCM_RI */ -#define HB_COM_MSR_DCD 0x80 /* Data carrier detected (DCD) TIOCM_CD */ +/* HB_COMMSR() parameters */ +#define HB_COM_MSR_DELTA_CTS 0x01 /* DELTA ready to send (DCTS) */ +#define HB_COM_MSR_DELTA_DSR 0x02 /* DELTA data terminal ready (DDSR) */ +#define HB_COM_MSR_TERI 0x04 /* Trailing edge RING (TERI) */ +#define HB_COM_MSR_DELTA_DCD 0x08 /* DELTA data carrier detected (DDCD) */ +#define HB_COM_MSR_CTS 0x10 /* Clear to send (CTS) TIOCM_CTS */ +#define HB_COM_MSR_DSR 0x20 /* Data terminal ready (DSR) TIOCM_DSR */ +#define HB_COM_MSR_RI 0x40 /* RING indicator (RI) TIOCM_RI */ +#define HB_COM_MSR_DCD 0x80 /* Data carrier detected (DCD) TIOCM_CD */ +/* HB_COMLSR() parameters */ #define HB_COM_LSR_DATA_READY 0x01 /* Data ready */ #define HB_COM_LSR_OVERRUN_ERR 0x02 /* Overflow error */ #define HB_COM_LSR_PARITY_ERR 0x04 /* Parity error */ @@ -80,38 +86,43 @@ #define HB_COM_LSR_TRANS_HOLD_EMPTY 0x20 /* Transmission holder register empty */ #define HB_COM_LSR_TRANS_EMPTY 0x40 /* TX shift register empty */ -#define HB_COM_FLOW_IRTSCTS 0x01 -#define HB_COM_FLOW_ORTSCTS 0x02 -#define HB_COM_FLOW_IDTRDSR 0x04 -#define HB_COM_FLOW_ODTRDSR 0x08 -#define HB_COM_FLOW_DCD 0x10 -#define HB_COM_FLOW_XOFF 0x20 /* XON/XOFF on input */ -#define HB_COM_FLOW_XON 0x40 /* XON/XOFF on output */ +/* HB_COMFLOWCONTROL() parameters */ +#define HB_COM_FLOW_IRTSCTS 0x01 +#define HB_COM_FLOW_ORTSCTS 0x02 +#define HB_COM_FLOW_IDTRDSR 0x04 +#define HB_COM_FLOW_ODTRDSR 0x08 +#define HB_COM_FLOW_DCD 0x10 +#define HB_COM_FLOW_XOFF 0x20 /* XON/XOFF on input */ +#define HB_COM_FLOW_XON 0x40 /* XON/XOFF on output */ -#define HB_COM_FL_OOFF 0x01 -#define HB_COM_FL_OON 0x02 -#define HB_COM_FL_IOFF 0x04 -#define HB_COM_FL_ION 0x08 -#define HB_COM_FL_SOFT 0x10 -#define HB_COM_FL_RTSCTS 0x20 -#define HB_COM_FL_DTRDSR 0x40 -#define HB_COM_FL_DCD 0x80 +/* HB_COMFLOWSET() parameters */ +#define HB_COM_FL_OOFF 0x01 +#define HB_COM_FL_OON 0x02 +#define HB_COM_FL_IOFF 0x04 +#define HB_COM_FL_ION 0x08 +#define HB_COM_FL_SOFT 0x10 +#define HB_COM_FL_RTSCTS 0x20 +#define HB_COM_FL_DTRDSR 0x40 +#define HB_COM_FL_DCD 0x80 -#define HB_COM_TX_CTS 0x01 -#define HB_COM_TX_DSR 0x02 -#define HB_COM_TX_DCD 0x04 -#define HB_COM_TX_XOFF 0x08 -#define HB_COM_TX_EMPTY 0x10 -#define HB_COM_TX_RFLUSH 0x20 +/* HB_COMOUTPUTSTATE() return values */ +#define HB_COM_TX_CTS 0x01 +#define HB_COM_TX_DSR 0x02 +#define HB_COM_TX_DCD 0x04 +#define HB_COM_TX_XOFF 0x08 +#define HB_COM_TX_EMPTY 0x10 +#define HB_COM_TX_RFLUSH 0x20 -#define HB_COM_RX_XOFF 0x01 +/* HB_COMINPUTSTATE() return values */ +#define HB_COM_RX_XOFF 0x01 -#define HB_COM_ERR_WRONGPORT 1 -#define HB_COM_ERR_CLOSED 2 -#define HB_COM_ERR_TIMEOUT 3 -#define HB_COM_ERR_NOSUPPORT 4 -#define HB_COM_ERR_PARAMVALUE 5 -#define HB_COM_ERR_BUSY 6 -#define HB_COM_ERR_OTHER 7 +/* HB_COMGETERROR() return values */ +#define HB_COM_ERR_WRONGPORT 1 +#define HB_COM_ERR_CLOSED 2 +#define HB_COM_ERR_TIMEOUT 3 +#define HB_COM_ERR_NOSUPPORT 4 +#define HB_COM_ERR_PARAMVALUE 5 +#define HB_COM_ERR_BUSY 6 +#define HB_COM_ERR_OTHER 7 #endif /* HB_COM_CH_ */ diff --git a/harbour/package/winuni/RELNOTES b/harbour/package/winuni/RELNOTES index cc738f68ba..cbba96a430 100644 --- a/harbour/package/winuni/RELNOTES +++ b/harbour/package/winuni/RELNOTES @@ -66,7 +66,7 @@ Tool/lib versions used to create this package: OCILIB 3.6.0 OpenSSL 1.0.0 PostgreSQL 8.4.2-1 - QT 4.6.2 + QT 4.6.3 WATTCP 2.2.10 Changes since previous (2.0.0) release: diff --git a/harbour/src/rtl/hbcomhb.c b/harbour/src/rtl/hbcomhb.c index 3ae332c7f6..f6f6540cca 100644 --- a/harbour/src/rtl/hbcomhb.c +++ b/harbour/src/rtl/hbcomhb.c @@ -55,7 +55,7 @@ * HB_COMDISCARDCHAR( nPort, nChar | cChar ) --> lSuccess * HB_COMERRORCHAR( nPort, nChar | cChar ) --> lSuccess * HB_COMFLOWCHARS( nPort, nXONchar | cXONchar, nXOFFchar | cXOFFchar ) --> lSuccess - * HB_COMFLOWCONTROL( nPort, @iValue, nFlow ) --> lSuccess + * HB_COMFLOWCONTROL( nPort, @nOldFlow, nFlow ) --> lSuccess * HB_COMFLOWSET( nPort, nFlow ) --> lSuccess * HB_COMFLUSH( nPort, [ nType = HB_COM_IOFLUSH ] ) --> lSuccess * HB_COMGETDEVICE( nPort ) --> cDeviceName @@ -100,7 +100,7 @@ HB_FUNC( HB_COMERRORCHAR ) HB_FUNC( HB_COMFLOWCHARS ) { - hb_retl( hb_comFlowChars( hb_parni( 1 ), HB_ISCHAR( 2 ) ? hb_parc( 2 ) [ 0 ] : hb_parni( 2 ), + hb_retl( hb_comFlowChars( hb_parni( 1 ), HB_ISCHAR( 2 ) ? hb_parc( 2 ) [ 0 ] : hb_parni( 2 ), HB_ISCHAR( 3 ) ? hb_parc( 3 ) [ 0 ] : hb_parni( 3 ) ) == 0 ); } @@ -125,7 +125,7 @@ HB_FUNC( HB_COMGETDEVICE ) { char buffer[ HB_COM_DEV_NAME_MAX ]; const char * name = hb_comGetDevice( hb_parni( 1 ), buffer, sizeof( buffer ) ); - hb_retc( name ); + hb_retc( name ); } HB_FUNC( HB_COMGETERROR ) @@ -140,7 +140,7 @@ HB_FUNC( HB_COMGETOSERROR ) HB_FUNC( HB_COMINIT ) { - hb_retl( hb_comInit( hb_parni( 1 ), hb_parni( 2 ), HB_ISCHAR( 3 ) ? hb_parc( 3 ) [ 0 ] : 0, + hb_retl( hb_comInit( hb_parni( 1 ), hb_parni( 2 ), HB_ISCHAR( 3 ) ? hb_parc( 3 ) [ 0 ] : 0, hb_parni( 4 ), hb_parni( 5 ) ) == 0 ); } @@ -170,7 +170,7 @@ HB_FUNC( HB_COMMCR ) { int iValue = 0; hb_retl( hb_comMCR( hb_parni( 1 ), &iValue, hb_parni( 3 ), hb_parni( 4 ) ) == 0 ); - hb_storni( 2, iValue ); + hb_storni( 2, iValue ); } HB_FUNC( HB_COMMSR ) diff --git a/harbour/src/rtl/hbsocket.c b/harbour/src/rtl/hbsocket.c index 64d6879d1a..296c610631 100644 --- a/harbour/src/rtl/hbsocket.c +++ b/harbour/src/rtl/hbsocket.c @@ -2807,7 +2807,7 @@ char * hb_socketResolveAddr( const char * szAddr, int af ) # if defined( HB_HAS_INET_NTOP ) char buf[ INET6_ADDRSTRLEN ]; szAddr = inet_ntop( AF_INET6, &sin, buf, sizeof( buf ) ); -#else +# else int iTODO; # endif szResult = hb_strdup( szAddr ); diff --git a/harbour/src/vm/extend.c b/harbour/src/vm/extend.c index 5e99e0afd1..50a2cd5143 100644 --- a/harbour/src/vm/extend.c +++ b/harbour/src/vm/extend.c @@ -649,7 +649,7 @@ HB_MAXINT hb_parnintdef( int iParam, HB_MAXINT lDefValue ) { HB_STACK_TLS_PRELOAD - HB_TRACE(HB_TR_DEBUG, ("hb_parnint(%d)", iParam)); + HB_TRACE(HB_TR_DEBUG, ("hb_parnintdef(%d, %" PFHL "d)", iParam, lDefValue)); if( iParam >= -1 && iParam <= hb_pcount() ) { diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index baa7051e1a..8b06b4d238 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -195,6 +195,11 @@ REQUEST hbmk_KEYW #define _ESC_NIX 3 #define _ESC_BACKSLASH 4 +#define _FNF_BACKSLASH 0 +#define _FNF_FWSLASH 1 +#define _FNF_FWSLASHCYGWIN 2 +#define _FNF_FWSLASHMSYS 3 + #define _MACRO_NO_PREFIX "" #define _MACRO_NORM_PREFIX "$" #define _MACRO_LATE_PREFIX "%" @@ -246,7 +251,7 @@ REQUEST hbmk_KEYW place in the liblist. In case of 'unicows' lib, this should be after all app lib and before any Windows system libs. [vszakats] */ -#define _IS_AUTOLIBSYSPRE( c ) ( "unicows" $ Lower( c ) .AND. hbmk[ _HBMK_cPLAT ] == "win" ) +#define _IS_AUTOLIBSYSPRE( c ) ( hbmk[ _HBMK_cPLAT ] == "win" .AND. Lower( FN_NameGet( c ) ) == "unicows" ) #define _CHR_EOL Chr( 10 ) #define _OUT_EOL Chr( 10 ) @@ -370,12 +375,13 @@ REQUEST hbmk_KEYW #define _HBMK_cWorkDir 99 #define _HBMK_nCmd_Esc 100 #define _HBMK_nScr_Esc 101 -#define _HBMK_nErrorLevel 102 +#define _HBMK_nFNNotation 102 +#define _HBMK_nErrorLevel 103 -#define _HBMK_cPROGDIR 103 -#define _HBMK_cPROGNAME 104 +#define _HBMK_cPROGDIR 104 +#define _HBMK_cPROGNAME 105 -#define _HBMK_MAX_ 104 +#define _HBMK_MAX_ 105 #define _HBMK_DEP_CTRL_MARKER ".control." /* must be an invalid path */ @@ -841,6 +847,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) hbmk[ _HBMK_nCmd_Esc ] := NIL hbmk[ _HBMK_nScr_Esc ] := NIL + hbmk[ _HBMK_nFNNotation ] := NIL GetUILangCDP( @hbmk[ _HBMK_cUILNG ], @hbmk[ _HBMK_cUICDP ] ) SetUILang( hbmk ) @@ -885,10 +892,10 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF Lower( Left( GetEnv( "HB_GT" ), 2 ) ) == "gt" cEnv += " -" + GetEnv( "HB_GT" ) ENDIF - FOR EACH tmp IN ListToArray( PathSepToTarget( hbmk, GetEnv( "HB_USER_LIBPATHS" ) ) ) + FOR EACH tmp IN ListToArray( PathSepToSelf( GetEnv( "HB_USER_LIBPATHS" ) ) ) cEnv += " -L" + tmp NEXT - FOR EACH tmp IN ListToArray( PathSepToTarget( hbmk, GetEnv( "HB_USER_LIBS" ) ) ) + FOR EACH tmp IN ListToArray( PathSepToSelf( GetEnv( "HB_USER_LIBS" ) ) ) cEnv += " -l" + tmp NEXT IF ! Empty( GetEnv( "HB_PLATFORM" ) ) @@ -1407,7 +1414,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) hb_DirExists( PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) ) + "lib" +; hb_osPathSeparator() + hbmk[ _HBMK_cPLAT ] +; hb_osPathSeparator() + aCOMPDET[ tmp ][ _COMPDET_cCOMP ] +; - iif( Empty( hbmk[ _HBMK_cBUILD ] ), "", PathSepToTarget( hbmk, hbmk[ _HBMK_cBUILD ] ) ) ) + iif( Empty( hbmk[ _HBMK_cBUILD ] ), "", PathSepToSelf( hbmk[ _HBMK_cBUILD ] ) ) ) hbmk[ _HBMK_cCOMP ] := aCOMPDET[ tmp ][ _COMPDET_cCOMP ] IF Len( aCOMPDET[ tmp ] ) >= _COMPDET_cCCPREFIX hbmk[ _HBMK_cCCPREFIX ] := aCOMPDET[ tmp ][ _COMPDET_cCCPREFIX ] @@ -1518,7 +1525,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF hb_DirExists( tmp := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) ) + "lib" +; hb_osPathSeparator() + hbmk[ _HBMK_cPLAT ] +; hb_osPathSeparator() + hbmk[ _HBMK_cCOMP ] +; - iif( Empty( hbmk[ _HBMK_cBUILD ] ), "", PathSepToTarget( hbmk, hbmk[ _HBMK_cBUILD ] ) ) ) + iif( Empty( hbmk[ _HBMK_cBUILD ] ), "", PathSepToSelf( hbmk[ _HBMK_cBUILD ] ) ) ) l_cHB_LIB_INSTALL := tmp ELSE l_cHB_LIB_INSTALL := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) + "lib" ) @@ -1540,10 +1547,10 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) /* Make a copy to hbmk structure so that we can use it in deeper functions. The only reason I kept the local version is to keep above code parts easier to read. [vszakats] */ - hbmk[ _HBMK_cHB_BIN_INSTALL ] := l_cHB_BIN_INSTALL := PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( l_cHB_BIN_INSTALL ) ) ) - hbmk[ _HBMK_cHB_LIB_INSTALL ] := l_cHB_LIB_INSTALL := PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( l_cHB_LIB_INSTALL ) ) ) - hbmk[ _HBMK_cHB_DYN_INSTALL ] := l_cHB_DYN_INSTALL := PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( l_cHB_DYN_INSTALL ) ) ) - hbmk[ _HBMK_cHB_INC_INSTALL ] := l_cHB_INC_INSTALL := PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( l_cHB_INC_INSTALL ) ) ) + hbmk[ _HBMK_cHB_BIN_INSTALL ] := l_cHB_BIN_INSTALL := DirDelPathSep( PathSepToSelf( l_cHB_BIN_INSTALL ) ) + hbmk[ _HBMK_cHB_LIB_INSTALL ] := l_cHB_LIB_INSTALL := DirDelPathSep( PathSepToSelf( l_cHB_LIB_INSTALL ) ) + hbmk[ _HBMK_cHB_DYN_INSTALL ] := l_cHB_DYN_INSTALL := DirDelPathSep( PathSepToSelf( l_cHB_DYN_INSTALL ) ) + hbmk[ _HBMK_cHB_INC_INSTALL ] := l_cHB_INC_INSTALL := DirDelPathSep( PathSepToSelf( l_cHB_INC_INSTALL ) ) /* Add main Harbour library dir to lib path list */ AAddNotEmpty( hbmk[ _HBMK_aLIBPATH ], l_cHB_LIB_INSTALL ) @@ -1621,7 +1628,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := FN_ExtSet( cParam, ".hbm" ) ENDIF IF !( Lower( FN_ExtGet( cParam ) ) == ".hbm" ) .AND. lAcceptLDClipper - rtlnk_process( hbmk, MemoRead( cParam ), @hbmk[ _HBMK_cPROGNAME ], @hbmk[ _HBMK_aOBJUSER ], @hbmk[ _HBMK_aLIBUSER ] ) + rtlnk_process( hbmk, MemoRead( PathSepToSelf( cParam ) ), @hbmk[ _HBMK_cPROGNAME ], @hbmk[ _HBMK_aOBJUSER ], @hbmk[ _HBMK_aLIBUSER ] ) IF ! Empty( hbmk[ _HBMK_aOBJUSER ] ) DEFAULT hbmk[ _HBMK_cFIRST ] TO hbmk[ _HBMK_aOBJUSER ][ 1 ] ENDIF @@ -1630,7 +1637,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ENDIF CASE !( Left( cParam, 1 ) == "-" ) .AND. ; ( Lower( FN_ExtGet( cParam ) ) == ".hbm" .OR. ; - Lower( FN_ExtGet( cParam ) ) == ".hbp" ) + Lower( FN_ExtGet( cParam ) ) == ".hbp" .OR. ; + Lower( FN_ExtGet( cParam ) ) == ".hbi" ) HBM_Load( hbmk, aParams, PathSepToSelf( cParam ), 1 ) /* Load parameters from script file */ OTHERWISE AAdd( aParams, { cParam, "", 0 } ) @@ -1852,12 +1860,12 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE Left( cParamL, 5 ) == "-hbl=" - hbmk[ _HBMK_cHBL ] := PathSepToTarget( hbmk, SubStr( cParam, 6 ) ) + hbmk[ _HBMK_cHBL ] := PathSepToSelf( SubStr( cParam, 6 ) ) hbmk[ _HBMK_cHBLDir ] := FN_DirGet( aParam[ _PAR_cFileName ] ) CASE Left( cParamL, 4 ) == "-po=" - hbmk[ _HBMK_cPO ] := PathSepToTarget( hbmk, PathProc( SubStr( cParam, 5 ), FN_DirGet( aParam[ _PAR_cFileName ] ) ) ) + hbmk[ _HBMK_cPO ] := PathProc( PathSepToSelf( SubStr( cParam, 5 ) ), FN_DirGet( aParam[ _PAR_cFileName ] ) ) CASE Left( cParamL, 5 ) == "-hbl" @@ -1885,7 +1893,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF !( Lower( cParam ) == "gtnul" ) IF AScan( hbmk[ _HBMK_aLIBCOREGT ], {| tmp | Lower( tmp ) == Lower( cParam ) } ) == 0 .AND. ; AScan( hbmk[ _HBMK_aLIBUSERGT ], {| tmp | Lower( tmp ) == Lower( cParam ) } ) == 0 - AAddNotEmpty( hbmk[ _HBMK_aLIBUSERGT ], PathSepToTarget( hbmk, cParam ) ) + AAddNotEmpty( hbmk[ _HBMK_aLIBUSERGT ], PathSepToSelf( cParam ) ) ENDIF ENDIF ENDIF @@ -1904,7 +1912,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF lStopAfterHarbour tmp := MacroProc( hbmk, tmp, aParam[ _PAR_cFileName ] ) IF ! Empty( tmp ) - AAddNotEmpty( hbmk[ _HBMK_aOPTPRG ], "-o" + PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( tmp ), aParam[ _PAR_cFileName ] ) ) ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTPRG ], "-o" + PathNormalize( PathProc( PathSepToSelf( tmp ), aParam[ _PAR_cFileName ] ) ) ) ENDIF ELSE IF ! Empty( tmp ) @@ -1938,7 +1946,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, 3 ), aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) - AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) + AAdd( hbmk[ _HBMK_aLIBPATH ], DirDelPathSep( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ENDIF CASE Left( cParamL, Len( "-instpath=" ) ) == "-instpath=" .AND. ; @@ -1946,7 +1954,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, Len( "-instpath=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) - AAddNew( hbmk[ _HBMK_aINSTPATH ], PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) + AAddNew( hbmk[ _HBMK_aINSTPATH ], PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ENDIF CASE Left( cParamL, Len( "-incpath=" ) ) == "-incpath=" .AND. ; @@ -1954,7 +1962,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, Len( "-incpath=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) - AAddNew( hbmk[ _HBMK_aINCPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) ) + AAddNew( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) ENDIF CASE Left( cParamL, Len( "-icon=" ) ) == "-icon=" @@ -1968,7 +1976,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, Len( "-iflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aOPTI ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTI ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, 2 ) == "-i" .AND. ; @@ -1976,7 +1984,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, 3 ), aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) - AAddNew( hbmk[ _HBMK_aINCPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) ) + AAddNew( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) ENDIF CASE Left( cParamL, Len( "-stop" ) ) == "-stop" @@ -1999,7 +2007,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) lStopAfterHarbour := .T. ENDIF IF !( SubStr( cParamL, 2, 1 ) == "o" ) - AAdd( hbmk[ _HBMK_aOPTPRG ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTPRG ], PathSepToSelf( cParam, 2 ) ) ENDIF ENDIF @@ -2007,35 +2015,35 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, Len( "-cflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aOPTC ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTC ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, Len( "-resflag=" ) ) == "-resflag=" cParam := MacroProc( hbmk, SubStr( cParam, Len( "-resflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aOPTRES ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTRES ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, Len( "-ldflag=" ) ) == "-ldflag=" cParam := MacroProc( hbmk, SubStr( cParam, Len( "-ldflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aOPTL ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTL ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, Len( "-dflag=" ) ) == "-dflag=" cParam := MacroProc( hbmk, SubStr( cParam, Len( "-dflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aOPTD ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTD ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, Len( "-aflag=" ) ) == "-aflag=" cParam := MacroProc( hbmk, SubStr( cParam, Len( "-aflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aOPTA ] , PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aOPTA ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, Len( "-runflag=" ) ) == "-runflag=" @@ -2049,14 +2057,14 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, Len( "-pflag=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF Left( cParam, 1 ) $ cOptPrefix - AAdd( hbmk[ _HBMK_aPLUGINPars ], PathSepToTarget( hbmk, cParam, 2 ) ) + AAdd( hbmk[ _HBMK_aPLUGINPars ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE Left( cParamL, Len( "-pi=" ) ) == "-pi=" - cParam := PathProc( MacroProc( hbmk, SubStr( cParam, Len( "-pi=" ) + 1 ), aParam[ _PAR_cFileName ] ), aParam[ _PAR_cFileName ] ) + cParam := PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-pi=" ) + 1 ), aParam[ _PAR_cFileName ] ) ) FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aPLUGINPars ], PathSepToTarget( hbmk, cParam ) ) + AAdd( hbmk[ _HBMK_aPLUGINPars ], cParam ) NEXT CASE Left( cParamL, Len( "-3rd=" ) ) == "-3rd=" @@ -2067,26 +2075,26 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE Left( cParamL, Len( "-workdir=" ) ) == "-workdir=" - hbmk[ _HBMK_cWorkDir ] := PathSepToTarget( hbmk, PathProc( MacroProc( hbmk, SubStr( cParam, Len( "-workdir=" ) + 1 ), aParam[ _PAR_cFileName ] ), aParam[ _PAR_cFileName ] ) ) + hbmk[ _HBMK_cWorkDir ] := PathProc( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-workdir=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) CASE Left( cParamL, Len( "-vcshead=" ) ) == "-vcshead=" l_cVCSDIR := FN_DirGet( aParam[ _PAR_cFileName ] ) - l_cVCSHEAD := PathSepToTarget( hbmk, PathProc( MacroProc( hbmk, SubStr( cParam, Len( "-vcshead=" ) + 1 ), aParam[ _PAR_cFileName ] ), aParam[ _PAR_cFileName ] ) ) + l_cVCSHEAD := PathProc( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-vcshead=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) IF Empty( FN_ExtGet( l_cVCSHEAD ) ) l_cVCSHEAD := FN_ExtSet( l_cVCSHEAD, ".ch" ) ENDIF CASE Left( cParamL, Len( "-tshead=" ) ) == "-tshead=" - l_cTSHEAD := PathSepToTarget( hbmk, PathProc( MacroProc( hbmk, SubStr( cParam, Len( "-tshead=" ) + 1 ), aParam[ _PAR_cFileName ] ), aParam[ _PAR_cFileName ] ) ) + l_cTSHEAD := PathProc( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-tshead=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) IF Empty( FN_ExtGet( l_cTSHEAD ) ) l_cTSHEAD := FN_ExtSet( l_cTSHEAD, ".ch" ) ENDIF CASE Left( cParamL, Len( "-plugin=" ) ) == "-plugin=" - cParam := PathNormalize( PathProc( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-plugin=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) ) + cParam := PathProc( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-plugin=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) IF ( tmp := FindInPathPlugIn( cParam ) ) != NIL AAdd( hbmk[ _HBMK_aPLUGIN ], tmp ) ELSE @@ -2101,10 +2109,11 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, 3 ), aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) + cParam := PathSepToSelf( cParam ) IF _IS_AUTOLIBSYSPRE( cParam ) - AAdd( hbmk[ _HBMK_aLIBUSERSYSPRE ], PathSepToTarget( hbmk, cParam ) ) + AAdd( hbmk[ _HBMK_aLIBUSERSYSPRE ], cParam ) ELSE - AAdd( hbmk[ _HBMK_aLIBUSER ], PathSepToTarget( hbmk, cParam ) ) + AAdd( hbmk[ _HBMK_aLIBUSER ], cParam ) ENDIF ENDIF @@ -2144,29 +2153,29 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cParam := MacroProc( hbmk, SubStr( cParam, Len( "-depincpath=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF dep_split_arg( hbmk, cParam, @cParam, @tmp ) - AAddNew( hbmk[ _HBMK_hDEP ][ cParam ][ _HBMKDEP_aINCPATH ], PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( tmp ), aParam[ _PAR_cFileName ] ) ) ) ) + AAddNew( hbmk[ _HBMK_hDEP ][ cParam ][ _HBMKDEP_aINCPATH ], PathNormalize( PathProc( PathSepToSelf( tmp ), aParam[ _PAR_cFileName ] ) ) ) ENDIF CASE Left( cParam, Len( "-depincpathlocal=" ) ) == "-depincpathlocal=" cParam := MacroProc( hbmk, SubStr( cParam, Len( "-depincpathlocal=" ) + 1 ), aParam[ _PAR_cFileName ] ) IF dep_split_arg( hbmk, cParam, @cParam, @tmp ) - AAddNew( hbmk[ _HBMK_hDEP ][ cParam ][ _HBMKDEP_aINCPATHLOCAL ], PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( tmp ), aParam[ _PAR_cFileName ] ) ) ) ) + AAddNew( hbmk[ _HBMK_hDEP ][ cParam ][ _HBMKDEP_aINCPATHLOCAL ], PathNormalize( PathProc( PathSepToSelf( tmp ), aParam[ _PAR_cFileName ] ) ) ) ENDIF CASE Left( cParam, 1 ) $ cOptPrefix DO CASE CASE lAcceptLDFlag - AAddNotEmpty( hbmk[ _HBMK_aOPTL ], PathSepToTarget( hbmk, cParam, 2 ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTL ], PathSepToSelf( cParam, 2 ) ) CASE lAcceptCFlag IF SubStr( cParamL, 2 ) == "c" lStopAfterCComp := .T. ELSE - AAddNotEmpty( hbmk[ _HBMK_aOPTC ], PathSepToTarget( hbmk, cParam, 2 ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTC ], PathSepToSelf( cParam, 2 ) ) ENDIF CASE lAcceptIFlag - AAddNotEmpty( hbmk[ _HBMK_aOPTI ], PathSepToTarget( hbmk, cParam, 2 ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTI ], PathSepToSelf( cParam, 2 ) ) OTHERWISE IF SubStr( cParamL, 2 ) == "gh" lStopAfterHarbour := .T. @@ -2184,23 +2193,24 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF SubStr( cParamL, 2 ) == "s" ++nHarbourPPO ENDIF - AAddNotEmpty( hbmk[ _HBMK_aOPTPRG ], PathSepToTarget( hbmk, cParam, 2 ) ) + AAddNotEmpty( hbmk[ _HBMK_aOPTPRG ], PathSepToSelf( cParam, 2 ) ) ENDCASE CASE hbmk[ _HBMK_lCreateImpLib ] cParam := MacroProc( hbmk, cParam, aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) - AAdd( hbmk[ _HBMK_aIMPLIBSRC ], PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ) + AAdd( hbmk[ _HBMK_aIMPLIBSRC ], PathNormalize( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) ) ) ENDIF CASE FN_ExtGet( cParamL ) == ".lib" .OR. ; ( ! Empty( cDynLibExt ) .AND. FN_ExtGet( cParamL ) == cDynLibExt ) + cParam := PathSepToSelf( cParam ) IF _IS_AUTOLIBSYSPRE( cParam ) - AAdd( hbmk[ _HBMK_aLIBUSERSYSPRE ], PathSepToTarget( hbmk, cParam ) ) + AAdd( hbmk[ _HBMK_aLIBUSERSYSPRE ], cParam ) ELSE - AAdd( hbmk[ _HBMK_aLIBUSER ], PathSepToTarget( hbmk, cParam ) ) + AAdd( hbmk[ _HBMK_aLIBUSER ], cParam ) ENDIF CASE FN_ExtGet( cParamL ) == ".hbc" @@ -2223,9 +2233,9 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE FN_ExtGet( cParamL ) == ".hrb" - cParam := PathProc( MacroProc( hbmk, cParam, aParam[ _PAR_cFileName ] ), aParam[ _PAR_cFileName ] ) - IF ( tmp := FindInPathPlugIn( PathSepToSelf( cParam ) ) ) != NIL - AAdd( hbmk[ _HBMK_aPLUGIN ], PathSepToTarget( hbmk, tmp ) ) + cParam := PathProc( PathSepToSelf( MacroProc( hbmk, cParam, aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) + IF ( tmp := FindInPathPlugIn( cParam ) ) != NIL + AAdd( hbmk[ _HBMK_aPLUGIN ], tmp ) ELSE IF hbmk[ _HBMK_lInfo ] hbmk_OutStd( hbmk, hb_StrFormat( I_( "Warning: Plugin not found: %1$s" ), cParam ) ) @@ -2234,15 +2244,15 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE FN_ExtGet( cParamL ) == ".prg" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aPRG ], PathSepToTarget( hbmk, cParam ) ) - DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cParam ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aPRG ], cParam ) + DEFAULT hbmk[ _HBMK_cFIRST ] TO cParam NEXT CASE FN_ExtGet( cParamL ) == ".rc" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aRESSRC ], PathSepToTarget( hbmk, cParam ) ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aRESSRC ], cParam ) NEXT CASE FN_ExtGet( cParamL ) == ".res" @@ -2252,32 +2262,32 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) /* For MinGW/EMX GCC family add .res files as source input, as they will need to be converted to coff format with windres (just like plain .rc files) before feeding them to gcc. */ - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aRESSRC ], PathSepToTarget( hbmk, cParam ) ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aRESSRC ], cParam ) NEXT ELSE - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aRESCMP ], PathSepToTarget( hbmk, cParam ) ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aRESCMP ], cParam ) NEXT ENDIF CASE FN_ExtGet( cParamL ) == ".a" - cParam := PathProc( cParam, aParam[ _PAR_cFileName ] ) - AAdd( l_aOBJA, PathSepToTarget( hbmk, cParam ) ) + cParam := PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) + AAdd( l_aOBJA, cParam ) CASE FN_ExtGet( cParamL ) == ".def" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aDEF ], PathSepToTarget( hbmk, cParam ) ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aDEF ], cParam ) NEXT CASE FN_ExtGet( cParamL ) == ".o" .OR. ; FN_ExtGet( cParamL ) == ".obj" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aOBJUSER ], PathSepToTarget( hbmk, cParam ) ) - DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cParam ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aOBJUSER ], cParam ) + DEFAULT hbmk[ _HBMK_cFIRST ] TO cParam NEXT CASE FN_ExtGet( cParamL ) == ".cpp" .OR. ; @@ -2287,44 +2297,44 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) FN_ExtGet( cParamL ) == ".m" .OR. ; _EXT_IS_UPPER( cParam, ".C" ) - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aCPP ], PathSepToTarget( hbmk, cParam ) ) - DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cParam ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aCPP ], cParam ) + DEFAULT hbmk[ _HBMK_cFIRST ] TO cParam NEXT CASE FN_ExtGet( cParamL ) == ".c" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aC ], PathSepToTarget( hbmk, cParam ) ) - DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cParam ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aC ], cParam ) + DEFAULT hbmk[ _HBMK_cFIRST ] TO cParam NEXT CASE FN_ExtGet( cParamL ) == ".d" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - deplst_read( hbmk, hbmk[ _HBMK_hDEPTS ], PathSepToSelf( cParam ) ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + deplst_read( hbmk, hbmk[ _HBMK_hDEPTS ], cParam ) NEXT CASE FN_ExtGet( cParamL ) == ".po" .OR. ; FN_ExtGet( cParamL ) == ".pot" - FOR EACH cParam IN FN_Expand( PathProc( cParam, aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) - AAdd( hbmk[ _HBMK_aPO ], PathSepToTarget( hbmk, cParam ) ) + FOR EACH cParam IN FN_Expand( PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ), Empty( aParam[ _PAR_cFileName ] ) ) + AAdd( hbmk[ _HBMK_aPO ], cParam ) NEXT CASE FN_ExtGet( cParamL ) == ".hbl" - hbmk[ _HBMK_cHBL ] := PathSepToTarget( hbmk, cParam ) + hbmk[ _HBMK_cHBL ] := PathSepToSelf( cParam ) hbmk[ _HBMK_cHBLDir ] := FN_DirGet( aParam[ _PAR_cFileName ] ) OTHERWISE - cParam := PathProc( cParam, aParam[ _PAR_cFileName ] ) + cParam := PathProc( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) IF Empty( FN_ExtGet( cParam ) ) cParam := FN_ExtSet( cParam, ".prg" ) ENDIF - AAdd( hbmk[ _HBMK_aPRG ], PathSepToTarget( hbmk, cParam ) ) - DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cParam ) + AAdd( hbmk[ _HBMK_aPRG ], cParam ) + DEFAULT hbmk[ _HBMK_cFIRST ] TO cParam ENDCASE NEXT @@ -2810,6 +2820,12 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ( hbmk[ _HBMK_cPLAT ] == "wce" .AND. hbmk[ _HBMK_cCOMP ] == "mingwarm" ) .OR. ; ( hbmk[ _HBMK_cPLAT ] == "win" .AND. hbmk[ _HBMK_cCOMP ] == "cygwin" ) + IF hbmk[ _HBMK_cCOMP ] == "cygwin" + hbmk[ _HBMK_nFNNotation ] := _FNF_FWSLASHCYGWIN + ELSE + hbmk[ _HBMK_nFNNotation ] := _FNF_FWSLASH + ENDIF + IF hbmk[ _HBMK_lDEBUG ] AAdd( hbmk[ _HBMK_aOPTC ], "-g" ) ENDIF @@ -2954,6 +2970,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE hbmk[ _HBMK_cPLAT ] == "os2" .AND. hbmk[ _HBMK_cCOMP ] $ "gcc|gccomf" + hbmk[ _HBMK_nFNNotation ] := _FNF_BACKSLASH + IF hbmk[ _HBMK_lDEBUG ] AAdd( hbmk[ _HBMK_aOPTC ], "-g" ) ENDIF @@ -3227,8 +3245,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE hbmk[ _HBMK_cPLAT ] == "dos" ; cBin_Dyn := NIL CASE hbmk[ _HBMK_cPLAT ] == "linux" ; cOpt_Dyn := "OP quiet FORM elf dll OP exportall {FD} NAME {OD} {LO} {DL} {LL} {LB}{SCRIPT}" IF hbmk[ _HBMK_lCreateDyn ] - 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" ) ) + AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToSelf( GetEnv( "WATCOM") + hb_osPathSeparator() + "lib386" ) ) + AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToSelf( GetEnv( "WATCOM") + hb_osPathSeparator() + "lib386" + hb_osPathSeparator() + "linux" ) ) ENDIF 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}" @@ -3316,11 +3334,12 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ENDIF CASE hbmk[ _HBMK_cPLAT ] == "win" .AND. hbmk[ _HBMK_cCOMP ] == "bcc" + hbmk[ _HBMK_nFNNotation ] := _FNF_BACKSLASH IF hbmk[ _HBMK_lDEBUG ] AAdd( hbmk[ _HBMK_aOPTC ], "-y -v" ) AAdd( hbmk[ _HBMK_aOPTL ], "-v" ) ELSE - AAdd( l_aCLEAN, PathSepToTarget( hbmk, FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], ".tds" ) ) ) + AAdd( l_aCLEAN, PathSepToSelf( FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], ".tds" ) ) ) ENDIF IF hbmk[ _HBMK_lGUI ] AAdd( hbmk[ _HBMK_aOPTC ], "-tW" ) @@ -3389,7 +3408,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) AAdd( hbmk[ _HBMK_aOPTD ], "-Gi" ) ENDIF IF ! Empty( hbmk[ _HBMK_cWorkDir ] ) - AAdd( hbmk[ _HBMK_aOPTC ], "-n" + FN_Escape( PathSepToTarget( hbmk, hbmk[ _HBMK_cWorkDir ] ), hbmk[ _HBMK_nCmd_Esc ] ) ) + AAdd( hbmk[ _HBMK_aOPTC ], "-n" + FN_Escape( hbmk[ _HBMK_cWorkDir ], hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) ELSE IF lStopAfterCComp .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] IF ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) + Len( hbmk[ _HBMK_aCPP ] ) ) == 1 @@ -3407,6 +3426,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE ( hbmk[ _HBMK_cPLAT ] == "win" .AND. hbmk[ _HBMK_cCOMP ] $ "msvc|msvc64|msvcia64|icc|iccia64" ) .OR. ; ( hbmk[ _HBMK_cPLAT ] == "wce" .AND. hbmk[ _HBMK_cCOMP ] == "msvcarm" ) /* NOTE: Cross-platform: wce/ARM on win/x86 */ + hbmk[ _HBMK_nFNNotation ] := _FNF_BACKSLASH + /* ; Not enabled yet, because it would cause a lot of 3rd party code to break due to sloppy type conversions and other trivial coding mistakes usually not noticed with C compilers. The other side-effect, is @@ -3561,7 +3582,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ENDIF ENDIF IF ! Empty( hbmk[ _HBMK_cWorkDir ] ) - AAdd( hbmk[ _HBMK_aOPTC ], "-Fo" + FN_Escape( DirAddPathSep( PathSepToTarget( hbmk, hbmk[ _HBMK_cWorkDir ] ) ), hbmk[ _HBMK_nCmd_Esc ] ) ) /* NOTE: Ending path sep is important. */ + AAdd( hbmk[ _HBMK_aOPTC ], "-Fo" + FN_Escape( DirAddPathSep( hbmk[ _HBMK_cWorkDir ] ), hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) /* NOTE: Ending path sep is important. */ ELSE IF lStopAfterCComp .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] IF ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) + Len( hbmk[ _HBMK_aCPP ] ) ) == 1 @@ -3606,6 +3627,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ( hbmk[ _HBMK_cPLAT ] == "wce" .AND. hbmk[ _HBMK_cCOMP ] == "poccarm" ) .OR. ; /* NOTE: Cross-platform: wce/ARM on win/x86 */ ( hbmk[ _HBMK_cPLAT ] == "win" .AND. hbmk[ _HBMK_cCOMP ] == "xcc" ) + hbmk[ _HBMK_nFNNotation ] := _FNF_BACKSLASH + IF hbmk[ _HBMK_lGUI ] AAdd( hbmk[ _HBMK_aOPTL ], "-subsystem:windows" ) ELSE @@ -4070,8 +4093,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) AAdd( hbmk[ _HBMK_aOPTPRG ], "-i" + FN_Escape( tmp, hbmk[ _HBMK_nCmd_Esc ] ) ) ENDIF IF ! lStopAfterHarbour - AAdd( hbmk[ _HBMK_aOPTC ], StrTran( cOptIncMask, "{DI}", FN_Escape( tmp, hbmk[ _HBMK_nCmd_Esc ] ) ) ) - AAdd( hbmk[ _HBMK_aOPTRES ], StrTran( cOptIncMask, "{DI}", FN_Escape( tmp, hbmk[ _HBMK_nCmd_Esc ] ) ) ) + AAdd( hbmk[ _HBMK_aOPTC ], StrTran( cOptIncMask, "{DI}", FN_Escape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) ) + AAdd( hbmk[ _HBMK_aOPTRES ], StrTran( cOptIncMask, "{DI}", FN_Escape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) ) ENDIF ENDIF NEXT @@ -4668,15 +4691,15 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) nOpt_Esc := iif( "{SCRIPT}" $ cOpt_Res, hbmk[ _HBMK_nScr_Esc ], hbmk[ _HBMK_nCmd_Esc ] ) cOpt_Res := StrTran( cOpt_Res, "{FR}" , GetEnv( "HB_USER_RESFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTRES ] ) ) - cOpt_Res := StrTran( cOpt_Res, "{DI}" , FN_Escape( l_cHB_INC_INSTALL, nOpt_Esc ) ) + cOpt_Res := StrTran( cOpt_Res, "{DI}" , FN_Escape( l_cHB_INC_INSTALL, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) IF "{IR}" $ cOpt_Res FOR EACH tmp IN l_aRESSRC_TODO cCommand := cOpt_Res - cCommand := StrTran( cCommand, "{IR}", FN_Escape( PathSepToTarget( hbmk, tmp ), nOpt_Esc ) ) - cCommand := StrTran( cCommand, "{OS}", FN_Escape( PathSepToTarget( hbmk, FN_DirExtSet( tmp, hbmk[ _HBMK_cWorkDir ], cResExt ) ), nOpt_Esc ) ) + cCommand := StrTran( cCommand, "{IR}", FN_Escape( tmp, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cCommand := StrTran( cCommand, "{OS}", FN_Escape( FN_DirExtSet( tmp, hbmk[ _HBMK_cWorkDir ], cResExt ), nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) cCommand := cBin_Res + " " + AllTrim( cCommand ) @@ -4699,7 +4722,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) ENDIF NEXT ELSE - cOpt_Res := StrTran( cOpt_Res, "{LR}" , ArrayToList( l_aRESSRC_TODO,, nOpt_Esc ) ) + cOpt_Res := StrTran( cOpt_Res, "{LR}" , ArrayToList( l_aRESSRC_TODO,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) cOpt_Res := AllTrim( cOpt_Res ) @@ -4805,8 +4828,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) /* Order is significant */ cOpt_CompC := StrTran( cOpt_CompC, "{FC}" , iif( hbmk[ _HBMK_lBLDFLGC ], hb_Version( HB_VERSION_FLAG_C ) + " ", "" ) +; GetEnv( "HB_USER_CFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTC ] ) ) - cOpt_CompC := StrTran( cOpt_CompC, "{OD}" , FN_Escape( PathSepToTarget( hbmk, FN_DirGet( hbmk[ _HBMK_cPROGNAME ] ) ), nOpt_Esc ) ) - cOpt_CompC := StrTran( cOpt_CompC, "{DI}" , FN_Escape( l_cHB_INC_INSTALL, nOpt_Esc ) ) + cOpt_CompC := StrTran( cOpt_CompC, "{OD}" , FN_Escape( FN_DirGet( hbmk[ _HBMK_cPROGNAME ] ), nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_CompC := StrTran( cOpt_CompC, "{DI}" , FN_Escape( l_cHB_INC_INSTALL, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) IF "{IC}" $ cOpt_CompC @@ -4835,13 +4858,13 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) NEXT ENDIF ELSE - cOpt_CompC := StrTran( cOpt_CompC, "{OO}" , FN_Escape( PathSepToTarget( hbmk, FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], cObjExt ) ), nOpt_Esc ) ) - cOpt_CompC := StrTran( cOpt_CompC, "{OW}" , FN_Escape( PathSepToTarget( hbmk, hbmk[ _HBMK_cWorkDir ] ), nOpt_Esc ) ) + cOpt_CompC := StrTran( cOpt_CompC, "{OO}" , FN_Escape( FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], cObjExt ), nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_CompC := StrTran( cOpt_CompC, "{OW}" , FN_Escape( hbmk[ _HBMK_cWorkDir ], nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) aThreads := {} FOR EACH aTODO IN ArraySplit( l_aCGEN_TODO, l_nJOBS ) - cOpt_CompCLoop := AllTrim( StrTran( cOpt_CompC, "{LC}" , ArrayToList( aTODO,, nOpt_Esc ) ) ) + cOpt_CompCLoop := AllTrim( StrTran( cOpt_CompC, "{LC}" , ArrayToList( aTODO,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) ) /* Handle moving the whole command line to a script, if requested. */ cScriptFile := NIL @@ -4975,8 +4998,8 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF hbmk[ _HBMK_lREBUILD ] .OR. ; ( ! hbmk[ _HBMK_lINC ] .AND. lStopAfterCComp .AND. hbmk[ _HBMK_lCreateLib ] .AND. ! Empty( cBin_Lib ) ) /* non-incremental + static lib */ - IF hb_FileExists( PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) .AND. ; - FErase( PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) == F_ERROR + IF hb_FileExists( hbmk[ _HBMK_cPROGNAME ] ) .AND. ; + FErase( hbmk[ _HBMK_cPROGNAME ] ) == F_ERROR hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Cannot delete existing target '%1$s'." ), hbmk[ _HBMK_cPROGNAME ] ) ) ENDIF ENDIF @@ -4987,7 +5010,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) PlugIn_Execute( hbmk, "pre_link" ) IF ( hbmk[ _HBMK_lINC ] .AND. ! hbmk[ _HBMK_lQuiet ] ) .OR. hbmk[ _HBMK_lInfo ] - hbmk_OutStd( hbmk, hb_StrFormat( I_( "Linking... %1$s" ), PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) ) + hbmk_OutStd( hbmk, hb_StrFormat( I_( "Linking... %1$s" ), hbmk[ _HBMK_cPROGNAME ] ) ) ENDIF /* Linking */ @@ -4997,15 +5020,15 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) /* Order is significant */ cOpt_Link := StrTran( cOpt_Link, "{FL}" , iif( hbmk[ _HBMK_lBLDFLGL ], hb_Version( HB_VERSION_FLAG_LINKER ) + " ", "" ) +; GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTL ] ) ) - cOpt_Link := StrTran( cOpt_Link, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, cObjPrefix ) ) - cOpt_Link := StrTran( cOpt_Link, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_cWorkDir ], cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, cResPrefix ) ) - cOpt_Link := StrTran( cOpt_Link, "{LA}" , ArrayToList( l_aOBJA,, nOpt_Esc ) ) - cOpt_Link := StrTran( cOpt_Link, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, cLibPrefix ) ) - cOpt_Link := StrTran( cOpt_Link, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc ) ) - cOpt_Link := StrTran( cOpt_Link, "{OE}" , FN_Escape( PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ), nOpt_Esc ) ) - cOpt_Link := StrTran( cOpt_Link, "{OM}" , FN_Escape( PathSepToTarget( hbmk, FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ) ), nOpt_Esc ) ) - cOpt_Link := StrTran( cOpt_Link, "{OI}" , FN_Escape( PathSepToTarget( hbmk, l_cIMPLIBNAME ), nOpt_Esc ) ) - cOpt_Link := StrTran( cOpt_Link, "{DL}" , ArrayToList( hbmk[ _HBMK_aLIBPATH ], cLibPathSep, nOpt_Esc, cLibPathPrefix ) ) + cOpt_Link := StrTran( cOpt_Link, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cObjPrefix ) ) + cOpt_Link := StrTran( cOpt_Link, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_cWorkDir ], cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cResPrefix ) ) + cOpt_Link := StrTran( cOpt_Link, "{LA}" , ArrayToList( l_aOBJA,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Link := StrTran( cOpt_Link, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibPrefix ) ) + cOpt_Link := StrTran( cOpt_Link, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Link := StrTran( cOpt_Link, "{OE}" , FN_Escape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Link := StrTran( cOpt_Link, "{OM}" , FN_Escape( FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ), nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Link := StrTran( cOpt_Link, "{OI}" , FN_Escape( l_cIMPLIBNAME, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Link := StrTran( cOpt_Link, "{DL}" , ArrayToList( hbmk[ _HBMK_aLIBPATH ], cLibPathSep, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibPathPrefix ) ) cOpt_Link := StrTran( cOpt_Link, "{DB}" , l_cHB_BIN_INSTALL ) cOpt_Link := AllTrim( cOpt_Link ) @@ -5080,7 +5103,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) PlugIn_Execute( hbmk, "pre_link" ) IF ( hbmk[ _HBMK_lINC ] .AND. ! hbmk[ _HBMK_lQuiet ] ) .OR. hbmk[ _HBMK_lInfo ] - hbmk_OutStd( hbmk, hb_StrFormat( I_( "Creating dynamic library... %1$s" ), PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) ) + hbmk_OutStd( hbmk, hb_StrFormat( I_( "Creating dynamic library... %1$s" ), hbmk[ _HBMK_cPROGNAME ] ) ) ENDIF /* Lib creation (dynamic) */ @@ -5089,15 +5112,15 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) /* Order is significant */ cOpt_Dyn := StrTran( cOpt_Dyn, "{FD}" , GetEnv( "HB_USER_DFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTD ] ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, cDynObjPrefix ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_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}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, cDynDefPrefix ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{OD}" , FN_Escape( PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ), nOpt_Esc ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{OM}" , FN_Escape( PathSepToTarget( hbmk, FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ) ), nOpt_Esc ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{OI}" , FN_Escape( PathSepToTarget( hbmk, l_cIMPLIBNAME ), nOpt_Esc ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{DL}" , ArrayToList( hbmk[ _HBMK_aLIBPATH ], cLibPathSep, nOpt_Esc, cLibPathPrefix ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cDynObjPrefix ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_cWorkDir ], cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cResPrefix ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibPrefix ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{IM}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cDynDefPrefix ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{OD}" , FN_Escape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{OM}" , FN_Escape( FN_ExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ), nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{OI}" , FN_Escape( l_cIMPLIBNAME, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{DL}" , ArrayToList( hbmk[ _HBMK_aLIBPATH ], cLibPathSep, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibPathPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{DB}" , l_cHB_BIN_INSTALL ) cOpt_Dyn := AllTrim( cOpt_Dyn ) @@ -5147,7 +5170,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) PlugIn_Execute( hbmk, "pre_lib" ) IF ( hbmk[ _HBMK_lINC ] .AND. ! hbmk[ _HBMK_lQuiet ] ) .OR. hbmk[ _HBMK_lInfo ] - hbmk_OutStd( hbmk, hb_StrFormat( I_( "Creating static library... %1$s" ), PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) ) + hbmk_OutStd( hbmk, hb_StrFormat( I_( "Creating static library... %1$s" ), hbmk[ _HBMK_cPROGNAME ] ) ) ENDIF /* Lib creation (static) */ @@ -5156,11 +5179,11 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) /* Order is significant */ cOpt_Lib := StrTran( cOpt_Lib, "{FA}" , GetEnv( "HB_USER_AFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTA ] ) ) - cOpt_Lib := StrTran( cOpt_Lib, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, cLibObjPrefix ) ) - cOpt_Lib := StrTran( cOpt_Lib, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, cLibPrefix ) ) - cOpt_Lib := StrTran( cOpt_Lib, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc ) ) - cOpt_Lib := StrTran( cOpt_Lib, "{OL}" , FN_Escape( PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ), nOpt_Esc ) ) - cOpt_Lib := StrTran( cOpt_Lib, "{DL}" , ArrayToList( hbmk[ _HBMK_aLIBPATH ], cLibPathSep, nOpt_Esc, cLibPathPrefix ) ) + cOpt_Lib := StrTran( cOpt_Lib, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibObjPrefix ) ) + cOpt_Lib := StrTran( cOpt_Lib, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibPrefix ) ) + cOpt_Lib := StrTran( cOpt_Lib, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Lib := StrTran( cOpt_Lib, "{OL}" , FN_Escape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cOpt_Lib := StrTran( cOpt_Lib, "{DL}" , ArrayToList( hbmk[ _HBMK_aLIBPATH ], cLibPathSep, nOpt_Esc, hbmk[ _HBMK_nFNNotation ], cLibPathPrefix ) ) cOpt_Lib := StrTran( cOpt_Lib, "{DB}" , l_cHB_BIN_INSTALL ) cOpt_Lib := AllTrim( cOpt_Lib ) @@ -5249,7 +5272,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF ! Empty( cBin_Post ) - cOpt_Post := StrTran( cOpt_Post, "{OB}", PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) + cOpt_Post := StrTran( cOpt_Post, "{OB}", hbmk[ _HBMK_cPROGNAME ] ) cOpt_Post := AllTrim( cOpt_Post ) cCommand := cBin_Post + " " + cOpt_Post @@ -5319,7 +5342,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) CASE hbmk[ _HBMK_nCOMPR ] == _COMPR_MAX ; cOpt_Cprs += " " + cOpt_CprsMax ENDCASE - cOpt_Cprs := StrTran( cOpt_Cprs, "{OB}", PathSepToTarget( hbmk, hbmk[ _HBMK_cPROGNAME ] ) ) + cOpt_Cprs := StrTran( cOpt_Cprs, "{OB}", hbmk[ _HBMK_cPROGNAME ] ) cOpt_Cprs := AllTrim( cOpt_Cprs ) cCommand := cBin_Cprs + " " + cOpt_Cprs @@ -5342,9 +5365,9 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) IF ! Empty( hbmk[ _HBMK_aINSTPATH ] ) FOR EACH tmp IN hbmk[ _HBMK_aINSTPATH ] IF Empty( FN_NameExtGet( tmp ) ) - tmp1 := DirAddPathSep( PathSepToSelf( tmp ) ) + FN_NameExtGet( hbmk[ _HBMK_cPROGNAME ] ) + tmp1 := DirAddPathSep( tmp ) + FN_NameExtGet( hbmk[ _HBMK_cPROGNAME ] ) ELSE - tmp1 := PathSepToSelf( tmp ) + tmp1 := tmp ENDIF IF DirBuild( FN_DirGet( tmp1 ) ) IF hb_FCopy( hbmk[ _HBMK_cPROGNAME ], tmp1 ) == F_ERROR @@ -5381,7 +5404,6 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause ) cCommand := "." + hb_osPathSeparator() + hbmk[ _HBMK_cPROGNAME ] ENDIF #endif - cCommand := PathSepToTarget( hbmk, cCommand ) #if defined( __PLATFORM__WINDOWS ) IF hbmk[ _HBMK_lGUI ] IF hb_osIsWinNT() @@ -5444,8 +5466,8 @@ STATIC FUNCTION CompileCLoop( hbmk, aTODO, cBin_CompC, cOpt_CompC, cObjExt, nOpt lOutputSpecified := "{OO}" $ cCommand cOutputFile := FN_DirExtSet( tmp, hbmk[ _HBMK_cWorkDir ], cObjExt ) - cCommand := StrTran( cCommand, "{IC}", FN_Escape( tmp, nOpt_Esc ) ) - cCommand := StrTran( cCommand, "{OO}", FN_Escape( PathSepToTarget( hbmk, cOutputFile ), nOpt_Esc ) ) + cCommand := StrTran( cCommand, "{IC}", FN_Escape( tmp, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) + cCommand := StrTran( cCommand, "{OO}", FN_Escape( cOutputFile, nOpt_Esc, hbmk[ _HBMK_nFNNotation ] ) ) cCommand := cBin_CompC + " " + AllTrim( cCommand ) @@ -5774,7 +5796,7 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, lSystemHeader, tT hb_processRun( cBin_CompC + " -MM" +; " " + iif( hbmk[ _HBMK_lBLDFLGC ], hb_Version( HB_VERSION_FLAG_C ) + " ", "" ) +; GetEnv( "HB_USER_CFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTC ] ) +; - " " + FN_Escape( hbmk[ _HBMK_cHB_INC_INSTALL ], hbmk[ _HBMK_nCmd_Esc ] ) +; + " " + FN_Escape( hbmk[ _HBMK_cHB_INC_INSTALL ], hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) +; " " + cFileName,, @tmp ) tmp := StrTran( tmp, Chr( 13 ) ) @@ -6159,19 +6181,19 @@ STATIC PROCEDURE dep_try_pkg_detection( hbmk, dep ) CASE Left( cItem, Len( "-l" ) ) == "-l" cItem := SubStr( cItem, Len( "-l" ) + 1 ) IF _IS_AUTOLIBSYSPRE( cItem ) - AAdd( hbmk[ _HBMK_aLIBUSERSYSPRE ], PathSepToTarget( hbmk, cItem ) ) + AAdd( hbmk[ _HBMK_aLIBUSERSYSPRE ], cItem ) ELSE - AAdd( hbmk[ _HBMK_aLIBUSER ], PathSepToTarget( hbmk, cItem ) ) + AAdd( hbmk[ _HBMK_aLIBUSER ], cItem ) ENDIF CASE Left( cItem, Len( "-L" ) ) == "-L" cItem := SubStr( cItem, Len( "-L" ) + 1 ) - AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( cItem ) ) ) ) + AAdd( hbmk[ _HBMK_aLIBPATH ], DirDelPathSep( PathSepToSelf( cItem ) ) ) CASE Left( cItem, Len( "-I" ) ) == "-I" cItem := SubStr( cItem, Len( "-I" ) + 1 ) IF Empty( cIncludeDir ) cIncludeDir := cItem ENDIF - AAdd( hbmk[ _HBMK_aINCPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( cItem ) ) ) ) + AAdd( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathSepToSelf( cItem ) ) ) ENDCASE ENDIF NEXT @@ -6261,7 +6283,7 @@ STATIC FUNCTION FindHeader( hbmk, cFileName, cParentDir, lIncTry, lSystemHeader IF hbmk[ _HBMK_lDEBUGDEPD ] hbmk_OutStd( hbmk, hb_StrFormat( "debugdepd: REQ %1$s: found by %2$s header at %3$s %4$s", dep[ _HBMKDEP_cName ], PathSepToSelf( cFileName ), dep[ _HBMKDEP_cFound ], iif( dep[ _HBMKDEP_lFoundLOCAL ], "(local)", "" ) ) ) ENDIF - AAddNew( hbmk[ _HBMK_aINCPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathSepToSelf( cDir ) ) ) ) + AAddNew( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathSepToSelf( cDir ) ) ) AAdd( hbmk[ _HBMK_aOPTC ], "-D" + _HBMK_HAS_PREF + StrToDefine( dep[ _HBMKDEP_cName ] ) ) FOR EACH cFileName IN hbmk[ _HBMK_hDEP ][ dep[ _HBMKDEP_cName ] ][ _HBMKDEP_aKeyHeader ] hb_HDel( hbmk[ _HBMK_hDEPBYHEADER ], cFileName ) @@ -6497,25 +6519,25 @@ FUNCTION hbmk2_PathSepToTarget( ctx, ... ) FUNCTION hbmk2_AddInput_PRG( ctx, cFileName ) LOCAL hbmk := ctx[ s_cSecToken ] - AAdd( hbmk[ _HBMK_aPRG ], PathSepToTarget( hbmk, cFileName ) ) + AAdd( hbmk[ _HBMK_aPRG ], PathSepToSelf( cFileName ) ) DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cFileName ) RETURN NIL FUNCTION hbmk2_AddInput_C( ctx, cFileName ) LOCAL hbmk := ctx[ s_cSecToken ] - AAdd( hbmk[ _HBMK_aC ], PathSepToTarget( hbmk, cFileName ) ) + AAdd( hbmk[ _HBMK_aC ], PathSepToSelf( cFileName ) ) DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cFileName ) RETURN NIL FUNCTION hbmk2_AddInput_CPP( ctx, cFileName ) LOCAL hbmk := ctx[ s_cSecToken ] - AAdd( hbmk[ _HBMK_aCPP ], PathSepToTarget( hbmk, cFileName ) ) + AAdd( hbmk[ _HBMK_aCPP ], PathSepToSelf( cFileName ) ) DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cFileName ) RETURN NIL FUNCTION hbmk2_AddInput_RC( ctx, cFileName ) LOCAL hbmk := ctx[ s_cSecToken ] - AAdd( hbmk[ _HBMK_aRESSRC ], PathSepToTarget( hbmk, cFileName ) ) + AAdd( hbmk[ _HBMK_aRESSRC ], PathSepToSelf( cFileName ) ) RETURN NIL /* ; */ @@ -6878,65 +6900,28 @@ STATIC FUNCTION ListCook( arraySrc, cExtNew ) RETURN array -STATIC FUNCTION ArrayToList( array, cSeparator, nEscapeMode, cPrefix ) +STATIC FUNCTION ArrayToList( array, cSeparator, nEscapeMode, nFNNotation, cPrefix ) LOCAL cString := "" LOCAL tmp DEFAULT cSeparator TO " " - DEFAULT nEscapeMode TO _ESC_NONE DEFAULT cPrefix TO "" - SWITCH nEscapeMode - CASE _ESC_NONE + IF nEscapeMode == NIL .AND. nFNNotation == NIL FOR tmp := 1 TO Len( array ) cString += cPrefix + array[ tmp ] IF tmp < Len( array ) cString += cSeparator ENDIF NEXT - EXIT - CASE _ESC_DBLQUOTE + ELSE FOR tmp := 1 TO Len( array ) - IF " " $ array[ tmp ] .OR. "-" $ array[ tmp ] - /* Sloppy */ - IF Right( array[ tmp ], 1 ) == "\" - array[ tmp ] += "\" - ENDIF - cString += cPrefix + '"' + array[ tmp ] + '"' - ELSE - cString += cPrefix + array[ tmp ] - ENDIF + cString += cPrefix + FN_Escape( array[ tmp ], nEscapeMode, nFNNotation ) IF tmp < Len( array ) cString += cSeparator ENDIF NEXT - EXIT - CASE _ESC_SGLQUOTE_WATCOM - FOR tmp := 1 TO Len( array ) - IF " " $ array[ tmp ] - /* Sloppy */ - IF Right( array[ tmp ], 1 ) == "\" - array[ tmp ] += "\" - ENDIF - cString += cPrefix + "'" + array[ tmp ] + "'" - ELSE - cString += cPrefix + array[ tmp ] - ENDIF - IF tmp < Len( array ) - cString += cSeparator - ENDIF - NEXT - EXIT - CASE _ESC_NIX - CASE _ESC_BACKSLASH - FOR tmp := 1 TO Len( array ) - cString += cPrefix + FN_Escape( array[ tmp ], nEscapeMode ) - IF tmp < Len( array ) - cString += cSeparator - ENDIF - NEXT - EXIT - ENDSWITCH + ENDIF RETURN cString @@ -7121,13 +7106,13 @@ STATIC FUNCTION FN_FromArray( aPath, nFrom, nTo, cFileName, cDirPrefix ) STATIC FUNCTION PathSepToForward( cFileName ) RETURN StrTran( cFileName, "\", "/" ) -STATIC FUNCTION PathSepToSelf( cFileName ) +STATIC FUNCTION PathSepToSelf( cFileName, nStart ) #if defined( __PLATFORM__WINDOWS ) .OR. ; defined( __PLATFORM__DOS ) .OR. ; defined( __PLATFORM__OS2 ) - RETURN StrTran( cFileName, "/", "\" ) + RETURN iif( nStart == NIL, StrTran( cFileName, "/", "\" ), Left( cFileName, nStart - 1 ) + StrTran( SubStr( cFileName, nStart ), "/", "\" ) ) #else - RETURN StrTran( cFileName, "\", "/" ) + RETURN iif( nStart == NIL, StrTran( cFileName, "\", "/" ), Left( cFileName, nStart - 1 ) + StrTran( SubStr( cFileName, nStart ), "\", "/" ) ) #endif STATIC FUNCTION PathSepToTarget( hbmk, cFileName, nStart ) @@ -7234,9 +7219,50 @@ STATIC FUNCTION DirUnbuild( cDir ) RETURN .T. -STATIC FUNCTION FN_Escape( cFileName, nEscapeMode ) +STATIC FUNCTION FN_Escape( cFileName, nEscapeMode, nFNNotation ) + LOCAL cDir, cName, cExt, cDrive DEFAULT nEscapeMode TO _ESC_NONE +#if defined( __PLATFORM__WINDOWS ) .OR. ; + defined( __PLATFORM__DOS ) .OR. ; + defined( __PLATFORM__OS2 ) + DEFAULT nFNNotation TO _FNF_BACKSLASH +#else + DEFAULT nFNNotation TO _FNF_FWSLASH +#endif + + SWITCH nFNNotation + CASE _FNF_BACKSLASH + cFileName := StrTran( cFileName, "/", "\" ) + EXIT + CASE _FNF_FWSLASH + cFileName := StrTran( cFileName, "\", "/" ) + EXIT + CASE _FNF_FWSLASHCYGWIN + hb_FNameSplit( cFileName, @cDir, @cName, @cExt, @cDrive ) + IF ! Empty( cDrive ) + cDir := SubStr( cDir, Len( cDrive + hb_osDriveSeparator() ) + 1 ) + IF Left( cDir, Len( hb_osPathSeparator() ) ) == hb_osPathSeparator() + cDir := SubStr( cDir, Len( hb_osPathSeparator() ) + 1 ) + ENDIF + cDir := "/cygdrive/" + Lower( Left( cDrive, 1 ) ) + "/" + cDir + cFileName := hb_FNameMerge( cDir, cName, cExt ) + ENDIF + cFileName := StrTran( cFileName, "\", "/" ) + EXIT + CASE _FNF_FWSLASHMSYS + hb_FNameSplit( cFileName, @cDir, @cName, @cExt, @cDrive ) + IF ! Empty( cDrive ) + cDir := SubStr( cDir, Len( cDrive + hb_osDriveSeparator() ) + 1 ) + IF Left( cDir, Len( hb_osPathSeparator() ) ) == hb_osPathSeparator() + cDir := SubStr( cDir, Len( hb_osPathSeparator() ) + 1 ) + ENDIF + cDir := "/" + Lower( Left( cDrive, 1 ) ) + "/" + cDir + cFileName := hb_FNameMerge( cDir, cName, cExt ) + ENDIF + cFileName := StrTran( cFileName, "\", "/" ) + EXIT + ENDSWITCH SWITCH nEscapeMode CASE _ESC_DBLQUOTE @@ -7447,28 +7473,28 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) DO CASE CASE FN_ExtGet( cItemL ) == ".o" .OR. ; FN_ExtGet( cItemL ) == ".obj" - AAddNew( hbmk[ _HBMK_aOBJUSER ], PathSepToTarget( hbmk, cItem ) ) + AAddNew( hbmk[ _HBMK_aOBJUSER ], cItem ) CASE FN_ExtGet( cItemL ) == ".cpp" .OR. ; FN_ExtGet( cItemL ) == ".cc" .OR. ; FN_ExtGet( cItemL ) == ".cxx" .OR. ; FN_ExtGet( cItemL ) == ".cx" .OR. ; FN_ExtGet( cItemL ) == ".m" .OR. ; _EXT_IS_UPPER( cItem, ".C" ) - AAddNew( hbmk[ _HBMK_aCPP ], PathSepToTarget( hbmk, cItem ) ) + AAddNew( hbmk[ _HBMK_aCPP ], cItem ) CASE FN_ExtGet( cItemL ) == ".c" - AAddNew( hbmk[ _HBMK_aC ], PathSepToTarget( hbmk, cItem ) ) + AAddNew( hbmk[ _HBMK_aC ], cItem ) CASE FN_ExtGet( cItemL ) == ".d" - deplst_read( hbmk, hbmk[ _HBMK_hDEPTS ], PathSepToSelf( cItem ) ) + deplst_read( hbmk, hbmk[ _HBMK_hDEPTS ], cItem ) CASE FN_ExtGet( cItemL ) == ".po" .OR. ; FN_ExtGet( cItemL ) == ".pot" - AAddNew( hbmk[ _HBMK_aPO ], PathSepToTarget( hbmk, cItem ) ) + AAddNew( hbmk[ _HBMK_aPO ], cItem ) CASE FN_ExtGet( cItemL ) == ".rc" FOR EACH tmp IN FN_Expand( cItem, .F. ) - AAddNew( hbmk[ _HBMK_aRESSRC ], PathSepToTarget( hbmk, tmp ) ) + AAddNew( hbmk[ _HBMK_aRESSRC ], tmp ) NEXT CASE FN_ExtGet( cItemL ) == ".def" FOR EACH tmp IN FN_Expand( cItem, .F. ) - AAddNew( hbmk[ _HBMK_aDEF ], PathSepToTarget( hbmk, tmp ) ) + AAddNew( hbmk[ _HBMK_aDEF ], tmp ) NEXT CASE FN_ExtGet( cItemL ) == ".res" IF hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm" @@ -7476,18 +7502,18 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) will need to be converted to coff format with windres (just like plain .rc files) before feeding them to gcc. */ FOR EACH tmp IN FN_Expand( cItem, .F. ) - AAddNew( hbmk[ _HBMK_aRESSRC ], PathSepToTarget( hbmk, tmp ) ) + AAddNew( hbmk[ _HBMK_aRESSRC ], tmp ) NEXT ELSE FOR EACH tmp IN FN_Expand( cItem, .F. ) - AAddNew( hbmk[ _HBMK_aRESCMP ], PathSepToTarget( hbmk, tmp ) ) + AAddNew( hbmk[ _HBMK_aRESCMP ], tmp ) NEXT ENDIF OTHERWISE /* .prg */ IF Empty( FN_ExtGet( cItem ) ) cItem := FN_ExtSet( cItem, ".prg" ) ENDIF - AAddNew( hbmk[ _HBMK_aPRG ], PathSepToTarget( hbmk, cItem ) ) + AAddNew( hbmk[ _HBMK_aPRG ], cItem ) ENDCASE ENDIF NEXT @@ -7516,7 +7542,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Cannot nest deeper in %1$s" ), cFileName ) ) ENDIF ELSE - cItem := PathSepToTarget( hbmk, cItem ) + cItem := PathSepToSelf( cItem ) IF _IS_AUTOLIBSYSPRE( cItem ) AAddNewNotEmpty( hbmk[ _HBMK_aLIBUSERSYSPRE ], cItem ) ELSE @@ -7527,7 +7553,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) CASE Lower( Left( cLine, Len( "syslibs=" ) ) ) == "syslibs=" ; cLine := SubStr( cLine, Len( "syslibs=" ) + 1 ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) - AAddNewNotEmpty( hbmk[ _HBMK_aLIBUSERSYS ], PathSepToTarget( hbmk, MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) ) ) + AAddNewNotEmpty( hbmk[ _HBMK_aLIBUSERSYS ], MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) ) NEXT CASE Lower( Left( cLine, Len( "hbcs=" ) ) ) == "hbcs=" ; cLine := SubStr( cLine, Len( "hbcs=" ) + 1 ) @@ -7563,7 +7589,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) cItem := MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) IF ! Empty( cItem ) - AAddNew( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ) ) + AAddNew( hbmk[ _HBMK_aLIBPATH ], DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ) ENDIF NEXT @@ -7571,7 +7597,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) cItem := MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) IF ! Empty( cItem ) - AAddNew( hbmk[ _HBMK_aINCPATH ], PathSepToTarget( hbmk, DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ) ) + AAddNew( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ) ENDIF NEXT @@ -7579,7 +7605,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) cItem := MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) IF ! Empty( cItem ) - AAddNew( hbmk[ _HBMK_aINSTPATH ], PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ) + AAddNew( hbmk[ _HBMK_aINSTPATH ], PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ENDIF NEXT @@ -7591,7 +7617,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) CASE Lower( Left( cLine, Len( "prgflags=" ) ) ) == "prgflags=" ; cLine := SubStr( cLine, Len( "prgflags=" ) + 1 ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) - AAddNewNotEmpty( hbmk[ _HBMK_aOPTPRG ], PathSepToTarget( hbmk, MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) ) ) + AAddNewNotEmpty( hbmk[ _HBMK_aOPTPRG ], MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) ) NEXT CASE Lower( Left( cLine, Len( "cflags=" ) ) ) == "cflags=" ; cLine := SubStr( cLine, Len( "cflags=" ) + 1 ) @@ -7611,14 +7637,14 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) CASE Lower( Left( cLine, Len( "pflags=" ) ) ) == "pflags=" ; cLine := SubStr( cLine, Len( "pflags=" ) + 1 ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) - AAddNewNotEmpty( hbmk[ _HBMK_aPLUGINPars ], PathSepToTarget( hbmk, MacroProc( hbmk, StrStripQuote( cItem ), cFileName ), 2 ) ) + AAddNewNotEmpty( hbmk[ _HBMK_aPLUGINPars ], MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) ) NEXT CASE Lower( Left( cLine, Len( "psources=" ) ) ) == "psources=" ; cLine := SubStr( cLine, Len( "psources=" ) + 1 ) FOR EACH cItem IN hb_ATokens( cLine,, .T. ) cItem := MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) IF ! Empty( cItem ) - AAddNew( hbmk[ _HBMK_aPLUGINPars ], PathSepToTarget( hbmk, PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ) + AAddNew( hbmk[ _HBMK_aPLUGINPars ], PathNormalize( PathProc( PathSepToSelf( cItem ), FN_DirGet( cFileName ) ) ) ) ENDIF NEXT @@ -7764,7 +7790,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) IF ! Empty( cLine ) .AND. !( Lower( cLine ) == "gtnul" ) IF AScan( hbmk[ _HBMK_aLIBCOREGT ], {| tmp | Lower( tmp ) == Lower( cLine ) } ) == 0 .AND. ; AScan( hbmk[ _HBMK_aLIBUSERGT ], {| tmp | Lower( tmp ) == Lower( cLine ) } ) == 0 - AAddNotEmpty( hbmk[ _HBMK_aLIBUSERGT ], PathSepToTarget( hbmk, cLine ) ) + AAddNotEmpty( hbmk[ _HBMK_aLIBUSERGT ], PathSepToSelf( cLine ) ) ENDIF ENDIF ENDIF @@ -7779,7 +7805,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) IF ! Empty( cLine ) .AND. !( Lower( cLine ) == "gtnul" ) IF AScan( hbmk[ _HBMK_aLIBCOREGT ], {| tmp | Lower( tmp ) == Lower( cLine ) } ) == 0 .AND. ; AScan( hbmk[ _HBMK_aLIBUSERGT ], {| tmp | Lower( tmp ) == Lower( cLine ) } ) == 0 - AAddNotEmpty( hbmk[ _HBMK_aLIBUSERGT ], PathSepToTarget( hbmk, cLine ) ) + AAddNotEmpty( hbmk[ _HBMK_aLIBUSERGT ], PathSepToSelf( cLine ) ) ENDIF ENDIF ENDIF @@ -7859,7 +7885,8 @@ STATIC PROCEDURE HBM_Load( hbmk, aParams, cFileName, nNestingLevel ) ENDIF CASE !( Left( cParam, 1 ) == "-" ) .AND. ; ( Lower( FN_ExtGet( cParam ) ) == ".hbm" .OR. ; - Lower( FN_ExtGet( cParam ) ) == ".hbp" ) + Lower( FN_ExtGet( cParam ) ) == ".hbp" .OR. ; + Lower( FN_ExtGet( cParam ) ) == ".hbi" ) IF nNestingLevel < _HBMK_NEST_MAX HBM_Load( hbmk, aParams, PathProc( PathSepToSelf( cParam ), cFileName ), nNestingLevel + 1 ) /* Load parameters from script file */ ELSE @@ -8001,7 +8028,7 @@ STATIC FUNCTION MacroProc( hbmk, cString, cFileName, cMacroPrefix ) SWITCH cMacro CASE "HB_ROOT" - cMacro := PathSepToSelf( DirAddPathSep( hb_DirBase() ) ) ; EXIT + cMacro := DirAddPathSep( hb_DirBase() ) ; EXIT CASE "HB_DIR" cMacro := PathSepToSelf( FN_DirGet( cFileName ) ) ; EXIT CASE "HB_DIRNAME" @@ -8473,13 +8500,13 @@ STATIC FUNCTION rtlnk_process( hbmk, cCommands, cFileOut, aFileList, aLibList, ; ELSEIF nMode == RTLNK_MODE_FILE IF !( cWord == "," ) IF AScan( aFileList, { |x| x == cWord } ) == 0 - AAdd( aFileList, PathSepToTarget( hbmk, cWord ) ) + AAdd( aFileList, PathSepToSelf( cWord ) ) ENDIF nMode := RTLNK_MODE_FILENEXT ENDIF ELSEIF nMode == RTLNK_MODE_LIB IF !( cWord == "," ) - AAdd( aLibList, PathSepToTarget( hbmk, cWord ) ) + AAdd( aLibList, PathSepToSelf( cWord ) ) nMode := RTLNK_MODE_LIBNEXT ENDIF ELSEIF nMode == RTLNK_MODE_SKIP @@ -8783,7 +8810,7 @@ STATIC FUNCTION GenHBL( hbmk, aFiles, cFileOut, lEmpty ) STATIC FUNCTION win_implib_command( hbmk, cCommand, cSourceDLL, cTargetLib, cFlags ) - IF ! hb_FileExists( PathSepToSelf( cSourceDLL ) ) + IF ! hb_FileExists( cSourceDLL ) IF hbmk[ _HBMK_lInfo ] hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Source dynamic library not found: %1$s" ), cSourceDLL ) ) ENDIF @@ -8793,8 +8820,8 @@ STATIC FUNCTION win_implib_command( hbmk, cCommand, cSourceDLL, cTargetLib, cFla DEFAULT cFlags TO "" cCommand := StrTran( cCommand, "{FI}", cFlags ) - cCommand := StrTran( cCommand, "{ID}", FN_Escape( cSourceDLL, hbmk[ _HBMK_nCmd_Esc ] ) ) - cCommand := StrTran( cCommand, "{OL}", FN_Escape( cTargetLib, hbmk[ _HBMK_nCmd_Esc ] ) ) + cCommand := StrTran( cCommand, "{ID}", FN_Escape( cSourceDLL, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) + cCommand := StrTran( cCommand, "{OL}", FN_Escape( cTargetLib, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) IF hbmk[ _HBMK_lTRACE ] IF ! hbmk[ _HBMK_lQuiet ] @@ -8843,12 +8870,12 @@ STATIC FUNCTION win_implib_coff( hbmk, cSourceDLL, cTargetLib ) LOCAL cSourceLib /* Try to find COFF .lib with the same name */ - IF hb_FileExists( cSourceLib := FN_ExtSet( PathSepToSelf( cSourceDLL ), ".lib" ) ) + IF hb_FileExists( cSourceLib := FN_ExtSet( cSourceDLL, ".lib" ) ) IF IsCOFFLib( cSourceLib ) IF ! hbmk[ _HBMK_lQuiet ] hbmk_OutStd( hbmk, I_( "Found COFF .lib with the same name, falling back to using it instead of the .dll." ) ) ENDIF - RETURN iif( hb_FCopy( cSourceLib, PathSepToSelf( cTargetLib ) ) != F_ERROR, _HBMK_IMPLIB_OK, _HBMK_IMPLIB_FAILED ) + RETURN iif( hb_FCopy( cSourceLib, cTargetLib ) != F_ERROR, _HBMK_IMPLIB_OK, _HBMK_IMPLIB_FAILED ) ENDIF ENDIF @@ -8858,12 +8885,12 @@ STATIC FUNCTION win_implib_omf( hbmk, cSourceDLL, cTargetLib ) LOCAL cSourceLib /* Try to find COFF .lib with the same name */ - IF hb_FileExists( cSourceLib := FN_ExtSet( PathSepToSelf( cSourceDLL ), ".lib" ) ) + IF hb_FileExists( cSourceLib := FN_ExtSet( cSourceDLL, ".lib" ) ) IF IsOMFLib( cSourceLib ) IF ! hbmk[ _HBMK_lQuiet ] hbmk_OutStd( hbmk, I_( "Found OMF .lib with the same name, falling back to using it instead of the .dll." ) ) ENDIF - RETURN iif( hb_FCopy( cSourceLib, PathSepToSelf( cTargetLib ) ) != F_ERROR, _HBMK_IMPLIB_OK, _HBMK_IMPLIB_FAILED ) + RETURN iif( hb_FCopy( cSourceLib, cTargetLib ) != F_ERROR, _HBMK_IMPLIB_OK, _HBMK_IMPLIB_FAILED ) ENDIF ENDIF @@ -8873,7 +8900,7 @@ STATIC FUNCTION win_implib_def( hbmk, cCommand, cSourceDLL, cTargetLib, cFlags ) LOCAL cSourceDef /* Try to find .def file with the same name */ - IF hb_FileExists( PathSepToSelf( cSourceDef := FN_ExtSet( cSourceDLL, ".def" ) ) ) + IF hb_FileExists( cSourceDef := FN_ExtSet( cSourceDLL, ".def" ) ) IF ! hbmk[ _HBMK_lQuiet ] hbmk_OutStd( hbmk, I_( "Found .def file with the same name, falling back to using it instead of the .dll." ) ) ENDIF @@ -8886,9 +8913,9 @@ STATIC FUNCTION win_implib_copy( hbmk, cSourceDLL, cTargetLib ) HB_SYMBOL_UNUSED( hbmk ) - IF hb_FileExists( PathSepToSelf( cSourceDLL ) ) + IF hb_FileExists( cSourceDLL ) /* Use .dll directly if all other attempts failed */ - RETURN iif( hb_FCopy( PathSepToSelf( cSourceDLL ), PathSepToSelf( cTargetLib ) ) != F_ERROR, _HBMK_IMPLIB_OK, _HBMK_IMPLIB_FAILED ) + RETURN iif( hb_FCopy( cSourceDLL, cTargetLib ) != F_ERROR, _HBMK_IMPLIB_OK, _HBMK_IMPLIB_FAILED ) ENDIF RETURN _HBMK_IMPLIB_NOTFOUND @@ -8973,7 +9000,7 @@ STATIC FUNCTION win_implib_command_msvc( hbmk, cCommand, cSourceDLL, cTargetLib, RETURN nResult ENDIF - IF ! hb_FileExists( PathSepToSelf( cSourceDLL ) ) + IF ! hb_FileExists( cSourceDLL ) IF hbmk[ _HBMK_lInfo ] hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Source dynamic library not found: %1$s" ), cSourceDLL ) ) ENDIF @@ -8981,7 +9008,7 @@ STATIC FUNCTION win_implib_command_msvc( hbmk, cCommand, cSourceDLL, cTargetLib, ENDIF cCommandDump := "dumpbin.exe -exports {ID}" - cCommandDump := StrTran( cCommandDump, "{ID}", FN_Escape( cSourceDLL, hbmk[ _HBMK_nCmd_Esc ] ) ) + cCommandDump := StrTran( cCommandDump, "{ID}", FN_Escape( cSourceDLL, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nFNNotation ] ) ) IF hbmk[ _HBMK_lTRACE ] IF ! hbmk[ _HBMK_lQuiet ] @@ -9744,7 +9771,7 @@ STATIC PROCEDURE SetUILang( hbmk ) hb_i18n_set( NIL ) ELSE tmp := "${hb_root}hbmk2.${hb_lng}.hbl" - tmp := StrTran( tmp, "${hb_root}", PathSepToSelf( DirAddPathSep( hb_DirBase() ) ) ) + tmp := StrTran( tmp, "${hb_root}", DirAddPathSep( hb_DirBase() ) ) tmp := StrTran( tmp, "${hb_lng}", StrTran( hbmk[ _HBMK_cUILNG ], "-", "_" ) ) hb_i18n_set( iif( hb_i18n_check( tmp := hb_MemoRead( tmp ) ), hb_i18n_restoretable( tmp ), NIL ) ) ENDIF