* 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.
* source/vm/hvm.c
+ Added hb_vmSetLinkedMain() function to replace direct
access to exported variable hb_vm_pszLinkedMain.
(it's not a public call and caller should always pass
a string literal).
* hb_vm_pszLinkedMain -> s_vm_pszLinkedMain and made static.
* utils/hbmk2/hbmk2.prg
! Not adding 'dllimport' for externs in C stub when
MSVC is used, to avoid compiler warning mentioned in
previous entry.
* utils/hbmk2/hbmk2.prg
* bin/hb-func.sh
* Updated for above change.
; TODO: Convert GT defaulting to function call too.
* harbour/source/vm/classes.c
* cleanup comment
* harbour/source/rtl/gttrm/gttrm.c
+ added support for HB_GTI_PALETTE - it's supported only by Linux console
and PuTTY/PTerm
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtwvt/gtwvt.c
* harbour/contrib/gtwvg/gtwvg.c
! fixed indexes in
hb_gtInfo( HB_GTI_PALLETE, <nIndex> [, <nNewRGBcolor> ] )
They should be the same as in our screen buffer: 0-based not one
based.
* harbour/source/vm/thread.c
! fixed the typo in order of sending signals in _hb_thread_cond_signal()
_hb_thread_cond_broadcast() for OS2. By mistake it was LIFO instead of
FIFO.
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
! added support for conditional variables working like in PTHREADS
in OS2 builds - it fixes the problem with possible dead lock or
starvation effect which can also cause dead lock in some cases.
OS2 users please test current code.
* source/vm/cmdarg.c
* little hack from Przemyslaw to make it work under OS/2 where
executable name hasen't got extension if extension was not give when
executable was started.
* utils/hbmk/hbmk2.prg
* Changed to work under OS/2 with GCC; other OS/2 compilers not tested.
* harbour/include/hbapi.h
* harbour/source/vm/cmdarg.c
* harbour/source/vm/hvm.c
* added hb_cmdargUpdate() function which makes final argc/argv updating
(code moved from hb_cmdargInit())
! use hb_cmdargUpdate() - it fixes GPF in MT mode when some fs* functions
were called before allocating HVM stack
; TOFIX: change some hb_setGet*() functions to work without HVM stack.
* harbour/source/rtl/hbtoken.c
* formatting
* harbour/source/vm/thread.c
! fixed typo in PTHREAD (*nixes) version of hb_threadMutexTimedLock()
(.prg HB_MUTEXLOCK() with timeout parameter)
! unlock HVM in *nix version of hb_threadWait()
; added TODO note
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
! fixed a bug on OS/2 MT implementation adding a new function,
_hb_cond_timed_wait() because when a semaphore gets posted it has
to be reset, otherwise it does not stop new threads entering it in a wait.
* source/rtl/gtwvt/gtwvt.c
* BYTE -> CHAR (Windows) - UNDONE.
* include/hbdefs.h
+ Added (commented) new types. Work in progress, incomplete.
* contrib/hbssl/ssl.c
- Temporary disabled SSL_GET_READ_AHEAD() as a workaround for
BCC linking problem with SSL_get_read_ahead() OpenSSL
library function (symbol is unresolved due to missing
leading underscore in implib generated ssleay32.lib file).
* source/vm/set.c
% hb_fsFile() -> hb_fsFileExists()
* source/rtl/hbffind.c
* HB_WIN_32_MATCH -> HB_WIN_MATCH
* doc/whatsnew.txt
* include/hbsetup.h
* source/vm/fm.c
* #define HB_FM_WIN32_ALLOC renamed to HB_FM_WIN_ALLOC.
; INCOMPATIBLE: For those who are using this switch, please
update your make files.
* source/rtl/tpopup.prg
! Fixed to draw separator lines with BOX GT attributes,
so that they appear properly.
* harbour/include/hbapi.h
* harbour/source/vm/cmdarg.c
+ added const char * hb_cmdargARGVN( int argc )
* harbour/source/vm/cmdarg.c
* try to convert executable file name argument in argv[0] to
absolute path if it's relative one. Respect PATH envvar it necessary.
* harbour/source/common/hbdate.c
* formatting
* harbour/source/rtl/philes.c
* harbour/source/rtl/errorint.c
* harbour/source/rtl/filesys.c
! use hb_cmdargARGVN(n) instead of hb_cmdargARGV()[n] to avoid
possible GPF if some function will be called before argument
initialization
* removed additional logic which tries to convert relative paths
in file name from hb_fsBaseDirBuff() and HB_PROGNAME() functions
* harbour/source/vm/classes.c
* covered some old functions marked as deprecated long time ago
by HB_LEGACY_LEVEL2 macro
* harbour/source/rtl/hbgtcore.c
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/keyset.c
* harbour/contrib/hbct/misc3.c
* harbour/contrib/hbnf/numlock.c
* harbour/contrib/hbnf/shift.c
* harbour/contrib/hbnf/alt.c
* harbour/contrib/hbnf/ctrl.c
* harbour/contrib/hbnf/caplock.c
* use memset( >Info, 0, sizeof( gtInfo ) ); to initialize
HB_GT_INFO structure - it also fixes possible problems with
uninitialized pNewVal2 member in few cases.
* doc/whatsnew.txt
* include/hbextern.ch
* source/vm/runner.c
* source/rdd/dbcmd.c
* __HRB*() functions marked as HB_LEGACY_LEVEL2 compatibility,
please update your code to use HB_HRB*().
* __RDDGETTEMPALIAS() marked as HB_LEGACY_LEVEL2 compatibility,
please update your code to use HB_RDDGETTEMPALIAS().
; I've permanently remove these symbols from hbextern.ch, so
regardless of the legacy setting, hbrun won't have them
anymore. This is merely technical, as it would need some
hacks in the make system to push through HB_LEGACY_OFF
to pptable.c generation. If someone wants to deal with
this, even better.
* include/hbstdgen.ch
* Added #undef __FILE__.
* include/hbsetup.ch
* Minor.
* doc/whatsnew.txt
* include/clipdefs.h
* include/filesys.api
* include/gt.api
* include/hbapi.h
* include/hbapierr.h
* include/hbapifs.h
* include/hbapigt.h
* include/hbapiitm.h
* include/hbapirdd.h
* include/hbdefs.h
* include/hbgfxdef.ch
* include/hbgtinfo.ch
* include/hbsetup.ch
* include/hbsetup.h
* include/item.api
* include/rdd.api
* source/rtl/errorapi.c
* source/rtl/filesys.c
* source/vm/cmdarg.c
* common.mak
- source/vm/debugold.c
* source/vm/Makefile
* source/vm/vmmt/Makefile
- Permanently disabled HB_LEGACY_LEVEL support.
+ Added HB_LEGACY_LEVEL2 support to protect some
recently made incompatible changes. Old methods
are supported until Harbour 1.2. Please update
your code until then. To test your code for
compatibility with recent changes, you can turn
off legacy support manually by #defining HB_LEGACY_OFF.
(HB_USER_CFLAGS=-DHB_LEGACY_OFF)
This is recommended on local systems for all
Harbour developers.
* 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
* 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.
* 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
* 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/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.
* 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.