* 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).
* config/bsd/gcc.cf
% Started using := for CFLAGS/CPPFLAGS.
* config/darwin/gcc.cf
* Minor cleanups. Sync with bsd/gcc.cf, using vars with std names,
deleted unused lines.
* config/dos/watcom.cf
* config/win/watcom.cf
* config/linux/watcom.cf
* config/os2/watcom.cf
! Using $(HB_INC_COMPILE) instead of $(TOP)$(ROOT)include
like every other compilers.
* 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/instsh.cf
* config/dirsh.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
% Removed spaces before $(foreach) parameters. A space is
automatically added by GNU Make, so it's not needed. May
save a little bytes here and there and command look more
tidy (source looks a little bit clumsier though).
* config/bin.cf
* Minor formatting to liblist template.
* config/bsd/gcc.cf
* config/darwin/gcc.cf
* config/hpux/gcc.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
% Using LIBS var to check for libs rather than HB_GT_LIBS.
* config/bin.cf
+ Harbour binary core liblists are now formed centrally.
Four variations are generated:
HB_LIBS_ST_RDD
HB_LIBS_MT_RDD
HB_LIBS_ST_NORDD
HB_LIBS_MT_NORDD
Binaries can choose by using: 'LIBS = $(HB_LIBS_*)'.
Important to use '='.
This step also fixes potential problems with former liblists,
where it was easy to make a local mistakes and some libs which
needed more complicated logic, or which were just rarely used
simply weren't added. Now all liblists are guaranteed to have
proper order and content.
HB_GT_LIBS and HB_DB_DRIVERS are automatically added centrally,
so no need to add them manually in each compiler specific .cf.
* tests/Makefile
* tests/hbpptest/Makefile
* tests/multifnc/Makefile
* utils/hbformat/Makefile
* utils/hbmk2/Makefile
* utils/hbtest/Makefile
* utils/hbi18n/Makefile
* utils/hbrun/Makefile
% Using above HB_LIBS_* macros.
; The only few places which I didn't thouch is non-Harbour
executables (harbour exe and hbpp exe).
* 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
% Deleted local logic to merge HB_GT_LIBS and HB_DB_DRIVERS
into LIBS.
* utils/hbmk2/hbmk2.hbp
* utils/hbrun/hbrun.hbp
! Extra libspecs are still needed for some compilers.
I've readded them until better solution is found.
* config/wce/mingwarm.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
% Deleted system libs not needed for core Harbour.
* config/wce/mingwarm.cf
* config/win/mingw.cf
% Using := instead of = in one place.
* utils/hbmk2/hbmk2.prg
+ Reorganized core Harbour lib handling. The goal is to
allow linkers to resolve references by themselves, either
by clever ordering and adding libs multiple times if needed.
I took the methods used in Makefiles as guiding line.
% Removed -Wl,--start-group / -Wl,--end-group lib grouping.
It doesn't seem to be necessary anymore.
! Fixed "hbrtl" lib reference with some targets in -xhb mode.
; NOTE: Please test, I didn't test all possible combinations
only mingw and recent Harbour. (no xhb, no hb10x)
; NOTE: Regressions are possible regarding lib selection or
ordering and also GT selection.
; TODO: If this works out okay, we can delete similar grouping
options from .cf files. At the same time, core liblists
could be moved to central place to ease maintenance
and guarantee correctness.
* utils/hbmk2/hbmk2.hbp
* utils/hbrun/hbrun.hbp
- Deleted extra core lib specifications to make it link
in shared mode. Doesn't seem to be necessary anymore
after above hbmk2 change.
* contrib/hbtpathy/telepath.prg
! Fixed forming default COM port names on Windows NT
systems. (I didn't test Win9x, but I assume they work
like DOS regarding this aspect).
* contrib/hbxbp/Makefile
* contrib/gtwvg/Makefile
! Using HB_INC_DEPEND instead of modifying HB_USER_PRGFLAGS
and HB_USER_CFLAGS. Old solution wasn't good because the
new include dirs were added after central ones, so central
ones effectively masked them and wrong headers could be
picked through the build.
* config/rules.cf
+ Added HB_INC_DEPEND variable to store dirs which should
be included before central include dir.
* config/global.cf
* Small change in predefined HB_BUILD_NAMEs. Unicode 'u'
marker moved to end, C++ marked changed to 'p' (from 'x').
* contrib/rddado/rddado.hbc
* contrib/gtwvg/gtwvg.hbc
* Slash sync with other .hbc files. (forward slash is used)
* config/dos/watcom.cf
% Minor opt in operator.