* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/Makefile
* minor changes to do not require std.ch
+ enabled -u option for hbmk2 source code.
* utils/hbmk2/hbmk2.prg
* marked the file as UTF8
* added accent to my own name. let's see on which platforms
and configs it appears alright (second "a" should appear
with an acute accent: "a'")
[ms-dos and OS/2 is not expected to work]
* utils/hbmk2/hbmk2.prg
- do not include Harbour bin dir in linker libpath on non-*nix
systems. In could cause some compilers (f.e. mingw) to link
to .dlls stored there (f.e. 3rd party dynamic dlls enabled
with HB_INSTALL_3RDDYN), not letting user supplied libpaths
to kick in. If you for some reason want to include Harbour
bin dir in libpath, use: -L${HB_LIB} option, or to include
dynamic lib dir (emulating old behavior on non-*nix), use
-L${HB_DYN}
! fixed -env option processing after 2012-06-14 12:01 UTC+0200
* utils/hbmk2/hbmk2.prg
* made --hbinfo to return information only for the top project
(not nested ones)
This should fix regression of not generating .hbx files for
the hbqt special case since 2012-06-06 16:02 UTC+0200
+ added --hbinfo=nested to return information also on nested
projects
+ --hbinfo will now append an 0x0A byte after each JSON
block, so multiple JSON blocks can be parsed by the caller
* contrib/hbqt/hbqt_commons.hbm
* changed to be friendly with '--hbinfo=nested' hbmk2 option
(not used in Harbour make process)
* 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/rddads/ads1.c
* contrib/rddads/adsfunc.c
* contrib/rddads/adsx.c
* src/common/hbfsapi.c
! deleted explicit newlines at EOL in HB_TRACE() calls
* INSTALL
+ added new '0. GUARANTEES AND LIABILITY' section
! updated instructions to create debug build
* utils/hbmk2/hbmk2.prg
* minor cleanups
* utils/hbmk2/Makefile
+ enabled dynamic version of hbmk2 only for mingw builds.
Rest of the targets may or may not work due to CRTL
usage (fprintf()) from HB_COMPILE*() calls which causes
GPF in currently generated shared builds, most probably
due to double copy of statically linked CRTL code.
mingw uses MSVCRT.DLL, so it's not prone to this.
Solution is either to avoid file handling CRTL calls
in compiler code, or to tweak -shared build setting to
death to make it work for all non-mingw compilers.
Both of these is very difficult.
This means that dynamic module loading from scripts
will only work in hbmk2 built with mingw.
; TOFIX: 'make clean' on contribs doesn't work with mingw,
because harbour dll is deleted before hbmk2 is
called, so it cannot be started for cleanup.
* contrib/hbtip/encqp.prg
* contrib/hbtip/hbtip.hbx
+ added two new functions:
TIP_QPENCODE(), TIP_QPDECODE()
formerly only accessible via OOP code
* utils/hbmk2/hbmk2.prg
% merged FindInPath() and __hbshell_FindInPath() into one
* 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/hbblat/hbblat.hbp
* contrib/hbcurl/hbcurl.hbp
* contrib/hbssl/hbssl.hbp
! fix to prev
* contrib/hbpost.hbm
* contrib/hbqt/hbqt_common.hbm
* deleted extra pathsep
* contrib/hbfbird/hbfbird.hbp
* contrib/hbgd/hbgd.hbp
* contrib/sddfb/sddfb.hbp
! fixed to use .dll imp lib source in -hbdyn mode.
it's a fix for experimental HB_INSTALL_3RDDYN option.
* contrib/make.hb
* minor cleanups in errorlevel descriptions
* utils/hbmk2/hbmk2.prg
! fixed finding scripts in path and without extensions
in runner mode
! fixed to not execute '.' when runner mode is started
with 'hbmk2 .' command
* utils/hbmk2/hbmk2.prg
+ will now gather a list of existing 3rd party dll dependencies
using the file-group named 'depimplibsrc'. This list can
be used to install these files to user-specific locations
* contrib/hbpost.hbm
+ added global solution to install 3rd party dll dependencies,
with minor fixes
* contrib/hbblat/hbblat.hbp
* contrib/hbcurl/hbcurl.hbp
* contrib/hbssl/hbssl.hbp
- deleted local solution to install 3rd party dll dependencies
* contrib/hbcurl/hbcurl.hbp
* contrib/hbssl/hbssl.hbp
+ added experimental support to install 3rd party .dll
dependencies for these libs into the Harbour bin dir.
Enabled with new build option, not yet documented,
see it in the patch.
* src/rtl/cdpdet.prg
+ request linkage of all codepages. I chose this to ensure
the detection code can use all CPs automatically and it
won't be unusable if users forget to request CPs
themselves. This has an overhead if someone uses CP
autodetection, but it makes it foolproof.
* utils/hbmk2/hbmk2.prg
* minor formatting
* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/Makefile
% disabled embedded headers again, now dir layout detection should
work well even under GNU Make, so it's not necessary
* contrib/hbamf/hbamfobj.prg
* made it more friendly with grep when finding undocumented functions
by removing #translate.
* src/vm/hvm.c
! added HB_STACK_TLS_PRELOAD
* include/harbour.hbx
! added __ITEMSETREF(), __VMITEMID()
* src/rtl/valtoexp.prg
* hb_setItemRef() -> __itemSetRef(). Please tell if it's meant to
be a user-accessible, public core API
* utils/hbmk2/hbmk2.prg
! fixed to ignore HB_INSTALL_PREFIX variable in runner mode.
This points to invalid places while running as part of GNU
Make and prevents autodetection.
TODO: Recheck if it now works without embedded headers.
TODO: Obsolete HB_INSTALL_PREFIX also in hbmk2 mode.
* 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
+ contrib/hbamf/hbamfobj.prg
* contrib/hbamf/amfdec.c
* contrib/hbamf/amfenc.c
* contrib/hbamf/hbamf.hbp
* contrib/hbamf/hbamf.hbx
+ added missing parts as per Aleksander's instructions.
with some renames/formatting. OBJAMF renamed to AMF_OBJ,
please review and test.
https://groups.google.com/d/msg/harbour-devel/EPdeo6zbFt8/FTd7mkyTPawJ
* utils/hbmk2/hbmk2.prg
* minor formatting
* utils/hbmk2/hbmk2.prg
! do not try to dynamically load hbwin for registry
functions, if the lib is already linked
! allow -hbreg and -hbunreg to be passed when it's
renamed to hbrun
* 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
* INSTALL
+ documented hbmk2 usage as shell, script runner and
.hrb builder/runner
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.nsi
+ use hbmk2 as interactive shell instead of hbrun
* utils/hbmk2/hbmk2.prg
+ display Harbour version when starting up the interactive shell
- utils/hbmk2/p_ext.hb
* utils/hbmk2/hbmk2.prg
* embedded shell plugin into hbmk2.prg
! fixed typos in prev causing shell plugin to not load
* killed the word 'dynamic extension'. All extensions are
now dynamic
* killed word 'hbrun' from hbmk2 source, now the shell is
called 'hbshell', 'shell' or 'Harbour shell'
* 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/hbnetio/utils/hbnetio/hbnetio.hbp
- contrib/hbnetio/utils/hbnetio/netiomgm.prg
+ contrib/hbnetio/utils/hbnetio/netiomgm.hb
* renamed hbrun/hbmk2 shell plugin code to .hb extension
* contrib/hbnetio/utils/hbnetio/netiosvc.prg
! added missing copyright and SVN ID header
* utils/hbmk2/hbmk2.prg
+ documented '.' parameter on -help screen.
; With this, hbmk2 has all the features of hbrun. Except:
- it doesn't contain the selection of statically linked
contribs:
hbct, hbxpp, hbexpat, hbmemio, hbmzip, hbnetio, hbunix, hbwin
These can now be loaded on-demand, f.e. by speccing
them in envvar HB_EXTENSION, from shell prompt or
#require directive, etc
- it doesn't contain the 'hbnetio management console' shell
plugin.
It now can be loaded by copying /contrib/hbnetio/utils/hbnetio/netiomgm.hb
to <home>/.harbour/.
It means hbmk2 can now be used to:
- convert Harbour source code to various kind of executables/binaries
- run Harbour source code directly
- serve as an interactive Harbour prompt/shell.
; As a next steps, HB_BUILD_CONTRIB_DYN may be enabled by
default, hbrun be deleted and hbmk2 renamed to f.e. simply 'hb'.
; Needs testing on non-Windows envs
* utils/hbmk2/hbmk2.hbp
+ copied some remaining options from hbrun.hbp
* utils/hbmk2/hbmk2.prg
+ added -hbreg[=global] and -hbunreg[=global] to register/unregister
.hb file type on Windows. It uses a trick to load hbwin dynamically,
so this will only work with HB_BUILD_CONTRIB_DYN=yes. It's grey
area of dependency because core cannot depend on contrib, but in
this case it's done dynamically and optionally and it gracefully
fails if the contrib component is missing, but still, it uses it,
if available. Hopefully in the future win registry functions can
be moved to core so it can be cleaned, or this functionality
removed from hbmk2 anytime, since it's not critical.
+ always detecting Harbour dir layout when entering runner mode,
so all subsystems can now use that information
* cleaned loading user configured dynamic extensions in runner mode
! fixed not adding global Harbour include dir in runner mode
+ all strings moved from hbrun code made translatable (except some
CUI elements for now)
% experimentally disabled embedded Harbour headers (build break
possible)
! fixed loading "ext" (dynamic extension loader) shell plugin
+ output shell plugin load RTE to stderr
* 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.
* harbour/include/hbset.h
* harbour/src/vm/set.c
% removed HB_SET_OSCODEPAGE
% replaced HB_SET_DBCODEPAGE with hb_set_dbcp
* generate RTE when wrong parameter type (not string or NIL) is
passed to HB_SET_LANGUAGE, HB_SET_CODEPAGE, HB_SET_OSCODEPAGE,
HB_SET_DBCODEPAGE
* harbour/src/rtl/langapi.c
* generate RTE 1303 when not existing lang module name is passed to
hb_langSelectID() C function. It affects on all upper level
code using this function. NULL is accepted as valid parameter.
* harbour/src/rtl/cdpapi.c
* generate RTE 1302 when not existing codepage name is passed to
hb_cdpFindExt() C function. It affects on all upper level
code using this function. NULL is accepted as valid parameter.
If programmer does not want to generate RTE when wrong codepage
name is passed then he should use hb_cdpFind() instead.
* harbour/src/rtl/cdpapihb.c
* use hb_cdpFindExt() instead if hb_cdpFind() in HB_CDPUNIID()
function.
* harbour/src/rtl/cdpapihb.c
* harbour/contrib/hbexpat/internal.c
! use hb_parc() instead of hb_parcx() to get codepage name
from optional parameter.
* harbour/utils/hbmk2/Makefile
! fixed build process, now hbmk2 need HB_LIBS_MT_RDD
* harbour/src/rtl/tpersist.prg
% optimized decoding code which could be two slow with UTF8EX or
similar CPs.
- contrib/hbamf/hbref.c
* contrib/hbamf/amfdec.c
* contrib/hbamf/amfenc.c
* contrib/hbamf/amfstdio.c
* contrib/hbamf/hbamf.hbp
* contrib/hbamf/hbcls.c
* added hbamf_ prefix to public C functions
* locally used public C functions converted to static
* utils/hbmk2/hbmk2.prg
* minor
* contrib/hbplist
+ contrib/hbamf
+ contrib/hbamf/amf.h
+ contrib/hbamf/amfdec.c
+ contrib/hbamf/amfenc.c
+ contrib/hbamf/amfstdio.c
+ contrib/hbamf/hbamf.hbc
+ contrib/hbamf/hbamf.hbp
+ contrib/hbamf/hbamf.hbx
+ contrib/hbamf/hbcls.c
+ contrib/hbamf/hbref.c
+ contrib/hbamf/issues.txt
+ contrib/hbamf/readme.txt
+ contrib/hbamf/tests
+ contrib/hbamf/tests/hbmk.hbm
+ contrib/hbamf/tests/tstendin.prg
+ added AMF3 encoder/decoder
work of Aleksander Czajczynski and Ilina Stoilkovska
(with minor additions of mine: build file
cleanup, some C level formatting/comment cleanup, C++
fixes)
; NOTE: this is only the pure AMF3 encoder/decoder,
and doesn't include websocket layers
; TODO: adding license
* utils/hbmk2/hbmk2.prg
* minor in comments
* 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)
* INSTALL
* minor clarifications to INSTALL/TROUBLESHOOTING
* config/os2/watcom.mk
* config/wce/mingwarm.mk
* config/wce/msvcarm.mk
* config/wce/poccarm.mk
* config/win/bcc.mk
* config/win/mingw.mk
* config/win/msvc.mk
* config/win/pocc.mk
* config/win/watcom.mk
* config/win/xcc.mk
+ added std header paths to RC commands
* utils/hbmk2/Makefile
+ utils/hbmk2/hbmk2.rc
* utils/hbmk2/hbmk2.hbp
+ added std windows versioninfo and manifest to hbmk2
* utils/hbmk2/hbmk2.prg
+ utils/hbmk2/p_extdyn.hb
+ added almost complete hbrun functionality into hbmk2
to run it, type: 'hbmk2 .'
Missing is extension registration, plugins don't seem
to work yet, and I plan to switch from full screen
prompt to shell-like prompt. Plugin paths, extension
configuration, history on-disk files need further
polishing.
+ hbmk2 will act as a hbrun, if renamed to hbrun
* contrib/hbqt/qtcore/hbqt_misc.prg
+ added two TOFIXes for missing PROTECTED keyword
for two object variables of unknown purpose. Not
even HBQT developers know what it is, but without
it, HBQT breaks.
; Those who need "stable" hbqt (meaning "it builds")
Go to:
http://sourceforge.net/p/hbqt/
* INSTALL
+ extended troubleshooting instructions for code that
involves non-ASCII chars
* utils/hbmk2/hbmk2.prg
+ use UTF8 HVM in runner mode
+ enabled translations in runner mode
! in runner mode fixed setting up core header dir when no
dyanmic libs are used
! in runner mode, dynamic lib location should now be detected
also on *nix systems (untested)
* some other minor cleanups and tweaks to runner mode
* contrib/hbhttpd/log.prg
* contrib/hbtip/log.prg
* contrib/hbziparc/ziparc.prg
* src/rtl/hbdoc.prg
* src/rtl/hbi18n2.prg
* src/rtl/memvarhb.prg
* src/rtl/tlabel.prg
* src/rtl/treport.prg
% use HB_FNAMEEXTSETDEF() instead of manual logic.
it also fixes RTEs in hbziparc when passed non-string
filename to nearly any of its APIs.
* utils/hbi18n/hbi18n.hbp
* missed -shared enabler in .hbp
* utils/hbmk2/Makefile
* utils/hbmk2/hbmk2.hbp
+ enabled -shared build for hbmk2
* utils/hbmk2/hbmk2.prg
% consolidated .hbc finder logic
% moved 'hbmk' structure initializations to subfunctions
+ added Harbour installation autodetection for hbmk2's
runner mode. It's copy-paste code yet.
+ added automatic include path configuration in hbmk2's
runner mode. It means that now #require-d extensions
will have their include paths setup, so their header
will be found, so they can be used now.
; I more and more see it a reality to integrate hbrun
functionality into hbmk2. #require logic needs
much of hbmk2's facilities, and hbmk2 already has
basic runner capabilities. Contrib libs (and plugins)
will all have to be loaded dynamically in such case,
but since it works well, it should not be a problem.
Finally hbmk2 can be the utility that runs scripts
dynamically and also able to build an exe from them,
using the exact same source code, without any external
configuration, if the source code provides "#require"
clues. All it needs is both dynamic and static versions
of extensions (=contribs or addons).