* bin/postinst.bat
* Minor internal cleanup.
* bin/hb-mkdyn.bat
* config/lib.cf
! Fix for gcc family.
! Fixed to use /Y switch with move commands.
% Use automatically created .lib files instead of generating
them explicitly with pocc.
+ Move .exp file to lib dir with pocc.
! Three fixes for watcom .dll generation.
* config/global.cf
+ Plans added to cleanup lots of config vars with various names.
+ Added central OpenSSL detection by the name HB_HAS_OPENSSL.
This makes it possible to use OpenSSL in core or in any contrib
without much hassle.
* contrib/hbtip/Makefile
* contrib/hbssl/Makefile
+ Relying on central OpenSSL detection logic.
; TOFIX: For hbmk2 hbssl.hbc should be added explicitly to the
cmdline yet.
* config/instsh.cf
* Suppressing install copy command for cleaner output.
* ChangeLog
+ Marked items [DONE]
* source/rtl/gtsln/gtsln.c
! Fixed linux/gcc warning. Now write() retval is checked.
* config/global.cf
! Fixed wrong autodetection due to recent change.
(HB_COMPILER needs to be checked against empty value)
* INSTALL
* make_gnu.bat
- Deleted HB_BUILD_LOG option. This will have to be made
on the user side. It was a fresh feature and a Windows/DOS-only
one so I hope this isn't a big loss.
- bin/hb-mkpkg.bat
* bin/postinst.bat
% Integrated package creation code into postinst.bat.
* make_gnu.bat
- Deleted special handling of cygwin. make_gnu.sh should be
started directly, IMO not a big problem.
* config/global.cf
! Fixed pathseps in default HB_INSTALL_PREFIX.
! Fixed to use abs path when setting HB_INSTALL_PREFIX default.
(it's required by .nsi file to find the source files)
! Fixed setting HB_ARCHITECTURE for some win/dos-only HB_COMPILER
values.
+ --no-print-directory make flag isn't added if HB_USER_MAKEFLAGS
contains -w or --print-directory. Seems that simply adding these
flags after the former won't just reenable it.
- config/test.cf
- Deleted, no longer used.
* INSTALL
+ Added HB_INSTALL_PREFIX description (this is now optional).
+ Added HB_BUILD_PKG description.
+ Added HB_BUILD_IMPLIB description.
* log-%HB_COMPILER%.txt log names changed to log.txt.
* Cygwin example changed to directly launch make_gnu.sh.
; NOTE: INSTALL still needs some updates. I'll do that while
testing new ways of doing things.
* config/global.cf
+ Some new information is shown in the log. (detection results)
% exporting HB_HOST_CPU to avoid detecting it in each recursion.
+ Showing whether HB_ARCHITECTURE/HB_COMPILER values were autodetected.
+ Showing GNU Make version and targets ("clean"/"install"/"all").
+ Showing HB_BUILD_PKG, HB_BUILD_DLL settings.
+ Added logic to do some presets if HB_BUILD_PKG=yes and check
if clean+install was specified.
* bin/postinst.cmd
* bin/postinst.bat
* bin/hb-mkpkg.bat
* bin/hb-mkimp.bat
* bin/hb-mkdyn.bat
+ Prefixed all messages coming from our make process with '! '
+ Some new messages added to offer better entertainment for builders.
- mpkg_gnu.bat
* config/global.cf
+ bin/hb-mkpkg.bat
* bin/postinst.bat
* mpkg_win.nsi
+ Updated to work as a child function of postinst.bat instead
of being a starter batch file. Now a package build can be
initiated the same way as a normal one except that HB_BUILD_PKG=yes
setting should be used additionally and 'clean install' is
obligatory.
In package building scenarios HB_INSTALL_PREFIX will be automatically
set by the process, using the pkg/<arch>/<comp> tree to install the
build into.
* Moved most of the old logic to GNU Make level, so the batch file
is very simple now.
; TOFIX: Whole removal of above dir should be solved to avoid
leftover old files to be included in the release packages.
Ideas are welcome.
; TODO: Integrate into postinst.bat.
; TODO: Move .nsi file to a better place.
* bin/postinst.bat
* config/rules.cf
! Fixed to respect HB_BUILD_DLL setting.
* bin/hb-mkdyn.bat
! Fixed to create temp files in install area so that multiple parallel
build runs don't badly interact with each other.
! Some fixes regarding spaces in dirs, although tool support is generally
to hectic/buggy to implement that reliably. Spaces are still not recommended
in dir.
! Fix for msvc.
! Untested fixes for watcom.
! Fixed leaving two temp file on disk for debuggin purposes.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added -vcshead support for Bazaar repositories.
* config/global.cf
* config/wce/global.cf
* config/dos/watcom.cf
* config/win/watcom.cf
* config/win/global.cf
* config/os2/watcom.cf
- Deleted no more used HB_CDYNLIB and HB_DYNLIB logic.
* harbour/config/global.cf
* set HB_HOST_ARCH to HB_ARCHITECTURE if it cannot be autodetected
It fixes builds with older GNU makes if autodetection fails
* harbour/config/os2/watcom.cf
* use the same calling convention in optimized and not optimized
builds
* INSTALL
* OS/2 prerequisites added. (currently not relevant, but anyway)
* bin/postinst.bat
* bin/hb-mkdyn.bat
* make_gnu.bat
+ Reworked the way .dll generation is done in Harbour build process.
New method solves the problem in one pass, instead of invoking
make twice and requiring starter script to control this.
The new trick is that CC_RULE will generate both dynamic and static
objects for libs included in the .dll for compilers where such trick
is necessary (currently all win/wce compilers except gcc based ones).
* Changed HB_BUILD_LOG forming. Since at this point ARCH/COMP values
aren't known (and just for this purpose it's not worth to maintain
parallel detection logic in start script), the automatically
generated log file will contain the date/time. Maybe even this will
be dropped in the future. Since this is the only remaining logic
in starter script (plus finding correct GNU Make, but that's even
smaller role)
; I didn't test watcom yet, plus mpkg_gnu.bat isn't working yet,
it needs to be moved to postinst phase.
; After these changes, there is basically no need for make starter
scripts. Maybe I'll even remove included make tools to make things
cleaner/leaner.
; TODO: Revise starter .sh scripts.
; TODO: mpkg_gnu.bat rework to run from postinst.
; TODO: Do some cleanup, remove redundancy in settings, etcetc.
; TOFIX: Fix watcom .dll generation.
* config/global.cf
! Deleted double MAKE info line.
+ Showing detected shell in verbose mode.
+ Added mkdir/rm detection for OS/2 shells. (commented)
% Optimized HB_BIN_COMPILE detection by using $(realpath) function.
Now it's only detected once per make run.
+ Added HB_*_INSTALL value defaulting similar to make_gnu.sh
for *nix platforms. (adding /harbour postfix to lib/inc dirs when
HB_INSTALL_PREFIX is system location (/usr or /opt). Please review.
* config/lib.cf
+ Added HB_DYN_COMPILE to control compiling for dynamic libs in
a sperate command.
+ Added HB_DYN_LIBS to hold list of libs which should be built
with separate command for dynamic libs.
* config/rules.cf
+ Added logic for duplicate CC_RULE.
TODO: Notice that it's not yet working when CC_RULE is overridden
on compiler level. Help would be appreciate here.
* config/wce/msvcarm.cf
* config/wce/poccarm.cf
* config/win/watcom.cf
* config/win/icc.cf
* config/win/msvc.cf
* config/win/xcc.cf
* config/win/pocc.cf
* config/win/bcc.cf
+ Enabled HB_DYN_COMPILE for these compilers.
* contrib/gtqtc/gtqtc.hbc
! Fixed lib order for mingw, supc++ moved to the end of list.
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* external/Makefile
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gtsln/Makefile
* contrib/Makefile
* contrib/gtalleg/Makefile
* contrib/hbmysql/Makefile
* contrib/hbodbc/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbcurl/Makefile
* contrib/gtqtc/Makefile
* contrib/rddsql/sddmy/Makefile
* contrib/rddsql/sddpg/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/hbhpdf/Makefile
* contrib/hbpgsql/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbgd/Makefile
* contrib/hbssl/Makefile
+ Indentation.
% Using ':=' in '*_OK := $(foreach...' expressions, instead of
former unsafe '+='.
* config/win/mingw.cf
* config/wce/mingwarm.cf
* config/win/cygwin.cf
+ Using 'crs' instead of 'r' as AR command.
* config/install.cf
+ Don't define rule if INSTALL_RULE is empty.
Cannot currently happen.
* config/header.cf
% Minor optimization.
* harbour/include/hbthread.h
* added workaround for different CRITICAL_SECTION definitions in
some compiler header files
* harbour/source/vm/fm.c
* harbour/source/hbzlib/ChangeLog
* harbour/source/hbzlib/zutil.c
* use #pragma warning to pacify OpenWatcom warnings
* harbour/contrib/hbwin/olecore.c
! fixed memory leak in PutParams()
! fixed parameters order in PutParams()
! fixed possible GPF due calling VariantClear() without VariantInit()
for C stack VARIANT item.
! fixed reverted #if condition - VT_[U]I8 was not supported
+ implemented passing parameters by reference
Not tested at all - I do not have Windows and I'm not familiar
with OLE code/servers. I hope that Windows users can test it
and it Windows developers can update this code if necessary.
* config/wce/mingwarm.cf
* config/win/mingw.cf
- Deleted ranlib usage. I've tested with mingw 3.4.2, 4.4.0
and mingwarm 4.4.1, and the runlib command made no difference.
If someone knows the reason why was it there, pls shout.
* config/bsd/global.cf
* config/darwin/global.cf
* config/linux/global.cf
- Deleted RANLIB variables. They are not used anywere through the
make process.
(only mingw/mingwarm uses it)
* config/rules.cf
! Changed CC_RULE and CPP_RULE to have CC_OUT option _before_ CC_IN.
Quick check didn't reveal any problems with this accross our supported
compiler, but I may be wrong, so pls check me, I didn't test this
change thoroughly.
This change fixes CC_OUT for bcc, where it was ignored before.
If this is breaks other compilers, bcc specific CC_RULE should be
added to win/bcc.cf.
* utils/hbmk2/hbmk2.prg
* source/rtl/gtcrs/gtcrs.c
* source/rtl/gtcrs/gtcrs.h
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gttrm/gttrm.c
* source/rtl/gtsln/mousesln.c
* source/rtl/gtsln/gtsln.c
* source/rtl/gtsln/Makefile
* HAVE_GPM_H -> HB_HAS_GPM
* config/global.cf
+ Added some compile-time macros in comment.
* Minor correction to MKFLAGS comment.
* source/rtl/console.c
* source/rtl/hbgtcore.c
* Changed wording 'screen driver' to 'Harbour terminal (GT)'.
Former term isn't used by us.
* config/bsd/gcc.cf
* config/darwin/gcc.cf
* config/hpux/gcc.cf
* config/dos/djgpp.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
+ Readded accidentally deleted feature to include *nix system
libs needed for rtl, only if rtl is actually linked.
(IOW in practice don't link them for harbour/hbpp executables)
! Fixed a few old problems where some extra libs were always
linked. Now m is the only one linked in all scenarios.
+ Added linking pdcurses along with gtcrs for djgpp.
* Standardized LDFLAGS in linux/icc (left from previous modification).
! Indentations corrected.
* harbour/bin/hb-func.sh
* updated list of system libraries used in to create harbour*.dll
in MinGW builds
* harbour/bin/postinst.sh
- removed not longer used code for build library in postinst phase
* use 'suncc' instead of 'cc' to create harbour shared library without
any platform dependent non default settings
* synced flags used in build process with flags used to create
harbour shared library in sunpro builds
* harbour/config/linux/sunpro.cf
* harbour/config/sunos/sunpro.cf
* removed options which explicitly force platform
* added -xbuiltin=%none as workaround for problems in x86 PIC builds
exploited by hbpcre library code
* changed the order of C/LD flags settings so they can be easy
overwritten by HB_ISAOPT
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gtsln/Makefile
* config/global.cf
! Hopefully fixed GPM detection with pure (no starter script)
GNU Make invocations. It needs to be done centrally,
as it's used in multiple modules, plus it has external lib
dependency.
; TODO: Streamline macro usage regarding external dependencies.
There is currently HAS*, HAVE*, HB_HAVE*, HB_WITHOUT*
plus some other variations.
We should probably stick to HB_BUILD_WITH_* for user
level control, and HB_HAS_* for internal detection logic.
* config/instsh.cf
! Fixed '-' prefix usage in non-*nix shells, so now make
process won't fail because of install rule error.
(this was a problem introduced in recent days)
Maybe it will be needed to tweak that because an install
failure might signal a real problem as soon as package
creation gets implemented inside/under GNU Make.
* config/global.cf
+ Added autofill of HB_INSTALL_PREFIX if not specified.
(work in progress, might change in the future)
+ Added support for "macro" values in HB_INSTALL_PREFIX:
{HB_ARCH}, {HB_COMP}, {HB_CPU}. They will be replaced
by corresponding value. This is a small steps towards
moving to GNU Make bases autodetection an moving away
from starter script (make_gnu.*) usage.
* config/bsd/global.cf
* config/wce/global.cf
* config/darwin/global.cf
* config/hpux/global.cf
* config/dos/global.cf
* config/win/global.cf
* config/linux/global.cf
* config/os2/global.cf
* config/sunos/global.cf
+ Added DYN_EXT and DYN_PRE variables as a small step
towards integrating dynlib creation in the GNU Make
process.
* config/global.cf
! Fixed to not indent one define/endef block.
I've actually even warned for this in comment, but ignored
it by mistake yesterday, and broke compiler autodetection.
* config/instsh.cf
% Deleted $(CMDPREF) from OS/2 rules. Please test it and report
if it broke.
* config/os2/watcom.cf
* config/os2/gcc.cf
+ Added '@' prefix for echo cmds.
* harbour/contrib/xhb/xcstr.prg
% fixed fatal for performance code used to serialize hash arrays
in ValToPrg() functions. I know that xHarbour does not have native
support for hash array iteration in FOR EACH statements so it's
necessary to make some hacks but even there serialization can be
quite easy done by simple FOR/NEXT loop and function calls to
access given keys and values.
Please remember that sending :keys or :values messages to hash
arrays is very expensive in both languages because each time
new array is created with copy of all key or values items.
In the old code :values message was send inside a loop so to serialize
hash array with 1000 items it was created 1000 arrays with 1000
items inside each of them. It means 1000000 unnecessary item copy
calls. Modern computers are very fast but such code can kill the
performance on any hardware. It's also classic example when forcing
FOR EACH usage in all places can give code thousands times slower
then code using simple FOR/NEXT.
% few minor optimizations
- tests/bldtest/bldtest.hbp
+ tests/bldtest/Makefile
! Restored GNU Make file.
Maybe we should move this file to somewhere else, perhaps
inside /config to better serve its purpose.
* config/global.cf
+ Added another setting to raw setting list.
+ tests/hbpptest/hbpptest.hbp
+ tests/bldtest/bldtest.hbp
+ tests/multifnc/multifnc.hbp
+ Added hbmk2 make files (quite simple ones) for these tests.
Better make them independent of the core make system.
This way they also work outside the source distribution,
f.e. when shipped inside a binary distro.
- tests/hbpptest/Makefile
- tests/bldtest/Makefile
- tests/multifnc/Makefile
- Deleted GNU Make files.
- tests/Makefile
- Deleted GNU Make file. hbmk2 is recommended to build these tests.
The only missing feature compared to Makefile is auto-exclusion
of "NOTEST" sources, anyway it's pretty apparent from first line
of each source file, so it shouldn't be a problem.
* harbour/contrib/xhb/trpccli.prg
! fixed typo in function name.
Harbour has hb_inetPeriodCallback() not hb_inetSetPeriodCallback()
* harbour/contrib/xhb/xcstr.prg
! disabled calling ValToPrgExp() used to serialize codeblocks
! use __objGetValueList() instead of __objGetValueDiff() which does
not exist in Harbour
* harbour/contrib/xhb/trpc.prg
! fixed xHarbour only function names: JoinThread() -> hb_threadJoin()
and StopThread() -> hb_threadQuitRequest()
* Makefile
% Using := instead of =
* tests/Makefile
- Deleted support for 'pm' envvar.
* config/global.cf
+ Added PM envvar to list of misc config vars.
* config/globsh.cf
* config/win/bcc.cf
+ Added NOTEs about Windows NT family command-line length limits.
It's 2047 for NT/2000 and 8191 for XP and upper.
Seemingly also on Vista or Windows 7. Probably memory is still
too expensive at MS ;) or, they want us to switch to PowerShell?
* config/bin.cf
% Using := instead of = for 'BIN_NAME'.
* config/dir.cf
% Using := instead of = for 'comma'.
* config/dos/watcom.cf
% Using := instead of = for 'DOS4G'.
* config/instsh.cf
+ Showing useful information instead of "! Done" in case
of error situations.
* config/dir.cf
* config/global.cf
* config/dos/watcom.cf
* config/dos/djgpp.cf
* config/win/watcom.cf
* config/win/bcc.cf
* config/instsh.cf
* config/dirsh.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
+ Indentation.
* Syncing some common comments across files.
* ChangeLog
+ Added [WORKS] to prev entry.
* config/global.cf
- Deleted '! Configuration' line.
* config/instsh.cf
+ nt install rules moved to a subroutine, so the multicommand
hack could be deleted.
+ os2 install rules modified to use the same line length limit
avoiding technique as dos. Please test.
; QUESTION: Could an OS/2 user tell me whether $(CMDPREF) is
*really* needed? This is the only place it's used,
so I wonder. If not, we should delete it.
* dos/os2 install command results are now ignored ('-' prefix)
just like for other shells.
+ dos install rule now contains check for existing dir.
Not currently required, I've added it for cleanness and to
be in sync with other shell rules where such check is std.
% define/endef extra empty lines deleted from where they weren't
necessary.
* Indentation.
* config/none.cf
* config/lib.cf
* config/bin.cf
* config/dir.cf
* config/dirsh.cf
+ Added $(MKFLAGS) to all internal $(MK) calls.
+ Initializing $(MKFLAGS) to --no-print-directory, which
suppresses "Entering directory"/"Leaving directory" GNU
Make messages. They can be useful for debugging, but for
normal operation IMO they just add up to unnecessary
clutter. Please tell if you think otherwise.
Despite docs say it's enabled when using -C (change dir)
option, I've only seen it enabled on win/dos platforms,
so for other platforms (at least *nixes) this won't change
behavior.
+ Added '@' prefix for $(MK) calls, so recursive GNU Make
invocations won't be shown anymore on screen.
Again, please tell if this isn't good, I'll also evaluate
things this way and see whether to keep it. For sure on
*nixes the GNU Make output is extremely short and clean
now for a simple incremental make session. Sometimes though
it's useful information when someone posts a log snippet.
* Indentation.
* config/dirsh.cf
* Little consistency fix: Using $(MK) instead of $(MAKE).
They are the same at this point.
* config/global.cf
+ Shows $(MAKE) value as part of the configuration.
* config/test.cf
* Small change in wording: 'ignored' -> 'skipped'
* harbour/source/rtl/fstemp.c
* enabled mkstemps() in *BSD and Darwin builds
* enabled large file support and use mkstemp64() and mkstemps64()
when available - please test with different *nixes
* config/wce/poccarm.cf
* config/win/xcc.cf
* config/win/pocc.cf
* Minor cosmeric change in some LDFLAGS/LD_OUT flags.
* config/win/msvc.cf
* Moved system libs to LDLIBS. (missed in prev round)
* config/darwin/gcc.cf
% Using custom LD_OUT instead of overriding while LD_RULE.
* config/bsd/gcc.cf
* config/wce/msvcarm.cf
* config/wce/mingwarm.cf
* config/wce/poccarm.cf
* config/darwin/gcc.cf
* config/hpux/gcc.cf
* config/dos/watcom.cf
* config/dos/djgpp.cf
* config/win/watcom.cf
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/win/bcc.cf
* config/linux/watcom.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
* Cleaned LDFLAGS usage:
% Using := instead of =
! Always initialize LDFLAGS to empty to prevent spillage of random values.
* Moved lib specs included in LDFLAGS to LDLIBS.
* Cleaned "DEBUG ALL" addition in watcom compilers.
; GNU Make .cf cleanup is about over. There could probably be done
some additional optimizations, but it's already much cleaner, simpler
and more efficient than it was until a few weeks ago.
Still could be done: CFLAGS vs. CPPFLAGS usage accross compilers.
*_RULE variables, revise redefinition needs, maybe change the central
default, etc.
* ChangeLog
! Typos in prev entry.
* harbour/source/rtl/fstemp.c
* enabled mkstmp() in SunOS builds (is it supported by MacOSX?)
+ added optional support for mkstemps() - it's disabled by default
* harbour/contrib/xhb/hbcompat.ch
! removed some old not longer valid translations
xHarbour developers should copy current hbcompat.ch from
Harbour SVN to xHarbour CVS
* source/rtl/fstemp.c
! Fixed regression in hb_fsCreateTemp() after 2009-08-07 11:55 UTC+0200
where temp files couldn't be opened, instead a lot of temp filenames
were created.
* harbour/contrib/hbtpathy/telepath.prg
! fixed tp_inkey() to not freeze when called without parameter
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* added OS/FS error codes to RTEs generated during indexing
* replaced few numeric error codes with EDBF_* macros
* config/bsd/gcc.cf
* config/wce/msvcarm.cf
* config/wce/mingwarm.cf
* config/wce/poccarm.cf
* config/hpux/gcc.cf
* config/darwin/gcc.cf
* config/dos/watcom.cf
* config/dos/djgpp.cf
* config/win/watcom.cf
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/win/bcc.cf
* config/linux/watcom.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
% CFLAGS and CPPFLAGS initialized using := operator.
! Fixed not initializing CFLAGS/CPPFLAGS at all for some compilers.
This may cause spilling of unwanted switches into our make system.
(watcom.cf)
* Few remaining indentations left from previous round (sunpro.cf).
* Some other minor cleanups along the way (xcc.cf).