* utils/hbmk2/hbmk2.prg
+ Added .hbi to the list of accepted projects at cmdline.
This means that hbmk2 can be run like 'hbmk2 mylib.hbp mylib.hbi'
to create the lib and also generate the implib.
* '-keyheader=' renamed to '-reqheader='
! Fixed typo causing RTE while creating implibs for targets
supporting OMF lib type.
* utils/hbmk2/hbmk2.prg
+ Added experimental feature to aid external dependency
detection. Key header files can now be specified using
'-keyheader=' option. In case such key headers are not
found when evaluating '-inctrypath' conditional header
directories. The goal is to make hbmk2 capable of
replacing GNU Make for all of our contribs. F.e.:
'clean':
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/ -clean
simple make:
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/
'install':
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/ -instpath=${HB_LIB_INSTALL}/ -info
% Minor cleanup to some plugin API functions.
* utils/hbmk2/examples/plug_moc.prg
% Minor cleanup.
* contrib/sddoci/tests/test1.prg
+ Showing field length and decimals.
* harbour/include/hbapi.h
* harbour/src/vm/hashes.c
* harbour/src/vm/hashfunc.c
+ added support for keeping strict assign order in hash arrays. It's
enabled optionally by setting HB_HASH_KEEPORDER hash array flag.
It gives the same functionality as associative arrays in xHarbour
(enabled by HSETAACOMPATIBILITY()) but this implementation is
internally completely different. It does not introduce linear
scan in add operation so enabling it should not reduce the
performance in this operation. It can even improve it on some
hardware reducing number of memory bytes which have to be moved.
Only delete operation will force linear index scan. The most
important in this implementation is that it does not need any
additional functions like HAA*() in xHarbour. Just simply all
existing functions operating on position indexes like HB_HPOS(),
HB_HKEYAT(), HB_HVALUEAT(), HB_HPAIRAT(), HB_HDELAT(), HB_HSCAN()
use as index natural order in which items were added to hash array.
Also HB_HKEYS(), HB_HVALUES() and FOR EACH iterations respect it.
+ added new PRG functions
HB_HKEEPORDER( <hValue> [, <lNewSetting> ] ) -> <lPrevSetting>
HB_HSETORDER( <hValue> [, <lNewSetting> ] ) -> <hValue>
which cam be used to enable/disable strict order in hash array.
Enabling strict order for non empty hash arrays accept the order
created after sorting existing item not the original assign order.
Disabling strict order for non empty hash arrays may change the
items order.
; TODO: add translation for xHarbour's HAA*() functions to hbcompat.ch
and/or xhb library.
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/netiosrv.c
% reenabled TCP_NODELAY on client and server side
I had to be really tired when I was making tests and I mixed
hb_socketSetNoDelay() with hb_socketSetBlockingIO().
Thanks to Aleksander Czajczynski who noticed the delay in his
tests.
* harbour/contrib/hbwin/olecore.c
* minor cleanup
* contrib/hbtip/thtml.prg
* removed old FOR EACH limitation
* using HB_OSNewLine() as eol
% on ::popNode added capability to check if end tags for the following
tags are found: "tr","th","td"
to end this tags, the user simply needs to call the current node
with the minus ( - ) operator for the tag requiered to close:
node - "th"
* ChangeLog
! Fixed wrong entry on my previous commit
* harbour/src/vm/hashes.c
* do not clone preallocated unused area
* harbour/contrib/hbnetio/netiocli.c
* disabled RT errors inside NETIO_CONNECT() and NETIO_GETCONNECTION()
when wrong password or NETIO server is used but return .F.
* utils/hbmk2/hbmk2.prg
+ Upped warning level for plugins to -w3.
* utils/hbmk2/examples/plug_moc.prg
+ Added -inc, -clean and -rebuild (IOW incremental)
support for moc plugin. It was tested OK in small
example.
* utils/hbmk2/examples/plug_tpl.prg
* Minor.
* utils/hbmk2/hbmk2.prg
* Moved some local variables to internal hbmk2 structure.
+ Made some more functions and variables accesible to plugns
in order to help creating smooth external calls.
+ utils/hbmk2/examples/plug_moc.prg
+ Added 'moc' plugin, which is supposed to be fully functionaly,
though I didn't test it live.
- utils/hbmk2/examples/plug_moc.prg
+ utils/hbmk2/examples/plug_tpl.prg
* Renamed first example.
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/examples/plug_moc.prg
% Further cleaned context passing, so that now even the
'state' variable is passed as part of context rather than
as separate variable, so now the only parameter the plugin
gets is the callback. This is much more flexible and future
proof this way.
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/examples/plug_moc.prg
% Refined how context is passed to plugins, and how
context is passed back to public APIs.
+ Added way to accept parameters from the cmdline and .hbp
files. This is possible via '-pflag=' and '-pi=' options.
Latter serves to pass input file, so the input file magic
logic is always applied to it. Notice that all plugins are
getting all input parameters, so it's their job to process
only what's relevant to them. plugin specific option prefixes
f.e. can be a solution for that.
+ Added API to add new input .prg, .c, .cpp and .rc files
to the build process.
+ Added better protection from tampering internal hbmk2
structures by plugins.
+ Showing error condition and location in case of an RTE occurs
in a plugin.
* harbour/include/hbapi.h
* harbour/include/hbvmint.h
* harbour/include/hbvmopt.h
* harbour/include/hbstack.h
* harbour/include/hbvmpub.h
* harbour/include/hbtypes.h
* harbour/src/vm/estack.c
* harbour/src/vm/hvmall.c
* slightly modified the names of HB_{API|STACK}_MACROS.
These are internal macros in current Harbour code but they are
still defined in some old user build scripts used to compiled
user or core code what could cause unpredictable results for
final binaries. AFAIR default xMate configuration enables them.
* utils/hbmk2/hbmk2.prg
+ utils/hbmk2/examples/plug_moc.prg
+ Added experimental plugin system. Plugins are written in .prg
or .hrb and can be passed using '-plug=<.prg|.hrb>' option
or simply by passing '.hrb' filename from cmdline or .hbp/.hbm
files. Plugin names without dir component will be searched
in local dir, hbmk2 dir then PATH.
For the details of the calling protocol and available hbmk2
API calls and variables, pls check the example and hbmk2
source code.
Plugin is called from several build stages, in case of multiple
plugins all of them are called at each stage. The plugin
receives the stage name, hbmk2 context and a hash table for
custom variables. The variables are shared between stages and
plugins. Notice that hbmk2 isn't hbrun, so there is a limited
set of the Harbour language which you can use, this also ensures
that the plugins will behave like hbmk2 itself for the most part.
Nothing is finalized.
; The example is the working replica of moc detection logic found
inside hbqt.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ In non-incremental mode when no workdir is manually set, hbmk2
will now create a temp subdir inside temp dir and create any
intermediate output files there. (previously it was using the
temp dir without creating a temp subdir inside).
; Please test and report leftover temp files and dirs, also test
it on *nix platforms.
* Changed 'couldn't', 'don't' style English abbrevs to
'could not', 'do not', etc.
* config/rules.mk
! Fixed to include static-only C compiler options for targets
which have no separate static/dynamic C compiler pass.
This should fix wrongly built pcre lib causing missing
exported functions in mingw Harbour .dlls.
* utils/hbmk2/hbmk2.prg
+ Changed filtering implementation for cmdline parameters.
Now filters can be placed anywhere and they work for all
parameters.
Please test, regressions may be possible.
* config/postinst.prg
! Added gpm handling logic to hbmk.cfg creation. This was
previously done in recently deleted postinst.sh function.
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/readme.txt
+ added new client side function:
NETIO_GETCONNECTION( [<cServer>], [<nPort>], [<nTimeOut>], ;
[<cPasswd>], [<nCompressionLevel>], [<nStrategy>] )
-> <pConnection> | NIL
I returns pointer item with HBNTIO connection. It can be used to
speedup RPC calls and stream functions when <pConnection> is
passed as parameter to these functions.
+ modified NETIO_PROCEXISTS(), NETIO_PROCEXEC(), NETIO_PROCEXECW(),
NETIO_FUNCEXEC(), NETIO_OPENDATASTREAM(), NETIO_OPENITEMSTREAM()
client side functions to accept as optional 1-st parameter
connection pointer returned by NETIO_GETCONNECTION()
+ modified NETIO_CLOSESTREAM() and NETIO_GETDATA() client side
functions to accept as optional 2-nd parameter connection pointer
returned by NETIO_GETCONNECTION()
* bin/hb-func.sh
* bin/postinst.sh
- Deleted 'hbmk' script. Now superceded by hbmk2, which is
backward compatible with hbmk.
- Deleted 'hb-mkslib' compatibility synonym. Use 'hb-mkdyn'
instead.
* utils/hbmk2/hbmk2.prg
! -hbimplib extended for bcc and msvc* to automatically recognize
and use .def file with the same name as the .dll, if present.
! -hbimplib extended for bcc to first look for any existing
OMF .lib file with the same name as the .dll.
! Refined fallback logic used in implib generation.
(moved .dll existence check to lower level)
* Refinements in pathsep usage in implib generation.
* contrib/sddfb/sddfb.hbi
* contrib/hbfbird/hbfbird.hbi
+ Using COFF libs for pocc targets.
* utils/hbmk2/hbmk2.prg
! -hbimplib extended for msvc to first look for any existing
.lib file with the same name as the .dll.
* contrib/sddfb/sddfb.hbi
* contrib/hbfbird/hbfbird.hbi
* Changed to use existing .lib for msvc compilers.
* include/hbdefs.h
+ Added HB_EXTERN macro to eventually replace 'extern' keyword.
* include/hbstack.h
* include/hbsocket.h
* include/hbapicls.h
* contrib/xhb/hbserv.h
* contrib/gtwvg/gtwvg.h
* contrib/hbcairo/hbcairo.h
* examples/gtwvw/gtwvw.c
* examples/gtwvw/hbgtwvw.h
! Fixed declarations to use 'extern HB_EXPORT' keyword order.
! Fixed declarations where 'extern' keyword was missing.
; TODO: To fix watcom .dll support 'extern HB_EXPORT <type> <func()>'
will have to be changed to 'extern <type> HB_EXPORT <func()>'
or even better to 'HB_EXTERN <type> HB_EXPORT <func()>' to
also stay future-proof.
* contrib/hbwin/win_svc.c
+ WIN_SERVICEINSTALL(): Extended to accept 3rd parameter
for the full filename of the service executable. This
makes it possible to install other .exes not just self.
* utils/hbmk2/hbmk2.prg
! Fixed filter evaluation to not let envvar names colliding
with built-in filter keywords influence the results.
(f.e. '{watcom}' while having properly configured watcom
compiler defining WATCOM envvar and using a non-watcom
compiler for the actual hbmk2 session).
% Optimized filter evaluation.
; Thanks to Przemek for the patches.
* config/global.mk
* config/rules.mk
* external/pcre/Makefile
+ Added HB_CFLAGS_STA variable to hold C compiler options
passed solely when compiling for static lib.
* Change PCRE setup to use HB_CFLAGS_STA instead of -U
trick at the same time silencing msvc warning.
* config/global.mk
* config/rules.mk
+ Added HB_CFLAGS_DYN variable to pass lib specific options
specially directed to compilation phase when building
to create a .dll. Currently this affects pcre and zlib since
these are included in harbour .dll.
* external/libhpdf/Makefile
* external/pcre/Makefile
* external/png/Makefile
* external/zlib/Makefile
+ Configured HB_CFLAGS_DYN for these libs to properly create
exported symbols in harbour .dll. This was a problem so far
for any non-mingw made harbour .dll.
* harbour/src/rdd/dbf1.c
* minor cleanup
* harbour/include/hbapi.h
+ added new macro HB_IS_EVALITEM() - returns true for items which can
understand EVAL message i.e. CODEBLOCK and SYMBOL items.
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/hbwinole.h
* modified hb_oleDispInvoke() function to accept as additional
parameter pointer to HVM item instead of pointer to DISPID.
Such version is more universal.
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesources.prg
% Modified: to present the project location folder to
select sources in the "Project Properties" dialog.
+ contrib/hbide/qscintilla
+ contrib/hbide/qscintilla/qt
Initial port of QScintilla ( http://www.riverbankcomputing.co.uk/software/qscintilla/intro )
This port is greatly trimmed one excluding all lexer code
except CPP and FLAGSHIP which are relevant to Xbase code
at present. Also directory structure is normalized and sources
are modified to respect them. SVN properties are eol:native,
I am not sure what other properties should go inside.
QScintilla actually is divided into two libs but for sake
of convinience I have kept them as one.
It is a base commit. In the next days a Harbour wrapped
is scheduled to be built onto it and then actual application
experiments will follow. On success, current edit component
of hbIDE will be transferred.
I am poor in looking at licensing, so please feel free to
delete this commit if it does not confirm to original intent.
I have also touched the sources to suppress a lot of warnings
and library seems to be working fine after these changes. Still
some warnings are there which I could not supress, please look.
To build the lib qscintilla.hbp is there, just issue
hbmk2 qscintilla.hbp while residing in hbide/qscintilla.
* utils/hbmk2/hbmk2.prg
! Fixed to ignore .cpp files in main entry detection function.
! Fixed to strip ending pathsep in header and lib path options
passed to compiler tools.
* include/hbthread.h
! Added missing HB_EXPORT, and in some place 'extern'
qualifier to thread/atomic Harbour API declarations.
* ChangeLog
! Fixed entry header in previous commit (again).
* utils/hbmk2/hbmk2.prg
+ Added hbmk2 level support for multiple input .def files.
NOTE: Multiple .def files are only supported by gcc family
compilers (mingw/cygwin) (and maybe watcom, but I can't
tell by looking at the output), so for portable scripts,
stick to using only one .def file per .dll. bcc,
msvc, pocc will either ignore some of them, or
stop with error.
* ChangeLog
- Deleted accented (UTF8) char.
! Deleted UTF8 file marked added by subsequent committer's editor.
; --- Pls remember to use ASCII 7-bit chars in our files ---