* config/os2/dir.cf
* use $(COMSPEC) instead of calling cmd.exe directly
* config/os2/gcc.cf
* rewrote create_library rule to work with make -jn without
breaking shell environment/command line size.
* source/rtl/hbproces.c
* included sys/waith.h in OS/2 build. I think that initial
#defines can be simplified a bit.
* config/os2/install.cf
* rewrote install_rule to work with make -jn without
breaking shell environment/command line size.
* config/lib.cf
* removed unnecessary double quotes around TOP definition
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
! fixed typo in one internal function name
* harbour/include/hbapi.h
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
* harbour/source/vm/dynsym.c
* harbour/source/vm/memvars.c
% changed code used for memvars clear in MT mode - it greatly
reduce the cost of HVM thread exit
% changed code for memvars copping/sharing when thread is started
it greatly reduce the time of thread creation when existing memvars
are shared or copied
Both modifications reduced the cost of simple
hb_threadJoin( hb_threadCreate( {|| NIL } ) )
few times depending on number of symbols and memvars.
* harbour/source/rtl/gttrm/gttrm.c
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtsln/gtsln.h
* harbour/source/rtl/gtpca/gtpca.c
% added better initial cursor position detection and eliminated sscanf()
* harbour/source/Makefile
! fixed concurrent dependencies in cross builds
* source/rtl/tget.prg
* source/rtl/tgetx.prg
* source/rtl/tbcolumn.prg
* source/rtl/tbrowse.prg
* Reset internal name of GET(), TBROWSE(), TBCOLUMN(),
because even if Clipper doesn't have such public
symbols, Class(y) has them, and we want to maintain
compatibility.
* include/hbextern.ch
+ Added GET, TBROWSE, TBCOLUMN.
* contrib/rddado/tests/hbmk_b32.bat
* contrib/rddado/tests/hbmk_vc.bat
! hbw32.lib -> hbwin.lib
* source/vm/set.c
! Fixed HB_OS_W32 (non-existing) macro to HB_OS_WIN.
It caused that device names were not uppercased in Windows
builds, which wasn't fatal.
* include/hbextern.ch
* source/rtl/tbcolumn.prg
* source/rtl/tbrowse.prg
* source/rtl/tget.prg
* source/rtl/tgetx.prg
! Using new method to solve the GET()/TBROWSE()/TBCOLUMN()
symbol problem (these aren't public symbols in Clipper).
The method used is the one already implemented for other
C53 CUI classes.
This allows inheritance, doesn't mess up the class name,
and won't declare above public symbols.
* Moved Xbase++ compatible GET()/TBROWSE()/TBCOLUMN()
functionality into separate classes, all inheriting from
original Harbour classes. This means that Xbase++
compatible methods are only accessible when using the
derived classes. The separation will allow us to
move XPP (and other HB_COMPAT_*) compatible functionality
into a separate libraries in the future, allowing more
freedom to resolve clashing features, symbol names, etc..
* Xbase++ compatible classes are named: xpp_Get(),
xpp_TBrowse(), xpp_TBColumn(). This is a slight
incompatibility compared to Xbase++ and also to
previous Harbour. Technically it seems possible
to give them the names GET()/TBROWSE()/TBCOLUMN(), if
the class is defined in a different file, but let's first
discuss it.
* source/rtl/tgetint.prg
* Using GetNew() instead of Get():New().
; Finally I didn't use '( ... )' to pass parameters in GetNew(),
as it's a tiny bit less efficient with -gc3.
* include/hbusrrdd.ch
* include/hbapi.h
+ Comment.
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
+ source/rtl/tgetx.prg
* source/rtl/tget.prg
* source/rtl/tgetint.prg
+ CA-Cl*pper compatible GET class renamed to HBGet and
is now always available regardless of feature settings.
* Xbase++ compatible GET class named Get(), moved to separate
file and now inherits from HBGet, plus implements
additional functionality also in the separate file.
* GetNew() moved to tget.prg from tgetint.prg.
* Code changed to use HBGet():New() instead of Get():New().
; TOFIX: After above changes, Xbase++ compatiblity
methods are no longer available for regular
GETs, only if they are explicitly created
using Get():New(). If this is a problem for someone
we can start thinking of a solution.
; TODO: Do the same with TBrowse() and TColumn().
* harbour/source/vm/arrays.c
! protection against possible GPF in hb_rAscan() if user block
reduces the array size
* harbour/source/debug/tbrwtext.prg
! fixed source color text to be more Clipper compatible.
Borrowed from xHarbour by Phil Krylov
* harbour/source/debug/debugger.prg
! added missing :forceStable() to refresh the screen after break point
setting
* include/hbdefs.h
* include/hbthread.h
* added HB_OS_SUNOS to be able to build under OpenSolaris 2008.11
using pthreads.
* source/common/hbprintf.c
* include ieeefp.h under OpenSolaris 2008.11
* harbour/source/vm/fm.c
! fixed typo in default FM module setting/
* harbour/include/hbapicls.h
* harbour/source/vm/classes.c
* harbour/source/debug/dbgentry.c
* renamed hb_dbgObjSendMessage() to hb_dbg_objSendMessage() to keep
naming convention used for other C debugger functions
* harbour/source/vm/debug.c
* added information about existing debugger functions and where they
are used.
* harbour/include/hbvm.h
* harbour/include/hbapidbg.h
* harbour/include/hbvmpub.h
* harbour/include/hbstack.h
* harbour/include/hbapi.h
* harbour/source/vm/codebloc.c
* harbour/source/vm/estack.c
* harbour/source/vm/hvm.c
* harbour/source/debug/dbgentry.c
* changed the method of static variable handling. Now we do not
have centralized array of all statics used by application (s_aStatics)
but each module uses it's own array to keep statics. The old
s_aStatics has been removed. It means that loading new PCODE module
from .hrb file or shared/dynamic library does not cause any static
table reallocation so it does not creates potential GPF trap for MT
code which may operate on static vars.
This modification changed a little bit the debugger interface.
I also updated some unused by us debug functions like __DBGVMVARSLIST()
or __DBGVMVARSLEN() anyhow any 3-rd party debuggers should be
updated for new API and modified hb_dbgEntry() syntax.
* harbour/make_gcc.mak
! added additional rules to fix time conditions in parallel compilation
* harbour/config/dos/dir.cf
* harbour/config/w32/dir.cf
* changed simple assignments to recursive ones
* harbour/config/dir.cf
+ added support for dependencies between build directories for
parallel execution. If compilation of dirX needs results of
dirY and dirZ compilation then it hsould be declared as:
dirX{dirY,dirZ}
% process directories defined in DIRS simultaneously when -j<N>
GNU make switch is used - it gives additional speed improvement
on multi CPU machines
* harbour/Makefile
* harbour/source/Makefile
* set directory dependencies for parallel compilation
The parallel compilation can be enabled by using -j<n> GNU make
switch on multiprocess platforms, f.e.:
./gnu_make.sh -j3
It should give some speed improvement even on single CPU machines.
These are results of clean Harbour compilation on my 3 phantom CPU
computer:
1. leaner compilation without -j<n> 6m29.895s
2. parallel compilation with -j5 but without
parallel directory processing 3m20.163s
3. parallel compilation with -j5 and with new
parallel directory processing 2m6.168s
* harbour/config/rules.cf
* harbour/config/dos/bcc16.cf
! fixed wrong automatic macros $? was used instead of $<
* harbour/config/dir.cf
* optional new DIR_RULE setting for easier testing
* harbour/config/c.cf
+ added support for setting dependencies for files which needs
grammar header files generated by bison (YACC_DEPEND)
* harbour/source/macro/Makefile
* marked macrolex.c as YACC_DEPEND dependent
* harbour/source/compiler/Makefile
* marked complex.c as YACC_DEPEND dependent
* harbour/bin/postinst.sh
! added missing export in envvar setting.
* harbour/config/linux/install.cf
* added error message when install directory is not set.
* harbour/config/lib.cf
* harbour/config/bin.cf
* harbour/config/dir.cf
+ added explicit support for make recursive calls.
Question: why we use $(MK) instead of $(MAKE) so it necessary
to mark recursive make calls manually?
* harbour/config/dir.cf
* rewritten DIR_RUL to use only GNU make commands instead of
OS scripts. Now config/<arch>/dir.cf files are not longer used.
Please make build tests on different platforms. If all will
be correct then we remove these files.
* harbour/source/common/Makefile
* harbour/source/vm/Makefile
* harbour/source/vm/vmmt/Makefile
* moved biggest files to begin of file list for better parallel
compilation utilization.
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* accept invalid string key expression if codeblock key expression
is given.
* source/rtl/gtwvt/gtwvt.c
! Fixed to #undef _WIN32_WINNT before setting it.
; TOFIX: hbwhat has this problem in almost all of its source
files.
* contrib/examples/uhttpd/modules/bldhrb.bat
* contrib/examples/uhttpd/modules/showcounter.prg
* contrib/examples/uhttpd/hbmk_b32.bat
* contrib/examples/uhttpd/hbmk_vc.bat
* Minor.
* harbour/source/common/hbprintf.c
* minor modification for easier future updating
* harbour/source/rdd/dbfntx/dbfntx1.c
! fixed possible GPF caused by corrupted indexes
* harbour/source/rdd/dbfcdx/dbfcdx1.c
! fixed possible GPF caused by missing RT error
! added RT errors for invalid KEY or FOR expressions
* harbour/source/vm/itemapi.c
% eliminated hb_snpritf() from HB_IT_POINTER conversion in
hb_itemString()
* harbour/source/common/hbprintf.c
! fixed return value - it should be one less. Thanks to Xavi.
+ added support for I64, I32 and I16 length specifiers - it's
MS-Windows only extension but it should help in replacing
native C *printf() calls with Harbour version.
* harbour/source/common/hbprintf.c
! do not use _fpclass() in BCC builds - it breaks FL arithmetic
* use _finitel() instead of _finite() in MSVC builds
* harbour/include/hbdefs.h
* include stdint.h in DJGPP >= 2.4
* harbour/source/common/hbprintf.c
! fixed DJGPP <= 2.3 compilation
* harbour/source/common/hbstr.c
* force buffer ending in DJGPP <= 2.3 when vsprintf() is used
* harbour/source/rtl/hbproces.c
! fixed typo in HB_SYMBOL_UNUSED() variable name
* harbour/config/dos/global.cf
! fixed for GNU make ports which prefer COMSPEC before SHELL
* harbour/include/hbdefs.h
* added some C compilers which supports stdint.h
* harbour/source/common/hbprintf.c
* eliminated non portable GCC only C syntax.
* updated to compile with other C compilers.
Now only GNUC with C99 support and BORLAND C gives all
+inf/-inf/NaN values for [long] double conversions.
Other compilers uses NaN also for infinite numbers or nothing.
Please add full support for them. See TODO notes I left.
For compilers which supports C99 floating point macros should
be enough to enable the same macros used for GNUC && _ISOC99_SOURCE.
* harbour/contrib/hbcrypt/sha2.h
* harbour/contrib/hbcrypt/sha2.c
! fixed BCC5.5 compilation
TOFIX: harbour/contrib/hbssl/ssl.c[631], sslctx.c[268], sslctx.c[281]
error: invalid conversion from ‘void*’ to ‘const char*’
I do not know if SSL_get_ex_data()/SSL_CTX_get_app_data()
returns valid ASCIIZ string so I cannot decide if simple casting
is safe and to pacify above errors.
Viktor, can you look at it?
* common.mak
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/strxor.c
+ Added HB_STRXOR() (work of Mindaugas Kavaliauskas)
* common.mak
* source/common/Makefile
+ source/common/hbprintf.c
+ Added hb_snprintf_c() (temp name, untested) (work of Przemyslaw Czerpak)
[ I've added a normal Harbour license, as per your permission
on the list. Pls give me feedback is this is wrong. ]
* source/rdd/usrrdd/example/exlog.prg
! Fixed missing #includes.
* source/rdd/usrrdd/example/hbmk_b32.bat
+ source/rdd/usrrdd/example/hbmk_vc.bat
+ Added MSVC make file.
! Added EOL to the last line to hbmk_b32.bat.
! xhb.lib dependency removed. It was not needed anyway.
; TOFIX: When compiling exhsx.prg, this happens:
exhsx.obj : error LNK2001: unresolved external symbol _HB_FUN_HSXRDD
* contrib/hbssl/sslsess.c
* contrib/hbssl/sslctx.c
* contrib/hbssl/sslciph.c
* Minor changes.
* harbour/config/darwin/gcc.cf
! changed CCACHE to HB_CCACHE
* harbour/include/hbatomic.h
! removed unnecessary volatile casting in Darwin atomic function
parameters
* harbour/source/compiler/harbour.y
! cleaned one untyped expression assign
(by Phil Krylov borrowed from xHarbour)
* harbour/bin/hb-func.sh
* updated contrib library last
* harbour/source/rdd/usrrdd/rdds/arrayrdd.prg
* fixed harbour version without using hbcompat.ch
; TODO: USRRDD not supports dbCreate() extension params
+ harbour/source/rdd/usrrdd/example/exarr.prg
+ ARRAYRDD example
+ harbour/source/rdd/usrrdd/example/hbmk_b32.bat
+ BCC make file
* source/rtl/philes.c
! FWRITE(): Fixed accessing past the string buffer (thus
causing potential GPF and a huge security hole) when
the passed length is greate than the lenght of the string.
Very old bug. In fact CA-Cl*pper suffers from the same
problem, and behavior for such case is not documented.
Harbour will ignore the length parameter (thus writing
the whole passed string), if the length is invalid.
* harbour/source/compiler/hbmain.c
* harbour/source/pp/hbpp.c
* harbour/source/pp/ppcore.c
+ added __FILE__ define for .prg code
; Please, look if this is implemented the right and optimal way.
I'm a little confused about PP initialization order, and how
__DATE__, etc, survive after hb_pp_reset in compiler.