2009-02-18 13:14 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* utils/hbmk/hbmk2.prg
+ Added new TODOs.
+ Now using GTCGI as the GT.
+ Added -info option to enable informational output.
(currently this is the default for testing period)
+ Added -arch=<arch> command line option. Same as HB_ARCHITECTURE.
Added -comp=<comp> command line option. Same as HB_COMPILER.
envvars are kept for compatibility.
+ Added -hblnk option to give plave for hblnk script behaviour
emulation.
* Changed -cc, -cmp options to -hbcc, -hbcmp respecitvely.
+ Changed -hbcc, -hbcmp, -hblnk switches to turn off information
output and turn on quiet mode by default.
+ Added autodetection of architecture when unique to
architecture compiler is choosen manually. IOW, when
-comp=msvc|mingw|pocc|dmc|xcc is passed the architecture will
be set to win automatically. When -comp=djgpp is used,
dos will be selected.
! Fixed ordering of compiler autodetection because f.e. owatcom
bin dir holds a 'cl.exe', which made hbmk2 falsely detect msvc.
+ Added trick which I'm not sure I like, and may cause problems
and seemingly unpredictable behaviour, but could also help
in some environments where multiple compilers are setup in
parallel (this isn't a recommended scenario for various other
reasons, so maybe we shouldn't support it further). So from
now on the compiler autodetection will first look for the
compiler used to build hbmk2.exe, and check for the rest
afterwards. This feature is turned off for msvc builds of
hbmk2.exe because it breaks owatcom autodetection.
+ Added possibility to pass a plain dir by using -odir[\|/]
switch. The final name will be determined by first input
file name, if this one also has a dir, -o option will be
ignored. Added logic to handle separator differences, this
wasn't tested to a great deal.
+ Added -Wl,--start-group support for linux/gcc|gpp, win/mingw,
dos/djgpp.
! Fixed owatcom support to setup library paths.
! Fixed linux/owatcom to use link script.
* Some adjustments to win/owatcom C compiler settings. I guess
the ones in .cf should also need a cleanup.
* Few minor indentation problems fixed.
! C compiler and linker scripts now got an extension in
the generated temp filename to make some of them happy
(owatcom in this case). .cpl is used for compiler scripts,
.lnk for linker ones.
+ Compiler autodetection now also looks in hbmk2 executable
dir before looking into the PATH.
! Link script content was wrong due to typo.
! Fixed problem with library paths being wrong (doubly
decorated) in the link command. This may also fix some
problems with double extensions and final .c file cleanup.
! Fixed to add hbdebug lib when building in shared mode.
! Fixed typo in automatically adding './' on *nix systems.
; Please test, I definitely couldn't retest all scenaros
after all these changes.
* bin/postinst.bat
* Adapted change in mode modifier switches, also
added new -hblnk one.
* utils/hbmk/examples/winapi.hbp
+ Added mapi32.
+ utils/hbmk/examples/contrib.hbp
+ Added .hbp file for popular and portable only contribs.
* config/win/owatcom.cf
- Removed unnecessary system libs.
* contrib/hbvpdf/hbvpdft.prg
* hbwhat32 -> hbwhat in comment.
* contrib/hbwin/wapi_commctrl.c
* contrib/hbwin/wapi_winuser.c
! Fixed harbour-project page link in header.
* contrib/hbwin/hbwapi.h
* Formatting (indenting the whole file content inside
self-guard isn't necessary.)
This commit is contained in:
@@ -8,6 +8,81 @@
|
||||
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2009-02-18 13:14 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
* utils/hbmk/hbmk2.prg
|
||||
+ Added new TODOs.
|
||||
+ Now using GTCGI as the GT.
|
||||
+ Added -info option to enable informational output.
|
||||
(currently this is the default for testing period)
|
||||
+ Added -arch=<arch> command line option. Same as HB_ARCHITECTURE.
|
||||
Added -comp=<comp> command line option. Same as HB_COMPILER.
|
||||
envvars are kept for compatibility.
|
||||
+ Added -hblnk option to give plave for hblnk script behaviour
|
||||
emulation.
|
||||
* Changed -cc, -cmp options to -hbcc, -hbcmp respecitvely.
|
||||
+ Changed -hbcc, -hbcmp, -hblnk switches to turn off information
|
||||
output and turn on quiet mode by default.
|
||||
+ Added autodetection of architecture when unique to
|
||||
architecture compiler is choosen manually. IOW, when
|
||||
-comp=msvc|mingw|pocc|dmc|xcc is passed the architecture will
|
||||
be set to win automatically. When -comp=djgpp is used,
|
||||
dos will be selected.
|
||||
! Fixed ordering of compiler autodetection because f.e. owatcom
|
||||
bin dir holds a 'cl.exe', which made hbmk2 falsely detect msvc.
|
||||
+ Added trick which I'm not sure I like, and may cause problems
|
||||
and seemingly unpredictable behaviour, but could also help
|
||||
in some environments where multiple compilers are setup in
|
||||
parallel (this isn't a recommended scenario for various other
|
||||
reasons, so maybe we shouldn't support it further). So from
|
||||
now on the compiler autodetection will first look for the
|
||||
compiler used to build hbmk2.exe, and check for the rest
|
||||
afterwards. This feature is turned off for msvc builds of
|
||||
hbmk2.exe because it breaks owatcom autodetection.
|
||||
+ Added possibility to pass a plain dir by using -odir[\|/]
|
||||
switch. The final name will be determined by first input
|
||||
file name, if this one also has a dir, -o option will be
|
||||
ignored. Added logic to handle separator differences, this
|
||||
wasn't tested to a great deal.
|
||||
+ Added -Wl,--start-group support for linux/gcc|gpp, win/mingw,
|
||||
dos/djgpp.
|
||||
! Fixed owatcom support to setup library paths.
|
||||
! Fixed linux/owatcom to use link script.
|
||||
* Some adjustments to win/owatcom C compiler settings. I guess
|
||||
the ones in .cf should also need a cleanup.
|
||||
* Few minor indentation problems fixed.
|
||||
! C compiler and linker scripts now got an extension in
|
||||
the generated temp filename to make some of them happy
|
||||
(owatcom in this case). .cpl is used for compiler scripts,
|
||||
.lnk for linker ones.
|
||||
+ Compiler autodetection now also looks in hbmk2 executable
|
||||
dir before looking into the PATH.
|
||||
! Link script content was wrong due to typo.
|
||||
! Fixed problem with library paths being wrong (doubly
|
||||
decorated) in the link command. This may also fix some
|
||||
problems with double extensions and final .c file cleanup.
|
||||
! Fixed to add hbdebug lib when building in shared mode.
|
||||
! Fixed typo in automatically adding './' on *nix systems.
|
||||
; Please test, I definitely couldn't retest all scenaros
|
||||
after all these changes.
|
||||
|
||||
* bin/postinst.bat
|
||||
* Adapted change in mode modifier switches, also
|
||||
added new -hblnk one.
|
||||
* utils/hbmk/examples/winapi.hbp
|
||||
+ Added mapi32.
|
||||
+ utils/hbmk/examples/contrib.hbp
|
||||
+ Added .hbp file for popular and portable only contribs.
|
||||
* config/win/owatcom.cf
|
||||
- Removed unnecessary system libs.
|
||||
* contrib/hbvpdf/hbvpdft.prg
|
||||
* hbwhat32 -> hbwhat in comment.
|
||||
* contrib/hbwin/wapi_commctrl.c
|
||||
* contrib/hbwin/wapi_winuser.c
|
||||
! Fixed harbour-project page link in header.
|
||||
* contrib/hbwin/hbwapi.h
|
||||
* Formatting (indenting the whole file content inside
|
||||
self-guard isn't necessary.)
|
||||
|
||||
2009-02-19 12:49 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/vm/thread.c
|
||||
! fixed the typo in order of sending signals in _hb_thread_cond_signal()
|
||||
@@ -16,7 +91,7 @@
|
||||
|
||||
2009-02-18 17:05 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtwvg/wvgscrlb.prg
|
||||
* Disabled structure support for time being as
|
||||
* Disabled structure support for time being as
|
||||
build process is unable to locate cstruct.c, etc. headers.
|
||||
Viktor?
|
||||
|
||||
|
||||
@@ -17,9 +17,9 @@ goto inst_%HB_ARCHITECTURE%
|
||||
:inst_win
|
||||
rem Windows post install part
|
||||
|
||||
echo @"%%~dp0hbmk2.exe" -cc %%*> %HB_BIN_INSTALL%\hbcc.bat
|
||||
echo @"%%~dp0hbmk2.exe" -cmp %%*> %HB_BIN_INSTALL%\hbcmp.bat
|
||||
echo @"%%~dp0hbmk2.exe" %%*> %HB_BIN_INSTALL%\hblnk.bat
|
||||
echo @"%%~dp0hbmk2.exe" -hbcc %%*> %HB_BIN_INSTALL%\hbcc.bat
|
||||
echo @"%%~dp0hbmk2.exe" -hbcmp %%*> %HB_BIN_INSTALL%\hbcmp.bat
|
||||
echo @"%%~dp0hbmk2.exe" -hblnk %%*> %HB_BIN_INSTALL%\hblnk.bat
|
||||
|
||||
goto end
|
||||
|
||||
@@ -27,9 +27,9 @@ goto end
|
||||
:inst_dos
|
||||
rem DOS post install part
|
||||
|
||||
echo @hbmk2.exe -cc %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcc.bat
|
||||
echo @hbmk2.exe -cmp %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcmp.bat
|
||||
echo @hbmk2.exe %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hblnk.bat
|
||||
echo @hbmk2.exe -hbcc %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcc.bat
|
||||
echo @hbmk2.exe -hbcmp %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcmp.bat
|
||||
echo @hbmk2.exe -hblnk %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hblnk.bat
|
||||
|
||||
goto end
|
||||
|
||||
@@ -37,9 +37,9 @@ goto end
|
||||
:inst_os2
|
||||
rem OS/2 post install part
|
||||
|
||||
echo @hbmk2.exe -cc %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcc.cmd
|
||||
echo @hbmk2.exe -cmp %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcmp.cmd
|
||||
echo @hbmk2.exe %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hblnk.cmd
|
||||
echo @hbmk2.exe -hbcc %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcc.cmd
|
||||
echo @hbmk2.exe -hbcmp %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hbcmp.cmd
|
||||
echo @hbmk2.exe -hblnk %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9> %HB_BIN_INSTALL%\hblnk.cmd
|
||||
|
||||
goto end
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ $(foreach lib, $(LINKLIBS), $(link_lib))
|
||||
$(foreach lib, $(RDDLIBS), $(link_lib))
|
||||
$(foreach lib, $(GTLIBS), $(link_lib))
|
||||
echo @%watcom%/binnt/wlink.lnk >> __link__.tmp
|
||||
echo LIB kernel32.lib, user32.lib, wsock32.lib, winspool.lib, oleaut32.lib, uuid.lib, comctl32.lib, mapi32.lib >> __link__.tmp
|
||||
echo LIB kernel32.lib, user32.lib, wsock32.lib >> __link__.tmp
|
||||
-$(LD) @__link__.tmp
|
||||
endef
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
//-------------------------\\
|
||||
//
|
||||
// Program Cl_Pdf.prg
|
||||
// Program Cl_Pdf.prg
|
||||
//
|
||||
// Original : Victor K. . http://www.ihaveparts.com
|
||||
//
|
||||
// Class Code : Pritpal Bedi . http://www.vouchcac.com
|
||||
// Class Code : Pritpal Bedi . http://www.vouchcac.com
|
||||
//
|
||||
//-------------------------\\
|
||||
|
||||
@@ -41,13 +41,13 @@
|
||||
|
||||
CREATE CLASS tPdf
|
||||
|
||||
#ifndef __HARBOUR__
|
||||
#ifndef __HARBOUR__
|
||||
EXPORT:
|
||||
#endif
|
||||
|
||||
VAR aReport
|
||||
|
||||
#ifndef __HARBOUR__
|
||||
#ifndef __HARBOUR__
|
||||
EXPORT:
|
||||
#endif
|
||||
|
||||
@@ -187,7 +187,7 @@ next
|
||||
::aReport[ DOCLEN ] := 0
|
||||
cTemp := "%PDF-1.3" + CRLF
|
||||
::aReport[ DOCLEN ] += len( cTemp )
|
||||
|
||||
|
||||
fwrite( ::aReport[ HANDLE ], cTemp )
|
||||
|
||||
RETURN self
|
||||
@@ -273,7 +273,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Normal()
|
||||
#else
|
||||
METHOD Normal()
|
||||
METHOD Normal()
|
||||
#endif
|
||||
local cName := ::GetFontInfo( "NAME" )
|
||||
|
||||
@@ -295,7 +295,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Italic()
|
||||
#else
|
||||
METHOD Italic()
|
||||
METHOD Italic()
|
||||
#endif
|
||||
local cName := ::GetFontInfo( "NAME" )
|
||||
|
||||
@@ -304,7 +304,7 @@ local cName := ::GetFontInfo( "NAME" )
|
||||
ELSEIF cName = "Helvetica"
|
||||
::aReport[ FONTNAME ] := 7
|
||||
ELSE
|
||||
::aReport[ FONTNAME ] := 11
|
||||
::aReport[ FONTNAME ] := 11
|
||||
ENDIF
|
||||
aadd( ::aReport[ PAGEFONTS ], ::aReport[ FONTNAME ] )
|
||||
IF ascan( ::aReport[ FONTS ], { |arr| arr[1] == ::aReport[ FONTNAME ] } ) == 0
|
||||
@@ -317,7 +317,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Bold()
|
||||
#else
|
||||
METHOD Bold()
|
||||
METHOD Bold()
|
||||
#endif
|
||||
local cName := ::GetFontInfo( "NAME" )
|
||||
|
||||
@@ -341,7 +341,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BoldItalic()
|
||||
#else
|
||||
METHOD BoldItalic()
|
||||
METHOD BoldItalic()
|
||||
#endif
|
||||
local cName := ::GetFontInfo( "NAME" )
|
||||
|
||||
@@ -365,7 +365,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookAdd( cTitle, nLevel, nPage, nLine )
|
||||
#else
|
||||
METHOD BookAdd( cTitle, nLevel, nPage, nLine )
|
||||
METHOD BookAdd( cTitle, nLevel, nPage, nLine )
|
||||
#endif
|
||||
|
||||
aadd( ::aReport[ BOOKMARK ], { nLevel, alltrim( cTitle ), 0, 0, 0, 0, 0, 0, nPage, IIF( nLevel == 1, ::aReport[ PAGEY ], ::aReport[ PAGEY ] - nLine * 72 / ::aReport[ LPI ] ) })
|
||||
@@ -377,7 +377,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookClose( )
|
||||
#else
|
||||
METHOD BookClose( )
|
||||
METHOD BookClose( )
|
||||
#endif
|
||||
|
||||
::aReport[ BOOKMARK ] := nil
|
||||
@@ -389,7 +389,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookOpen( )
|
||||
#else
|
||||
METHOD BookOpen( )
|
||||
METHOD BookOpen( )
|
||||
#endif
|
||||
|
||||
::aReport[ BOOKMARK ] := {}
|
||||
@@ -401,7 +401,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Box( x1, y1, x2, y2, nBorder, nShade, cUnits, cColor, cId )
|
||||
#else
|
||||
METHOD Box( x1, y1, x2, y2, nBorder, nShade, cUnits, cColor, cId )
|
||||
METHOD Box( x1, y1, x2, y2, nBorder, nShade, cUnits, cColor, cId )
|
||||
#endif
|
||||
|
||||
local cBoxColor
|
||||
@@ -496,7 +496,7 @@ return nil
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Center( cString, nRow, nCol, cUnits, lExact, cId )
|
||||
#else
|
||||
METHOD Center( cString, nRow, nCol, cUnits, lExact, cId )
|
||||
METHOD Center( cString, nRow, nCol, cUnits, lExact, cId )
|
||||
#endif
|
||||
|
||||
local nLen, nAt
|
||||
@@ -528,7 +528,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Close()
|
||||
#else
|
||||
METHOD Close()
|
||||
METHOD Close()
|
||||
#endif
|
||||
|
||||
local nI, cTemp, nCurLevel, nObj1, nLast, nCount, nFirst, nRecno, nBooklen
|
||||
@@ -674,7 +674,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Image( cFile, nRow, nCol, cUnits, nHeight, nWidth, cId )
|
||||
#else
|
||||
METHOD Image( cFile, nRow, nCol, cUnits, nHeight, nWidth, cId )
|
||||
METHOD Image( cFile, nRow, nCol, cUnits, nHeight, nWidth, cId )
|
||||
#endif
|
||||
|
||||
DEFAULT nRow TO ::aReport[ REPORTLINE ]
|
||||
@@ -718,7 +718,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Length( cString )
|
||||
#else
|
||||
METHOD Length( cString )
|
||||
METHOD Length( cString )
|
||||
#endif
|
||||
|
||||
local nWidth := 0.00, nI, nLen, nArr, nAdd := ( ::aReport[ FONTNAME ] - 1 ) % 4
|
||||
@@ -745,7 +745,7 @@ RETURN nWidth
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:NewLine( n )
|
||||
#else
|
||||
METHOD NewLine( n )
|
||||
METHOD NewLine( n )
|
||||
#endif
|
||||
|
||||
DEFAULT n TO 1
|
||||
@@ -763,7 +763,7 @@ RETURN ::aReport[ REPORTLINE ]
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:NewPage( _cPageSize, _cPageOrient, _nLpi, _cFontName, _nFontType, _nFontSize )
|
||||
#else
|
||||
METHOD NewPage( _cPageSize, _cPageOrient, _nLpi, _cFontName, _nFontType, _nFontSize )
|
||||
METHOD NewPage( _cPageSize, _cPageOrient, _nLpi, _cFontName, _nFontType, _nFontSize )
|
||||
#endif
|
||||
|
||||
|
||||
@@ -792,7 +792,7 @@ DEFAULT _nFontSize TO ::aReport[ FONTSIZE ]
|
||||
|
||||
::DrawHeader()
|
||||
|
||||
::aReport[ REPORTLINE ] := 0
|
||||
::aReport[ REPORTLINE ] := 0
|
||||
::aReport[ FONTNAMEPREV ] := 0
|
||||
::aReport[ FONTSIZEPREV ] := 0
|
||||
|
||||
@@ -803,7 +803,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:PageSize( _cPageSize )
|
||||
#else
|
||||
METHOD PageSize( _cPageSize )
|
||||
METHOD PageSize( _cPageSize )
|
||||
#endif
|
||||
|
||||
local nSize, aSize := { { "LETTER", 8.50, 11.00 }, ;
|
||||
@@ -847,7 +847,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:PageOrient( _cPageOrient )
|
||||
#else
|
||||
METHOD PageOrient( _cPageOrient )
|
||||
METHOD PageOrient( _cPageOrient )
|
||||
#endif
|
||||
|
||||
DEFAULT _cPageOrient TO "P"
|
||||
@@ -861,7 +861,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:PageNumber( n )
|
||||
#else
|
||||
METHOD PageNumber( n )
|
||||
METHOD PageNumber( n )
|
||||
#endif
|
||||
|
||||
DEFAULT n TO 0
|
||||
@@ -875,7 +875,7 @@ RETURN ::aReport[ REPORTPAGE ]
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Reverse( cString )
|
||||
#else
|
||||
METHOD Reverse( cString )
|
||||
METHOD Reverse( cString )
|
||||
#endif
|
||||
|
||||
RETURN cString + chr(255)
|
||||
@@ -885,7 +885,7 @@ RETURN cString + chr(255)
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:RJust( cString, nRow, nCol, cUnits, lExact, cId )
|
||||
#else
|
||||
METHOD RJust( cString, nRow, nCol, cUnits, lExact, cId )
|
||||
METHOD RJust( cString, nRow, nCol, cUnits, lExact, cId )
|
||||
#endif
|
||||
|
||||
local nLen, nAdj := 1.0, nAt
|
||||
@@ -918,7 +918,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:SetFont( _cFont, _nType, _nSize, cId )
|
||||
#else
|
||||
METHOD SetFont( _cFont, _nType, _nSize, cId )
|
||||
METHOD SetFont( _cFont, _nType, _nSize, cId )
|
||||
#endif
|
||||
|
||||
DEFAULT _cFont TO "Times"
|
||||
@@ -952,7 +952,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:SetLPI(_nLpi)
|
||||
#else
|
||||
METHOD SetLPI(_nLpi)
|
||||
METHOD SetLPI(_nLpi)
|
||||
#endif
|
||||
|
||||
local cLpi := alltrim(str(_nLpi))
|
||||
@@ -969,7 +969,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:StringB( cString )
|
||||
#else
|
||||
METHOD StringB( cString )
|
||||
METHOD StringB( cString )
|
||||
#endif
|
||||
|
||||
cString := strtran( cString, "(", "\(" )
|
||||
@@ -982,7 +982,7 @@ RETURN cString
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:TextCount( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits )
|
||||
#else
|
||||
METHOD TextCount( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits )
|
||||
METHOD TextCount( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits )
|
||||
#endif
|
||||
|
||||
RETURN ::Text( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits, .f. )
|
||||
@@ -992,7 +992,7 @@ RETURN ::Text( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits, .f. )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Text( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits, cColor, lPrint )
|
||||
#else
|
||||
METHOD Text( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits, cColor, lPrint )
|
||||
METHOD Text( cString, nTop, nLeft, nLength, nTab, nJustify, cUnits, cColor, lPrint )
|
||||
#endif
|
||||
|
||||
local cDelim := chr(0)+chr(9)+chr(10)+chr(13)+chr(26)+chr(32)+chr(138)+chr(141)
|
||||
@@ -1001,7 +1001,7 @@ local lParagraph, nSpace, nNew, nTokenLen, nCRLF, nTokens, nLen
|
||||
|
||||
DEFAULT nTab TO -1
|
||||
DEFAULT cUnits TO "R"
|
||||
DEFAULT nJustify TO 4
|
||||
DEFAULT nJustify TO 4
|
||||
DEFAULT lPrint TO .t.
|
||||
DEFAULT cColor TO ""
|
||||
|
||||
@@ -1111,7 +1111,7 @@ RETURN nLines
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:UnderLine( cString )
|
||||
#else
|
||||
METHOD UnderLine( cString )
|
||||
METHOD UnderLine( cString )
|
||||
#endif
|
||||
|
||||
RETURN cString + chr(254)
|
||||
@@ -1121,10 +1121,10 @@ RETURN cString + chr(254)
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:OpenHeader( cFile )
|
||||
#else
|
||||
METHOD OpenHeader( cFile )
|
||||
METHOD OpenHeader( cFile )
|
||||
#endif
|
||||
|
||||
local nAt, cCmd
|
||||
local nAt, cCmd
|
||||
|
||||
DEFAULT cFile TO ""
|
||||
|
||||
@@ -1134,7 +1134,7 @@ DEFAULT cFile TO ""
|
||||
at( " ", cFile ) > 0 .or. ;
|
||||
( at( " ", cFile ) == 0 .and. len( cFile ) > 8 ) .or. ;
|
||||
( ( nAt := at( ".", cFile )) > 0 .and. len( substr( cFile, nAt + 1 )) > 3 )
|
||||
|
||||
|
||||
cCmd := "copy " + cFile + " temp.tmp > nul"
|
||||
RunExternal( cCmd )
|
||||
|
||||
@@ -1154,7 +1154,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:EditOnHeader()
|
||||
#else
|
||||
METHOD EditOnHeader()
|
||||
METHOD EditOnHeader()
|
||||
#endif
|
||||
|
||||
::aReport[ HEADEREDIT ] := .t.
|
||||
@@ -1167,7 +1167,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:EditOffHeader()
|
||||
#else
|
||||
METHOD EditOffHeader()
|
||||
METHOD EditOffHeader()
|
||||
#endif
|
||||
|
||||
::aReport[ HEADEREDIT ] := .f.
|
||||
@@ -1180,7 +1180,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:CloseHeader()
|
||||
#else
|
||||
METHOD CloseHeader()
|
||||
METHOD CloseHeader()
|
||||
#endif
|
||||
|
||||
::aReport[ HEADER ] := {}
|
||||
@@ -1192,7 +1192,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:DeleteHeader( cId )
|
||||
#else
|
||||
METHOD DeleteHeader( cId )
|
||||
METHOD DeleteHeader( cId )
|
||||
#endif
|
||||
|
||||
local nRet := -1, nId
|
||||
@@ -1211,7 +1211,7 @@ RETURN nRet
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:EnableHeader( cId )
|
||||
#else
|
||||
METHOD EnableHeader( cId )
|
||||
METHOD EnableHeader( cId )
|
||||
#endif
|
||||
|
||||
local nId
|
||||
@@ -1228,7 +1228,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:DisableHeader( cId )
|
||||
#else
|
||||
METHOD DisableHeader( cId )
|
||||
METHOD DisableHeader( cId )
|
||||
#endif
|
||||
|
||||
local nId
|
||||
@@ -1245,7 +1245,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:SaveHeader( cFile )
|
||||
#else
|
||||
METHOD SaveHeader( cFile )
|
||||
METHOD SaveHeader( cFile )
|
||||
#endif
|
||||
|
||||
local cCmd
|
||||
@@ -1262,7 +1262,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Header( cFunction, cId, arr )
|
||||
#else
|
||||
METHOD Header( cFunction, cId, arr )
|
||||
METHOD Header( cFunction, cId, arr )
|
||||
#endif
|
||||
|
||||
local nId, nI, nLen, nIdLen
|
||||
@@ -1304,7 +1304,7 @@ RETURN cId
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:DrawHeader()
|
||||
#else
|
||||
METHOD DrawHeader()
|
||||
METHOD DrawHeader()
|
||||
#endif
|
||||
|
||||
local nI, _nFont, _nSize, nLen := len( ::aReport[ HEADER ] )
|
||||
@@ -1362,7 +1362,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Margins( nTop, nLeft, nBottom )
|
||||
#else
|
||||
METHOD Margins( nTop, nLeft, nBottom )
|
||||
METHOD Margins( nTop, nLeft, nBottom )
|
||||
#endif
|
||||
|
||||
local nI, nLen := len( ::aReport[ HEADER ] ), nTemp, aTemp, nHeight
|
||||
@@ -1540,7 +1540,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:CreateHeader( _file, _size, _orient, _lpi, _width )
|
||||
#else
|
||||
METHOD CreateHeader( _file, _size, _orient, _lpi, _width )
|
||||
METHOD CreateHeader( _file, _size, _orient, _lpi, _width )
|
||||
#endif
|
||||
|
||||
local ;
|
||||
@@ -1640,7 +1640,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:ImageInfo( cFile )
|
||||
#else
|
||||
METHOD ImageInfo( cFile )
|
||||
METHOD ImageInfo( cFile )
|
||||
#endif
|
||||
|
||||
local cTemp := upper(substr( cFile, rat(".", cFile) + 1 )), aTemp := {}
|
||||
@@ -1657,7 +1657,7 @@ RETURN aTemp
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:TIFFInfo( cFile )
|
||||
#else
|
||||
METHOD TIFFInfo( cFile )
|
||||
METHOD TIFFInfo( cFile )
|
||||
#endif
|
||||
|
||||
local c40 := chr(0)+chr(0)+chr(0)+chr(0)
|
||||
@@ -1832,7 +1832,7 @@ return aTemp
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:JPEGInfo( cFile )
|
||||
#else
|
||||
METHOD JPEGInfo( cFile )
|
||||
METHOD JPEGInfo( cFile )
|
||||
#endif
|
||||
|
||||
local c255, nAt, nHandle
|
||||
@@ -1870,7 +1870,7 @@ return aTemp
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookCount( nRecno, nCurLevel )
|
||||
#else
|
||||
METHOD BookCount( nRecno, nCurLevel )
|
||||
METHOD BookCount( nRecno, nCurLevel )
|
||||
#endif
|
||||
|
||||
local nTempLevel, nCount := 0, nLen := len( ::aReport[ BOOKMARK ] )
|
||||
@@ -1893,7 +1893,7 @@ return -1 * nCount
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookFirst( nRecno, nCurLevel, nObj )
|
||||
#else
|
||||
METHOD BookFirst( nRecno, nCurLevel, nObj )
|
||||
METHOD BookFirst( nRecno, nCurLevel, nObj )
|
||||
#endif
|
||||
|
||||
local nFirst := 0, nLen := len( ::aReport[ BOOKMARK ] )
|
||||
@@ -1910,7 +1910,7 @@ return IIF( nFirst == 0, nFirst, nObj + nFirst )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookLast( nRecno, nCurLevel, nObj )
|
||||
#else
|
||||
METHOD BookLast( nRecno, nCurLevel, nObj )
|
||||
METHOD BookLast( nRecno, nCurLevel, nObj )
|
||||
#endif
|
||||
|
||||
local nLast := 0, nLen := len( ::aReport[ BOOKMARK ] )
|
||||
@@ -1932,7 +1932,7 @@ return IIF( nLast == 0, nLast, nObj + nLast )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookNext( nRecno, nCurLevel, nObj )
|
||||
#else
|
||||
METHOD BookNext( nRecno, nCurLevel, nObj )
|
||||
METHOD BookNext( nRecno, nCurLevel, nObj )
|
||||
#endif
|
||||
|
||||
local nTempLevel, nNext := 0, nLen := len( ::aReport[ BOOKMARK ] )
|
||||
@@ -1956,7 +1956,7 @@ return IIF( nNext == 0, nNext, nObj + nNext )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookParent( nRecno, nCurLevel, nObj )
|
||||
#else
|
||||
METHOD BookParent( nRecno, nCurLevel, nObj )
|
||||
METHOD BookParent( nRecno, nCurLevel, nObj )
|
||||
#endif
|
||||
|
||||
local nTempLevel
|
||||
@@ -1977,7 +1977,7 @@ return IIF( nParent == 0, nObj - 1, nObj + nParent )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:BookPrev( nRecno, nCurLevel, nObj )
|
||||
#else
|
||||
METHOD BookPrev( nRecno, nCurLevel, nObj )
|
||||
METHOD BookPrev( nRecno, nCurLevel, nObj )
|
||||
#endif
|
||||
|
||||
local nTempLevel
|
||||
@@ -2002,7 +2002,7 @@ return IIF( nPrev == 0, nPrev, nObj + nPrev )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:CheckLine( nRow )
|
||||
#else
|
||||
METHOD CheckLine( nRow )
|
||||
METHOD CheckLine( nRow )
|
||||
#endif
|
||||
|
||||
IF nRow + ::aReport[ PDFTOP] > ::aReport[ PDFBOTTOM ]
|
||||
@@ -2017,7 +2017,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:GetFontInfo( cParam )
|
||||
#else
|
||||
METHOD GetFontInfo( cParam )
|
||||
METHOD GetFontInfo( cParam )
|
||||
#endif
|
||||
|
||||
local cRet
|
||||
@@ -2040,7 +2040,7 @@ return cRet
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:M2R( mm )
|
||||
#else
|
||||
METHOD M2R( mm )
|
||||
METHOD M2R( mm )
|
||||
#endif
|
||||
|
||||
return int( ::aReport[ LPI ] * mm / 25.4 )
|
||||
@@ -2050,7 +2050,7 @@ return int( ::aReport[ LPI ] * mm / 25.4 )
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:M2X( n )
|
||||
#else
|
||||
METHOD M2X( n )
|
||||
METHOD M2X( n )
|
||||
#endif
|
||||
|
||||
return n * 72 / 25.4
|
||||
@@ -2058,9 +2058,9 @@ return n * 72 / 25.4
|
||||
//-------------------------\\
|
||||
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:M2Y( n )
|
||||
METHOD tPdf:M2Y( n )
|
||||
#else
|
||||
METHOD M2Y( n )
|
||||
METHOD M2Y( n )
|
||||
#endif
|
||||
|
||||
return ::aReport[ PAGEY ] - n * 72 / 25.4
|
||||
@@ -2070,7 +2070,7 @@ return ::aReport[ PAGEY ] - n * 72 / 25.4
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:R2D( nRow )
|
||||
#else
|
||||
METHOD R2D( nRow )
|
||||
METHOD R2D( nRow )
|
||||
#endif
|
||||
|
||||
return ::aReport[ PAGEY ] - nRow * 72 / ::aReport[ LPI ]
|
||||
@@ -2080,7 +2080,7 @@ return ::aReport[ PAGEY ] - nRow * 72 / ::aReport[ LPI ]
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:R2M( nRow )
|
||||
#else
|
||||
METHOD R2M( nRow )
|
||||
METHOD R2M( nRow )
|
||||
#endif
|
||||
|
||||
return 25.4 * nRow / ::aReport[ LPI ]
|
||||
@@ -2090,7 +2090,7 @@ return 25.4 * nRow / ::aReport[ LPI ]
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:X2M( n )
|
||||
#else
|
||||
METHOD X2M( n )
|
||||
METHOD X2M( n )
|
||||
#endif
|
||||
|
||||
return n * 25.4 / 72
|
||||
@@ -2100,7 +2100,7 @@ return n * 25.4 / 72
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:TextPrint( nI, nLeft, lParagraph, nJustify, nSpace, nNew, nLength, nLineLen, nLines, nStart, cString, cDelim, cColor, lPrint )
|
||||
#else
|
||||
METHOD TextPrint( nI, nLeft, lParagraph, nJustify, nSpace, nNew, nLength, nLineLen, nLines, nStart, cString, cDelim, cColor, lPrint )
|
||||
METHOD TextPrint( nI, nLeft, lParagraph, nJustify, nSpace, nNew, nLength, nLineLen, nLines, nStart, cString, cDelim, cColor, lPrint )
|
||||
#endif
|
||||
|
||||
local nFinish, nL, nB, nJ, cToken, nRow
|
||||
@@ -2151,7 +2151,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:TextNextPara( cString, cDelim, nI )
|
||||
#else
|
||||
METHOD TextNextPara( cString, cDelim, nI )
|
||||
METHOD TextNextPara( cString, cDelim, nI )
|
||||
#endif
|
||||
|
||||
local nAt, cAt, nCRLF, nNew, nRat, nRet := 0
|
||||
@@ -2171,7 +2171,7 @@ return nRet
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:ClosePage()
|
||||
#else
|
||||
METHOD ClosePage()
|
||||
METHOD ClosePage()
|
||||
#endif
|
||||
|
||||
local cTemp, cBuffer, nBuffer, nRead, nI, k, nImage, nFont, nImageHandle
|
||||
@@ -2360,7 +2360,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:FilePrint( cFile )
|
||||
#else
|
||||
METHOD FilePrint( cFile )
|
||||
METHOD FilePrint( cFile )
|
||||
#endif
|
||||
local cPathAcro := "C:\progra~1\Adobe\Acroba~1.0\Reader"
|
||||
local cRun := cPathAcro + "\AcroRd32.exe /t " + cFile + " " + ;
|
||||
@@ -2379,7 +2379,7 @@ RETURN self
|
||||
#ifdef __XPP__
|
||||
METHOD tPdf:Execute( cFile )
|
||||
#else
|
||||
METHOD Execute( cFile )
|
||||
METHOD Execute( cFile )
|
||||
#endif
|
||||
// Replace cPathAcro with the path at your system
|
||||
local cPathAcro := "C:\progra~1\Adobe\Acroba~1.0\Reader"
|
||||
@@ -2628,8 +2628,8 @@ local lRet := .t.
|
||||
|
||||
#ifdef __HARBOUR__
|
||||
if cVerb != nil
|
||||
// TOFIX: This requires hbwhat32, which in turns requires xhb.
|
||||
// This has to solved differently.
|
||||
// TOFIX: This requires hbwhat, which in turns requires xhb.
|
||||
// This has to be solved differently.
|
||||
// ShellExecute( GetDeskTopWindow(), cVerb, cFile, , , 1 )
|
||||
HB_SYMBOL_UNUSED( cFile )
|
||||
else
|
||||
|
||||
@@ -51,35 +51,35 @@
|
||||
*/
|
||||
|
||||
#ifndef __HBWAPI_H
|
||||
#define __HBWAPI_H
|
||||
#define __HBWAPI_H
|
||||
|
||||
#define wapi_par_WNDPROC( n ) ( ( WNDPROC ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_WPARAM( n ) ( ( WPARAM ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_LPARAM( n ) ( ( LPARAM ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HWND( n ) ( ( HWND ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HDC( n ) ( ( HDC ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HANDLE( n ) ( ( HANDLE ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HGDIOBJ( n ) ( ( HGDIOBJ ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HBRUSH( n ) ( ( HBRUSH ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HBITMAP( n ) ( ( HBITMAP ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HICON( n ) ( ( HICON ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HIMAGELIST( n ) ( ( HIMAGELIST ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HFONT( n ) ( ( HFONT ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HINSTANCE( n ) ( ( HINSTANCE ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_COLORREF( n ) ( ( COLORREF ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_WNDPROC( n ) ( ( WNDPROC ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_WPARAM( n ) ( ( WPARAM ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_LPARAM( n ) ( ( LPARAM ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HWND( n ) ( ( HWND ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HDC( n ) ( ( HDC ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HANDLE( n ) ( ( HANDLE ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HGDIOBJ( n ) ( ( HGDIOBJ ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HBRUSH( n ) ( ( HBRUSH ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HBITMAP( n ) ( ( HBITMAP ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HICON( n ) ( ( HICON ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HIMAGELIST( n ) ( ( HIMAGELIST ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HFONT( n ) ( ( HFONT ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_HINSTANCE( n ) ( ( HINSTANCE ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
#define wapi_par_COLORREF( n ) ( ( COLORREF ) ( ISNUM( n ) ? ( HB_PTRDIFF ) hb_parnint( n ) : ( HB_PTRDIFF ) hb_parptr( n ) ) )
|
||||
|
||||
#define wapi_par_STRUCT( n ) ( hb_parc( n ) )
|
||||
#define wapi_par_STRUCT( n ) ( hb_parc( n ) )
|
||||
|
||||
#define wapi_par_BOOL( n ) ( hb_parl( n ) )
|
||||
#define wapi_par_INT( n ) ( hb_parni( n ) )
|
||||
#define wapi_par_UINT( n ) ( ( UINT ) hb_parni( n ) )
|
||||
#define wapi_par_LONG( n ) ( ( LONG ) hb_parnl( n ) )
|
||||
#define wapi_par_BOOL( n ) ( hb_parl( n ) )
|
||||
#define wapi_par_INT( n ) ( hb_parni( n ) )
|
||||
#define wapi_par_UINT( n ) ( ( UINT ) hb_parni( n ) )
|
||||
#define wapi_par_LONG( n ) ( ( LONG ) hb_parnl( n ) )
|
||||
|
||||
#define wapi_ret_NI( i ) ( hb_retni( i ) )
|
||||
#define wapi_ret_L( b ) ( hb_retl( b ) )
|
||||
#define wapi_ret_NI( i ) ( hb_retni( i ) )
|
||||
#define wapi_ret_L( b ) ( hb_retl( b ) )
|
||||
|
||||
#define wapi_ret_HANDLE( h ) ( hb_retptr( h ) )
|
||||
#define wapi_ret_HRESULT( hr ) ( hb_retptr( hr ) )
|
||||
#define wapi_ret_COLORREF( cr ) ( hb_retnint( ( HB_PTRDIFF ) cr ) )
|
||||
#define wapi_ret_HANDLE( h ) ( hb_retptr( h ) )
|
||||
#define wapi_ret_HRESULT( hr ) ( hb_retptr( hr ) )
|
||||
#define wapi_ret_COLORREF( cr ) ( hb_retnint( ( HB_PTRDIFF ) cr ) )
|
||||
|
||||
#endif /* __HBWAPI_H */
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* Pritpal Bedi <pritpal@vouchcac.com> 14Feb2009
|
||||
* www - http://www.harbour.org
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* Pritpal Bedi <pritpal@vouchcac.com> 17Feb2009
|
||||
* www - http://www.harbour.org
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -224,7 +223,3 @@ HB_FUNC( WAPI_SHOWSCROLLBAR )
|
||||
wapi_par_BOOL( 3 ) ) );
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
10
harbour/utils/hbmk/examples/contrib.hbp
Normal file
10
harbour/utils/hbmk/examples/contrib.hbp
Normal file
@@ -0,0 +1,10 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
# Don't add here any contribs which have external dependencies
|
||||
# or aren't equally available for all supported Harbour platforms.
|
||||
# Thank you. [vszakats]
|
||||
|
||||
# Some popular and portable Harbour contribs
|
||||
libs=hbct hbmzip hbtip hbcrypt
|
||||
@@ -5,5 +5,5 @@
|
||||
# Used by Harbour core
|
||||
{win}libs=kernel32 user32 wsock32 advapi32 gdi32
|
||||
# Others
|
||||
{win}libs=winspool comctl32 comdlg32 shell32 ole32 oleaut32 uuid odbc32 mpr winmm
|
||||
{win}libs=winspool comctl32 comdlg32 shell32 ole32 oleaut32 uuid odbc32 mpr winmm mapi32
|
||||
{win&!bcc32}libs=odbccp32
|
||||
|
||||
@@ -67,14 +67,30 @@
|
||||
/* TODO: Support for more compilers/platforms. */
|
||||
/* TODO: Cleanup on variable names. */
|
||||
|
||||
/* + 2. compiler autodetection for two kinds of dir layout. */
|
||||
/* * 6. bldflags -> bldflagsC and bldflagsPRG */
|
||||
/* * 7. output file name auto detection should respect the compilation
|
||||
mode, f.e. hbmk -cmp a.prg it should generate a.{o,obj} not 'a'
|
||||
or 'a.exe'. QUESTION: What to do for multiple .prgs? */
|
||||
/* * 8. Stripping "lib" ".so/.dll/.a" ? */
|
||||
/* * 9. We should have support for passing object archives (.a) in
|
||||
link file list and then pass it to GCC without -l parameter.
|
||||
Using 'mylib.a' and '-lmylib' as GCC parameters has different
|
||||
meaning so mylib.a should not be converted to -lmylib but simply
|
||||
passed to GCC as is. */
|
||||
/* ! 12. hbcplr to add as a lib both when shared and static. */
|
||||
|
||||
ANNOUNCE HB_GTSYS
|
||||
REQUEST HB_GT_CGI_DEFAULT
|
||||
|
||||
REQUEST hbm_ARCH
|
||||
REQUEST hbm_COMP
|
||||
|
||||
THREAD STATIC t_lQuiet := .F.
|
||||
THREAD STATIC t_lInfo := .T. /* Enabled while hbmk gets matured, should later set to .F. */
|
||||
THREAD STATIC t_cCOMP
|
||||
THREAD STATIC t_cARCH
|
||||
|
||||
THREAD STATIC t_lQuiet
|
||||
|
||||
FUNCTION Main( ... )
|
||||
|
||||
LOCAL aLIB_BASE1 := {;
|
||||
@@ -140,6 +156,7 @@ FUNCTION Main( ... )
|
||||
LOCAL s_aOPTPRG
|
||||
LOCAL s_aOPTC
|
||||
LOCAL s_aOPTL
|
||||
LOCAL s_cPROGDIR
|
||||
LOCAL s_cPROGNAME
|
||||
LOCAL s_cMAPNAME
|
||||
LOCAL s_aOBJ
|
||||
@@ -180,6 +197,7 @@ FUNCTION Main( ... )
|
||||
LOCAL fhnd
|
||||
LOCAL lNOHBP
|
||||
LOCAL lSysLoc
|
||||
LOCAL cSelfCOMP
|
||||
|
||||
LOCAL lStopAfterHarbour := .F.
|
||||
LOCAL lStopAfterCComp := .F.
|
||||
@@ -187,6 +205,8 @@ FUNCTION Main( ... )
|
||||
LOCAL aParams
|
||||
LOCAL cParam
|
||||
|
||||
LOCAL cDir, cName, cExt
|
||||
|
||||
LOCAL cDL_Version := hb_ntos( hb_Version( HB_VERSION_MAJOR ) ) + hb_ntos( hb_Version( HB_VERSION_MINOR ) )
|
||||
|
||||
IF PCount() == 0
|
||||
@@ -196,56 +216,93 @@ FUNCTION Main( ... )
|
||||
RETURN 9
|
||||
ENDIF
|
||||
|
||||
t_lQuiet := .F.
|
||||
FOR EACH cParam IN hb_AParams()
|
||||
IF Lower( cParam ) == "-q"
|
||||
t_lQuiet := .T.
|
||||
EXIT
|
||||
ENDIF
|
||||
DO CASE
|
||||
CASE Lower( cParam ) == "-q" ; t_lQuiet := .T. ; t_lInfo := .F.
|
||||
CASE Lower( Left( cParam, 6 ) ) == "-comp=" ; t_cCOMP := SubStr( cParam, 7 )
|
||||
CASE Lower( Left( cParam, 6 ) ) == "-arch=" ; t_cARCH := SubStr( cParam, 7 )
|
||||
CASE Lower( cParam ) == "-hbcc" ; t_lQuiet := .T. ; t_lInfo := .F. ; lStopAfterHarbour := .T.
|
||||
CASE Lower( cParam ) == "-hbcmp" ; t_lQuiet := .T. ; t_lInfo := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T.
|
||||
CASE Lower( cParam ) == "-hblnk" ; t_lQuiet := .T. ; t_lInfo := .F.
|
||||
CASE Lower( cParam ) == "-info" ; t_lInfo := .T.
|
||||
ENDCASE
|
||||
NEXT
|
||||
|
||||
SWITCH Lower( FN_NameGet( hb_argv( 0 ) ) )
|
||||
CASE "hbcc"
|
||||
t_lQuiet := .T. ; t_lInfo := .F. ; lStopAfterHarbour := .T.
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Enabled -hbcc option." + hb_osNewLine() )
|
||||
ENDIF
|
||||
EXIT
|
||||
CASE "hbcmp"
|
||||
t_lQuiet := .T. ; t_lInfo := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T.
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Enabled -hbcmp option." + hb_osNewLine() )
|
||||
ENDIF
|
||||
EXIT
|
||||
CASE "hblnk"
|
||||
t_lQuiet := .T. ; t_lInfo := .F.
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Enabled -hblnk option." + hb_osNewLine() )
|
||||
ENDIF
|
||||
EXIT
|
||||
ENDSWITCH
|
||||
|
||||
IF ! t_lQuiet
|
||||
ShowHeader()
|
||||
ENDIF
|
||||
|
||||
SWITCH Lower( FN_NameGet( hb_argv( 0 ) ) )
|
||||
CASE "hbcc"
|
||||
lStopAfterHarbour := .T.
|
||||
IF ! t_lQuiet
|
||||
OutStd( "hbmk: Enabled -cc option." + hb_osNewLine() )
|
||||
ENDIF
|
||||
EXIT
|
||||
CASE "hbcmp"
|
||||
lStopAfterCComp := .T.
|
||||
IF ! t_lQuiet
|
||||
OutStd( "hbmk: Enabled -cmp option." + hb_osNewLine() )
|
||||
ENDIF
|
||||
EXIT
|
||||
ENDSWITCH
|
||||
/* Load architecture / compiler settings (compatibility) */
|
||||
|
||||
IF Empty( t_cARCH )
|
||||
t_cARCH := Lower( GetEnv( "HB_ARCHITECTURE" ) )
|
||||
ENDIF
|
||||
IF Empty( t_cCOMP )
|
||||
t_cCOMP := Lower( GetEnv( "HB_COMPILER" ) )
|
||||
ENDIF
|
||||
|
||||
/* Autodetect architecture */
|
||||
|
||||
t_cARCH := Lower( GetEnv( "HB_ARCHITECTURE" ) )
|
||||
IF Empty( t_cARCH )
|
||||
|
||||
/* NOTE: Keep this in sync manually. All compilers should be listed here,
|
||||
which are supported on one architecture only. In the future this
|
||||
should be automatically extracted from a comp/arch matrix. */
|
||||
SWITCH t_cCOMP
|
||||
CASE "mingw"
|
||||
CASE "mingwce"
|
||||
CASE "msvc"
|
||||
CASE "bcc32"
|
||||
CASE "xcc"
|
||||
CASE "pocc"
|
||||
CASE "dmc"
|
||||
t_cARCH := "win"
|
||||
EXIT
|
||||
CASE "djgpp"
|
||||
t_cARCH := "dos"
|
||||
EXIT
|
||||
OTHERWISE
|
||||
#if defined( __PLATFORM__BSD )
|
||||
t_cARCH := "bsd"
|
||||
t_cARCH := "bsd"
|
||||
#elif defined( __PLATFORM__DARWIN )
|
||||
t_cARCH := "darwin"
|
||||
t_cARCH := "darwin"
|
||||
#elif defined( __PLATFORM__DOS )
|
||||
t_cARCH := "dos"
|
||||
t_cARCH := "dos"
|
||||
#elif defined( __PLATFORM__HPUX )
|
||||
t_cARCH := "hpux"
|
||||
t_cARCH := "hpux"
|
||||
#elif defined( __PLATFORM__LINUX )
|
||||
t_cARCH := "linux"
|
||||
t_cARCH := "linux"
|
||||
#elif defined( __PLATFORM__OS2 )
|
||||
t_cARCH := "os2"
|
||||
t_cARCH := "os2"
|
||||
#elif defined( __PLATFORM__SUNOS )
|
||||
t_cARCH := "sunos"
|
||||
t_cARCH := "sunos"
|
||||
#elif defined( __PLATFORM__WINDOWS )
|
||||
t_cARCH := "win"
|
||||
t_cARCH := "win"
|
||||
#endif
|
||||
ENDSWITCH
|
||||
IF ! Empty( t_cARCH )
|
||||
IF ! t_lQuiet
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Autodetected HB_ARCHITECTURE: " + t_cARCH + hb_osNewLine() )
|
||||
ENDIF
|
||||
ENDIF
|
||||
@@ -264,22 +321,24 @@ FUNCTION Main( ... )
|
||||
s_aLIBHBGT := { "gttrm", "gtxwc" }
|
||||
CASE t_cARCH == "dos"
|
||||
aCOMPDET := { { "gcc.exe" , "djgpp" },;
|
||||
{ "wpp386.exe", "owatcom" } }
|
||||
{ "wpp386.exe", "owatcom" } } /* TODO: Add full support for wcc386.exe */
|
||||
aCOMPSUP := { "djgpp", "gcc", "owatcom", "rsx32" }
|
||||
cBin_CompPRG := "harbour.exe"
|
||||
s_aLIBHBGT := { "gtdos" }
|
||||
CASE t_cARCH == "os2"
|
||||
aCOMPDET := { { "gcc.exe" , "gcc" },;
|
||||
{ "wpp386.exe", "owatcom" },;
|
||||
{ "wpp386.exe", "owatcom" },; /* TODO: Add full support for wcc386.exe */
|
||||
{ "icc.exe" , "icc" } }
|
||||
aCOMPSUP := { "gcc", "owatcom", "icc" }
|
||||
cBin_CompPRG := "harbour.exe"
|
||||
s_aLIBHBGT := { "gtos2" }
|
||||
CASE t_cARCH == "win"
|
||||
aCOMPDET := { { "gcc.exe" , "mingw" },;
|
||||
/* Ordering is significant.
|
||||
owatcom also keeps a cl.exe in it's binary dir. */
|
||||
aCOMPDET := { { "gcc.exe" , "mingw" },; /* TODO: Add full support for g++.exe */
|
||||
{ "wpp386.exe", "owatcom" },; /* TODO: Add full support for wcc386.exe */
|
||||
{ "cl.exe" , "msvc" },;
|
||||
{ "bcc32.exe" , "bcc32" },;
|
||||
{ "wpp386.exe", "owatcom" },;
|
||||
{ "pocc.exe" , "pocc" },;
|
||||
{ "dmc.exe" , "dmc" },;
|
||||
{ "icc.exe" , "icc" },;
|
||||
@@ -296,22 +355,38 @@ FUNCTION Main( ... )
|
||||
|
||||
/* Autodetect compiler */
|
||||
|
||||
t_cCOMP := Lower( GetEnv( "HB_COMPILER" ) )
|
||||
IF Empty( t_cCOMP )
|
||||
IF Len( aCOMPSUP ) == 1
|
||||
t_cCOMP := aCOMPSUP[ 1 ]
|
||||
ELSEIF t_cARCH == "linux"
|
||||
t_cCOMP := "gcc"
|
||||
ELSEIF ! Empty( aCOMPDET )
|
||||
FOR tmp := 1 TO Len( aCOMPDET )
|
||||
IF FindInPath( aCOMPDET[ tmp ][ 1 ] )
|
||||
t_cCOMP := aCOMPDET[ tmp ][ 2 ]
|
||||
EXIT
|
||||
ENDIF
|
||||
NEXT
|
||||
/* Which compiler was used to compile ourselves? */
|
||||
cSelfCOMP := SelfCOMP()
|
||||
/* Skip it for msvc, as it creates problems for other compilers. */
|
||||
IF !( cSelfCOMP $ "msvc" )
|
||||
/* Look for this compiler first */
|
||||
FOR tmp := 1 TO Len( aCOMPDET )
|
||||
IF aCOMPDET[ tmp ][ 2 ] == cSelfCOMP .AND. FindInPath( aCOMPDET[ tmp ][ 1 ] )
|
||||
t_cCOMP := aCOMPDET[ tmp ][ 2 ]
|
||||
EXIT
|
||||
ENDIF
|
||||
NEXT
|
||||
ELSE
|
||||
cSelfCOMP := ""
|
||||
ENDIF
|
||||
IF Empty( t_cCOMP )
|
||||
/* Check the rest of compilers */
|
||||
FOR tmp := 1 TO Len( aCOMPDET )
|
||||
IF !( aCOMPDET[ tmp ][ 2 ] == cSelfCOMP ) .AND. FindInPath( aCOMPDET[ tmp ][ 1 ] )
|
||||
t_cCOMP := aCOMPDET[ tmp ][ 2 ]
|
||||
EXIT
|
||||
ENDIF
|
||||
NEXT
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF ! Empty( t_cCOMP )
|
||||
IF ! t_lQuiet
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Autodetected HB_COMPILER: " + t_cCOMP + hb_osNewLine() )
|
||||
ENDIF
|
||||
ELSE
|
||||
@@ -342,11 +417,11 @@ FUNCTION Main( ... )
|
||||
|
||||
lSysLoc := .F.
|
||||
|
||||
s_cHB_BIN_INSTALL := DirAdaptPathSep( GetEnv( "HB_BIN_INSTALL" ) )
|
||||
s_cHB_LIB_INSTALL := DirAdaptPathSep( GetEnv( "HB_LIB_INSTALL" ) )
|
||||
s_cHB_INC_INSTALL := DirAdaptPathSep( GetEnv( "HB_INC_INSTALL" ) )
|
||||
s_cHB_BIN_INSTALL := PathSepToTarget( GetEnv( "HB_BIN_INSTALL" ) )
|
||||
s_cHB_LIB_INSTALL := PathSepToTarget( GetEnv( "HB_LIB_INSTALL" ) )
|
||||
s_cHB_INC_INSTALL := PathSepToTarget( GetEnv( "HB_INC_INSTALL" ) )
|
||||
|
||||
s_cHB_INSTALL_PREFIX := DirAdaptPathSep( GetEnv( "HB_INSTALL_PREFIX" ) )
|
||||
s_cHB_INSTALL_PREFIX := PathSepToTarget( GetEnv( "HB_INSTALL_PREFIX" ) )
|
||||
IF Empty( s_cHB_INSTALL_PREFIX )
|
||||
|
||||
DO CASE
|
||||
@@ -405,7 +480,7 @@ FUNCTION Main( ... )
|
||||
|
||||
AAddNotEmpty( s_aLIBPATH, s_cHB_LIB_INSTALL )
|
||||
|
||||
IF ! t_lQuiet
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Using Harbour: " + s_cHB_BIN_INSTALL + " " + s_cHB_INC_INSTALL + " " + s_cHB_LIB_INSTALL + hb_osNewLine() )
|
||||
ENDIF
|
||||
|
||||
@@ -440,6 +515,7 @@ FUNCTION Main( ... )
|
||||
s_aRESCMP := {}
|
||||
s_aLIBUSER := {}
|
||||
s_aOBJUSER := {}
|
||||
s_cPROGDIR := NIL
|
||||
s_cPROGNAME := NIL
|
||||
|
||||
/* Collect all command line parameters */
|
||||
@@ -486,7 +562,16 @@ FUNCTION Main( ... )
|
||||
FOR EACH cParam IN aParams
|
||||
|
||||
DO CASE
|
||||
CASE Lower( cParam ) == "-q" /* Simply ignore */
|
||||
CASE Lower( cParam ) == "-q" .OR. ;
|
||||
Lower( Left( cParam, 6 ) ) == "-comp=" .OR. ;
|
||||
Lower( Left( cParam, 6 ) ) == "-arch=" .OR. ;
|
||||
Lower( cParam ) == "-hbcc" .OR. ;
|
||||
Lower( cParam ) == "-hbcmp" .OR. ;
|
||||
Lower( cParam ) == "-hblnk" .OR. ;
|
||||
Lower( cParam ) == "-info"
|
||||
|
||||
/* Simply ignore. The were already processed in the first pass. */
|
||||
|
||||
CASE Lower( cParam ) == "-gui" ; s_lGUI := .T.
|
||||
CASE Lower( cParam ) == "-mwindows" ; s_lGUI := .T. /* Compatibility */
|
||||
CASE Lower( cParam ) == "-std" ; s_lGUI := .F.
|
||||
@@ -515,16 +600,25 @@ FUNCTION Main( ... )
|
||||
CASE Lower( cParam ) == "-trace" ; s_lTRACE := .T.
|
||||
CASE Lower( cParam ) == "-trace-" ; s_lTRACE := .F.
|
||||
CASE Lower( cParam ) == "-notrace" ; s_lTRACE := .F.
|
||||
CASE Lower( cParam ) == "-cc" ; lStopAfterHarbour := .T.
|
||||
CASE Lower( cParam ) == "-cmp" ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T.
|
||||
CASE Lower( Left( cParam, 3 ) ) == "-gt" ; DEFAULT s_cGT TO SubStr( cParam, 2 )
|
||||
CASE Left( cParam, 2 ) == "-o" ; s_cPROGNAME := DirAdaptPathSep( SubStr( cParam, 3 ) )
|
||||
CASE Left( cParam, 2 ) == "-o"
|
||||
|
||||
tmp := PathSepToSelf( SubStr( cParam, 3 ) )
|
||||
hb_FNameSplit( tmp, @cDir, @cName, @cExt )
|
||||
IF ! Empty( cDir ) .AND. Empty( cName ) .AND. Empty( cExt )
|
||||
/* Only a dir was passed, let's store that and pick a default name later. */
|
||||
s_cPROGDIR := cDir
|
||||
ELSE
|
||||
s_cPROGDIR := NIL
|
||||
s_cPROGNAME := tmp
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParam, 2 ) == "-l" .AND. ;
|
||||
Len( cParam ) > 2 .AND. ;
|
||||
!( Left( cParam, 3 ) == "-l-" ) ; AAddNotEmpty( s_aLIBUSER, DirAdaptPathSep( ArchCompFilter( SubStr( cParam, 3 ) ) ) )
|
||||
!( Left( cParam, 3 ) == "-l-" ) ; AAddNotEmpty( s_aLIBUSER, PathSepToTarget( ArchCompFilter( SubStr( cParam, 3 ) ) ) )
|
||||
CASE Left( cParam, 2 ) == "-L" .AND. ;
|
||||
Len( cParam ) > 2 ; AAddNotEmpty( s_aLIBPATH, DirAdaptPathSep( ArchCompFilter( SubStr( cParam, 3 ) ) ) )
|
||||
CASE Left( cParam, 1 ) == "-" ; AAdd( s_aOPTPRG , DirAdaptPathSep( cParam ) )
|
||||
Len( cParam ) > 2 ; AAddNotEmpty( s_aLIBPATH, PathSepToTarget( ArchCompFilter( SubStr( cParam, 3 ) ) ) )
|
||||
CASE Left( cParam, 1 ) == "-" ; AAdd( s_aOPTPRG , PathSepToTarget( cParam ) )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".hbp"
|
||||
|
||||
HBP_ProcessOne( cParam,;
|
||||
@@ -544,13 +638,13 @@ FUNCTION Main( ... )
|
||||
@s_lRUN,;
|
||||
@s_cGT )
|
||||
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".prg" ; AAdd( s_aPRG , DirAdaptPathSep( cParam ) ) ; DEFAULT s_cPROGNAME TO DirAdaptPathSep( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".rc" ; AAdd( s_aRESSRC , DirAdaptPathSep( cParam ) )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".res" ; AAdd( s_aRESCMP , DirAdaptPathSep( cParam ) )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) $ ".o|.obj" ; AAdd( s_aOBJUSER, DirAdaptPathSep( cParam ) ) ; DEFAULT s_cPROGNAME TO DirAdaptPathSep( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) $ ".c|.cpp" ; AAdd( s_aC , DirAdaptPathSep( cParam ) ) ; DEFAULT s_cPROGNAME TO DirAdaptPathSep( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) $ ".a|.lib" ; AAddNotEmpty( s_aLIBUSER, DirAdaptPathSep( ArchCompFilter( cParam ) ) )
|
||||
OTHERWISE ; AAdd( s_aPRG , DirAdaptPathSep( cParam ) ) ; DEFAULT s_cPROGNAME TO DirAdaptPathSep( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".prg" ; AAdd( s_aPRG , PathSepToTarget( cParam ) ) ; DEFAULT s_cPROGNAME TO PathSepToSelf( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".rc" ; AAdd( s_aRESSRC , PathSepToTarget( cParam ) )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) == ".res" ; AAdd( s_aRESCMP , PathSepToTarget( cParam ) )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) $ ".o|.obj" ; AAdd( s_aOBJUSER, PathSepToTarget( cParam ) ) ; DEFAULT s_cPROGNAME TO PathSepToSelf( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) $ ".c|.cpp" ; AAdd( s_aC , PathSepToTarget( cParam ) ) ; DEFAULT s_cPROGNAME TO PathSepToSelf( cParam )
|
||||
CASE Lower( FN_ExtGet( cParam ) ) $ ".a|.lib" ; AAddNotEmpty( s_aLIBUSER, PathSepToTarget( ArchCompFilter( cParam ) ) )
|
||||
OTHERWISE ; AAdd( s_aPRG , PathSepToTarget( cParam ) ) ; DEFAULT s_cPROGNAME TO PathSepToSelf( cParam )
|
||||
ENDCASE
|
||||
NEXT
|
||||
|
||||
@@ -574,10 +668,17 @@ FUNCTION Main( ... )
|
||||
ENDIF
|
||||
|
||||
/* Merge user libs from command line and envvar. Command line has priority. */
|
||||
s_aLIBUSER := ArrayAJoin( { s_aLIBUSER, ListToArray( DirAdaptPathSep( GetEnv( "HB_USER_LIBS" ) ) ) } )
|
||||
s_aLIBUSER := ArrayAJoin( { s_aLIBUSER, ListToArray( PathSepToTarget( GetEnv( "HB_USER_LIBS" ) ) ) } )
|
||||
|
||||
/* Strip extension from output name. */
|
||||
s_cMAPNAME := FN_ExtSet( s_cPROGNAME, ".map" )
|
||||
/* Combine output dir with output name. */
|
||||
IF ! Empty( s_cPROGDIR )
|
||||
hb_FNameSplit( s_cPROGNAME, @cDir, @cName, @cExt )
|
||||
s_cPROGNAME := hb_FNameMerge( iif( Empty( cDir ), s_cPROGDIR, cDir ), cName, cExt )
|
||||
ENDIF
|
||||
|
||||
/* Determine map name from output name. */
|
||||
s_cMAPNAME := PathSepToTarget( FN_ExtSet( s_cPROGNAME, ".map" ) )
|
||||
/* Set output name extension. */
|
||||
IF t_cARCH $ "os2|win|dos"
|
||||
s_cPROGNAME := FN_ExtSet( s_cPROGNAME, ".exe" )
|
||||
ELSE
|
||||
@@ -667,20 +768,26 @@ FUNCTION Main( ... )
|
||||
CASE ( t_cARCH == "bsd" .AND. t_cCOMP == "gcc" ) .OR. ;
|
||||
( t_cARCH == "darwin" .AND. t_cCOMP == "gcc" ) .OR. ;
|
||||
( t_cARCH == "hpux" .AND. t_cCOMP == "gcc" ) .OR. ;
|
||||
( t_cARCH == "linux" .AND. t_cCOMP $ "gcc|gpp" ) .OR. ;
|
||||
( t_cARCH == "sunos" .AND. t_cCOMP == "gcc" )
|
||||
( t_cARCH == "sunos" .AND. t_cCOMP == "gcc" ) .OR. ;
|
||||
( t_cARCH == "linux" .AND. t_cCOMP == "gcc" ) .OR. ;
|
||||
( t_cARCH == "linux" .AND. t_cCOMP == "gpp" )
|
||||
|
||||
cLibPrefix := "-l"
|
||||
cLibExt := NIL
|
||||
cObjExt := ".o"
|
||||
cBin_CompC := iif( t_cCOMP == "gpp", "g++", "gcc" )
|
||||
cOpt_CompC := "{C} {O} -O3 -o{E} {OPTC} -I{I} {A} {L}"
|
||||
cOpt_CompC := "{C} {O} -O3 -o{E} {OPTC} -I{I} {A}"
|
||||
cLibPathPrefix := "-L"
|
||||
cLibPathSep := " "
|
||||
IF s_lMAP
|
||||
cOpt_CompC += " -Wl,-Map " + s_cMAPNAME
|
||||
IF t_cARCH == "linux"
|
||||
cOpt_CompC += " -Wl,--start-group {L} -Wl,--end-group"
|
||||
ELSE
|
||||
cOpt_CompC += " {L}"
|
||||
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
|
||||
ENDIF
|
||||
IF s_lMAP
|
||||
cOpt_CompC += " -Wl,-Map " + s_cMAPNAME
|
||||
ENDIF
|
||||
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
|
||||
IF t_cARCH == "darwin"
|
||||
AAdd( s_aOPTC, "-no-cpp-precomp -Wno-long-double" )
|
||||
ENDIF
|
||||
@@ -709,19 +816,23 @@ FUNCTION Main( ... )
|
||||
cLibPathPrefix := "-L"
|
||||
cLibPathSep := " "
|
||||
IF s_lMAP
|
||||
cOpt_CompC += " -Wl,-Map " + s_cMAPNAME
|
||||
cOpt_CompC += " -Wl,-Map " + s_cMAPNAME
|
||||
ENDIF
|
||||
IF s_lSHARED
|
||||
cOpt_CompC += " -L{B}"
|
||||
cOpt_CompC += " -L{B}"
|
||||
ENDIF
|
||||
IF t_cCOMP == "gcc"
|
||||
cOpt_CompC += " -mno-cygwin"
|
||||
cOpt_CompC += " -mno-cygwin"
|
||||
ENDIF
|
||||
IF t_cCOMP == "rsxnt"
|
||||
cOpt_CompC += " -Zwin32"
|
||||
cOpt_CompC += " -Zwin32"
|
||||
ENDIF
|
||||
IF t_cCOMP == "mingw"
|
||||
cOpt_CompC += " -Wl,--start-group {L} -Wl,--end-group"
|
||||
ELSE
|
||||
cOpt_CompC += " {L}"
|
||||
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
|
||||
ENDIF
|
||||
cOpt_CompC += " {L}"
|
||||
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
|
||||
IF s_lSTRIP
|
||||
AAdd( s_aOPTC, "-s" )
|
||||
ENDIF
|
||||
@@ -736,14 +847,19 @@ FUNCTION Main( ... )
|
||||
cLibExt := NIL
|
||||
cObjExt := ".o"
|
||||
cBin_CompC := "gcc"
|
||||
cOpt_CompC := "{C} {O} -O3 -o{E} {OPTC} -I{I} {A} {L}{SCRIPT}"
|
||||
cOpt_CompC := "{C} {O} -O3 -o{E} {OPTC} -I{I} {A}{SCRIPT}"
|
||||
cLibPathPrefix := "-L"
|
||||
cLibPathSep := " "
|
||||
IF t_cCOMP == "rsx32"
|
||||
cOpt_CompC += " -Zrsx32"
|
||||
cOpt_CompC += " -Zrsx32"
|
||||
ENDIF
|
||||
IF t_cCOMP == "djgpp"
|
||||
cOpt_CompC += " -Wl,--start-group {L} -Wl,--end-group"
|
||||
ELSE
|
||||
cOpt_CompC += " {L}"
|
||||
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
|
||||
ENDIF
|
||||
s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "m" } )
|
||||
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
|
||||
IF s_lSTRIP
|
||||
AAdd( s_aOPTC, "-s" )
|
||||
ENDIF
|
||||
@@ -757,10 +873,12 @@ FUNCTION Main( ... )
|
||||
cLibExt := ".lib"
|
||||
cObjPrefix := "FILE "
|
||||
cObjExt := ".obj"
|
||||
cLibPathPrefix := "LIBPATH "
|
||||
cLibPathSep := " "
|
||||
cBin_CompC := "wpp386"
|
||||
cOpt_CompC := "-j -w3 -5s -5r -fp5 -oxehtz -zq -zt0 -bt=DOS {OPTC} {C}"
|
||||
cBin_Link := "wlink"
|
||||
cOpt_Link := "OP osn=DOS OP stack=65536 OP CASEEXACT OP stub=cwstub.exe {OPTL} NAME {E} {O} {L}{SCRIPT}"
|
||||
cOpt_Link := "OP osn=DOS OP stack=65536 OP CASEEXACT OP stub=cwstub.exe {OPTL} NAME {E} {O} {A} {L}{SCRIPT}"
|
||||
IF s_lDEBUG
|
||||
cOpt_Link := "DEBUG " + cOpt_Link
|
||||
ENDIF
|
||||
@@ -770,10 +888,12 @@ FUNCTION Main( ... )
|
||||
cLibExt := ".lib"
|
||||
cObjPrefix := "FILE "
|
||||
cObjExt := ".obj"
|
||||
cLibPathPrefix := "LIBPATH "
|
||||
cLibPathSep := " "
|
||||
cBin_CompC := "wpp386"
|
||||
cOpt_CompC := "-j -w3 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=NT {OPTC} {C}"
|
||||
cOpt_CompC := "-w3 -5s -5r -fp5 -onaehtzr -zq -zt0 -bt=NT -oi+ -s {OPTC} {C}"
|
||||
cBin_Link := "wlink"
|
||||
cOpt_Link := "OP osn=NT OP stack=65536 OP CASEEXACT {OPTL} NAME {E} {O} {L}{SCRIPT}"
|
||||
cOpt_Link := "OP osn=NT OP stack=65536 OP CASEEXACT {OPTL} NAME {E} {O} {A} {L}{SCRIPT}"
|
||||
IF s_lDEBUG
|
||||
cOpt_Link := "DEBUG " + cOpt_Link
|
||||
ENDIF
|
||||
@@ -813,10 +933,12 @@ FUNCTION Main( ... )
|
||||
cLibExt := ".lib"
|
||||
cObjPrefix := "FILE "
|
||||
cObjExt := ".obj"
|
||||
cLibPathPrefix := "LIBPATH "
|
||||
cLibPathSep := " "
|
||||
cBin_CompC := "wpp386"
|
||||
cOpt_CompC := "-j -w3 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=OS2 {OPTC} {C}"
|
||||
cBin_Link := "wlink"
|
||||
cOpt_Link := "OP stack=65536 OP CASEEXACT {OPTL} NAME {E} {O} {L}{SCRIPT}"
|
||||
cOpt_Link := "OP stack=65536 OP CASEEXACT {OPTL} NAME {E} {O} {A} {L}{SCRIPT}"
|
||||
IF s_lDEBUG
|
||||
cOpt_Link := "DEBUG " + cOpt_Link
|
||||
ENDIF
|
||||
@@ -842,10 +964,12 @@ FUNCTION Main( ... )
|
||||
cLibExt := ".lib"
|
||||
cObjPrefix := "FILE "
|
||||
cObjExt := ".obj"
|
||||
cLibPathPrefix := "LIBPATH "
|
||||
cLibPathSep := " "
|
||||
cBin_CompC := "wpp386"
|
||||
cOpt_CompC := "-j -w3 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=LINUX {OPTC} {C}"
|
||||
cBin_Link := "wlink"
|
||||
cOpt_Link := "ALL SYS LINUX OP CASEEXACT {OPTL} NAME {E} {O} {L}"
|
||||
cOpt_Link := "ALL SYS LINUX OP CASEEXACT {OPTL} NAME {E} {O} {A} {L}{SCRIPT}"
|
||||
IF s_lDEBUG
|
||||
cOpt_Link := "DEBUG " + cOpt_Link
|
||||
ENDIF
|
||||
@@ -855,7 +979,7 @@ FUNCTION Main( ... )
|
||||
IF s_lDEBUG
|
||||
AAdd( s_aOPTC, "-y -v" )
|
||||
ELSE
|
||||
AAdd( s_aCLEAN, FN_ExtSet( s_cPROGNAME, ".tds" ) )
|
||||
AAdd( s_aCLEAN, PathSepToTarget( FN_ExtSet( s_cPROGNAME, ".tds" ) ) )
|
||||
ENDIF
|
||||
IF s_lGUI
|
||||
AAdd( s_aOPTC, "-tW" )
|
||||
@@ -868,10 +992,10 @@ FUNCTION Main( ... )
|
||||
cLibPathPrefix := ""
|
||||
cLibPathSep := ";"
|
||||
IF s_lSHARED
|
||||
cOpt_CompC += " -L{B}"
|
||||
cOpt_CompC += " -L{B}"
|
||||
ENDIF
|
||||
IF s_lMAP
|
||||
cOpt_CompC += " -M"
|
||||
cOpt_CompC += " -M"
|
||||
ENDIF
|
||||
/* TOFIX: The two build systems should generate the same .dll name, otherwise
|
||||
we can only be compatible with one of them. non-GNU is the common choice here. */
|
||||
@@ -895,13 +1019,13 @@ FUNCTION Main( ... )
|
||||
cLibPathPrefix := "/libpath:"
|
||||
cLibPathSep := " "
|
||||
IF s_lMAP
|
||||
AAdd( s_aOPTC, "-Fm" )
|
||||
AAdd( s_aOPTC, "-Fm" )
|
||||
ENDIF
|
||||
IF lStopAfterCComp
|
||||
AAdd( s_aOPTC, "-c" )
|
||||
ENDIF
|
||||
IF s_lSHARED
|
||||
AAdd( s_aOPTL, "/libpath:{B}" )
|
||||
AAdd( s_aOPTL, "/libpath:{B}" )
|
||||
ENDIF
|
||||
s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "wsock32", "advapi32", "gdi32" } )
|
||||
/* TOFIX: The two build systems should generate the same .dll name, otherwise
|
||||
@@ -920,20 +1044,20 @@ FUNCTION Main( ... )
|
||||
cBin_CompC := "pocc"
|
||||
cOpt_CompC := "/Ze /Go /Ot /Tx86-coff {OPTC} /I{I} {C}"
|
||||
IF s_lMT
|
||||
AAdd( s_aOPTC, "/MT" )
|
||||
AAdd( s_aOPTC, "/MT" )
|
||||
ENDIF
|
||||
cBin_Link := "polink"
|
||||
cOpt_Link := "{O} {A} {OPTL} {L}"
|
||||
cLibPathPrefix := "/libpath:"
|
||||
cLibPathSep := " "
|
||||
IF s_lSHARED
|
||||
AAdd( s_aOPTL, "/libpath:{B}" )
|
||||
AAdd( s_aOPTL, "/libpath:{B}" )
|
||||
ENDIF
|
||||
IF s_lMAP
|
||||
AAdd( s_aOPTL, "/map" )
|
||||
AAdd( s_aOPTL, "/map" )
|
||||
ENDIF
|
||||
IF s_lDEBUG
|
||||
AAdd( s_aOPTL, "/debug" )
|
||||
AAdd( s_aOPTL, "/debug" )
|
||||
ENDIF
|
||||
s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "wsock32", "advapi32", "gdi32" } )
|
||||
|
||||
@@ -948,7 +1072,8 @@ FUNCTION Main( ... )
|
||||
ENDCASE
|
||||
|
||||
IF s_lSHARED .AND. ! Empty( s_aLIBSHARED )
|
||||
s_aLIBHB := s_aLIBSHARED
|
||||
s_aLIBHB := ArrayAJoin( { s_aLIBSHARED,;
|
||||
aLIB_BASE_DEBUG } )
|
||||
ELSE
|
||||
s_aLIBHB := ArrayAJoin( { aLIB_BASE1,;
|
||||
aLIB_BASE_DEBUG,;
|
||||
@@ -980,7 +1105,7 @@ FUNCTION Main( ... )
|
||||
GetEnv( "HB_USER_CFLAGS" ) + " " + ArrayToList( s_aOPTC ) )
|
||||
cOpt_CompC := StrTran( cOpt_CompC, "{OPTL}", iif( s_lBLDFLG, hb_Version( HB_VERSION_FLAG_LINKER ) + " ", "" ) +;
|
||||
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( s_aOPTL ) )
|
||||
cOpt_CompC := StrTran( cOpt_CompC, "{E}" , s_cPROGNAME )
|
||||
cOpt_CompC := StrTran( cOpt_CompC, "{E}" , PathSepToTarget( s_cPROGNAME ) )
|
||||
cOpt_CompC := StrTran( cOpt_CompC, "{B}" , s_cHB_BIN_INSTALL )
|
||||
cOpt_CompC := StrTran( cOpt_CompC, "{I}" , s_cHB_INC_INSTALL )
|
||||
cOpt_CompC := StrTran( cOpt_CompC, "{A}" , ArrayToList( ListCook( s_aLIBPATH, cLibPathPrefix ), cLibPathSep ) )
|
||||
@@ -989,7 +1114,7 @@ FUNCTION Main( ... )
|
||||
|
||||
/* Handle moving the whole command line to a script, if requested. */
|
||||
IF "{SCRIPT}" $ cOpt_CompC
|
||||
fhnd := hb_FTempCreateEx( @cScriptFile )
|
||||
fhnd := hb_FTempCreateEx( @cScriptFile, NIL, NIL, ".cpl" )
|
||||
IF fhnd != F_ERROR
|
||||
FWrite( fhnd, StrTran( cOpt_CompC, "{SCRIPT}", "" ) )
|
||||
FClose( fhnd )
|
||||
@@ -1030,7 +1155,7 @@ FUNCTION Main( ... )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{L}" , ArrayToList( s_aLIB ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{OPTL}", iif( s_lBLDFLG, hb_Version( HB_VERSION_FLAG_LINKER ) + " ", "" ) +;
|
||||
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( s_aOPTL ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{E}" , s_cPROGNAME )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{E}" , PathSepToTarget( s_cPROGNAME ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{B}" , s_cHB_BIN_INSTALL )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{A}" , ArrayToList( ListCook( s_aLIBPATH, cLibPathPrefix ), cLibPathSep ) )
|
||||
|
||||
@@ -1038,9 +1163,9 @@ FUNCTION Main( ... )
|
||||
|
||||
/* Handle moving the whole command line to a script, if requested. */
|
||||
IF "{SCRIPT}" $ cOpt_Link
|
||||
fhnd := hb_FTempCreateEx( @cScriptFile )
|
||||
fhnd := hb_FTempCreateEx( @cScriptFile, NIL, NIL, ".lnk" )
|
||||
IF fhnd != F_ERROR
|
||||
FWrite( fhnd, StrTran( cOpt_CompC, "{SCRIPT}", "" ) )
|
||||
FWrite( fhnd, StrTran( cOpt_Link, "{SCRIPT}", "" ) )
|
||||
FClose( fhnd )
|
||||
cOpt_Link := "@" + cScriptFile
|
||||
ELSE
|
||||
@@ -1083,33 +1208,66 @@ FUNCTION Main( ... )
|
||||
PauseForKey()
|
||||
ELSEIF s_lRUN
|
||||
#if !( defined( __PLATFORM__WINDOWS ) .OR. defined( __PLATFORM__DOS ) .OR. defined( __PLATFORM__OS2 ) )
|
||||
IF ! Empty( FN_DirGet( s_cPROGNAME ) )
|
||||
IF Empty( FN_DirGet( s_cPROGNAME ) )
|
||||
s_cPROGNAME := "." + hb_osPathSeparator() + s_cPROGNAME
|
||||
ENDIF
|
||||
#endif
|
||||
IF s_lTRACE
|
||||
OutStd( "hbmk: Running executable: '" + s_cPROGNAME + "'" + hb_osNewLine() )
|
||||
OutStd( "hbmk: Running executable: '" + PathSepToTarget( s_cPROGNAME ) + "'" + hb_osNewLine() )
|
||||
ENDIF
|
||||
nErrorLevel := hb_run( s_cPROGNAME )
|
||||
nErrorLevel := hb_run( PathSepToTarget( s_cPROGNAME ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
RETURN nErrorLevel
|
||||
|
||||
STATIC FUNCTION SelfCOMP()
|
||||
LOCAL cCompiler := hb_Compiler()
|
||||
|
||||
IF "Microsoft Visual C" $ cCompiler ; RETURN "msvc"
|
||||
ELSEIF "Borland" $ cCompiler ; RETURN "bcc32"
|
||||
ELSEIF "CodeGear" $ cCompiler ; RETURN "bcc32"
|
||||
ELSEIF "DJGPP" $ cCompiler ; RETURN "djgpp"
|
||||
ELSEIF "MinGW" $ cCompiler ; RETURN "mingw"
|
||||
ELSEIF "GNU C++" $ cCompiler ; RETURN "gcc"
|
||||
ELSEIF "GNU C" $ cCompiler ; RETURN "gcc"
|
||||
ELSEIF "Watcom C++" $ cCompiler ; RETURN "owatcom"
|
||||
ELSEIF "Watcom C" $ cCompiler ; RETURN "owatcom"
|
||||
ELSEIF "Pelles ISO C" $ cCompiler ; RETURN "pocc"
|
||||
ELSEIF "Digital Mars" $ cCompiler ; RETURN "dmc"
|
||||
ELSEIF "(XCC)" $ cCompiler ; RETURN "xcc"
|
||||
ENDIF
|
||||
|
||||
RETURN ""
|
||||
|
||||
/* TODO: Add default .exe extension for win|os2|dos */
|
||||
STATIC FUNCTION FindInPath( cFileName )
|
||||
LOCAL cPATH
|
||||
LOCAL cDir
|
||||
LOCAL cName
|
||||
LOCAL cExt
|
||||
|
||||
/* Check in current dir. */
|
||||
IF hb_FileExists( cFileName )
|
||||
RETURN .T.
|
||||
ENDIF
|
||||
|
||||
hb_FNameSplit( cFileName,, @cName, @cExt )
|
||||
|
||||
/* Check in the dir of this executable. */
|
||||
IF ! Empty( hb_DirBase() )
|
||||
IF hb_FileExists( hb_FNameMerge( hb_DirBase(), cName, cExt ) )
|
||||
RETURN .T.
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
/* Check in the PATH. */
|
||||
cPATH := GetEnv( "PATH" )
|
||||
IF ! Empty( cPATH )
|
||||
FOR EACH cDir IN hb_ATokens( cPATH, hb_osPathListSeparator(), .T. )
|
||||
IF ! Empty( cDir )
|
||||
IF hb_FileExists( DirAddPathSep( StrStripQuote( cDir ) ) + cFileName )
|
||||
IF hb_FileExists( hb_FNameMerge( DirAddPathSep( StrStripQuote( cDir ) ), cName, cExt ) )
|
||||
RETURN .T.
|
||||
ENDIF
|
||||
ENDIF
|
||||
@@ -1156,7 +1314,8 @@ STATIC FUNCTION AAddNotEmpty( aArray, xItem )
|
||||
RETURN aArray
|
||||
|
||||
/* Append optional prefix and optional extension to all members */
|
||||
STATIC FUNCTION ListCook( array, cPrefix, cExt )
|
||||
STATIC FUNCTION ListCook( arraySrc, cPrefix, cExt )
|
||||
LOCAL array := AClone( arraySrc )
|
||||
LOCAL tmp
|
||||
|
||||
DEFAULT cPrefix TO ""
|
||||
@@ -1197,7 +1356,14 @@ STATIC FUNCTION ListToArray( cList )
|
||||
|
||||
RETURN array
|
||||
|
||||
STATIC FUNCTION DirAdaptPathSep( cFileName )
|
||||
STATIC FUNCTION PathSepToSelf( cFileName )
|
||||
#if defined( __PLATFORM__WINDOWS ) .OR. defined( __PLATFORM__DOS ) .OR. defined( __PLATFORM__OS2 )
|
||||
RETURN StrTran( cFileName, "/", "\" )
|
||||
#else
|
||||
RETURN StrTran( cFileName, "\", "/" )
|
||||
#endif
|
||||
|
||||
STATIC FUNCTION PathSepToTarget( cFileName )
|
||||
|
||||
IF t_cARCH $ "win|dos|os2" .AND. !( t_cCOMP == "mingw" )
|
||||
RETURN StrTran( cFileName, "/", "\" )
|
||||
@@ -1241,6 +1407,13 @@ STATIC FUNCTION FN_ExtSet( cFileName, cExt )
|
||||
|
||||
RETURN hb_FNameMerge( cDir, cName, cExt )
|
||||
|
||||
STATIC FUNCTION FN_ExtSetDef( cFileName, cExtNew )
|
||||
LOCAL cDir, cName, cExt
|
||||
|
||||
hb_FNameSplit( cFileName, @cDir, @cName, @cExt )
|
||||
|
||||
RETURN hb_FNameMerge( cDir, cName, iif( Empty( cExt ) .AND. ! Empty( cExtNew ), cExtNew, cExt ) )
|
||||
|
||||
STATIC PROCEDURE HBP_ProcessAll( /* @ */ aLIBS,;
|
||||
/* @ */ aLIBPATH,;
|
||||
/* @ */ aOPTPRG,;
|
||||
@@ -1260,7 +1433,7 @@ STATIC PROCEDURE HBP_ProcessAll( /* @ */ aLIBS,;
|
||||
LOCAL aFile
|
||||
|
||||
FOR EACH aFile IN aFiles
|
||||
IF ! t_lQuiet
|
||||
IF t_lInfo
|
||||
OutStd( "hbmk: Processing: " + aFile[ F_NAME ] + hb_osNewLine() )
|
||||
ENDIF
|
||||
HBP_ProcessOne( aFile[ F_NAME ],;
|
||||
@@ -1319,7 +1492,7 @@ STATIC PROCEDURE HBP_ProcessOne( cFileName,;
|
||||
DO CASE
|
||||
CASE Lower( Left( cLine, Len( "libs=" ) ) ) == "libs=" ; cLine := SubStr( cLine, Len( "libs=" ) + 1 )
|
||||
FOR EACH cItem IN hb_ATokens( cLine,, .T. )
|
||||
cItem := DirAdaptPathSep( StrStripQuote( cItem ) )
|
||||
cItem := PathSepToTarget( StrStripQuote( cItem ) )
|
||||
IF AScan( aLIBS, {| tmp | tmp == cItem } ) == 0
|
||||
AAddNotEmpty( aLIBS, cItem )
|
||||
ENDIF
|
||||
@@ -1327,7 +1500,7 @@ STATIC PROCEDURE HBP_ProcessOne( cFileName,;
|
||||
|
||||
CASE Lower( Left( cLine, Len( "libpaths=" ) ) ) == "libpaths=" ; cLine := SubStr( cLine, Len( "libpaths=" ) + 1 )
|
||||
FOR EACH cItem IN hb_ATokens( cLine,, .T. )
|
||||
cItem := DirAdaptPathSep( StrStripQuote( cItem ) )
|
||||
cItem := PathSepToTarget( StrStripQuote( cItem ) )
|
||||
IF AScan( aLIBPATH, {| tmp | tmp == cItem } ) == 0
|
||||
AAddNotEmpty( aLIBPATH, cItem )
|
||||
ENDIF
|
||||
@@ -1335,7 +1508,7 @@ STATIC PROCEDURE HBP_ProcessOne( cFileName,;
|
||||
|
||||
CASE Lower( Left( cLine, Len( "prgflags=" ) ) ) == "prgflags=" ; cLine := SubStr( cLine, Len( "prgflags=" ) + 1 )
|
||||
FOR EACH cItem IN hb_ATokens( cLine,, .T. )
|
||||
cItem := DirAdaptPathSep( StrStripQuote( cItem ) )
|
||||
cItem := PathSepToTarget( StrStripQuote( cItem ) )
|
||||
IF AScan( aOPTPRG, {| tmp | tmp == cItem } ) == 0
|
||||
AAddNotEmpty( aOPTPRG, cItem )
|
||||
ENDIF
|
||||
@@ -1523,7 +1696,7 @@ FUNCTION hbm_COMP()
|
||||
|
||||
STATIC PROCEDURE PauseForKey()
|
||||
|
||||
IF hb_gtInfo( HB_GTI_ISGRAPHIC )
|
||||
IF ! t_lQUIET .AND. hb_gtInfo( HB_GTI_ISGRAPHIC )
|
||||
OutStd( "Press any key to continue..." )
|
||||
Inkey( 0 )
|
||||
ENDIF
|
||||
@@ -1564,11 +1737,15 @@ STATIC PROCEDURE ShowHelp()
|
||||
" -[no]trace show commands executed" ,;
|
||||
" -[no]run run/don't run the created executable" ,;
|
||||
" -nohbp do not process .hbp files in current directory" ,;
|
||||
" -cc stop after creating the .c Harbour output files" ,;
|
||||
" -hbcc stop after creating the .c Harbour output files" ,;
|
||||
" create link/copy/rename hbmk to hbcc for the same effect" ,;
|
||||
" -cmp stop after creating the object files" ,;
|
||||
" -hbcmp stop after creating the object files" ,;
|
||||
" create link/copy/rename hbmk to hbcc for the same effect" ,;
|
||||
" -q quiet mode" ,;
|
||||
" -hblnk act as linker. Currently this is the same as -q" ,;
|
||||
" -arch=<arch> assume specific architecure. Same as HB_ARCHITECTURE envvar" ,;
|
||||
" -comp=<comp> use specific compiler. Same as HB_COMPILER envvar" ,;
|
||||
" -info turn on informational messages (current default)" ,;
|
||||
" -q suppress logo and informational messages" ,;
|
||||
"" ,;
|
||||
"Notes:" ,;
|
||||
" - Don't forget to create a MAIN() entry function in your application." ,;
|
||||
|
||||
Reference in New Issue
Block a user