* utils/hbmk2/hbmk2.prg
+ Will now autodetect /bin/plat/comp bin dir, if present.
! Fixed to set dynlib dir to bin dir on non-*nix platforms.
As a conseqeunce bin dir will now be added to the libpath
list on these platforms. Allowing to access .dlls directly
in compilers that support it (mingw).
! Fixed to use HB_INSTALL_PREFIX instead of bin dir as a base
to find addons/contribs dir structures (for .hbc autofind).
! Fixed to really include hbmaindllp stub added in recent commit.
Anyhow, loading contrib .dlls dynamically still don't work.
* contrib/make.hbs
! Fixed to honor user setting when creating dynlib in stdalone mode.
* contrib/hbcomm/hbcomm.prg
* space @ EOL.
* utils/hbmk2/hbmk2.prg
+ Added -depimplib[-] option to contrib implib creation for
dependency dlls.
+ Added -autohbm[-] cmdline-only option to disable processing of
hbmk.hbm in current directory.
* contrib/hbpost.hbm
+ Disabled implib creation for dependency dlls for HB_BUILD_CONTRIB_DYN
mode.
* contrib/hbgd/hbgd.hbp
! Fixed to use .lib as implib source for coff-compatible targets and mingw.
; NOTE: Successfully created a small test app which uses harbour.dll and
contrib .dlls:
'contrib\hbct\tests\hbmk2 addascii.prg -lhbct_dll -shared -autohbm-'
'contrib\hbpgsql\tests\hbmk2 async.prg -lhbpgsql_dll -shared -autohbm-'
(-autohbm is there only to disable hbmk.hbm processing)
Quite nice, isn't it?
For these examples, there are problems:
'contrib\hbblat\tests\hbmk2 blatcmd.prg -lhbblat_dll -lhbwin_dll -shared -autohbm-'
It's showing application errro 0xc0000142.
For this other one:
'contrib\hbgd\tests\hbmk2 barms.prg -lhbgd_dll -shared -autohbm-'
It's showing this RTE:
---
Error BASE/3003 Cannot find super class: __CLSINSTSUPER
Called from __CLSINSTSUPER(0)
Called from HBCLASS:CREATE(0)
Called from TCODE(0)
Called from MAIN(30)
---
"Almost" there. If you have any idea why it fails, pls tell.
Loading contrib pcode .dlls dynamically:
--- hbmk2 testdyn.prg -shared -autohbm-
DYNAMIC CHARADD
PROCEDURE Main()
LOCAL l := hb_libLoad( "hbct.dll" )
IF ! Empty( l )
QOUT( CHARADD( "abc", Chr( 1 ) ) )
ENDIF
RETURN
---
Running it results in:
---
Error BASE/1001 Undefined function: CHARADD
Called from CHARADD(0)
Called from MAIN(7)
---
* utils/hbmk2/hbmk2.prg
! Fixed RTE when using post-process command on systems without
implib functionality. Recent regression.
% Fixed bad performance in default -head=partial mode, which made
it slower than -head=full. Now they are on par, so maybe -head=full
should be made the default and partial mode deleted.
; Thanks to Przemek for bug reports.
* include/hbset.h
* include/hbgtcore.h
* include/hbapi.h
+ Added some HB_EXPORT flags.
* src/rdd/usrrdd/usrrdd.c
! Fixed to prev since new warnings appeared after the change.
Please review this. The stack API in some places expects
'int' while other calls use HB_ISIZ. In this case a value
is formed from ( hb_stackTopOffset() - hb_stackBaseOffset() ),
both HB_ISIZ, which is then passed to hb_stackItemFromBase(),
which expects an int.
What is the best way to correct this?
* src/rdd/usrrdd/usrrdd.c
! Fixed new msvc64 HB_ISIZ vs HB_LONG warnings popped after
finishing variable cleanup in stack API.
* src/rdd/dbcmd53.c
! Silenced one remaining warning (with a cast) in hbrdd lib.
* utils/hbmk2/hbmk2.prg
! Fixed ${hb_workdynsub} macro not returning correct value.
! Fixed to install implibs when -instforce is used and targets are
up to date.
+ Added -implib=<dir> option to control placement of implibs generated
in -hbdyn and -hbexe modes. (by default it's the output dir for
main target)
+ Added autodetection of hbmaindllp lib and this case generate little
stub posted by Przemek on the list earlier this year, and in this
case also enabling linkage of shared Harbour lib in -shared mode.
NOTE: Pls check this, this solution is Windows centric, but until
I know this is the correct track I didn't want to extend it.
Przemek can you take a look at it?
* Changed the install group name to "depimplib" for implibs generated
for dependencies, and use "implib" group for implibs generated for
our own targets. This is needed to be able to control them
separately, since we don't necessarily want to install "depimplib"
while we always want to install "implib"s.
* contrib/make.hbs
* contrib/hbpost.hbm
* Updated list of TODOs
* HB_BUILD_CONTRIB_DLL changed to HB_BUILD_CONTRIB_DYN
+ HB_BUILD_CONTRIB_DYN now works also in stdalone mode.
% Moved HB_BUILD_CONTRIB_DYN related options to hbpost.hbm
+ Added -shared and -lmaindllp options to dynamic lib build mode.
* Changed dependency implib install target to have 'depimplib'
prefix to differenciate from -hbdyn implib install target.
+ Added -implib=<dir> option to tell hbmk2 to create implibs
in lib dir in -hbdyn mode.
+ Added install target for implibs generated in -hbdyn mode.
; All this means that now by setting HB_BUILD_CONTRIB_DYN=yes,
a dynamic version will be build of the libs, import lib
placed in lib dir, dynamic lib placed into dynamic lib dir
(bin on non-*nix platforms, lib on *nix platforms).
IOW, now HB_BUILD_CONTRIB_DYN=yes should work, at least on
win and wce. I didn't make functional tests though.
Please review/test it.
* harbour/src/rdd/workarea.c
* harbour/src/rdd/wacore.c
* harbour/src/rdd/dbcmd.c
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbcmd53.c
* harbour/src/rdd/usrrdd/usrrdd.c
* harbour/src/rdd/wafunc.c
* harbour/src/rdd/hbsix/sxcompr.c
* casting and type modifications to eliminate possible lost data
warnings
+ contrib/hbmisc/bbabble.c
+ contrib/hbmisc/tests/testbbab.prg
* contrib/hbmisc/hbmisc.hbp
+ BubbleBabbleEncode(): Added BubbleBabble encoder. There is
also an equivalent version written in Harbour in testbbab.prg.
* 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.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/qth/HBQPlainTextEdit.qth
+ Added: methods to control code completions and completion tips.
+ contrib/hbide/resources/help1.png
+ contrib/hbide/resources/infotips.png
* contrib/hbide/hbide.qrc
+ Added: two more images foe code completions and completion tips.
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
+ Added: controls to toggle code completions and completion tips.
The settings are not saved for the next run and are applicable
per editing instance.
* contrib/hbide/hbide.prg
! Minor.
* contrib/hbide/idethemes.prg
+ Added: "PROCEDURE" and "THREAD" as Harbour keywords, got missed somehow.
* contrib/hbide/ideedit.prg
* contrib/hbide/ideskeletons.prg
+ Implemented: Code Snippets->execution->Ctrl+K : inserts the snippet
if word under cursor is one of the name of a code snippet definition.
So, if you have a snippet named "doit" then immediately after
typeing "doit" you press Ctrl_K, then, instead of presenting you
with menu to select a snippet, it is executed automatically.
* debian/dirs
! Deleted doc/en dir.
* doc/Makefile
- doc/whatsnew.txt
+ NEWS
* COPYING
* doc/howtorel.txt
* debian/changelog
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* Renamed doc/whatsnew.txt to /NEWS
* debian/copyright
* Updated with COPYING content.
* package/harbour.spec
! Fixed to include doc/* instead of doc/*.txt.
* utils/hbrun/hbrun.prg
- Deleted envvar method of passing dirbase to scripts.
* contrib/make.hbs
+ Using HBRUN_DIRBASE() function instead of envvar trick.
Maybe some more generic named value passing would be better.
* contrib/Makefile
! Using '-' prefix when running hbrun instead of '+', to not
cause fatal breakage in build stage if make.hbs contains
something which previous build of hbrun didn't offer.
* config/global.mk
- HB_INSTALL_PREFIX will not default anymore to source root
dir (on non-*nix systems) to avoid FAQ where installation
fails because of former install into source root, causing
old contrib headers to ovveride current ones and breaking
build. Please note that 'install' is truly optional with
current builds, so only use it for what it was designed.
Pls should if some things fail with empty HB_INSTALL_PREFIX
and requesting 'install' anyway.
* contrib/xhb/xhbat.c
! Applied this fix to Harbour:
2010-07-29 12:28 UTC-0430 Ron Pinkas <ron.pinkas/at/xharbour.com>
* source/rtl/at.c
+ Added missing extended strings support, to hb_AtSkipStrings()
* harbour/contrib/rddads/adsx.c
! fixed RDDNAME() value by implementing newarea RDD method
+ ADSVFPX RDD
* harbour/contrib/rddads/rddads.hbp
! fixed ACE library name for linux
* utils/hbrun/hbrun.prg
* utils/hbrun/hbrun.hbp
* utils/hbrun/Makefile
- Deleted "burn-in" trick to tell hbrun where to find the
Harbour include dirs. We need to find something universally
useful (portable).
* harbour/src/compiler/gencc.c
! fixed wrongly used HB_ISIZ instead of HB_LONG
* harbour/package/harbour.spec
! fixed /etc/ld.so.conf.d detection
% minor improvement
; TOFIX:
* /etc/ld.so.conf.d/harbour.conf in final RPM contains
wrong path due to missing HB_INSTALL_PREFIX
* soft links to harbour shared libraries for systems
without /etc/ld.so.conf.d are missing
* soft links with short shared libraries names are missing
and current long names do not confirm standard Linux
shared library naming convention:
<name>.so[.<maj>[.<min>[.<rel>]]]
hbmk2 also uses short names so it does not work correctly
with binaries installed from the RPMs
* src/rtl/hbsocket.c
! hb_socketBind((): Deleted hb_socketSetReuseAddr() call,
which caused that the same addr:port could be opened multiple
times on Windows (tested on 7) systems, causing uncertain behavior.
This is documented MS (mis?)feature.
* utils/hbrun/hbrun.prg
+ Added public function HBRUN_DIRBASE() which returns the
same value as envvar __HBRUN__DIRBASE, but this one looks
a superior interface between scripts and runner environment.
Pls comment.
* contrib/make.hbs
* contrib/hbpost.hbm
* Updated TODO list.
* Renamed internal _HB_*_INSTALL vars to _HB_INSTALL_*
; TODO: Do the same in Harbour with HB_*_INSTALL envvars.
* utils/hbmk2/hbmk2.prg
! Changed pkg-config based dependency detection to only consider
a given component present, if there is -I option present
among the returned options. This should fix false positive
cups detection, though I've yet to try it.
Maybe it'd be even better to make detection even more robust
by checking for the key header on the found headers paths
when using pkg-config based detection.
* 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.
* package/harbour.spec
! Deleted hbbz2 from lib list. It was not added to contrib list.
; TOFIX: This separately maintained contrib (and target lib) list
should be somehow avoided. It's a permanent maintainence
problem.
Is there a way to automatically include all files in a
given directory when creating rpms?
! Added hbminizip lib to lib list.
! Deleted one of the double hbmzip libs from lib listing.
! Added .hbl and .hbs files in bin dir.
* 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.
* contrib/hbxbp/xbplistbox.prg
+ Added: method :setVisible().
* contrib/hbide/ideedit.prg
* contrib/hbide/hbide.prg
+ Implemented: "Functions List" now supports "Sorted" and "Natural Order"
display which is switchable via right-click context menu.
* contrib/hbide/idedocks.prg
% Fixed: a rare bug where if hbIDE is minimized by any other action
than clicking on the "Minimize" title-bar icon on the right,
on restoration it was producing RTE.
* contrib/hbide/idesaveload.prg
+ Added: ::aDictionaries instance variable. Futuristic implementation.
* mpkg_rpm.sh
- Deleted conectiva specific branch which apparently was never run.
* package/harbour-win.spec
* package/harbour-wce.spec
* package/harbour.spec
- Deleted CC_HB_USER_PRGFLAGS.
- Deleted conectiva and aurox (discontinued) distro detection.
! Fixed to delete libbz2.a (I hope it's right)
- Deleted logic installing man and .def files. Now it's done by
postinst.hbs.
! Fixed HB_MAN_INSTALL definition not being included before build.
* contrib/make.hbs
% Cleaned away test/migration modes.
* One STATIC var changed to local.
* contrib/hbpre.hbm
+ It's now possible to get all hbmk2 output along the Harbour
build process by setting HB_BUILD_VERBOSE=yes.
* examples/hbdoc2/gentpl.prg
* examples/hbdoc2/genhtml.prg
* examples/hbdoc2/hbdoc2.prg
% Optimized out another pathsep holder variable.
* mpkg_rpm.sh
* Another shot in the dark.
- contrib/hbdoc2
+ examples/hbdoc2
* Moved back to examples.
; TODO: Should be updated to use core API to load docs and
to generate output from the internal doc hashes.
* mpkg_rpm.sh
! Fix to always copy harbour.spec to SPECS dir.
Shot in the dark.
* package/harbour-win.spec
* package/harbour-wce.spec
* package/harbour.spec
- Deleted RPM specific readme. Similar information is now
found in INSTALL.
* contrib/hbwin/win_regc.c
! WIN_REGQUERYVALUEEX(): Fixed to check return value of
subsequent internal RegQueryValueEx() calls. Return NIL
if failed. (value length will still be reported as
received back from first RegQueryValueEx() call)
* contrib/hbide/hbide.hbp
! Fixed QT .dll copying options. Commented the whole thing.
* contrib/make.hbs
+ Added support for 'clean all' build mode. This is the only
way to clean and rebuild in one pass if someone doesn't
want to install at the same time.
! Fixed to add -inc option in clean sessions.
* contrib/hbide/ideactions.prg
! Fixed menu item text to not contain '&' mark. It's converted
to underscore on Linux.
* 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.
- package/debian
+ debian
* INSTALL
* Moved back to root. Seems like this MUST be in root and there
is no way to tell debhelper tools otherwise.
* debian/rules
% Deleted unnecessary stuff. Pls review me.
* config/global.mk
! Minor in comments.
* 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.