* harbour/source/compiler/hbmain.c
* harbour/source/compiler/hbcomp.c
! fixed ignored -es2 compiler flag when warning is caused by startup
parameters
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/harbour.y
* pacified warning
* harbour/harbour.spec
! fixed doc/en directory name to doc/en-EN
* harbour/source/vm/Makefile
+ harbour/source/vm/maindllh
+ harbour/source/vm/maindllh/Makefile
+ added hbmaindllh library - it's necessary for some compiler to create
working harbour.dll, f.e. in OpenWatcom builds. Please updated
harbour.dll build scripts to use this library with such compilers.
MinGW based compilers do not need it.
* harbour/source/vm/Makefile
! fixed typo which broke wce builds
* harbour/source/vm/Makefile
* harbour/harbour-wce-spec
* harbour/harbour.spec
+ added mainstd mainwin maindllh maindllp to all win and wce builds
* harbour/harbour-win-spec
* harbour/harbour-wce-spec
* harbour/harbour.spec
+ added support for parallel compilation (-j make flags) in RPMs
which supports %{_smp_mflags} macro
! temporary fix: disabled harbour external libraries.
I do not know what should be the final version.
; WCE builds are still broken due to repeated macro definitions
but I'm lost with the new build time parameters and I do not
know how to fix it without breaking hbce* scripts or bad introduce
some interactions to other build/install time scripts so it will
have to be fixed by Viktor.
* harbour-wce-spec
* INSTALL
* bin/postinst.bat
* Makefile
* make_gnu.bat
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* contrib/gtalleg/Makefile
* contrib/hbodbc/Makefile
* contrib/hbtpathy/Makefile
* contrib/hbole/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/generator/hbqtgen.prg
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbwin/Makefile
* source/vm/Makefile
* source/vm/vmmt/Makefile
+ Added wce arch and mingwarm/msvcarm/poccarm support.
In parallel with old win/mingwce|msvcce|poccce support.
As soons as this new one work, the old one will be deleted.
* make_gnu.bat
! Fixed to work like rest of targets for GCC family.
It will now only initiate a 'clean install' if HB_BUILD_DLL=yes.
* utils/hbmk2/hbmk2.prg
+ Added Przemek's code for rtlink/blinker script parsing.
Not yet activated.
* harbour/source/vm/hvm.c
* harbour/source/vm/fm.c
* harbour/source/vm/cmdarg.c
! fixed GPF when hb_vmInit() is called without initializing
application startup parameters by hb_cmdargInit().
Thanks to Enrico's friends for information about the problem.
* some code cleanup
* harbour/doc/Makefile
! removed unexisting license.txt file
* harbour/include/hbapidbg.h
* do not export Harbour debugger functions. If someone wants to create
3-rd party debugger then we should agree the list of functions which
should be public.
* harbour/include/hbstack.h
* minor cleanup in some definitions
* harbour/include/hbdefs.h
+ added HB_DLL_ENTRY_POINT macro to set default DLL entry point for
different Windows compilers
* harbour/source/vm/maindllh.c
* harbour/source/vm/maindllp.c
* use HB_DLL_ENTRY_POINT macro
* harbour/include/hbsetup.h
* added internal macro to disable flatten optimization
* harbour/include/hbmath.h
* harbour/source/rtl/math.c
* make default math error handler function static
* harbour/include/hbatomic.h
+ added atomic inc/dec inline asm code to OW x86 builds
* harbour/source/rtl/console.c
* small code reorganization to not mix public and private function calls
* harbour/source/rtl/hbregex.c
* harbour/source/hbpcre/_hbpcreg.c
* do not use hb_xfree() function pointer directly to avoid problems
with different calling conventions.
* harbour/config/win/owatcom.cf
* harbour/config/os2/owatcom.cf
* removed unnecessary in recent OpenWatcom versions explicit wlink.lnk
including.
* harbour/source/vm/dlmalloc.c
! fixed casting
* harbour/source/vm/fm.c
% use DLMALLOC as default memory manager in OpenWatcom Windows builds.
Warning: HB_FM_DLMT_ALLOC does not work with OpenWatcom.
* harbour/config/dos/owatcom.cf
* harbour/config/win/owatcom.cf
* harbour/config/linux/owatcom.cf
* harbour/config/os2/owatcom.cf
* changed alignment settings from 8 to 4
* synced optimization flags used in different builds
! fixed linker parameters when HB_BUILD_DEBUG=yes is set
; TOVERIFY: I do not remember what calling convention should be used
in OpenWatcom MT OS2 builds to eliminate GPF when APIENTRY16 functions
are called. It's possible that current settings are wrong.
* harbour/config/win/owatcom.cf
* removed STACK=65536 from OpenWatcom linker parameters.
This switch probably was inherited from old DOS WatcomC builds.
Later I'll test current OpwnWatcom builds to check if we can also
remove it from DOS builds when cwstub.exe is used.
* restored -bm switch. When DLMALLOC is used it does not cause
noticeable performance reduction.
* use default register calling convention. We can change it
in the future but 1-st we should check the performance overhead.
If calling convention is a problem only for .DLLs then it can
be resolved by modifying HB_EXTERN declaration and adding function
attributes which will force given calling convention.
* harbour/config/linux/owatcom.cf
* enabled pentium pro instruction in OpenWatcom Linux builds.
It reduces the code size and increase performance a little bit.
Windows users which do not need pure pentium CPU support can make
the same.
* harbour/utils/hbmk2/hbmk2.prg
! fixed object extension used in OpenWatcom Linux builds: it's .o not .obj
! fixed linker parameters in OpenWatcom Linux builds: DEBUG ALL is single
option
! fixed OpenWatcom calling convention settings. Viktor you cannot chose
simultaneously register and stack calling convention. You have to chose
one and keep it synced with Harbour compile time settings. Otherwise
you will have unresolved external or you will force creating by linker
dynamically function call wrappers (of course if OW support such
functionality) what may strongly reduce the performance.
! removed -j compile time switch - it's not used to compile core code
* synced optimization flags with core code
I'm really interested in current OpenWatcom speedtst results compared
with other Windows builds (MSVC, MinGW, BCC, POCC) in ST and MT builds.
* harbour/include/hbapi.h
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
* harbour/source/vm/fm.c
+ added support for thread local memory allocators by using MSPACE
mechanism in DLALLOC.
It can be enabled by compiling Harbour with HB_FM_DLMT_ALLOC macro.
By default up to 16 (HB_MSPACE_COUNT macro) independent memory
allocators is dynamically created for new threads. When more threads
is used then allocators are shared between them and HVM tries to
balance used allocators to reduce number of threads using the
same allocator.
It should give noticeable scalability improvement in some OS-es
where default memory manages has pure MT performance.
Please try to compiler speedtst.prg with Harbour compiled with
and without HB_FM_DLMT_ALLOC and compare results in this test:
speedtst --thread=2 --scale
using real multiCPU machine.
* harbour/source/vm/dlmalloc.c
* pacified warning when FOOTERS are enabled
* harbour/source/vm/garbage.c
* cleanup comment
* harbour/include/hbvm.h
* harbour/source/vm/hvm.c
+ added void hb_vmAtQuit( HB_INIT_FUNC pFunc, void * cargo );
AtQuit functions are executed after deallocating all HVM items and
disabling .prg destructors. They can make final cleanup at C level
but should not reenter HVM.
* harbour/contrib/hbole/oleinit.c
* use hb_vmAtQuit() instead of hb_vmAtExit() - it resolves the problem
with executing destructors to OLE objects after closing OLE connection.
* harbour/contrib/hbole/olecore.c
+ added translation for VT_R4 and VT_CY values.
! fixed MT support by moving OLE error code to TSD
* harbour/source/vm/itemapi.c
* harbour/source/common/hbprintf.c
* use isfinite() instead of finite() in MinGW builds.
It's possible that it can resolve problems with MinGW64 builds.
* harbour/bin/hb-func.sh
! restored default optimization flag (-O3) in hb* scripts
* harbour/harbour.spec
! fixed recent modification
* harbour/contrib/rddads/ads1.c
* harbour/contrib/rddads/adsfunc.c
* harbour/contrib/hbmisc/strfmt.c
* harbour/contrib/hbcrypt/sha1.c
! fixed wrongly used C reference operator
* harbour/contrib/hbwin/win_prn2.c
* harbour/contrib/hbwin/wapi_commctrl.c
* harbour/source/vm/maindllp.c
! fixes for unicode builds
* harbour/include/std.ch
+ added SET TIME FORMAT [TO] <f>
* harbour/include/set.ch
* harbour/include/hbset.h
* harbour/source/vm/set.c
+ added _SET_TIMEFORMAT
The folowing modifiers are supported:
hh - hours
mm - minutes
ss - seconds
fff - fraction part of seconds
p - 1-st letter from PM / AM signature. When used time is shown
in 12 hour format otherwise 24 hour format is used
ex: Set( __SET_TIMEFORMAT, "hh:mm pm" )
default _SET_TIMEFORMAT value is "hh:mm:ss:fff"
+ added C function: char * hb_setGetTimeFormat( void );
* harbour/include/hbpp.h
* harbour/source/pp/ppcore.c
+ added support for timestamp constant values in the form:
t"YYYY-MM-DD HH:MM:SS.fff"
The exact accepted timestamp pattern is is:
YYYY-MM-DD [H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
i.e.:
tValue := t"2009-03-21 5:31:45.437 PM"
or:
YYYY-MM-DDT[H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
with literal "T" as date and time part delimiters (XML timestamp
format), i.e.:
tValue := t"2009-03-21T17:31:45.437"
The folowing characters can be used as date delimiters: "-", "/", "."
if PM or AM is used HH is in range < 1 : 12 > otherwise
in range < 0 : 23 >
* harbour/source/compiler/complex.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/harbour.yyh
+ added support for t"YYYY-MM-DD HH:MM:SS.fff" time stamp constant
to compiler
+ added support for VFP datetime constant values:
{ ^ [ YYYY-MM-DD [,] ] [ HH[:MM[:SS][.FFF]] [AM|PM] ] }
The following characters can be used as date delimiters: "-", "/".
Dot "." as date delimiter is not supported.
There is no limit on number of characters in YYYY, MM, DD, HH, MM,
SS, FFF parts. Important is only their value. This is the format
in semi PP notation:
{ ^ <YEAR> <sep:/-> <MONTH> <sep:/-> <DAY> [[<sep2:,>]
[ <HOUR> [ : <MIN> [ : <SEC> [ . <FRAQ> ] ] ] [AM|PP] ] }
In practice it allows to also parse xHarbour datetime constant
values with compatible conditions though xHarbour support onlu "/"
as date delimiter.
NOTE: there is one important difference to VFP and xHarbour in
decoding above format. In VFP and xHarbour when date part is
missing then it's set by default to: 1899-12-30 so this code:
{ ^ 12:00 }
gived the same results as:
{ ^ 1899/12/30 12:00 }
Harbour does not set any default date value when timestamp
constant value contains only time part.
If you want we can change it for strict VFP compatiblity.
Now this extension is enabled by default for testing. In the future
it will be probably covered by HB_COMPAT_FOXPRO macro.
* harbour/source/macro/macro.yyc
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyh
* harbour/source/macro/macrolex.c
+ added support for t"YYYY-MM-DD HH:MM:SS.fff" time stamp constant
to macro compiler
* harbour/include/hbmacro.h
* harbour/source/vm/macro.c
+ added new function:
void hb_macroGenPushTimeStamp( LONG lDate, LONG lTime, HB_COMP_DECL );
* harbour/include/hberrors.h
* harbour/source/compiler/hbgenerr.c
+ added new compile time error: "Invalid timestamp constant '%s'"
* harbour/source/compiler/cmdcheck.c
* use Harbour API timestamp functions instead of calling system
functions
* harbour/include/hbpcode.h
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbdead.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencc.c
* harbour/source/compiler/hblbl.c
* harbour/source/compiler/hbstripl.c
* harbour/source/compiler/hbopt.c
+ added new PCODE HB_P_PUSHTIMESTAMP (replaced one unused PCODE value)
to store timestamp constant values in the PCODE
* harbour/include/hbcomp.h
* harbour/source/compiler/hbmain.c
+ added new function:
void hb_compGenPushTimeStamp( LONG lDate, LONG lTime, HB_COMP_DECL );
* harbour/include/hbexprop.h
* harbour/source/common/expropt1.c
+ added new C functions:
HB_EXPR_PTR hb_compExprNewTimeStamp( LONG, LONG, HB_COMP_DECL );
* harbour/include/hbexprb.c
* harbour/include/hbcompdf.h
* harbour/source/common/expropt2.c
+ added timestamp expressions support
+ added compile time optimization for timestamp expressions
* updated function optimization for timestamp expressions
* harbour/include/hbdate.h
* harbour/source/common/hbdate.c
* changed hb_dateMilliSeconds() to return UTC julian timestamp in
milliseconds
* changed existing seconds, time and timestamp functions to operate
on common OS specific functions to eliminate possible problems
with different OS time counters
+ added new functions to operates on time and timestamp values.
See source code for details.
+ harbour/source/rtl/cputime.c
* moved double hb_secondsCPU( int n ) function to separate file
* harbour/source/rtl/seconds.c
- removed old version of date/seconds functions
* harbour/source/vm/hashes.c
* harbour/source/vm/arrays.c
+ added support for timestamp values as hash item indexes
* harbour/source/vm/hashfunc.c
+ added support for find timestamp values in hash and array items
by simple date value in AScan(), hb_HScan(), hb_AScan() and hb_RAScan()
functions when exact comparison is not used.
* harbour/source/vm/asort.c
+ added support for sorting timestamp values
* harbour/source/vm/classes.c
+ added support for timestamp scallar classes
+ added support for timestamp typed instance variables
* harbour/source/vm/memvars.c
+ added support for timestamp values in .mem files
* harbour/source/vm/estack.c
+ show timestamp values in stack dump
* harbour/include/hbapi.h
* harbour/source/vm/arrays.c
+ added new C functions:
double hb_arrayGetTD( PHB_ITEM pArray, ULONG ulIndex );
BOOL hb_arraySetTD( PHB_ITEM pArray, ULONG ulIndex, double dTimeStamp )
BOOL hb_arrayGetTDT( PHB_ITEM pArray, ULONG ulIndex,
LONG * plJulian, LONG * plMilliSec );
BOOL hb_arraySetTDT( PHB_ITEM pArray, ULONG ulIndex,
LONG lJulian, LONG lMilliSec );
* harbour/include/hbapi.h
* harbour/source/vm/extend.c
+ accept timestamp items in date functions - use only date part of
timestamp value
+ added new C functions:
double hb_partd( int iParam, ... );
BOOL hb_partdt( LONG * plJulian, LONG * plMilliSec , int iParam, ... );
void hb_rettd( double dTimeStamp );
void hb_rettdt( LONG lJulian, LONG lMilliSec );
int hb_stortd( double dTimeStamp, int iParam, ... );
int hb_stortdt( LONG lJulian, LONG lMilliSec, int iParam, ... );
* harbour/include/hbapiitm.h
* harbour/source/vm/itemapi.c
+ accept timestamp items in date functions - use only date part of
timestamp value
+ added new C functions:
char * hb_itemGetTS( PHB_ITEM pItem, char * szDateTime );
PHB_ITEM hb_itemPutTS( PHB_ITEM pItem, const char * szDateTime );
double hb_itemGetTD( PHB_ITEM pItem );
PHB_ITEM hb_itemPutTD( PHB_ITEM pItem, double dTimeStamp )
BOOL hb_itemGetTDT( PHB_ITEM pItem, LONG * plJulian, LONG * plMilliSec );
PHB_ITEM hb_itemPutTDT( PHB_ITEM pItem, LONG lJulian, LONG lMilliSec );
+ support for timestamp items in hb_itemString(), hb_itemPadConv() and
hb_itemTypeStr() functions
* harbour/include/hbvm.h
* harbour/include/hbxvm.h
* harbour/include/hbapi.h
* harbour/source/vm/hvm.c
+ added HB_IT_TIMESTAMP items
* modified HB_IT_DATE internal item structure to use common structure
with HB_IT_TIMESTAMP - it simplifies HVM code and eliminates additional
RT conditions.
+ added HB_IS_TIMESTAMP() and ISTIMESTAMP() macros
+ added HB_IS_DATETIME() and ISDATETIME() macros - they return true
if item/parameter is DATE or TIMESTAMP type.
+ added void hb_vmPushTimeStamp( long lJulian, long lMilliSec );
and xhb_vmPushTimeStamp()
+ added support for timestamp values in relational operators:
<, <=, >, >=, =, ==
When two timestamp values are compared then VM compares date and
time parts in both values.
When date and timestamp values are used in <, <=, >, >=, = operations
then VM compares only date part in both values.
When date and timestamp values are used in == operation then VM
compares date part in both values and then check if time part
of timestamp value is 0.
+ added support for timestamp values in + and - math operations.
The following rules are used in timestamp arithmetic:
<t> + <t> => <t>
<t> - <t> => <n>
<t> + <n> => <t>
<n> + <t> => <t>
<t> - <n> => <t>
<d> + <t> => <t>
<t> + <d> => <t>
<d> - <t> => <n>
<t> - <d> => <n>
When number is result or argument of timestamp operation then the
its integer part is a number of day and fractional part is the time.
* harbour/source/rtl/dateshb.c
+ added new .prg functions to mange date and timestamp values:
HB_DATETIME() -> <tTimeStamp>
HB_CTOD( <cDate> [, <cDateFormat> ] ) -> <dDate>
HB_DTOC( <dDate> [, <cDateFormat> ] ) -> <cDate>
HB_NTOT( <nValue> ) -> <tTimeStamp>
HB_TTON( <tTimeStamp> ) -> <nValue>
HB_TTOC( <tTimeStamp>, [ <cDateFormat> ] [, <cTimeFormat> ] ) ->
<cTimeStamp>
HB_CTOT( <cTimeStamp>, [ <cDateFormat> ] [, <cTimeFormat> ] ) ->
<tTimeStamp>
HB_TTOS( <tTimeStamp> ) -> <cYYYYMMDDHHMMSSFFF>
HB_STOT( <cDateTime> ) -> <tTimeStamp>
<cDateTime> should be in one of the above form:
- "YYYYMMDDHHMMSSFFF"
- "YYYYMMDDHHMMSSFF"
- "YYYYMMDDHHMMSSF"
- "YYYYMMDDHHMMSS"
- "YYYYMMDDHHMM"
- "YYYYMMDDHH"
- "YYYYMMDD"
- "HHMMSSFFF"
- "HHMMSSF"
- "HHMMSS"
- "HHMM"
- "HH"
Important is number of digits.
HB_TSTOSTR( <tTimeStamp> ) -> <cTimeStamp> // YYYY-MM-DD HH:MM:SS.fff
HB_STRTOTS( <cTimeStamp> ) -> <tTimeStamp>
<cTimeStamp> should be in one of the above form:
YYYY-MM-DD [H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
YYYY-MM-DDT[H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
The folowing characters can be used as date delimiters: "-", "/", "."
T - is literal "T" - it's for XML timestamp format
if PM or AM is used HH is in range < 1 : 12 > otherwise
in range < 0 : 23 >
HB_HOUR( <tTimeStamp> ) -> <nHour>
HB_MINUTE( <tTimeStamp> ) -> <nMinute>
HB_SEC( <tTimeStamp> ) -> <nSeconds> // with milliseconds
* harbour/source/rtl/datec.c
+ accept timestamp parameters in CMONTH() and CDOW() functions
* harbour/source/rtl/empty.c
+ added support for timestamp items
* harbour/source/rtl/itemseri.c
+ added support for timestamp items serialization
* harbour/source/rtl/minmax.c
+ added support for timestamp values to MIN() and MAX() functions.
when only one of given parameters is timestamp value and other
is date value and date parts are equal then always date item
is returned as both MIN() or MAX() value.
* harbour/source/rtl/dates.c
+ added new C functions: hb_timeFormat(), hb_timeUnformat(),
hb_timeStampFormat(), hb_timeStampUnformat()
* harbour/source/rtl/valtype.c
+ added .prg functions: HB_ISDATETIME(), HB_ISTIMESTAMP()
* harbour/source/rtl/transfrm.c
+ added support for timestamp items formatting.
+ added new function modifier @T.
When @T is used without @D then only time part of timestamp value
is formatted and return.
When @D is used without @T then only date part of timestamp value
is formatted and return.
* harbour/source/rtl/tbrowse.prg
+ display timestamp values
* harbour/source/rtl/philes.c
+ accept timestamp value as second parameter of HB_FSETDATETIME()
function
+ store file data and time in second parameter of HB_FGETDATETIME()
as timestamp value.
Old parameters (2-dDate, 3-cTime) are still supported but please think
about removing them - they are redundant.
* harbour/source/rtl/filesys.c
* updated function names
* harbour/source/rdd/dbf1.c
+ added native support for time and timestamp fields
* harbour/include/hbrddcdx.h
* harbour/include/hbrddnsx.h
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
+ added support for indexing timestamp fields
+ added support for using DATE values with timestamp fields
which replicate HVM behavior.
SEEK and SEEKLAST with date value when active index is on
timestamp positions to 1-st or last record where date part
of indexed timesamp value is equal.
Settings scopes to date values when active index is on timestamp
value reduce the visible record range to these ones which have
date part of timestamp value in the range of dates values used
for scopes. It possible to mix date and timestamp values in scope
and set one scope to date value and the second to timesamp.
* harbour/source/rdd/sdf1.c
* harbour/source/rdd/delim1.c
+ added support for exporting timestamp fields
* harbour/source/rdd/dbsql.c
! fixed typo in logical value export
+ export timestamp fields.
Please update the format to given SQL syntax.
* harbour/contrib/hbct/files.c
+ changed SETFDATI() to optionally accept timestamp parameter
instead of two parameters dDate and cTime
* harbour/contrib/hbct/misc1.c
+ added timestamp support to XTOC() function
* harbour/contrib/hbct/misc2.c
+ added timestamp support to COMPLEMENT() function
* harbour/contrib/hbct/dattime2.c
+ accept timestamp values in ADDMONTH(), DOY(), ISLEAP(), QUARTER()
LASTDAYOM(), WEEK() functions
* harbour/contrib/hbmzip/hbmzip.c
+ updated HB_ZipFileCreate( hZip, cZipName, tDateTime, cTime, ... )
functions to optionaly accept timestamp value in 3-rd parameter
instead od dDate, and cTime in 3-rd and 4-th parameters.
+ updated HB_UnzipFileInfo( hUnzip, @cZipName, @tDateTime, @cTime, ... )
to return timestamp value in 3-rd parameter instead of date value.
TODO: Please think about removing 4-th parameter from:
HB_ZipFileCreate( hZip, cZipName, tDateTime, cTime, ... )
HB_UnzipFileInfo( hUnzip, @cZipName, @tDateTime, @cTime, ... )
Now it's redundant.
* harbour/contrib/hbmzip/readme.txt
* updated parameters description for above functions
* harbour/contrib/hbnf/descendn.c
+ added timestamp support to FT_DESCEND() function
* harbour/contrib/hbclipsm/date.c
+ accept timestamp values in DATEASAGE(), DATEASARRAY() and DATEISLEAP()
functions
* harbour/contrib/hbmisc/dates2.c
+ accept timestamp values in ISLEAPYEAR(), DAYSINMONTH(), EOM(), BOM(),
WOM(), WOY(), EOY() and BOY() functions
The following contrib files should be updated but I'm leaving it to
other developers who want to keep this code alive:
contrib/hbtip/utils.c
contrib/hbvpdf/hbvpdf.prg
contrib/hbvpdf/hbvpdft.prg
contrib/hbwin/win_dll.c
some minor cleanups if necessary and authors will find
timestamp values usable
contrib/hbole/ole2.c
contrib/hbwin/win_ole.c
add support for timestamp values in OLE
contrib/rddado/adordd.prg
contrib/rddads/ads1.c
contrib/rddads/adsx.c
contrib/rddsql/...
add support for timestamp values in RDDs
Warning: this implementation is not xHarbour compatible. There are many
important differences. Mostly on C level and used API. Please be careful
in porting xHarbour source code to Harbour.
* utils/hbmk2/hbmk2.prg
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/owatcom.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* Changed Harbour to uniformly link against ws2_32 winsock
lib on Windows. Previous we've been using a mixture of
ws2_32 and wsock32, sometimes both. For some platforms
one of these libs is automatically included by linker,
f.e. for bcc, wsock32 is used.
! This fixes wsock32 no longer available for mingw64.
; These platforms should be retested if this causes any
problems, but ws2_32 should be available for all since long.
* utils/hbmk2/hbmk2.prg
! Typo in prev commit.
* source/vm/maindllp.c
* source/vm/extrap.c
! Fixed for mingw64.
! Fixed warning for mingw64.
; TODO: Check for possible regression.
* contrib/hbodbc/odbc.c
! Fixed mingw64 warning.
; TODO: Check for possible regression.
; TOFIX: (3rd party dependent contribs not yet included)
Errors/Core:
Temp/ccVJXjZS.s: Assembler messages:
Temp/ccVJXjZS.s:19: Error: Incorrect register `%rax' used with `l' suffix
Temp/ccVJXjZS.s:20: Error: `0x0e10(%rax,%ecx,4)' is not a valid base/index expression
Temp/ccVJXjZS.s:36: Error: Incorrect register `%rax' used with `l' suffix
Temp/ccVJXjZS.s:37: Error: `0x0e10(%rax,%ecx,4)' is not a valid base/index expression
+ GTWVG (also lots of warning)
Warnings/Core:
../../hbprintf.c: In function 'hb_snprintf':
../../hbprintf.c:1067: warning: implicit declaration of function 'finite'
../../hbprintf.c:1148: warning: cast from pointer to integer of different size
../../itemapi.c: In function 'hb_itemStrBuf':
../../itemapi.c:2159: warning: implicit declaration of function 'finite'
../../dbfntx1.c: In function 'hb_ntxTagHeaderCheck':
../../dbfntx1.c:1016: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1016: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c: In function 'hb_nsxTagHeaderCheck':
../../dbfnsx1.c:1233: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1235: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c: In function 'hb_nsxPageFree':
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c: In function 'hb_nsxPageNew':
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
Warnings/Contrib:
../../files.c: In function 'HB_FUN_SETFDATI':
../../files.c:247: warning: cast to pointer from integer of different size
../../files.c:268: warning: cast from pointer to integer of different size
../../getenvrn.c: In function 'HB_FUN_FT_GETE':
../../getenvrn.c:178: warning: implicit declaration of function 'GetEnvironmentStrings'
../../getenvrn.c:178: warning: initialization makes pointer from integer without a cast
../../tpwin.c: In function 'HB_FUN_P_INITPORTSPEED':
../../tpwin.c:78: warning: cast to pointer from integer of different size
../../tpwin.c:89: warning: cast to pointer from integer of different size
../../tpwin.c: In function 'HB_FUN_P_READPORT':
../../tpwin.c:108: warning: cast to pointer from integer of different size
../../tpwin.c: In function 'HB_FUN_P_WRITEPORT':
../../tpwin.c:119: warning: cast to pointer from integer of different size
../../win_dll.c: In function 'DllExec':
../../win_dll.c:509: warning: cast from pointer to integer of different size
../../win_dll.c:603: warning: cast to pointer from integer of different size
../../win_dll.c:672: warning: cast to pointer from integer of different size
../../win_dll.c:689: warning: cast to pointer from integer of different size
../../win_dll.c: In function 'hb_getprocaddress':
../../win_dll.c:809: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'hb_oleItemToVariant':
../../win_ole.c:466: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'FreeParams':
../../win_ole.c:762: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'hb_oleVariantToItem':
../../win_ole.c:1092: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'HB_FUN_CREATEOLEOBJECT':
../../win_ole.c:1425: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'HB_FUN_GETOLEOBJECT':
../../win_ole.c:1478: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'HB_FUN_OLEADDREF':
../../win_ole.c:1486: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_OLERELEASEOBJECT':
../../win_ole.c:1498: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_OLEVALUE':
../../win_ole.c:1648: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO__OLEVALUE':
../../win_ole.c:1675: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_OLENEWENUMERATOR':
../../win_ole.c:1703: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_INVOKE':
../../win_ole.c:1786: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_SET':
../../win_ole.c:1810: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_GET':
../../win_ole.c:1834: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_ONERROR':
../../win_ole.c:1861: warning: cast to pointer from integer of different size
../../win_regc.c: In function 'hb_regkeyconv':
../../win_regc.c:77: warning: cast to pointer from integer of different size
../../win_regc.c: In function 'HB_FUN_WIN_REGCREATEKEYEX':
../../win_regc.c:82: warning: cast to pointer from integer of different size
../../win_regc.c:96: warning: cast from pointer to integer of different size
../../win_regc.c: In function 'HB_FUN_WIN_REGOPENKEYEX':
../../win_regc.c:118: warning: cast from pointer to integer of different size
../../win_regc.c: In function 'HB_FUN_WIN_REGCLOSEKEY':
../../win_regc.c:193: warning: cast to pointer from integer of different size
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_GETITEMRECT':
../../wapi_commctrl.c:521: warning: value computed is not used
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_GETIMAGELIST':
../../wapi_commctrl.c:553: warning: cast from pointer to integer of different size
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_ADJUSTRECT':
../../wapi_commctrl.c:632: warning: value computed is not used
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_CREATE':
../../wapi_commctrl.c:782: warning: cast to pointer from integer of different size
../../wapi_commctrl.c:786: warning: cast from pointer to integer of different size
../../wapi_winbase.c: In function 'HB_FUN_WAPI_GETMODULEHANDLE':
../../wapi_winbase.c:83: warning: cast to pointer from integer of different size
../../hbserv.c: In function 's_serviceSetHBSig':
../../hbserv.c:638: warning: passing argument 1 of 'SetUnhandledExceptionFilter' from incompatible pointer type
../../hbxml.c: In function 'HB_FUN_HBXML_DATAREAD':
../../hbxml.c:2321: warning: cast to pointer from integer of different size
* INSTALL
* utils/hbmk2/hbmk2.prg
+ config/win/mingw64.cf
* config/win/mingw.cf
+ Added support for mingw64. MinGW 64-bit mode.
Harbour doesn't build yet due to some compiling errors
(plus some internal MinGW ones to be investigated).
; TODO: Add support in postinst.sh.
* source/vm/extrap.c
* win32 -> win.
* contrib/hbmysql/mysql.c
* contrib/hbmysql/tmysql.prg
* Renamed all functions to standard mysql equivalents.
Please update your code and turn off old function
names with -DHB_MYSQL_LEGACY_LEVEL_OFF to test for
success. Legacy function names will be removed from
Harbour in the next release. This move allows to use
hbmysql and hbodbc in the same app.
SQLAND() has to be replaced with HB_BITAND(), be aware
that latter will RTE when non-numeric var is passed,
while SQLAND() was silently ignoring it.
Changed functions names:
SQLVERSION() => mysql_get_server_version()
SQLCONNECT() => mysql_real_connect()
SQLCLOSE() => mysql_close()
SQLCOMMIT() => mysql_commit()
SQLROLLBACK() => mysql_rollback()
SQLSELECTD() => mysql_select_db()
SQLQUERY() => mysql_query()
SQLSTORER() => mysql_store_result()
SQLUSERES() => mysql_use_result()
SQLFREER() => mysql_free_result()
SQLFETCHR() => mysql_fetch_row()
SQLDATAS() => mysql_data_seek()
SQLNROWS() => mysql_num_rows()
SQLFETCHF() => mysql_fetch_field()
SQLFSEEK() => mysql_field_seek()
SQLNUMFI() => mysql_num_fields()
SQLFICOU() => mysql_field_count()
SQLLISTF() => mysql_list_fields()
SQLGETERR() => mysql_error()
SQLLISTDB() => mysql_list_dbs()
SQLLISTTBL() => mysql_list_tables()
SQLAFFROWS() => mysql_affected_rows()
SQLHOSTINFO() => mysql_get_host_info()
SQLSRVINFO() => mysql_get_server_info()
DATATOSQL() => mysql_escape_string()
FILETOSQLBINARY() => mysql_escape_string_from_file()
SQLAND() => hb_bitAnd()
* source/vm/maindll.c
* source/vm/maindllh.c
* source/vm/maindllp.c
* contrib/hbodbc/odbc.c
* Minor formatting.
* source/vm/Makefile
+ source/vm/maindllp
+ source/vm/maindllp/Makefile
+ Added generation of hbmaindllp lib, to create pcode .dlls
on Windows platform. -DHB_DYNLIB is always defined for
this lib. This is just the first step, we will need compiler,
hbmk2 and other changes. I'll contribute with hbmk2 changes.
* source/vm/maindllp.c
% Code made less verbose.
! Created HB_EXPORT declaration for DllEntryPoint().
* config/win/icc.cf
* Changed optimization to -O3 (from MSVC ones).
With max optim (-Ox) it was just a bit faster than MSVC 2008.
+ contrib/hbqt
+ contrib/hbqt/hbqt_qabstractbutton.cpp
+ contrib/hbqt/hbqt_qdialog.cpp
+ contrib/hbqt/hbqt.h
+ contrib/hbqt/Makefile
+ Added initial QT wrapper lib layout with content posted
by Pritpal to the list. (I did a few renames, please check
them)
* contrib/hbwin/hbwapi.h
* Fixes in header.
* bin/hb-mkdyn.sh
* bin/hb-mkdyn.bat
* source/vm/maindllp.c
* utils/hbmk2/hbmk2.prg
+ Renamed all Windows Harbour .dlls to harbour-11.dll and
harbourmt-11.dll. This means that MinGW will now have a versioned
name to be in sync with other builds. It also means that
-vc, -pocc, -ow postfixes are gone (and additionally DMC
could also be supported). What remains is -x64 to
signal an x64 and -ia64 to signal a IA64 build. Another thing
which remains is -b32 (now renamed to -bcc to be in sync with
rest of Harbour), because Borland has an non-standard
name mangling, and while it can be made work with other
compilers since the calling convention is the same, it requires
the .dll user applications to be rebuilt with some implib tricks.
Overall Borland isn't recommended for .dll creation.
Please do further tests for binary compatibility.
; TOFIX: Location of .dll still differs for mingw/cygwin, they
are created in lib while rest of compilers create it in
bin. I think we should sync them by creating a copy
of the .dlls in bin for mingw/cygwin. Przemek, could
you help here?
; TOFIX: "Making <dllname>..." screen messages. I'll need some
help here also.
* bin/hb-mkdyn.sh
* ${MAJOR} default set to 1.
* make_gnu_os2.cmd
* Minor formatting.
* contrib/hbgd/gdwrp.c
! Minor correction to recent change. (avoiding warning for MinGW)
* utils/hbdoc/genos2.prg
* utils/hbdoc/genng.prg
* utils/hbdoc/genasc.prg
* utils/hbdoc/genchm.prg
* utils/hbdoc/genhpc.prg
* utils/hbdoc/ft_funcs.prg
* utils/hbdoc/hbdoc.prg
* utils/hbdoc/genhtm.prg
* utils/hbdoc/genpdf1.prg
* utils/hbdoc/gentrf.prg
* utils/hbdoc/genrtf.prg
+ Enabled line number for all files to aid finding crashes.
! Few crashes fixed. Still far from usable state.
* source/vm/thread.c
+ Added short Harbour level API description. (from Przemek)
* contrib/xhb/Makefile
* contrib/xhb/hbcompat.ch
+ contrib/xhb/xhbmt.prg
+ Added translation for all xhb MT functions.
(Thanks a lot Przemek)
* harbour/include/hbpp.h
! changed the NOT operator precedence - it should be bigger then
logical .and./.or. operators in #if expressions
* harbour/source/vm/thread.c
! fixed typo HB_OS_WIM -> HB_OS_WIN - thanks to Francesco.
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
* emulate POSIX thread conditional variables in Windows builds.
It should fix some possible bad behavior in MS-Windows Harbour
MT programs.
* harbour/source/rtl/hbinet.c
! fixed typo in HB_INETDATAREADY() - the second parameter (timeout)
was ignored.
* harbour/contrib/examples/uhttpd/uhttpdc.c
* fixed typo in conditional iMsec usage.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* set default timeout for socket operations to 3 sec.
* use timeout parameter in HB_INETDATAREADY() and
increased default timeout for accept to 250 millisecs.
Please correct this modification if you prefer different values.
* harbour/source/vm/classes.c
* forbid some usage of __clsModMsg() and unblock some others
It should make some xHarbour users using OVERRIDE METHOD happy
but please remember it's still undocumented and unsupported
functionality - use for your own risk.
* harbour/source/rdd/usrrdd/usrrdd.c
! removed unnecessary declaration
* harbour/source/compiler/harbour.yyc
! removed unnecessary ";"
* harbour/source/vm/classes.c
* harbour/source/compiler/hbpcode.c
* pacified some warnings for compilers which can detect that
hb_errInternal() does not returns
* harbour/source/rtl/hbgtcore.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/contrib/rddads/adsx.c
* marked all places where we put some link time bindings after
hb_errInternal() as: /* not executed, only to force linking ... */
* utils/hbmk2/hbmk2.prg
! Fixed -gh switch detection and workings.
(Francesco, pls check now allmod.hbm)
+ -gt switch can now be filtered. (-gtwin{win})
! -gui switch won't anymore add '-Wl,-mwindows' C compiler switch
on *nix systems. Someone pls confirm this is right.
* icc will use -vc postfixed .dlls. They seem to be binary
compatible, but I didn't test.
% Using __PLATFORM__UNIX macro where applicable.
! Ignoring -o Harbour option passed using '-prgflag:'
* INSTALL
+ Added some details.
* mpkg_win.bat
! Don't create install files if the make process returned
with error.
* source/lang/msg_tpl.c
! Removed ending ';'.
* source/vm/Makefile
+ Added icc to generate maindllh.lib.
* source/common/hbfsapi.c
! Removed obsolete 'extern hb_fhnd_ForceLink()'.
* config/rules.cf
* config/lib.cf
* config/bin.cf
% Compiling all .prg files with -n1 switch.
* contrib/examples/uhttpd/uhttpdc.c
* Cleaned Windows headers usage.
#define HB_OS_WIN_USED is safe to use on all platforms,
it just requests the Windows headers, and if compiled on
Windows, it will #include them.
* contrib/examples/uhttpd/uhttpd.prg
+ Automatically sets USE_HB_INET on non-Windows platforms.
- contrib/examples/uhttpd/uhttpd-inet.hbm
- contrib/examples/uhttpd/uhttpdgd-inet.hbm
- Removed files no longer necessary.
* contrib/examples/uhttpd/uhttpd.hbm
+ Added comment about -DUSE_HB_INET option.
% Removed -lhbct
* harbour/include/hbdefs.h
* harbour/source/vm/hvm.c
* respect HB_START_PROCEDURE in all builds if such public
function/procedure exists.
Now whole Harbour code can be compiled with -n1 in all builds.
Warning for Windows/DOS users:
if you have main() function in your .prg code then it will be
automatically detected as application startup entry just like
in other systems.
Otherwise the 1-st linked function will be used like so far.
+ added HB_START_PROC_STRICT macro which causes that HVM ignores
HB_FS_FIRST attribute. Before this modification HB_START_PROCEDURE
has such meaning.
* harbour/source/vm/memvars.c
! added protection against pushing new private variable on HVM stack
if such private variable is already created by the same function.
Clipper also has such protection. This code illustrates it:
proc main()
memvar var1, var2, var3
private var1 := "a", var2 := "b", var3 := "c"
? var1, var2, var3
private var1 := "A", var2, var3 := "C"
? var1, var2, var3
private var1 := NIL, var2, var3
? var1, var2, var3
return
compare Clipper and current Harbour results with old Harbour ones or
with xHarbour results.
* harbour/source/vm/Makefile
! fixed compilation with C compilers which does not support MT mode
(HB_MT=no) - it's seldom situation but may exists on some platforms,
f.e. in *nixes when PTHREADS is not available
* harbour/config/win/bcc.cf
! fixed compilation in SHELL environment
(if exists ... del ... is COMMAND.COM/CMD.EXE only command)
* harbour/source/rtl/hbstrfmt.c
! casting for C++ compilation
* harbour/contrib/xhb/dbf2txt.c
! casting for C++ compilation
! fixed two bad bugs which can cause GPF or some other bad results
I'd seen after short check. I haven't analyzed this code carefully
for others.
* harbour/bin/postinst.sh
! fixed hb*-mkslib link in cross builds (MinGW/MinGWCE)
* INSTALL
* Updates.
* source/vm/Makefile
- Removed sensing HB_MT value and building pure MT version
of Harbour. This is to avoid yet another unnecessary
variation of Harbour builds. For MT, just simply hbvmmt lib
should be linked.
* INSTALL
* make_b32.bat
* doc/gmake.txt
* bin/postinst.bat
* bin/hb-mkdyn.bat
* make_gnu.bat
* contrib/hbfimage/readme.txt
* contrib/examples/uhttpd/modules/bldhrb.bat
* source/vm/Makefile
* source/rtl/console.c
* source/compiler/gencobj.c
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/examples/winapi.hbp
- config/win/bcc32.cf
+ config/win/bcc.cf
* Long time TODO done: Renamed bcc32 compiler name to bcc.
bcc32 is still accepted by make_gnu.bat, but will be
removed in the future, so it's recommended to update
your local settings to use:
set HB_COMPILER=bcc
- config/dos/bcc16.cf
- Deleted bcc16 compiler support. I didn't work since ages,
and Harbour doesn't support 16-bit compilers anyway.
* harbour/include/hbapi.h
* harbour/include/hbstack.h
* harbour/source/vm/hvm.c
* harbour/source/vm/estack.c
* harbour/source/vm/memvars.c
! fixed __M[V]CLEAR()/ __M[V]RESTORE() to be exactly Clipper compatible
and do not release PUBLIC GetList value. Here it's small example
which illustrates current behavior and exploits bug in previous
version:
memvar getlist
proc main()
getlist:="public:getlist"
? getlist
private getlist:="private:getlist"
? getlist
CLEAR MEMORY
? getlist
return
* harbour/source/compiler/gencc.c
+ added Harbour exception to the license - it's mine code with
few lines added/modified by Ryszard and Viktor. I hope they do
not have anything against.
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/hbident.c
* minor formatting
* utils/hbmk2/hbmk2.prg
+ Now all dirs of input files referred to through .hbm
make files will be adjusted with the .hbm path as passed
on the command line. This allows to use .hbm files without
switching to their host dirs:
'hbmk2 examples/hello/hello.hbm'
(internal logic also allows to display error messages
pointing to the exact location where the error
was detected)
+ Added simple macro substitution engine. Not used yet.
% Minor optimizations.
* bin/hb-mkdyn.bat
* source/vm/Makefile
* utils/hbmk2/hbmk2.prg
+ config/win/msvcia64.cf
+ Added support for IA64 architecure with MSVC.
(actual compilation untested as it needs MSVC Team System)
* bin/hb-mkdyn.bat
% Now using .hbm files.
* bin/hb-mkdyn.bat
* Cleaned tool outputs.
+ Added hbmaindllh lib to included liblist.
(dunno what this serves, but we had it in non-GNU make)
Do we need this at all?
+ Added support for msvc64 dll name.
* Some tweak to owatcom, but it's just guessing, it still
doesn't work.
+ Added generating hbrun-dll executable.
* source/vm/hvm.c
* source/vm/mainstd.c
* Random tweak for owatcom/win dll support without success.
Best result so far is:
"Unrecoverable error 9012: Can't locate the starting procedure: 'MAIN'"
* source/vm/Makefile
+ Added mainddllp generation for msvc, msvc64, bcc32, owatcom.
* source/vm/maindllp.c
+ Added msvc64 and msvcia64 .dll names.
* source/vm/extrap.c
* Minor tweak to use alternate (documented) CPU detection macro.
* utils/hbmk2/hbmk2.prg
+ Added msvc64 .dll name.
* Removed automatic addition of hbcommon lib for shared
mode for win compilers.
* utils/hbtest/hbtest.hbm
* utils/hbrun/hbrun.hbm
+ Added make files.
* bin/hb-mkdyn.bat
+ Moving .lib and .exp (if they are generated) files
to LIB dir.
* source/vm/maindllp.c
+ Added owatcom flavour of .dll name.
* contrib/hbwin/win_misc.c
+ Added WAPI_GETLASTERROR(), WAPI_SETLASTERROR(), WAPI_SETERRORMODE().
* utils/hbmk2/hbmk2.prg
+ Added TODO to create temp .c files in temp location.
Looks this can create a few problems (-hbcc, .ppo output
location when -p is used by user).
+ '/o' flavour of -o option is now ignored on non-*nix
systems to make sure users cannot mess up the hbmk process
flow.
* -o option modified to reset any previous explicit -o settings.
* Some minor internal renames, comments.
+ Added new hbmk.cfg / .hbp option: 'shareddef='. This can
change the default state of shared/static setting, so it
can be used by installers or user to override default
behaviour. NOTE: HB_SHARED envvar can also be used.
* Changed hbmk.cfg lookup preferences to this:
1. $HOME/.harbour
2. /etc/harbour
3. <hbmkdir>/../etc/harbour
4. <hbmkdir>/../etc
5. <hbmkdir>
(NOTE: I've deleted /etc as etc/harbour seems superior
and we already store a .def file there.
I've also deleted /usr/local/etc)
* harbour/source/vm/memvars.c
+ added support for reading FoxPro .mem files - Clipper compatibility
! fixed bug introduced in my recent modifications in .mem files writing
! fixed very old bug which disabled writing to .mem files strings
longer then 32Kb
+ harbour/config/linux/icc.cf
* harbour/config/linux/gcc.cf
* harbour/bin/hb-func.sh
* harbour/bin/postinst.sh
* harbour/source/common/hbver.c
+ added support for Intel(R) C/C++ compiler
* harbour/bin/postinst.sh
% use hb-mkdyn symlink instead of regenerating it as hb-mkslib
It will work also in DOS/Windows (MSys/DJGPP emulates ln -s ...)
* harbour/source/vm/thread.c
* removed all references to HB_THREAD_EQUAL()/HB_THREAD_SELF() in
non MT builds
* harbour/source/rtl/console.c
! fixed default color setting in hb_dispOutAtBox()
* harbour/contrib/gtwvg/wvggui.h
* harbour/contrib/gtwvg/wvgwin.c
* harbour/contrib/gtwvg/wincallb.c
* harbour/contrib/gtwvg/wvgsink.c
! fixes for C++ compilation:
- this is reserved word in C++ - do not use it as variable name
- class is reserved word in C++ - do not use it as variable name
- use macros to hide differences between C and C++ WinAPI
- casting
* source/vm/fm.c
! Fixed compilation error in dlmalloc with pocc64.
* config/win/pocc64.cf
* config/win/msvc64.cf
* Cleanup.
* config/win/gcc.cf
! Added gdi32 to system lib list.
* config/win/mingw.cf
* config/win/mingwce.cf
* Minor sync with each other.
% Two duplicated lines removed from mingwce. I hope these
weren't intentional.
---
AR = $(CCPREFIX)ar
ARFLAGS = $(HB_USER_AFLAGS)
---
* harbour/include/hbsetup.h
* minor modifications in macros
* disabled some GCC function attributes when ICC is used
* harbour/source/pp/ppcore.c
* casting
* harbour/source/vm/fm.c
* destroy dlmalloc mspace in hb_xexit() when USE_DL_PREFIX is used
otherwise call malloc_trim(0) to at least reduce allocated memory
* harbour/source/vm/estack.c
; added TODO note for TSD handles recovery system to document dynamic
(not static) TSD access as public API. Otherwise it's a risk to give
such interface for 3-rd party code developers due to potential
resource leak.
* harbour/contrib/hbct/ctwin.c
+ added support for thread local current window pointer in CT Windows.
Warning: each new thread uses window 0 as default.
* harbour/contrib/hbct/files.c
+ added MT support FILESEEK(), FILEATTR(), FILESIZE(), FILEDATE().
Warning: now each thread operates on it's own directory handle.
The directory handle is open until is not scanned to the end by
subsequent calls to FILESEEK() without parameters or by explicit
call with NIL or empty string "" as file name, f.e.: FILESEEK( NIL ).
Such method of closing directory handle is compatible with original
CT3 behavior.
* utils/hbmk2/hbmk2.prg
! Fixed bug which made gtwvt the default GT for mingw.
! Fixed to create final exe in current dir if no output
filename was specified and the first input file
contained a path.
* Changed to use version-less harbour shared lib names
on *nixes.
! Fixed to pass full path with harbour.so to gcc.
(even when Harbour isn't run from a system location)
! Fixed compilation/linking/cleanup if an input file
wasn't in current dir.
* Temp stub file is now created in system default temp dir,
instead of the current one.
+ Harbour shared lib path is normalized when Harbour
is found on system locations. (so '*/bin/../lib/' becomes
'*/lib')
* Better I hope handling of .so/.dylib/.sl/.dll files passed
on the command line.
* bin/hb-mkdll.bat
! Fixed typo in Borland MT .dll name.
! Fixed to not include maindll.obj, maindllp.obj in
Borland .dlls.
* Minor formatting and cleanup on internal names.
+ Added checking for source lib existence, showing
message if not found.
+ Better user feedback.
* bin/postinst.bat
+ Added running hb_mkdll.bat at the end of the build
process. For now users have to use 'set HB_DLL=yes'
to enable this features. It's experimental yet,
see previous comments.
* source/vm/Makefile
+ Now generating hbmainstd and hbmainwin for remaining
(non-mingw and non-mingwce) compilers. MSVC and BCC
need this for -shared linkage, I'm not sure about the
rest, anyhow we can disable it for other compilers
if it isn't needed in future.
* bin/hb-func.sh
% Refined hbmkcfg.hbp setup to better detect conditions.
* contrib/hbcurl/hbcurl.c
! Pacified this only one new gcc 4.3.3 warning.
* config/win/gcc.cf
* config/win/mingw.cf
+ Added -mtune=pentiumpro gcc optimization.
+ source/vm/fm
+ source/vm/fm/Makefile
+ source/vm/fmmt
+ source/vm/fmmt/Makefile
* source/vm/Makefile
+ Added hbfm, hbfmmt lib generation which works for
all compilers, not just gcc family.
; Please review.
; TOFIX: For some reason the locally added C flags
appear twice. Couldn't find out why.