* contrib/hbrun/hbrun.hbp
* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/Makefile
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.nsi
; trying to crawl out from this pool of dynamic mud.
* enabled all embedded headers for both hbmk2 and hbrun
so we're back to square one with this, except that
now hbmk2 also holds the full set of core headers not
just a minimal selection. The reason is to keep hbmk2
as the distributable runner tool. It also syncs all
C compilers and platforms.
* hbmk2 built in -static mode again. It will fix the
'make clean' problem, it will make it distributable.
* hbrun changed to be built in -shared mode to allow
to load dynamic modules.
; so this is the state right now (if I didn't make any mistake):
hbmk2:
all embedded core headers
no contrib modules
static build
no dynamic modules
fully movable/distributable as a runner
cannot be self-registered as .hb runner on Windows
hbrun:
all embedded core headers
some contrib modules
shared build when HB_BUILD_CONTRIB_DYN enabled
dynamic modules possible
less movable/distributable, needs harbour dll, dynamic modules need Harbour dir layout
can be self-registered as .hb runner on Windows
; "Ext:" banner on interactive shell will have blue color
if dynamic modules are enabled and grey if not.
* utils/hbmk2/hbmk2.prg
* minor change to show the actual name of the tool
in the error message requesting a -shared build.
* contrib/hbrun/hbrun.hbp
* restored to embed headers in hbrun
* utils/hbmk2/hbmk2.prg
! minor cleanups in runner UI
! fixed to open .dbf using cmd 'hbmk2 test.dbf' (emulating
old hbrun behavior)
+ shows error messages when dynamic library failed to load
* contrib/xhb/xhbcls.ch
! include hboo.ch
* utils/hbmk2/hbmk2.prg
! Fixed to transform \n to eol in one certain warning
message newly issued from the runner subsystem
* utils/hbmk2/Makefile
* utils/hbmk2/hbmk2.hbp
* contrib/hbrun/hbrun.hbp
! restored to embed core headers. It's required when
running build scripts as part of the GNU Make process,
while HB_INSTALL_PREFIX setting is set to a value where
Harbour isn't installed yet
* bin/3rdpatch.hb
* contrib/make.hb
* changed to be executed by hbmk2
- contrib/hbrun/extdyn.prg
- contrib/hbrun/hbrun.prg
- contrib/hbrun/hbrun.rc
- contrib/hbrun/headers.prg
- contrib/hbrun/p_ext.hb
- contrib/hbrun/plugins.prg
* contrib/hbrun/hbrun.hbp
% changed to use hbmk2 sources and make file to build hbrun,
implementing the build method described in previous ChangeLog
entry. The lost feature is netio management plugin, which
is now not loaded by default. Plus, since this is a static
build, dynamic extensions don't work.
* contrib/make.hb
* src/pp/ppcore.c
* deleted reference to hbrun in comment
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.hb
* __hbrun_plugin() -> __hbshell_plugin()
* INSTALL
* minor in previous change
* contrib/make.hb
* contrib/hbrun/hbrun.hbp
* INSTALL
+ enabled HB_BUILD_CONTRIB_DYN=yes by default. It will
cause longer build-times, but it will also create dynamic
builds for all contribs now. HBQT is particularly huge,
so maybe we should disable dynamic libs creations for
them.
; EXPERIMENTAL. This feature has been available for quite
a long time now and some users have tested, but anyways
build breaks are possible.
- contrib/hbrun/extstat.prg
* contrib/hbrun/extdyn.prg
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
% simplified the way static contribs are pulled into the
executable. Now the list if linked contribs needs to be
maintained only inside hbrun.hbp
* utils/hbmk2/hbmk2.prg
+ inclusion of embedded core headers can now be enabled
using -DHBMK_WITH_EMBEDDED_HEADERS build-time option for
a minimal set (formely enabled by default in hbmk2)
and -DHBMK_WITH_ALL_EMBEDDED_HEADERS for the full set,
which is compatible with hbrun
* hbmk2 will act as a shell/script runner also if its
own name _starts_ or _ends_ with hbrun, so f.e. hbrun2,
and xhbrun will be okay as well (in sync with other
similar alias name rules).
+ shell screen will now display the list of non-core,
statically linked extra libs
; NOTE: to custom build a complete hbrun emulation from
hbmk2 source, use the following configuration:
1. create file 'hbrun_emu.hbm' with this content:
---
-ohbrun
-static
-DHBMK_WITH_ALL_EMBEDDED_HEADERS
hbct.hbc -request=__HBEXTERN__HBCT__
hbexpat.hbc -request=__HBEXTERN__HBEXPAT__
hbmemio.hbc -request=__HBEXTERN__HBMEMIO__
hbmzip.hbc -request=__HBEXTERN__HBMZIP__
hbnetio.hbc -request=__HBEXTERN__HBNETIO__
hbunix.hbc{unix} -request=__HBEXTERN__HBUNIX__{unix}
hbwin.hbc{allwin} -request=__HBEXTERN__HBWIN__{allwin}
---
2. build hbrun emulation using this command:
$ hbmk2 utils/hbmk2/hbmk2.hbp hbrun_emu.hbm
3. This will create a fully static executable, with
the name hbrun, with all embedded core headers and
statically linked list of contribs listed in the .hbm
file. The list can be configured at will. This is
self-contained executable that can be distributed
easily. Notice however that dynamic extension feature
will not work in this type of build.
* utils/hbmk2/hbmk2.hbp
* minor formatting
* contrib/hbide/hbide.hbp
* contrib/hbide/idemain.prg
+ enabled rddads by default. Requires rddads dynamic
build, use HB_BUILD_CONTRIB_DYN=yes
* contrib/hbrun/plugins.prg
! fixed shell plugin extension changed in prev
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
+ -env: option is now available inside .hbp/.hbp files
! fixed -env: option to be processed only for the main
project (and not processed again for subprojects)
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
% minor optimization to not try to create ~/.harbour directory
on each __hbrun_ConfigDir() call, only when saving there.
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* utils/hbmk2/hbmk2.prg
* synced recent changes
+ changed extension filename to <home>/.harbour/hb_extension (hb_ext.ini in MS-DOS)
envvar to HB_EXTENSION
+ plugins are now loaded from <home>/.harbour/*.hb, <home>/.harbour/*.hrb
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
* renamed history file to have a tool agnostic name
INCOMPATIBLE (history will be lost unless you rename
the existing file from .hbrun_history to .hb_history)
* include/harbour.hbx
* src/vm/dynsym.c
+ added HB_ISFUNCTION( <cName> ) -> <lExists>
uses Przemek's code from hbfship/ISFUNCTION() with minor
adaptation for VM.
Use it instead of __DYNSISFUN() and TYPE( <cName> ) == "UI".
* include/harbour.hbx
* formatted HB_IS*() functions used for type checking
* contrib/hbfship/isfunc.c
% converted ISFUNCTION() to wrapper for HB_ISFUNCTION()
* contrib/hbide/ideplugins.prg
* contrib/hbrun/hbrun.prg
* contrib/hbxpp/xppop.prg
* contrib/xhb/xhbcomp.prg
* contrib/xhb/xhberr.prg
* examples/hbdoc/hbdoc.prg
% Using HB_ISFUNCTION() instead of __DYNSISFUN() and TYPE( <cName> ) == "UI"
* contrib/hbrun/hbrun.prg
+ use .hb as default extension for Harbour sources.
(was .prg)
+ bin/hbcommit.hb
+ added commit preparer script. It will pull all changed
files, format it according to Harbour ChangeLog standard,
add standard commit header and prepend the entry before
latest on into ChangeLog file.
Usage:
<harbour SVN root>$ hbrun hbcommit.hb
Please try it and use it when committing to Harbour SVN
* contrib/hbplist
* disabled hbqt and its dependencies, until the nightly
build breaker problem is resolved.
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/cdpdet.prg
+ src/rtl/cdpdetc.c
+ moved terminal and OS detection logic from hbmk2 to RTL
with changes necessary to fit into core. New functions are:
hb_cdpOS() -> <cCP | NIL>
hb_cdpTerm() -> <cCP | NIL>
it means these functions can be used in any apps now.
Example:
hb_SetTermCP( hb_cdpTerm() )
Set( _SET_OSCODEPAGE, hb_cdpOS() )
* contrib/hbrun/hbrun.prg
* utils/hbmk2/Makefile
- utils/hbmk2/hbmk2c.c
* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/hbmk2.prg
* using hb_cdpOS() and hb_cdpTerm() to automatically
configure OS and terminal CP
* contrib/hbrun/hbrun.prg
+ enabled UTF8EX as default CP for hbrun script. This makes
scripts portable and on par with other script languages.
It also syncs this aspect with hbmk2's script runner
facility. INCOMPATIBLE. Make sure to create scripts
that are unicode compatible and use UTF8 CP for accents.
If you need old behavior, add 'hb_cdpSelect( "EN" )' to
the top of your script.
; contains copy/paste code from hbmk2 for OS and terminal
CP detection. These should eventually make it into the
RTL
* INSTALL
! minor
* contrib/hbrun/hbrun.hbp
+ build hbrun in -shared mode if HB_BUILD_CONTRIB_DYN is
enabled. This means that new dynamic loading feature
will work out of the box if Habrour is build using
HB_BUILD_CONTRIB_DYN=yes.
* include/Makefile
* include/common.ch
+ include/hbhash.ch
+ moved hash-related constants from common.ch to new hbhash.ch
; common.ch include hbhash.ch for compatibility, protected by
HB_LEGACY_LEVEL4 so it will stop being included automatically.
If you use HB_HAUTOADD_* or HB_HMERGE_* constants, make sure
to #include "hbhash.ch".
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
+ include hbhash.ch
* src/rdd/hbsix/sxini.prg
* use hbhash.ch instead of common.ch
+ contrib/hbrun/extdyn.prg
+ contrib/hbrun/extdynpl.hb
+ contrib/hbrun/extstat.prg
- contrib/hbrun/pullext.prg
- contrib/hbrun/pullextp.hb
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* internal cleanup, renames and restructuring
+ findinpath function to accept arrays
+ loaded dynamic extensions are now searched in curdir,
hbrun dir and PATH on non-*nix and LD_LIBRARY_PATH on *nix
systems
! fixed findinpath always returning success
* renamed some stuff recently introduced:
HBRUN_DYN -> HBRUN_EXT
hbrun.dyn -> hbrun.ext
dyn plugin -> ext plugin (f.e. ext.list, ext.load, ext.unload)
; all non-core modules are called "extensions", the ones
linked at build time are called "static extensions", ones loaded
dynamically are called "dynamic extensions". Console command
plugins are called "plugins". It's still not final.
* utils/hbmk2/hbmk2.prg
! misplaced comment
* src/pp/ppcore.c
+ accept and ignore '#require' PP directive
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
+ use '#require "name"' to request modules.
(This replaces former '//#require', '//#pragma module' and
'*#pragma module' directives.)
* utils/hbmk2/hbmk2.prg
+ add .hbc automatically for '#require' directives (experimental)
; TODO: to work also in non-incremental mode and to work
reliably in -inc mode. To not impact performance, the
compiler could do a callback when #require is found,
hbmk2 could find the .hbc and extend compiler options
dynamically.
! fixed finding .hbc files that were detected automatically
* contrib/hbrun/hbrun.1
+ added my name as author
* contrib/hbrun/hbrun.prg
* contrib/hbrun/pullext.prg
+ changed to use '//#require' syntax.
! filter empty dynamic modules
+ display error when trying to load dynamic modules in static
hbrun build
* include/hbver.ch
* src/rtl/version.c
+ added hb_Version( HB_VERSION_SHARED ) to query whether
the app was built in shared mode or static.
* contrib/hbrun/hbrun.prg
+ added experimental script syntax to dynamically load modules:
--- testcurl.hb
*#pragma module "hbcurl"
? curl_version()
---
; QUESTION: Is it possible to allow unknown #pragmas so above
comment-hack could be avoided? ATM harbour compilers
issues and error whenever an unknown pragma is found.
+ contrib/hbrun/pullextp.hb
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* contrib/hbrun/pullext.prg
+ added experimental support for dynamic loading of
modules into hbrun. Modules can be speficied using
HBRUN_DYN envvar using space delimited list, or
using text file named 'hbrun.dyn' in the same dir
as hbrun, each line containing module name, lines
beginning with '#' are considered comments. Modules
can be loaded/unloaded from the console using
'dyn.load <list>', 'dyn.unload <list>' commands
and listed using 'dyn.list'. F.e.: 'dyn.load hbgd'
Names, UI and everything else may still change.
Important: hbrun must be built in -shared mode
for this to work, notice that by default it's built
in -static mode ATM. Loadable modules can be created
using HB_BUILD_CONTRIB_DYN=yes Harbour build-time
option. Headers belonging to dynamic modules are
not available in embedded for, so they need to
be present on disk in current dir.
* utils/hbmk2/hbmk2.prg
+ use HB_DEFAULT()
% deleted common.ch
* contrib/hbrun/hbrun.prg
! fixed typo causing scripts being found in PATH to fail
to open.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbrun/plugins.prg
- deleted .hbs script support from places where it was
unlikely to be used in the wild
* contrib/hbide/ideplugins.prg
* changed to support .hb extension for plugins instead of
.hbs (plus, same applies as above0
* utils/hbmk2/hbmk2.prg
* .hb? input make files are now considered with UTF8 encoding.
+ enabled full UTF8 CP on *nix systems. EXPERIMENTAL.
* debian/copyright
* package/winuni/mpkg_win_uni.nsi
* utils/hbmk2/hbmk2.prg
* contrib/hbpost.hbm
* contrib/hbnetio/utils/hbnetio/modules.hbp
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbqt/hbqt_common.hbm
* contrib/hbide/ideedit.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/idesaveload.prg
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* config/postinst.hbs
* COPYING
+ added support for .hb extension for Harbour scripts.
I plan to make a full switch to .hb from .hbs.
* src/3rd/pcre/Makefile
+ enabled UTF8 support in PCRE (binary size overhead ~150KB)
+ enabled unicode properties support in PCRE (binary size overhead ~50KB)
* src/rtl/hbregex.c
+ added commented logic to detect UTF8 support in PCRE
and enable UTF8 mode when the HVM CP is also UTF8. Latter
logic is missing yet and subject to review.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.prg
* contrib/hbrun/hbrun.prg
* tests/ac_test.prg
* tests/ac_test2.prg
* tests/tstmacro.prg
* tests/tstalias.prg
* formatted using automatic tools
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
* changed #include filename references to _CASE-SENSITIVE_. This
is to ensure and enforce that .hbs scripts and hbmk2 plugins are
created in portable form so f.e. once developed on a win
system, they won't crash on a *nix system.
INCOMPATIBLE: Change all your #include references to exactly match
casing of the filename. For Harbour headers, this
means plain lowercase, so f.e. '#include "FileIO.ch"'
is wrong, '#include "fileio.ch"' is right.
* config/global.mk
* minor
* tests/testdyn.prg
! fixed typo discovered by Alex Strickland. Thank you.
* contrib/hbrun/hbrun.hbp
- deleted unfinished solution for "DSO" builds (having two
TOFIXes for many months). Please supply required extra libs
('m' and 'z' in case of hbrun) manually to the build via
HB_USER_LDFLAGS, HB_USER_LIBS, until a complete solution is
discovered.
* src/rtl/teditor.prg
! fixed following issue: in MEMOEDIT() insert mode the word wrap inserts
an additional, not typed space in the new line [when typing at EOL at the
moment of word wrap - vszakats]. The space is inserted at the place, where
the word wrap takes place.
Report and patch provided by Dr.Claudia Neumann. Many thanks.
(with my formatting: indenting, tab/EOL-space removal)
* contrib/hbqt/qtcore/hbqt_pointer.cpp
! fixed to avoid non-MT compatible strtok() C RTL call.
Many thanks to Carlos Bacco for the patch.
(with my minor formatting 'if (' -> 'if(', 'while (' -> 'while( ')
NOTE: Please continue to avoid strtok() usage in any further Harbour patches,
it is avoided for good reason.
* INSTALL
+ added another (this is the 3rd!) mention to use unmodified ("vanilla")
3rd party packages (especially to make implib generation to work).
* minor updates
* contrib/hbrun/hbrun.hbp
+ added another TOFIX to latest patch, about HB_HAS_ZLIB_LOCAL usage,
which has to be eliminated.
* ChangeLog
+ added UPDATE to previous ChangeLog entry
* ChangeLog
* minor formatting
* contrib/hbrun/hbrun.hbp
* using macro HB_BUILD_DSO to state an linux env with ld DSO linking model
; TOFIX: export this functionality to other .hbc files in need of this
* contrib/hbrun/hbrun.hbp
! Fixed linking on recent linux distros (i.e. F15) that are using the
ld DSO linking model which requires specific declaration of objs/libs.
Added specific declaration on linux of:
* -lz (conditionated by HB_HAS_ZLIB_LOCAL)
* -lm
* package/mpkg_win_nightly.bat
+ disabled bcc libs in nightly binary build.
bcc is not tested by most developers anymore, so its risky
to include it and let it break the build.
* contrib/hbrun/hbrun.rc
- Disable app icon for bcc builds. bcc is too old or buggy
to handle .ico files with certain properties.
* utils/hbmk2/hbmk2.prg
- Disabled -icon= option for bcc to avoid build breaks due
to more recent .ico files.
* contrib/hbmlzo/hbmlzo.hbx
* autoupdate
; NOTE: This was my last patch targeting a bcc specific problem.
It's a waste of time.
* contrib/hbrun/hbrun.prg
! Fixed to not crash due to corrupted .hrb leftover files next to hbrun executable.
* src/compiler/hbusage.c
! typo in e-mail address
* contrib/hbqt/hbqt_common.hbm
+ qt autodetection on beos
* config/postinst.hbs
* ld config -> linux only
; [Tamas Tevesz]
* include/hbgtinfo.ch
* src/rtl/hbgtcore.c
* src/rtl/gtdos/gtdos.c
* src/rtl/gtwin/gtwin.c
* src/rtl/gtxwc/gtxwc.c
* src/rtl/gtcrs/gtcrs.c
* src/rtl/gtstd/gtstd.c
* src/rtl/gttrm/gttrm.c
* src/rtl/gtos2/gtos2.c
* src/rtl/gtsln/gtsln.c
* src/rtl/gtpca/gtpca.c
* src/rtl/gtwvt/gtwvt.c
* contrib/hbct/ctwin.c
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* contrib/gtalleg/gtalleg.c
* contrib/hbrun/hbrun.prg
* tests/wvt_fs.prg
* examples/gtwvw/gtwvw.c
* Renamed HB_GTI_FULLSCREEN to HB_GTI_ISSCREENPOS
HB_GTI_FULLSCREEN is now deprecated and will be deleted in future
version of Harbour, use the new name instead.
* Renamed HB_GTI_FULLSCREEN to HB_GTI_ISFULLSCREEN
in context of GT window being fullscreen on physical display
recently added in 2011-02-26 20:07 UTC+0100 Viktor Szakats
; If someone has further name suggestions, pls tell.
* src/rtl/hbgtcore.c
* Setting defaults for HB_GTI_ISFULLSCREEN and HB_GTI_ALTENTER.
* include/hbdefs.h
+ Added HB_EXPORT_INT macro similar to HB_EXPORT, but used for
exported _internal_ functions. (we may easily rename this
to something else if a better idea pops up)
; TODO: Change HB_EXPORT to HB_EXPORT_INT for rest of internal functions.
* include/hbpp.h
* include/hbapi.h
* include/hbcomp.h
* include/hbexprop.h
* include/hbhash.h
+ Using HB_EXPORT_INT to export functions.
* contrib/hbide/hbide.hbp
* contrib/hbrun/hbrun.hbp
! Deleted bad hack linking in hbcplr, hbpp, hbcommon on non-mingw
win compilers.
* contrib/hbmzip/hbmzip.hbp
* Changed header used for minizip autodetection.
zip.h is also used by component named libzip.
Thanks to Przemek for the hint.
[ looking for multiple headers (possibly connected by various
bool operators) is too huge work for so far too little gain, so
for now I pass it.]
* contrib/hbrun/hbrun.prg
+ Use HB_GTI_FULLSCREEN to detect if the GT is capable of non-console
mode of operation (formely hard-wired check for GTCGI was done).
Pls verify me.
* config/postinst.hbs
+ Show msg that postinst.hbs is finished (and errlev) [Tamas]
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbformat/utils/hbformat.hbp
* contrib/hbrun/hbrun.hbp
- Deleted nxcompat (and friends) flags from local .hbp files.
They are enabled by config/hbpost.hbm, in more precise manner.
* utils/hbmk2/hbmk2.hbp
* utils/hbi18n/hbi18n.hbp
* utils/hbtest/hbtest.hbp
- Deleted also from here. (These .hbp files are not used
by core make.)