- src/dynlib/mt
* src/dynlib/Makefile
* src/vm/maindllp/dllpcode.c
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* utils/hbmk2/hbmk2.prg
* config/postinst.hbs
* config/global.mk
* config/bin.mk
* Changed to have only one harbour dll, and this one with MT support.
This means the old MT mode dll named harbourmt/harbourm is no more
and the old ST mode dll vanished also. This will result in much
cleaner layout of Harbour binary tree, smaller distribution size,
and unambigous dll tree when linking an app with dll multiple
components (f.e. contribs).
If someone wants to build an ST mode harbour dll, she can use the
internal build-time option: _HB_BUILD_DYN_ST=yes
; Please test.
; TODO: Do a final cleanup on internal variable names to not have "ST" in them.
* contrib/make.hbs
* contrib/hbide/idemisc.prg
* contrib/hbide/idefunctions.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbrun/hbrun.prg
* config/postinst.hbs
* bin/hb3rdpat.hbs
* Using new filename handling functions from core.
% Deleted redundant local copies of these functions.
* utils/hbmk2/hbmk2.prg
+ REQUESTing new filename handling function till they are
used in hbmk2 too.
; TODO: Make the switch in hbmk2 too.
* contrib/hbplist
- contrib/hbrun/hbrunext.hbp
+ contrib/hbrun/hbrun.prg
+ contrib/hbrun/hbrun.hbp
+ contrib/hbrun/hbrun.1
* config/postinst.hbs
- utils/hbrun
* utils/Makefile
* Moved hbrun to contrib area.
; Now it can contain any contrib libs.
* utils/hbmk2/hbmk2.prg
! Do not add .hbx file to input file list if the file doesn't
exist. This is to resolve the chicken-egg problem when
initially creating the .hbx file for a new project.
! Never use .hbx filename for forming the output name
and deciding about startup module.
* utils/hbmk2/hbmk2.prg
* config/postinst.hbs
+ Do not add duplicates to extern list.
(it may have only happened if renaming sources and
building without clean)
* config/postinst.hbs
* MAKEDIR() -> HB_DIRCREATE().
Warning: Make a 'make clean' _before_ updating to this revision.
Or, do a fresh checkout and build that.
Or, do a clean rebuild twice.
(otherwise plain 'make clean' will end with an error)
- examples/pp
- Deleted obsolete PP code.
; NOTE: Now that HB_BUILD_CONTRIB_DYN=yes works pretty much
okay on both win and linux, I will delete this
tool meant as a temporary workaround for those
requiring dynamic versions of Harbour libs:
bin/hbmk2l2d.hbs
If you need it, make a copy of it locally, though
most pbly nobody ever used this.
* utils/hbmk2/examples/contrib.hbc
* utils/hbmk2/hbmk2.prg
* config/detfun.mk
* config/detect.mk
* INSTALL
* Terminology cleanup: "external code" -> "3rd party code"
- bin/hbxpatch.hbs
+ bin/hb3rdpat.hbs
* config/postinst.hbs
* package/harbour.spec
* Renamed hbxpatch.hbs to hb3rdpat.hbs to reflect terminology
cleanup ("external code" -> "3rd party code")
* utils/hbmk2/examples/contrib.hbc
* utils/hbmk2/examples/contribf.hbc
* utils/hbmk2/examples/oohg.hbc
* Using .hbc files.
* contrib/hbssl/ssl.c
+ SSL_GET_READ_AHEAD() function enabled. Made it a dummy
for bcc, where it for some reason creates unresolved
external when referencing the corresponding openssl API.
* src/rtl/hbjson.c
* src/rtl/hblpp.c
! Silenced msvc64 warnings.
* utils/hbrun/hbrun.prg
* Moved creation of header hash to separate function.
+ Added HBRUN_NOHEAD envver to disable embedded headers.
Any non-empty value will have this effect.
* utils/hbrun/Makefile
+ Enabled embedded headers.
* contrib/make.hbs
* config/postinst.hbs
* bin/hbxpatch.hbs
! Resolved TOFIX notes: now the headers can be used
just like in any .prg, and no need to locally #define
core constants.
Also hbqt_hbmk2_plugin.hbs should work now in stdalone
mode, with all the OOP code.
* src/rtl/gete.c
% Optimization to GETENV()/HB_GETENV(). Patch by Tamas Tevesz.
+ Added more details to comment on why it's needed to strip '='
part from envvar name.
* contrib/hbqt/tests/demoqt.prg
* contrib/hbqt/tests/dialogqt.prg
* contrib/hbqt/tests/testqaim.prg
! Fixed external files' references to use executable's
directory as a base, instead of current dir.
* contrib/hbhpdf/harupdf.c
! HPDF_Page_CreateStampAnnot(): Fixed wrongly passed 3rd parameter.
* contrib/hbssl/evpmd.c
! EVP_SIGNFINAL(): Fixed wrong returned buffer size.
* config/postinst.hbs
* Implemented GetEnv() caching, based on patch sent by
Tamas Tevesz and further optimized.
* harbour/include/hbapicom.h
* harbour/src/rtl/hbcom.c
+ added public C function: void hb_comSetError( int iPort, int iError )
* harbour/src/rtl/hbcomhb.c
+ added PRG function: HB_COMSETERROR( nPort, nError ) --> NIL
* harbour/src/rtl/hbsocket.c
* minor formatting
* harbour/config/doc.mk
* harbour/config/postinst.hbs
* harbour/contrib/make.hbs
* do not install documentation files when HB_INSTALL_DOC=no
* harbour/config/postinst.hbs
! do not install .hbl files for core utils when HB_BUILD_PARTS=lib
+ added support for HB_INSTALL_SCRIPT executed after install step.
It allows to extract some variables set by our GNU make system,
i.e. it's used to retrieve HB_CCPREFIX in win/wince .spec files.
* harbour/package/harbour-win.spec.in
* use HB_INSTALL_DOC=no to disable DOC file installation
* generate hb{w|ce}mk2 scripts as wrappers to hbmk2 with cross
build settings so it can be easy used used by users to create
Windows/WindowsCE binaries.
Temporary solution until we will not have something more general.
* contrib/gtalleg/gtalleg.hbc
! Fixed allegro-config command to not contain output redirection.
* contrib/hbcurl/hbcurl.hbc
! Fixed lib name on non-win platforms.
* contrib/hbgd/hbgd.hbc
! Fixed gd lib name on Linux.
* contrib/hbodbc/hbodbc.hbp
* contrib/sddodbc/sddodbc.hbp
* contrib/hbssl/hbssls.hbp
* contrib/hbcurl/hbcurl.hbc
* contrib/hbcurl/hbcurls.hbp
% Using allwin instead of win|wce.
* utils/hbmk2/hbmk2.prg
+ Added trick to not corrupt version numbers in libnames when
adding extension. (it will check for extensions beginning
with numeric and add instead of replace extension in such case)
! Fixed pkg-config/*-config parser when result contained LF chars.
* config/postinst.hbs
* Do not create dynlib symlink on non-*nix platforms.
; Now HB_BUILD_CONTRIB_DYN works for all contribs also on Linux.
; TODO: Shouldn't harbour-2.1.0.so be called harbour.so.2.1.0 ?
; TODO: Creating versionless links for contribs.
* debian/rules
+ Added LD_LIBRARY_PATH.
(it's needed here because the called make process won't
pass back any envvars to caller process)
* config/global.mk
+ Shows LD_LIBRARY_PATH in log.
- Do not clear HB_SYSLOC to allow override (from package makers).
+ Export HB_DYNLIB_PREF (for postinst.hbs).
* config/postinst.hbs
+ Creating Harbour dynamic lib symlinks, like the old postinst.sh
did. This fixes Debian build problems, and probably more.
; TODO: I didn't implement one scenario, I'd appreciate if someone
with bash and *nix skill could decipher the old code
and create the few .prg lines for this functionality.
! Fixed .hbx creation for core dynlibs on *nix systems.
* config/global.mk
! Fixed setting LD_LIBRARY_PATH under pre-3.81 GNU Makes.
+ Will now set HB_SYSLOC=yes when creating .tgz packages which
are meant to be installed to system locations. (didn't test
this one)
+ Will now set HB_INSTALL_DOC to /share/doc/harbour on *nix systems.
! Fixed to set HB_INSTALL_MAN to /share/man (instead of /man) on
*nix systems.
; Please test/review these.
* config/postinst.hbs
+ Create directory for "root documents". They are now stored
in /share/doc/harbour for *nix.
! Fixed to store proper directory in ld.so.conf.d setting by
removing HB_INSTALL_PKG_TOP from the beginning of full dynlib
path.
* debian/rules
* package/harbour.spec
* package/harbour-win.spec.in
* package/harbour-wce.spec.in
! Use HB_INSTALL_PKG_TOP to denote the root of package dir structure.
; TODO: Change the name to HB_INSTALL_PKG_ROOT
; TODO: Optimize variable usage.
; TOFIX: Use HB_INSTALL_DYN instead HB_INSTALL_LIB in context of
dynamic libs in postinst.hbs and package scripts.
* package/harbour.spec
! Fixed to honor HB_BUILD_NAME in local LD_LIBRARY_PATH setting.
(is it needed?)
* INSTALL
- Deleted note about GNU Make 3.81.90
3.82 is out and the bug was fixed.
! Updated mpkg_src.sh location.
* contrib/make.hbs
* Do not create dynlib, .hbd, .hbx if the main build process
returned with non-zero errorlevel.
* utils/hbmk2/hbmk2.prg
+ Return errorlevel when -stop is used in project.
+ Use manifest constants for errorlevels.
* config/hbextern.hbs
* Local function renamed.
* contrib/xhb/xhb.hbx
* contrib/hbxpp/hbxpp.hbx
* Regenerated.
* src/vm/pvaluehb.c
! Typo in comment.
* utils/hbmk2/hbmk2.prg
% Implemented optimized header parser code created by Przemek.
With these additions/modifications from previous algorithm:
+ Use FindHeader() to locate the referenced headers.
+ Use different algorithm to find C vc PRG headers.
% Completely skip known standard system headers.
% Do not go down to headers included as system (using <>)
IOW Check their timestamp but don't parse it for sub-headers.
Please review it, it was quite a tough task, so I may have
missed something. Here my reference build time went down
from ~4 to ~2.5secs.
! Above implementation had the nice side effect that it fixed
-autohbc feature in -inc mode.
! Fixed header finder code to always look in parent dir
(and don't look in current dir in such case).
I'd appreciate if this function (FindHeader() would be peer-reviewed
to verify if it really matches the way how Harbour and C compilers
try to find headers.
* config/postinst.hbs
! Fixed typo in a recent commit causing RTE.
* config/hbextern.hbs
* Hide stderr in lib listing call.
* contrib/hbcurl/hbcurl.c
% Use '#include <>' to refer to curl header.
* config/hbextern.hbs
+ Added HB_REBUILD_EXTERN support for msvc, pocc, watcom and bcc
compilers.
* contrib/make.hbs
* config/postinst.hbs
! Fixed to convert input file for extern generation to native format.
* utils/hbmk2/hbmk2.prg
+ Added ${hb_dynsuffix} macro which returns a dynlib suffix
value compatible with the naming system used for Harbour core
dynlib (-x64, -wce-arm, -bcc, etc..)
% Internals optimized to use dynsuffix value when calculating
harbour core dynlib name.
! Fixed to not require macros inside filters to be uppercases.
(as a side effect now unknown macro names will be passed
as is to getenv() to check for possible envvar value)
* contrib/hbpost.hbm
+ Will now use ${hb_dynsuffix} when forming output name in
-hbdyn mode. So f.e. for x64 targets an '-x64' suffix will
be used, which matches with the one used with core harbour
dynlib. Also bcc targets will get -bcc postfix.
+ Will now use ${hb_dynsuffix) when forming implib output name
if it's not empty (for x86, ia64, wce and bcc in practice).
* contrib/make.hbs
* config/postinst.hbs
! Display msg about extern generation only if it was really started.
* config/hbextern.hbs
! Fixed to check for the presence of input file.
* contrib/make.hbs
* config/postinst.hbs
* config/hbextern.hbs
+ Implemented manual include/exclude filter in extern header
generation process. Include filters can be specified
using '// HB_FUNC_INCLUDE <func>', exclude filters using
'// HB_FUNC_EXCLUDE <func>'. By default everything is
included, this can be overridden using HB_FUNC_INCLUDE,
and exceptions made using HB_FUNC_EXCLUDE. <func> can
contain wildcards, so it's very flexible.
NOTE: - By default the functions are declared using DYNAMIC
so these generated can be directly used when the goal
is to load pcode dynamic libs dynamically.
- By #defining '__HBEXTERN__<libname>__REQUEST' the
generated headers will switch to EXTERNAL declaration,
so they can be used when building dynamic libs or when
user wants to explicitly pull all functions into lib
code. Do not use this from app code.
- When __HBEXTERN__<libname>__REQUEST is defined, the
generated headers will also ANNOUNCE __HBEXTERN__<libname>,
which means that application can simply pull all functions
into app code, using:
'REQUEST __HBEXTERN__<libname>__' command.
- Names are not necessarily finalized yet. ("extern", ".hbx")
- Deleted hard-coded exceptions from generator code.
; TODO: Clean core generated headers to behave like before.
; TODO: Adapt hbextern lib to these changes.
; TODO: Add generated headers to SVN for contrib libs.
; TODO: Add stubs which include generated headers to all libs.
; TODO: Long term TODO: make it easy to generate such headers
for 3rd party projects.
* include/hbextudd.ch
* include/hbextsca.ch
* include/hbextcdp.ch
* include/hbextlng.ch
* include/hbextern.ch
* contrib/hbct/hbct.hbx
+ Filled HB_FUNC_INCLUDE, HB_FUNC_EXCLUDE exceptions to
achieve the previous hard-coded results.
* Regenerated.
* contrib/hbqt/hbqt_hbmk2_plugin.hbs
* config/postinst.hbs
* config/hbextern.hbs
* bin/hbmk2l2d.hbs
* bin/hbxpatch.hbs
+ Added -km, -ko options.
* config/postinst.hbs
! Fixed to only do install tasks in install build phase.
* Changed to only regenerate headers in non-install phase.
* Makefile
+ Passing build phase to postinst.hbs.
* INSTALL
+ Elaborating a bit more on the meaning of 'local' in HB_WITH_*
settings.
* include/hbextudd.ch
* include/hbextsca.ch
* include/hbextern.ch
* config/postinst.hbs
! Fixed to exclude HB_GT_ symbols, put HBSYMBOL to hbextsca.ch,
put USRRDD_* to hbextudd.ch.
; NOTE: May I ask to review the new headers compared to old
one to see what else have to be filtered out or moved
to different header?
* utils/hbrun/hbrun.prg
+ Will now add the script's home directory to the header dir list.
* contrib/make.hbs
* config/postinst.hbs
+ config/hbextern.hbs
+ Moved extern header generation low level logic to separate script.
+ Added feedback about extern generation.
+ Moved core extern header generation logic to postinst.hbs.
! Minor fix to output when postinst is used in non-install phase.
* contrib/global.mk
+ Displays HB_REBUILD_EXTERN setting.
* Makefile
* Changed to always execute config/postinst.hbs, not just in
install phase.
* include/hbextudd.ch
* include/hbextsca.ch
* include/hbextcdp.ch
* include/hbextlng.ch
* include/hbextern.ch
+ Replaced content with automatically generated one.
* contrib/hbxbp/xbpgeneric.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/ideshortcuts.prg
* Deleted "just" functions and replaced them with HB_SYMBOL_UNUSED()
macro, which has no runtime overhead.
* contrib/hbide/hbide.hbp
- contrib/hbide/iderequests.prg
- Deleted requesting HBQT component via "just" function. Now it's
done by EXTERNAL statements. BTW this function was not called,
so it was ineffective. Pls correct me if I missed the point
of the old solution.
* include/hbsocket.h
* src/rtl/hbsocket.c
! Fixed type in C level function name.
* src/rtl/hbdoc.prg
! Fixed to always use CRLF as EOL in internal doc data.
* contrib/hbtip/utils.c
! HB_BASE64() marked as HB_LEGACY_LEVEL3.
+ Added TIP_CRLF()
* contrib/hbtip/smtpcli.prg
* contrib/hbtip/client.prg
* contrib/hbtip/ftpcli.prg
* contrib/hbtip/mail.prg
* Using TIP_CRLF() instead of HB_INETCRLF().
* config/postinst.hbs
+ More meaningful message when doing 'make install' without
HB_INSTALL_PREFIX being set.
* contrib/hbpost.hbm
+ Added extra protection to not try to install anything when
using 'install' without target dir being specified.
* INSTALL
* Updated to reflect the optional nature of make 'install'
option.
* Updated to reflect change in HB_INSTALL_PREFIX.
* {hb_top} HB_INSTALL_PREFIX macro not documented anymore.
* utils/hbrun/hbrun.prg
+ Making available original hbrun location using __HBRUN__DIRBASE
envvar. This information is lost when doing the argshift trick,
pls shout if you see a better solution for it (or any concerns
with this one).
* contrib/make.hbs
+ Will now use unified method for both stdalone and GNU Make to
find out the location of hbmk2. It will look for it in the same
dir as of hbrun's.
* config/postinst.hbs
* Converting bash to .prg in progress.
* INSTALL
+ Documented Mac OS X architecture flags.
* package/harbour-win.spec
* package/harbour-wce.spec
* package/harbour.spec
- Deleted package properties not recommended by RPM docs.
+ Added RPM doc references.
- Deleted commented lines.
% Optimized out seemingly unused temp envvars. (I didn't retest)
* package/winuni/mpkg_win_uni.nsi
+ Added bin/*.hbs files.
* config/postinst.hbs
- Deleted mandrake distro autodetection.
* contrib/hbide/idestylesheets.prg
+ Disabled all UI customizations when "animations" is not enabled.
This makes the UI to look like on normal system UI on all supported
OSes (IOW it now looks like a standard application), it fixes
most reported visual irreguralitites on Linux.
Maybe multiple levels of UI customizations are required, anyway
totally off should always stay an option and only those configs
should be presented on a given platform which were actually tested
on that given platform.
It didn't fix the bugs in highlight position calculation, which
is off on Linux (latest Ubuntu) by almost a line in some occasions.
* utils/hbmk2/hbmk2.prg
+ Added -instforce option which will force the target to be
copied to -instpath even if it was up to date. This is to
make it in sync with GNU Make behaviour, where single
'make install' will copy everything regardless of being
up to date or not.
* contrib/hbpost.hbm
+ Added -instforce to make it in sync with old GNU Make
behavior. Such case is exploited by .rpm generation, and
this is the reason why the contrib libs weren't
appearing in target lib dir.
* config/postinst.hbs
+ Added two .so related TOFIXes.
* mpkg_src.sh
+ Changed to always delete temp file bin/hb_flst.tmp containing
a list of all source files. (anyone knows why was it left there?)
* package/harbour.spec
* Minor in comment.
* Temply commented adding .so files in the lib/ root (without harbour postfix)
* contrib/make.hbs
* contrib/hbpost.hbm
+ Added support for HB_MAN_INSTALL, HB_ETC_INSTALL.
* utils/hbmk2/hbmk2.prg
+ Enabled multi-input compilation for *nix gcc family. This means that
all C source files will be now compiled in one gcc invokation, instead
of compiling them one by one.
% PATHNORMALIZE(): delete unused function.
% ISDRIVESPEC() converted to macro _ISDRIVESPEC().
* config/postinst.hbs
+ Added code to create ld config file.
+ Added commented original bash code to create .so links which I cannot
understand. Anyone to jump in?
+ Added PathNormalize() function from hbmk2.
+ Changed back DirBuild() to always normalize path before creating it
(to filter out potential ".." and "." dirs from it). Required for
ld creation.
* config/global.mk
* HB_ETC_INSTALL is now format equally on all *nix platforms to have a
'harbour' subdir. Required to work well with ld creation logic in postinst.hbs.
* config/postinst.hbs
+ Will now install root documents (INSTALL, COPYING, TODO, ChangeLog)
to HB_DOC_INSTALL on *nix systems.
+ Will now create the HB_MAN_INSTALL dir before copying.
* debian/rules
+ Sets HB_MAN_INSTALL.
+ Sets HB_BUILD_SHARED=yes.
% Deleted explicit reference to man files and ChangeLog, these are
now installed by postinst.hbs and picked automatically by debhelper.
This means that now debian/rules doesn't have to be tweaked
if any Harbour files change name or location.
* config/postinst.hbs
+ Added more feedback.
* Internal cleanups.
+ Changed to always copy to etc if there is target dir defined.
! Fixed typo in man copying.
* config/global.mk
+ Added logic to setup dirs for *nix package creation.
Fixing .tgz creation to work like before.
* Changed to only set HB_MAN_INSTALL if installing to sysloc.
* utils/hbmk2/hbmk2.prg
* config/postinst.hbs
! Fixed DirBuild() function when crearing absolute paths without
a drive letter. It created dir in current dir on non-*nix and
didn't do anything while returning success on *nix.
; Now mpkg_tgz.sh replacement is about finished.
It's pbly not 100% the same still, so pls review it.
* config/postinst.hbs
! Fixed missing EOLs in embedded install bash script.
+ Added Przemek copyright for embedded install bash script.
! Minor fix to uname based *nix system name detection.
* utils/hbmk2/hbmk2.prg
+ Added new plugin APIs:
- hbmk2_AddInput_OBJ()
- hbmk2_PathFromWorkdirToCWD()
- hbmk2_CWD()
+ Changed to not abort processing if there are no input files, but
there are custom plugin input parameter.
+ bin/hbmk_l2d.hbs
+ Added rough plugin to convert static libs to dynamic libs
on platforms supporting 'ar' tool (and of course the notion
of such conversion). This is meant to replace functionality
provided by bash script hb-mkdyn.sh.
Pls find cmdline example in the script header.
* config/postinst.hbs
+ Now installs hbmk_l2d.hbs
- bin/hb-mkdyn.sh
- Deleted hb-mkdyn speciality shell tool to convert static
libs to dynamic ones.
- bin/postinst.sh
- Deleted, it only started hb-mkdyn.sh, which was just deleted.
* Makefile
- Do not run postinst.sh anymore.
* mpkg_rpm_win.sh
- harbour-win-spec
+ harbour-win.spec
* mpkg_rpm_wce.sh
- harbour-wce-spec
+ harbour-wce.spec
* Renamed to have standard extension.
* config/postinst.hbs
- Deleted detection for no longer existing Linux distros.
* debian/rules
* harbour.spec
* config/instsh.mk
* Do not use HB_INST_PKGPREF.
* harbour.spec
+ Use HB_MAN_INSTALL
* config/global.mk
+ Added HB_MAN_INSTALL and HB_ETC_INSTALL
+ PKG_NAME is now filled in little bit different way for
*nix systems to emulate old mpkg_tgz.sh logic.
* bin/postinst.sh
- Deleted no more used subroutines.
- Deleted mk_hblibso() function.
- it maintained loca list of contribs which breaks the
effort of contrib "plug-in" system
- it contained lots of platform dependent build details in
hard to maintain bash shell code.
; If someone needs this functionality pls try to integrate
it in hbmk2 or write a .hbs script in modular fashion
(not contrib names). I cannot tell what exactly was the functionality
implemented there though. Maybe rewriting it locally is also an
option.
! Do not use HB_INST_PKGPREF.
* config/postinst.hbs
+ Rewritten mpkg_tgz.sh logic in .prg code. This logic is
finally in it's proper place.
+ Implemented copying of man files on *nix systems.
; NOTE: Not tested at all, it was hard enough to rewrite it,
pls help on finishing and debugging it. See TODOs in
source. Previous replicated with some differences.
- mpkg_tgz.sh
- Deleted. Now implemented in postinst.sh.
Build Harbour with HB_BUILD_PKG=yes to try it.
* INSTALL
+ Added HB_MAN_INSTALL and HB_ETC_INSTALL
+ Updated .tgz binary instructions (now same on all platforms)
* utils/hbrun/hbrun.prg
* utils/hbrun/hbrun.hbp
* utils/hbrun/Makefile
* Renamed include dir control var.
* Change so that now simple HB_INC_INSTALL value will
trigger burn-in of header location.
+ Added logic to only use burnt-in header location if
it is an absolute path.
! Synced .hbp file with this feature.
; NOTE: This is still non-portable and error
prone solution. Pls see my thought on dev list
about possible solutions to use precompiled
Harbour headers compiled right into the executable.
* utils/hbmk2/hbmk2.prg
- Deleted handling of .hbi extension.
- Deleted -target and -alltarget cmdline options as an
effort for simplification. Now all cmdline options apply
to all targets.
+ .hbp file references will now be executed as sub-projects,
using an internal recursive call to the hbmk2 engine.
This means that projects can now be embedded. INCOMPATIBLE
if someone used .hbp file references inside other make
files. If you want to create common settings in a separate
file, always use .hbm extension.
Pls note that sub-projects will inherit all cmdline options
of original hbmk2 invocation.
+ Added ${hb_targetname} macro to return the parent project
name.
+ Added ${hb_targettype} macro. Returning target type.
+ Changed -run option to only run the top level project.
+ Changed --hbinfo to return a flat list of information
about all projects involved. Currently the main project
is the last one in the list (order of execution).
+ Filters can now be used also for file inclusion and -skip
options (which means they can now be used for all possible
cmdline and .hbm/.hbp options)
! Fixed the way automatic cmdline options based on
hbmk2's own filename are created. From now -hbcmp, -hblnk,
-hbcc, -rtlink, -xhb, -hb10 will be added to the left side
of the existing option (to precede everything else), while
the rest (f.e. -hblib, -hbexe, -hbdyn) will be added last.
; NOTE: Quite heavy changes so pls expect (and report) any
regressions. Most probably there will be room for
tweaks here and there to make the new cascading build
feature as smooth as possible.
* contrib/make.hbs
% Internally simplified since now the handling of sub-projects
is the job of hbmk2 and .hbp make files.
+ In standalone mode it will now detect the name of the project
in current dir, so the codepaths are much similar to the
GNU Make mode now and stdalone mode will also rely on pkglist,
instead of trying to detect what to build on its own.
+ Not require pkglist to list any sub-projects anymore, now
it's simple list of main .hbp files.
+ Changed along with hbmk2 to deal with multiple project
information returned by --hbinfo.
+ Avoid using the word "contrib", use "package" instead.
* contrib/pkglist
* Simplified to a mere list of main .hbp files for packages.
* utils/hbrun/hbrun.prg
* contrib/make.hbs
* config/postinst.hbs
* PathSepToSelf() rewritten to not make assumptions about
__PLATFORM__* macro vs hb_ps() value, instead use hb_ps()
value to decide what to do.
* utils/hbrun/hbrun.prg
! Fixed to not save the (empty) history after each non-interactive
session.
* config/win/cygwin.mk
! Fixed to add z and pcre libs if the locally hosted ones
aren't used.
* contrib/hbqt/generator/hbqtgen.prg
! Fixed OS names in doc output.
* Formatting.
* contrib/gtalleg/gtalleg.hbm
* contrib/gtalleg/gtalleg.hbp
* contrib/gtalleg/gtallegs.hbp
* contrib/hbcurl/hbcurl.hbm
* contrib/hbcurl/hbcurl.hbp
* contrib/hbcurl/hbcurls.hbp
* contrib/hbtip/hbtip.hbm
* contrib/hbtip/hbtip.hbp
* contrib/hbtip/hbtipssl.hbp
* contrib/hbssl/hbssl.hbm
* contrib/hbssl/hbssl.hbp
* contrib/hbssl/hbssls.hbp
* contrib/hbqt/hbqt_common.hbm
- contrib/hbqt/hbqt.hbm
+ contrib/hbqt/filelist.hbm
* contrib/hbqt/hbqt.hbp
* contrib/hbqt/hbqts.hbp
* contrib/hbqt/hbqtgui.hbp
* contrib/hbqt/hbqtguis.hbp
* contrib/hbqt/hbqtcore.hbp
* contrib/hbqt/hbqtcores.hbp
* contrib/hbqt/hbqtnetwork.hbp
* contrib/hbqt/hbqtnetworks.hbp
- contrib/hbqt/gtqtc/gtqtc.hbm
+ contrib/hbqt/gtqtc/filelist.hbm
* contrib/hbqt/gtqtc/gtqtc.hbp
* contrib/hbqt/gtqtc/gtqtcs.hbp
* contrib/hbqt/qtwebkit/hbqtwebkit.hbp
* contrib/hbqt/qtwebkit/hbqtwebkits.hbp
* contrib/hbqt/qtdesigner/hbqtdesigner.hbp
* contrib/hbqt/qtdesigner/hbqtdesigners.hbp
* contrib/hbqt/hbqscintilla/hbqscintilla.hbp
* Cleanup along with latest changes:
Using ${hb_targetname} instead of ${hb_name}, so it's safe to
use it inside .hbm file, instead of replicating them in every
.hbp file.
+ Now primary .hbp project files always reference the sub-project
.hbp files:
- hbqt
+ hbqts
+ hbqtcore
+ hbqtcores
+ hbqtgui
+ hbqtguis
+ hbqtnetwork
+ hbqtnetworks
Which means that 'hbmk2 hbqt.hbp' will rebuild the whole
stuff (all libs, and even static libs if requested) in one pass.
* Renamed some file for more uniform layout.
* contrib/hbqt/hbmk2_plugin_qt.hbs
+ Do not pollute output with meaningless error message, when
HB_WITH_QT=no is used.
* contrib/hbpgsql/postgres.c
! Fixed msvc C mode warning. (this one is valid, though I
couldn't find out why this is only reported in C mode,
there are also some other seemingly unfixable warnings
reported in C mode.)
* contrib/hbpre.hbm
+ Will now enable C++ mode by default for msvc compilers,
to stay in since with GNU Make behavior.
* utils/hbmk2/hbmk2.prg
! Fixed to not rebase dirs passed to -deptimplibs options.
! Fixed to stay silent but still fail when dependencies
are forcefully disabled.
! Reorganized msvc compiler version dependent options to
better handle the case when no compiler version is present
(to go with the less risky option in such case)
* config/global.mk
+ Added msvc64 and msvcia64 version detection.
* Renamed one variable to avoid being same as new hbmk2 macro.
* config/postinst.hbs
* Minor in feedback text.
* config/postinst.hbs
* Changed to only create .hbd documentation file for the
core. This is to ensure separation of components.
* contrib/Makefile
- Deleted old Makefile-based build logic in contrib area,
now this make file does nothing else than passing the
control to make.hbs Harbour script.
* contrib/make.hbs
* contrib/hbpre.hbm
* contrib/hbpost.hbm
% Moved -instpath options to hbpost.hbm to save cmdline length.
% Moved HB_BUILD_SHARED control logic from make.hbs to hbpost.hbm
! -warn option moved to hbpre from hbpost, so libs can override it
(can be important for external code)
+ Will now compile .hbd binary documentation in 'install' phase
and copy it to HB_DOC_INSTALL.
* Internal pathsep cleanup.
! Fixed to accept 'install'/'clean' regardless of casing.
+ Now accepts HB_BUILD_CONTRIBS instead of HB_CONTRIBLIBS
(though old envvar still work for while)
+ Log feedback now show the build action executed.
+ Added more TODOs.
* INSTALL
* Documented the change to HB_BUILD_CONTRIBS from HB_CONTRIBLIBS.
* utils/hbmk2/hbmk2.prg
+ Will now automatically recognize HB_BUILD_NAME envvar and
convert it to -build= cmdline option.
* contrib/hbodbc/todbc.prg
* contrib/hbodbc/odbcold.c
* contrib/hbodbc/odbc.c
* Renamed SQLSTOD to HB_ODBCSTOD
* Renamed SQLSETNUMLEN to HB_ODBCSETNUMLEN.
* Old names are deprecated with HB_LEGACY_LEVEL3.
If you happen to use these function names, pls update to
the new ones ASAP.
* include/hbextern.ch
* src/rtl/hbdoc.prg
+ Added __HBDOC_LOADHBD( <cFileName> ) -> <hbdoc> | NIL
+ Added __HBDOC_SAVEHBD( <cFileName>, <hbdoc> ) -> <lSuccess>
- doc/en/Makefile
* doc/Makefile
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni_extra_copy.bat
* package/winuni/mpkg_win_uni.nsi
- Don't install doc sources.
* config/postinst.hbs
+ Will now build .hbd files from doc sources at 'install' phase.
.hbd files will be installed in HB_DOC_INSTALL path, which
is /doc by default.
; NOTE: Apps like hbide can now use __HBDOC_LOADHBD() to load
these .hbd files.
; NOTE: We may add other doc generators to hbrtl, plus we may
further enhance .hbd format to be more easily usable
for client apps (and f.e. to consume less disk space).
; TODO: Config HB_DOC_INSTALL also on *nix systems.
* contrib/gtwvg/wvgwing.c
! Fixes after previous commit.
Patch by Tamas Tevesz.
* contrib/make.hbs
* Minor.
* utils/hbmk2/Makefile
* utils/hbmk2/hbmk2.prg
+ Added build time configuration for GPM (on Linux) and
WATT (on MS-DOS) builds. This makes hbmk.hbc generation
(at 'install' phase) unnecessary, which means that now
'install' is not required on _any_ platforms and scenarios
to use hbmk2. Since hbmk2 is now used to build contribs,
this is now also a reqiurement.
; Please test, I didn't make any Linux, MS-DOS build tests
after this change.
* config/postinst.hbs
- Deleted hbmk.hbc creation. Now this logic is included in
hbmk2 at build-time on Linux and MS-DOS build which have
GPM lib and WATT lib detected respectively.
* contrib/hbct/numline.c
* HB_ISIZ variables renamed.