* harbour-win-spec
* harbour-wce-spec
* INSTALL
* bin/postinst.sh
* Makefile
* source/pp/Makefile
* source/Makefile
* config/global.mk
* HB_BUILD_PART -> HB_BUILD_PARTS (simple rename)
+ HB_BUILD_STRIP added. It's dummy yet. Support will have to
be added on the compiler level and removed from postinst phase.
* harbour/harbour-win-spec
* harbour/harbour-wce-spec
* harbour/bin/hb-func.sh
* harbour/config/global.mk
* updated to work with modified base make internals and envvars
* do not overload defined by user HB_TOOLS_PREF
! fixed c&p typo in DJGPP cross build HB_TOOLS_PREF
Warning: it still needs export HB_BUILD_SHARED=no before creating
RPMs but it should be fixed in base make together with native builds.
TODO: we should agree some conditions for alternative system wide
cross build installation, like .cfg file name and localization.
* bin/postinst.sh
! Fix to strip command. Now using 'find' again and using -maxdepth 1
to prevent it from parsing subdirs.
* config/global.mk
+ Added new user settings to screen dump.
* source/dynlib/mt/Makefile
* source/dynlib/Makefile
* config/darwin/gcc.mk
* config/linux/gcc.mk
* config/dyn.mk
+ Attempt to add link creation for dynlibs.
Not tested yet.
; TODO: darwin needs even more sopthistication.
; TODO: clean support is missing yet.
; TODO: add this to rest of targets.
* source/vm/vmmt/Makefile
! Disabled HB_HVM_ALL for linux-icc, because it causes compiler internal
error when using -fpic.
* source/vm/Makefile
* Indenting.
* mpkg_tgz.sh
* bin/postinst.sh
% Attempt to clean mpkg_tgz.sh from redundant make logic.
Some tasks (stripping, shared tool making using HB_BUILD_SHARED,
chmod on HB_INC_INSTALL) moved to postinst.sh, some others
deleted (platform detection, shared tool building using old
method, component detections, install dir forming and creation.
; Please review me and test.
; TODO: Maybe above tasks in postinst.sh should only be
executed when HB_BUILD_PKG=yes.
* config/global.mk
! Fixed to only use lib64 dir if it exists. Please review/test
this feature.
+ Now exports HB_SYSLOC variable which is set to non-empty if
HB_INSTALL_PREFIX points to system location.
* harbour.spec
- Deleted PIC option related lines. These are handled by GNU Make now.
* utils/hbmk2/hbmk2.prg
+ Added PIC related options to *nix compilers when using -hbdyn option.
% Deleted PIC related option from link command. Not needed.
* harbour/bin/hb-func.sh
! fixed few problems introduced by macro name modifications and removed
some wrong RT checking
* harbour/bin/hb-func.sh
* harbour/source/common/hbprintf.c
* harbour/source/rtl/fstemp.c
* harbour/config/bsd/libs.mk
* updated for NetBSD builds
* harbour/bin/hb-func.sh
* harbour/config/beos/libs.mk
! use network system library instead of socket in BEOS/HAIKU builds
* harbour/source/rtl/hbsocket.c
! translate protocol/address families in BEOS/HAIKU builds
Thanks to Tomas for locating both problems
* harbour/bin/hb-func.sh
* updated hb* scripts to work modified bast build conditions
* harbour/source/rtl/gttrm/gttrm.c
* added support for terminals with automatic scroll at maxrow,maxcol
position - now it's enabled for BSD console though it may be also
usable in other terminals with such behavior but it's hard to detect
it without real tests.
* harbour/source/rtl/filebuf.c
* clear FS error code in dummy close
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiosrv.c
* added special error code which is used if some operation fails
but without setting hb_fsError()
* replaced const value with macro as Tomas suggested
* bin/hb-func.sh
* config/beos/libs.mk
* config/global.mk
* config/bsd/libs.mk
* config/darwin/libs.mk
* config/hpux/libs.mk
* config/dos/djgpp.mk
* config/linux/libs.mk
* config/sunos/libs.mk
* Renamed two variables to be in sync with latest changes:
HB_CRS_LIB -> HB_LIBNAME_CURSES
HB_SLN_LIB -> HB_LIBNAME_SLANG
(this one is not honored by GNU Make system)
; TOFIX: Honor HB_LIBNAME_SLANG in GNU Make system? Is that
needed in some cases?
* config/dos/djgpp.mk
+ Synced system lib/libpath logic with libs.mk found on
other platforms.
- bin/pack_src.sh
+ mpkg_src.sh
* Moved and renamed to align with rest of pkg creation scripts.
(this should also go to package dir once in the future)
* source/common/hbver.c
* Converted decimal version numbers to hex in BCC guards.
+ Added BCC version detections for old (pre-5.x) versions.
(Borrowed from xhb/Miguel Angel Marchuet)
- ERRATA
* doc/howtosvn.txt
* INSTALL
* bin/postinst.cmd
* bin/postinst.bat
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
+ Replaced ERRATA file (which was never updated), with a link
to bug/feature/etc tracker link in INSTALL.
* INSTALL
* Minor improvements.
* harbour/bin/hb-func.sh
* updated hb* scripts to work with HAIKU/BEOS
* harbour/source/vm/dynlibhb.c
* enabled dlopen()/dlclose() in HAIKU/BEOS builds
* added TODO warning in non DOS builds which does not support
dynamic library loading
* harbour/source/rtl/fserr.c
! fixed errno translation
* harbour/source/rtl/gttrm/gttrm.c
+ added support for CTRL+{UP,DOWN,RIGHT,LEFT} keys in HAIKU XTerm.
+ added hack for UP,DOWN,RIGHT,LEFT keys in HAIKU XTerm - it works
only locally.
* added two notes about problems with HAIKU XTerm which cannot be
cleanly resolved by us:
- reverted MIDDLE and RIGHT button
- UP,DOWN,RIGHT,LEFT use the same sequences as
CTRL+{UP,DOWN,RIGHT,LEFT} in XTerm 3.x.x
any hardcoded solution is wrong in such case because XTerm can
be used for remote access.
* harbour-win-spec
* harbour-wce-spec
* INSTALL
* bin/hb-func.sh
* config/detfun.mk
* config/global.mk
* Renamed HB_XBUILD to HB_BUILD_EXTDEF=no[|yes].
Not the perfect name, but anyway.
+ Documented HB_BUILD_EXTDEF setting.
; TOFIX: There is an HB_XBUILD reference in mpkg_tgz.sh which
I couldn't correct.
* Makefile
+ Moved building of external libs before utils.
This will allow to add embedded external libs which are used
by Harbour core.
* bin/postinst.bat
! Fixed for dos shells. (cmdline lenght problems, end of .cfg
extension was clipped on the longest line to .cf)
+ package/winuni
+ package/winuni/HARBOUR_README_MINGW
+ package/winuni/HARBOUR_README_MINGWARM
+ package/winuni/HARBOUR_README_ADDINS
+ package/winuni/HARBOUR_README_DJGPP
+ package/winuni/HARBOUR_README_POCC
+ package/winuni/HARBOUR_README_WATCOM
+ package/winuni/HARBOUR_README_MINGW64
+ package/winuni/mpkg_win_uni.bat
+ package/winuni/mpkg_win_uni_extra_copy.bat
+ package/winuni/RELNOTES
+ package/winuni/mpkg_win_uni.nsi
+ Added components needed to create unified Windows build.
Of course the dir structure with content should be assembled
manually. These files are rough ones, ease of use was no
concern.
Anyone please feel free to continue this work.
* config/darwin/clang.mk
+ Disable -c option to avoid warnings when --analyze user option is used.
* utils/hbmk2/hbmk2.prg
! Implemented fix from hbmk script for shared mingw targets in GUI mode.
* bin/hb-func.sh
! Synced wce .dll name with rest of Harbour.
* harbour/bin/hb-func.sh
* updated hb* script to work with import library and new
harbour.dll names.
+ added workaround for problem with shared linking in gui mode caused
by wrong import library in MinGW builds - without it hb* scripts
can work only with pure .DLLs
TOFIX: shared linking in gui mode does not work in hbmk2 at least
with MinGW cross builds I have in my Linux box, i.e.:
/*** tst.prg ***/
? "TEST"; WAIT
hbmk2 tst.prg -shared -gtwvt -mwindows
./tst.exe
-> Unrecoverable error 10001: It's not a GUI program
* bin/postinst.bat
+ Installation of hb-mkimp.bat will now be done automatically
at postinst phase for win/wce targets.
* config/detect.mk
! Fixed HB_INC_WATT handling if it contained backslashes
(broken after last commit)
% Avoid using indirect assigment by moving it after detection
function (it was a mistake in my previous commit).
* utils/hbmk2/hbmk2.prg
! Fixed to not apply compression in -hbcmp (and similar) modes.
! Adjusted rdd lib ordering to make some linkers (mingw) happy without
using lib grouping. Please review.
* bin/hb-mkimp.bat
* Little formatting.
* INSTALL
+ Little improvements.
* bin/hb-func.sh
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
! Fixed gpm lib to be added at the end of liblist to make
it link after removal of lib grouping switches.
* harbour/harbour.spec
* harbour/harbour-win-spec
* harbour/harbour-wce-spec
* harbour/bin/hb-func.sh
* harbour/contrib/Makefile
+ harbour/contrib/hbnetio
+ harbour/contrib/hbnetio/netio.h
+ harbour/contrib/hbnetio/netiomt.prg
+ harbour/contrib/hbnetio/netiocli.c
+ harbour/contrib/hbnetio/netiosrv.c
+ harbour/contrib/hbnetio/Makefile
+ added new library: HBNETIO.
It implements alternative RDD IO API which uses own TCP/IP sockets
to exchange data between client and server.
This library contains client and server code and is fully MT safe.
On client side it's enough to execute:
NETIO_CONNECT( [<cServer>], [<cPort>], [<nTimeOut>] ) -> <lOK>
function to register alternative NETIO RDD API and set default
server address and port.
<cServer> - server addres (default 127.0.0.1)
<cPort> - server port (default 2941)
<nTimeOut> - connection timeout (default -1 - not timeout)
Above settings are thread local and parameters of the 1-st successful
connection are used as default values for each new thread.
After registering NETIO client by above function each file starting
"net:" prefix is automatically redirected to given NETIO server, i.e.
use "net:mytable"
It's also possible to pass NETIO server and port as part of file name,
i.e.:
use "net:192.168.0.1:10005:mytable"
On the server side the following functions are available:
create NETIO listen socket:
NETIO_LISTEN( [<nPort>], [<cAddress>], [<cRootDir>] )
-> <pListenSocket> | NIL
accept new connection on NETIO listen socket:
NETIO_ACCEPT( <pListenSocket> [, <nTimeOut>] )
-> <pConnectionSocket> | NIL
start connection server:
NETIO_SERVER( <pConnectionSocket> ) -> NIL
stop connection accepting or connection server:
NETIO_SERVERSTOP( <pListenSocket> | <pConnectionSocket>, <lStop> )
-> NIL
activate MT NETIO server (it needs MT HVM):
NETIO_MTSERVER( [<nPort>], [<cAddress>] ) -> <pListenSocket> | NIL
To create NETIO server is enough to compile and link with MT HVM
this code:
proc main()
local pListenSocket
pListenSocket := netio_mtserver()
if empty( pListenSocket )
? "Cannot start server."
else
wait "Press any key to stop NETIO server."
netio_serverstop( pListenSocket )
pListenSocket := NIL
endif
return
NETIO works with all core RDDs (DBF, DBFFPT, DBFBLOB, DBFNTX, DBFCDX,
DBFNSX, SDF, DELIM) and any other RDD which inherits from above or
use standard RDD IO API (hb_file*() functions).
Without touching even single line in RDD code it gives the same
functionality as REDBFCDX in xHarbour but for all RDDs.
It's possible that such direct TCP/IP connection is faster then
file server protocols especially if they need more then one IP frame
to exchange data so it's one of the reason to use it in such cases.
Please make real speed tests.
The second reason to use NETIO server is resolving problem with
concurrent access to the same files using Harbour applications
compiled for different platforms, i.e. DOS, LINUX, Windows and OS2.
It's very hard to configure all client stations to use correct
locking system. NETIO fully resolves this problem so it can be
interesting alternative also for MS-Windows users only if they
do not want to play with oplocks setting on each station.
I'm interesting in user opinions about real life NETIO usage.
Have a fun with this new toy ;-)
+ harbour/contrib/hbnetio/tests
+ harbour/contrib/hbnetio/tests/netiotst.prg
+ harbour/contrib/hbnetio/tests/netiotst.hbp
+ harbour/contrib/hbnetio/tests/data
+ added simple test code for NETIO. It activates NETIO MT server
and then connects to this server to create and browse table with
memo file and production index with few tags.
* contrib/hbssl/bio.c
- Disabled feature which doesn't seem to be exported via
implibs.
+ contrib/hbssl/hbssls.hbc
+ contrib/hbssl/hbssls
+ contrib/hbssl/hbssls/Makefile
* contrib/hbssl/hbssl.hbc
* contrib/hbssl/Makefile
* Default hbssl lib is now created to link dynamically (on Windows).
+ Added static build of hbssl by the name hbssls, with new .hbc
file linking to static OpenSSL libs.
* contrib/hbssl/Makefile
+ contrib/hbssl/hbssls.hbc
* contrib/hbssl/hbssl.hbc
* bin/hb-func.sh
- Commented creation of dynamic libs. Now it's done on GNU Make
level.
* config/os2/gcc.mk
- Disabled os2/gcc .dll creation. If someone comes up with a working
solution we can readd it, but in current form it just broke os2/gcc
target with no short-term hope for a solution.
* source/common/hbver.c
+ Added "Embarcadero" to Borland C compiler name.
Borrowed from xhb / Andi Jahja
+ Readded also "Borland" to both Embarcadero and CodeGear compiler
names. Probably for most ppl "Borland" tells a hell lot more than
these names which keep changing every second year.
* contrib/gtwvg/Makefile
* contrib/hbtip/Makefile
* contrib/hbtip/hbtipssl/Makefile
* Formatting.
* bin/hb-func.sh
! Fixed recent mistake in gpm detection at postinst (now redundant)
dynlib generation phase.
* source/rtl/fssize.c
! Fixed warnings shown by mingw64 4.5.0.
* config/detfun.mk
+ Now accepting HB_WITH_* control variables in place of HB_INC_* once.
If HB_WITH_* is set it overrides HB_INC_*. Experimental yet.
* Minor in comments.
* config/detect.mk
* Minor correction for conf.mk inclusion.
* mpkg_deb.sh
* bin/hb-func.sh
* harbour.spec
* mpkg_tgz.sh
* HB_WITHOUT_GTCRS -> HB_INC_CURSES
* HB_WITHOUT_GTSLN -> HB_INC_SLANG
* HB_WITHOUT_X11 -> HB_INC_X11
* HB_GPM_MOUSE -> HB_INC_MOUSE (in few remaining hbmk script places)
; NOTE: After all this cleanup/leveling is done, probably
HB_INC_* variables will be changed to more standard
HB_WITH_* format. First I want to finish this part.
* mpkg_deb.sh
* mpkg_tgz.sh
* bin/hb-func.sh
* harbour.spec
+ HB_GPM_MOUSE -> HB_INC_GPM and HB_HAS_GPM depending on whether
it's a config var or a reaction to config (in postinst)
I've left some value in hbmk script which may need further
attention.
I didn't test these changes, please do.
* bin/postinst.bat
! Fixed to work without HB_TOP value. Regression after recent change.
* contrib/rddsql/sddmy/mysqldd.c
* contrib/rddsql/sddpg/pgsqldd.c
* contrib/hbbtree/hb_btree.h
* contrib/hbbtree/hb_btree.c
* source/vm/macro.c
* source/vm/hvm.c
* source/common/expropt2.c
* source/compiler/complex.c
! Fixed MSVC warnings.
Please review me, especially the date related ones in core.
* LONG -> long in hb_compExprReduceTimeStampPut().
; NOTE: Number of MSVC (32-bit) -W4 warnings are reduced to 280,
all of them in RDD code. (plus just few more here and there)
* INSTALL
+ Mentioning dosemu.
* bin/postinst.bat
+ dos shell flavour zip creation.
* config/global.mk
+ Added make platform detection.
+ Changed 'dos shell on win platform' warning to be based on make
platform.
+ Not showing 'dos make on win platform' warning when doing DJGPP
build because this is the right (and only) way in case of this
compiler.
* config/globsh.mk
+ Added command line length limit details for dos shell.
+ Added command line length limit for OS/2. Copied from other .mk file.
* config/dirsh.mk
* config/instsh.mk
- Deleted comments 'We have to use script to overcome the DOS limit of max 128 characters'
from all places.
* config/dos/djgpp.mk
+ Will now error if trying to use other than DJGPP make
to built with this compiler.
* bin/postinst.bat
+ Reworked to work better in cross-build/cross-shell scenarios.
* config/common/watcom.mk
! Use envvars to pass parameter either if shell is dos or target.
This fixes dos/watcom builds under non-dos shells.
* source/dynlib/mt/Makefile
* source/dynlib/Makefile
* config/none.mk
! Fixed the way these dynamic lib targets are skipped.
* package/mpkg_win.nsi
* Changed to also work on trees using short names.
(only 'ChangeLog' is a problem here).
Maybe it's time to rename to CHANGES. It causing too much
headache.
* bin/postinst.cmd
* Sync with .bat.
* config/global.mk
+ Exporting HB_SHELL for postinst scripts.
! Fixed HB_PKGNAME assembly for dos targets.
! Typo in comment.
* config/win/bcc.mk
! Deleted dbl quotes from tlib commands as it totally confused it
under msys shell.
* doc/bintools.txt
* config/dosecho.exe
! Restored previous version. (new one gave error on some watcom lines f.e.)
+ Added binary+source links.
* INSTALL
+ Some minor clarifications.
* 'NT system required' changed 'XP system recommended' for win hosts.
+ Added shell requirement for HB_BUILD_PKG.
% Simplified os2/watcom on linux example.
* bin/postinst.cmd
+ Some cleanup/sync with postinst.bat.
* source/Makefile
! Possible fix: Emptying DYNDIRLIST_BASE on dos targets
to save envvar space.
* source/Makefile
* config/lib.mk
+ Added gtcrs and gtsln to dynlib obj list for *nix targets.
* config/global.mk
+ Added Harbour version number to log header.
! Fixed to use short pkg name based on target platform
no host platform (=dos).
* config/bsd/gcc.mk
* config/hpux/gcc.mk
* config/darwin/icc.mk
* config/linux/icc.mk
* config/linux/sunpro.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
+ Added dynamic library generation to rest of targets.
; Please review, especially sunos/sunpro as it had some
.sh tricks which I couldn't replicate.
* config/bsd/global.mk
* config/hpux/global.mk
* config/darwin/global.mk
* config/linux/global.mk
* config/sunos/global.mk
! Setting DYN_PREF to 'lib'.
* config/wce/mingwarm.mk
* config/win/mingw.mk
- Disabled import libs. [They aren't necessary with mingw.]
* config/darwin/icc.mk
* Changed to use libtool instead of xiar.
(blind sync with darwin/gcc)
* config/dos/djgpp.mk
* config/common/watcom.mk
* config/win/bcc.mk
* config/os2/gcc.mk
! Fixed to use $(ECHOQUOTE) in all $(ECHO) calls.
* config/win/bcc.mk
! Fixed use fixed backslashes regardless of shell in scripts.
* config/dyn.mk
! Fixed to use $(LIB_PREF) as implib name prefix.
% Minor opt in IMP_NAME forming.
* config/rules.mk
% Readded $(HB_INC_COMPILE) to be always on cmdline, to
better balance between cmdline and envvar space. (dos)
* config/instsh.mk
% Don't display useless '! Nothing to install' message
when there was no file to install. (could happen with
mingw dynamic lib install where implib is empty because
we don't generate one).
* INSTALL
* Cleaned examples.
- Arranged them by host platform
- Fixed a few examples (DJGPP on NT missed HB_PLATFORM)
- Moved 'set HB_COMPILE' to make cmdline.
- Consistency changes.
- Deleted empty 'rem' lines.
- Moved log redirection from each example to general NOTE.
- Moved %1 %2 from example to general NOTE.
- Added generic *nix section.
- Added information about possible cross-build targets.
; Hopefully they are much cleaner now. In fact most information
deal with how to setup the compiler.
* config/global.mk
+ Added link to GNU Make free book.
% path checking functions rearranged, so now it can be indented.
+ Added log header line.
! Fixed to display only the first autodetect location.
* bin/postinst.cmd
* bin/postinst.bat
* bin/hb-func.sh
* Wording: 'Generating' -> 'Making'
* 'Harbour Make (hbmk2)' -> 'hbmk2' in generated hbmk.cfg.
* utils/hbmk2/hbmk2.prg
* Wording: 'Generating' -> 'Creating'
* include/hbsetup.h
* Minor in comment.
+ Also looking for __DARWIN__ to autodetect HB_OS_DARWIN.
* utils/hbmk2/hbmk2.prg
+ Honoring -quiet option for language file creation related screen output.
* INSTALL
* Some improvements.
* bin/postinst.bat
+ Added -quiet to hbmk2 cmdlines.
* bin/hb-mkimp.bat
- Not creating msvc implibs for QT .dlls anymore.
.dlls distributed in the QT binary package are using
Itanium ABI (built with MinGW/GCC), which isn't compatible
with ABI used by MSVC. Generating an implib is impossible here.
Those who want to use QT with MSVC Harbour builds should
rebuild QT .dlls from source, implibs will be generated
automatically in this case (I assume).
* config/global.mk
* config/darwin/gcc.mk
+ Added version macros similar to include/hbver.h ones.
% Using above version macros accross the build system.
+ Bumped minimum GNU Make version requirement to 3.81 (from 3.78).
If there is no negative feedback I'll clean some TOFIXes
which no longer apply, plus start cleanup on the make sources
to use more ideal 'else if' syntax.
+ Added commented 'cp' tool check on os2.
* config/global.mk
* config/instsh.mk
+ Reenabled CMDPREF logic.
* Changed os2 shell rules to use '$(CMDPREF)' instead of
hardwired '$(COMSPEC) /C'. Please don't undo it.
* bin/hb-mkdyn.sh
! Updated a default Harbour version number.
* source/pp/Makefile
- Deleted just added global.mk. It's not needed.
* config/globsh.mk
+ Added $(MV) variable with move command.
+ Added $(LN) variable with *nix link command.
! Fixed $(RM) in os2 shell rules to use os2-rm.exe
instead of shell provided del. Latter show errors
if filename doesn't exist, and we're now using
clean rules copied from dos shell, which doesn't
make extra existance checks. Well, to put it
shortly I've synced $(RM) with dos shell solution.
+ config/dj-mv.exe
* config/readme.txt
+ Added DJGPP mv tool.
* bin/hb-func.sh
! Fixed typo in syslib lone in a recent commit.
* config/global.mk
* INSTALL
+ Added HB_DYN_INSTALL envvar. This will tell where to copy
Harbour dynamic libraries. By default it's set to HB_LIB_INSTALL
for *nix targets and HB_BIN_INSTALL for non-*nix targets.
* bin/postinst.bat
- bin/hb-mkdyn.bat
- Deleted batch script to create .dlls. Now done from GNU Make
system. This means it work on all shells we support, not just
nt ones.
; TOFIX: Delete win-based gcc family support from hb-mkdyn.sh,
now it's redundant.
* harbour/bin/hb-func.sh
! do not strip system libraries in windows shared linking - unused
ones are not attached to harbour*.dll
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
+ added support to pass strings with embedded chr(0) characters
+ added new public C function:
IDispatch* hb_oleItemGet( PHB_ITEM pItem );
it extracts IDispatch* pointer from Harbour OLE pointer item.
+ added new public C function:
void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem );
it updates pVariant structure using values from given pointer item
(used to update parameter passed by reference to activex event handler)
% optimized some code
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/axcore.c
+ added new public C function:
BOOL hb_oleAxInit( void );
+ added new public C function:
PHB_ITEM hb_oleAxControlNew( PHB_ITEM pItem, HWND hWnd );
It's C function with the same functionality as __AXGETCONTROL()
! allocate ISink structure using hb_xgrab() not hb_gcAlloc()
! initialize ISink reference counter to 0
! fixed Release() method to free all allocated resources when
reference counter reach 0
* return new Active-X control as Harbour OLE item pointer.
Warning !!! hb_parptr() and hb_itemGetPtr() do not return valid
pointer for controls created by hb_oleAxControlNew()/__AXGETCONTROL()
Use hb_oleItemGet() and hb_oleParam() to extract pointer to IDispatch
Please update existing code which used __AXGETCONTROL() pointers
at C level.
- removed not longer used hb_sink_destructor
! removed WIN_AXRELEASEOBJECT() - this function breaks reference counters
used by OLE object which needs strict updating to avoid memory leaks
(not freed OLE object) or GPF traps (accessing freed object)
+ extended Invoke() method to update OLE parameters passed by reference.
+ accept as event handler hash arrays indexed by event numbers and
values with codeblocks or function pointers. Similar functionality
exists in HWGUI when it's compiled with __USEHASHEVENTS macro and
it's much better then passing two arrays.
% optimized some code
Please test above Active-X modifications. I'm not MS-Windows user so
they have to be verified by real MS-Windows developers.
They should fix problems with memory leaks (OLE objects where never
freed) or GPF traps in C code which tired to strictly manage reference
counters.
To C programmers: if you increase reference counter to activex control
(AddRef()) then you have to release it (Release()) or activex control
will never be freed even after clearing all .prg references. It's
released only when last reference owner calls Release() method so now
valid code can keep references to IDispatch at C level without any
problem but it also means that this code can exploit problems in
existing wrong code.
* source/pp/Makefile
* bin/hb-mkdyn.bat
+ Deleting hbpp dynamic built object to not interfere with
harbour dll creation when picking up the objects with wildcard.
* Changed .dll creation script to not filter out above object
explicitly, it's not needed anymore.
* source/vm/mainwin.c
* source/vm/mainstd.c
* bin/hb-mkdyn.bat
+ Added hack to exclude any content when creating dynamic build
objects for win/watcom. Any content here breaks .dll creation
on this target.
* Changed .dll creation script to not filter out above objects
explicitly, it's not needed anymore.
* config/global.mk
% Changed CPU detection to use $(filter)
+ Added CPU detection based on wce compilers.
+ Showing detected host and target CPU architecture in log
(if it could be detected - this is currently only implemented
for non-*nix targets)
- Deleted host binary extension display in verbose mode.
- Deleted now unused HB_BUILD_VERBOSE option.
* config/global.mk
+ Added HB_DYN_VER variable to hold the version number used in Harbour
dynamic libary name.
* config/bsd/global.mk
* config/darwin/global.mk
* config/hpux/global.mk
* config/linux/global.mk
* config/os2/global.mk
* config/sunos/global.mk
* config/wce/global.mk
* config/win/global.mk
+ Added DYN_EXT variables for each platform.
* source/Makefile
* config/rules.mk
+ config/dyn.mk
+ source/dynlib
+ source/dynlib/mt
+ source/dynlib/mt/Makefile
+ source/dynlib/Makefile
* config/win/msvc.mk
+ Added experimental .dll building feature to the GNU Make system.
It's only implemented for MSVC yet.
The goal is to replace shell specific (postinst) solutions.
* utils/hbmk2/hbmk2.prg
+ Added darwin/icc support. Untested yet.
* source/vm/maindllp.c
! Fixed typo in prev commit.
* config/global.mk
* INSTALL
* bin/hb-mkdyn.sh
* bin/hb-mkdyn.bat
+ Added HB_USER_DFLAGS to add custom linker flags to .dll link command.
(just like in hbmk2)
- In hb-mkdyn.sh HB_USER_LDFLAGS deleted, now HB_USER_DFLAGS replaced it.
(HB_USER_LDFLAGS was missing from darwin link cmd)
* bin/hb-mkdyn.bat
! HB_DLLLIBS -> HB_DLLIBS
* config/global.mk
+ Added HB_DLLIBS to list of misc custom settings.
* INSTALL
+ Revision of OPTIONS AVAILABLE WHEN BUILDING HARBOUR section.
! Typo.
* harbour/bin/hb-func.sh
* use -I<path> parameter passed to Harbour compiler in hb* scripts
also with C compiler for C code inside #pragma begindump/enddump