* make_b32.mak
* make_vc.mak
* make_gcc.mak
* common.mak
* utils/Makefile
+ Added hbmk to make systems.
* utils/hbmk/hbmk.prg
+ Update. Second pass, it's now ready for testing. I've
only tried with BCC yet.
Please test and if possible update internal setup
for various platforms/compilers.
* harbour/make_gcc.sh
+ added some Solaris libraries necessary to link Harbour applications
using sockets
* harbour/make_gnu.sh
* look also for pure curses header files for GTCRS compilation.
GTCRS can be compiled with CURSES not only NCURSES.
* enable -fPIC in SunOS and HPUX builds
* harbour/mpkg_tgz.sh
* enable -fPIC in SunOS builds
* harbour/make_gcc.mak
* do not use -Wl,--start-group/-Wl,--end-group in SunOS, HPUX and Darwin
builds
* harbour/config/hpux/gcc.cf
* small cleanup in comment
* harbour/make_gcc.mak
! added additional rules to fix time conditions in parallel compilation
* harbour/config/dos/dir.cf
* harbour/config/w32/dir.cf
* changed simple assignments to recursive ones
* harbour/config/dir.cf
+ added support for dependencies between build directories for
parallel execution. If compilation of dirX needs results of
dirY and dirZ compilation then it hsould be declared as:
dirX{dirY,dirZ}
% process directories defined in DIRS simultaneously when -j<N>
GNU make switch is used - it gives additional speed improvement
on multi CPU machines
* harbour/Makefile
* harbour/source/Makefile
* set directory dependencies for parallel compilation
The parallel compilation can be enabled by using -j<n> GNU make
switch on multiprocess platforms, f.e.:
./gnu_make.sh -j3
It should give some speed improvement even on single CPU machines.
These are results of clean Harbour compilation on my 3 phantom CPU
computer:
1. leaner compilation without -j<n> 6m29.895s
2. parallel compilation with -j5 but without
parallel directory processing 3m20.163s
3. parallel compilation with -j5 and with new
parallel directory processing 2m6.168s
* harbour/common.mak
* harbour/source/rtl/Makefile
- harbour/source/rtl/hbi18n.c
+ harbour/source/rtl/hbi18n1.c
* renamed hbi18n.c to hbi18n1.c to avoid conflicts with hbi18n
program - non GNU make files needs unique file names
! fixed bug in internal function __I18N_HASHTABLE()
* harbour/common.mak
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbi18n2.prg
+ added new I18N functions to manage .pot files and generate .hbl ones.
public functions:
HB_I18N_loadPot( <cFile>, [<pI18N>] [, @<cErrorMsg>] ) -> <pI18N> | NIL
Reads .pot file and returns Harbour translation set or NIL when
error appears. In such case <cErrorMsg> is contains error message
string. If second parameter [<pI18N>] is given then translation
items read from .pot file are added to this set. Otherwise new
Harbour translation set is created.
HB_I18N_savePot( <cFile>, <pI18N> [, @<cErrorMsg>] ) -> <lSuccess>
Generates .pot file from Harbour translation set. Please note
that Harbour translation set does not contain additional
information which exists in original .pot files like source
code numbers or alternative plural forms.
internal functions for Harbour developers which will work on I18N
tools:
__I18N_potArrayLoad( <cFile> [, @<cErrorMsg>] ) -> <aTrans> | NIL
Reads .pot file and returns array with translation items or
NIL when error appears. In such case <cErrorMsg> is contains
error message string.
<aTrans> is an array with translation items containing additional
informations from .pot file which are not necessary in final
translation sets used at runtime. It's designed for I18N tools
written in Harbour to manage .pot files and/or create .hbl ones.
__I18N_potArraySave( <cFile>, <aTrans> [, @<cErrorMsg>] ) -> <lSuccess>
Generates .pot file from array with translations items.
__I18N_potArrayJoin( <aTrans>, <aTrans2> ) -> <aTrans>
Join two arrays with translation items. Items from <aTrans2>
are added to <aTrans>. If given translation item already exists
in <aTrans> (the same msgctxt and msgid) then source code references
are merged and translations from <aTrans2> are added only if
<aTrans> does not have it.
__I18N_potArrayToHash( <aTrans>, [<lEmpty>] [, <hI18N>] ) -> <hI18N>
Converts array with translation items to hash table in the format
used internally by Harbour translation sets. It's the same format
as used __I18N_hashTable() function. The conversion removes data
which is not necessary for runtime translations like source code
references or alternative source plural forms.
If second parameter <hI18N> is given then translation items form
<aTrans> are added to it. Otherwise new hash table with is created.
If <lEmpty> is .T. then also items with empty translation are added
but source strings are used instead of missing destination ones.
* harbour/include/hbextern.ch
+ added new I18N functions
* harbour/harbour-win-spec
* harbour/harbour-wce-spec
* harbour/harbour.spec
* harbour/mpkg_tgz.sh
* harbour/make_b32.mak
* harbour/make_vc.mak
* harbour/make_gcc.mak
* harbour/common.mak
* harbour/utils/Makefile
+ harbour/utils/hbi18n
+ harbour/utils/hbi18n/hbi18n.prg
+ harbour/utils/hbi18n/Makefile
+ added very simple application to manage .pot/.hbl files
Syntax: hbi18n -m | -g [-o<outfile>] [-e] [-q] <files1[.pot] ...>
-m merge given .pot files
-g generate .hbl file from given .pot files
-o<outfile> output file name
default is first .pot file name with
.po_ (merge) or .hbl extension
-e do not strip empty translation rules from .hbl files
-q quiet mode
TODO: extend it and add support for interactive mode which will
allow to edit translations.
+ harbour/include/hbrddnsx.h
+ harbour/source/rdd/dbfnsx
+ harbour/source/rdd/dbfnsx/dbfnsx1.c
+ harbour/source/rdd/dbfnsx/Makefile
* harbour/config/global.cf
* harbour/make_b32.mak
* harbour/make_vc.mak
* harbour/make_gcc.mak
* harbour/common.mak
+ added new DBFNSX RDD. Those of you who knows SIX3 should also
know NSX index format. It's very interesting format and in some
cases much better then CDX. I hope you will find it interesting.
In hbrddnsx.h you can find detail information about Harbour NSX
implementation.
It's a small gift from me for Christmas ;-)
I would like to wish all of you Marry Christmas and Happy new Year.
best regards,
Przemek
* common.mak
* make_b32.mak
* make_gcc.mak
* make_vc.mak
* Smoothened the difference between HARBOURFLAGS and
HARBOURFLAGSDLL under the name HARBOURFLAGSLIB.
Now all core .prg modules will be compiled with -n1
Harbour switch. This also means double compilation
of .prg modules for static/dynamic libs could be
optimized out as the object files are the same in
both modes.
TODO: Make -n1 switch unnecessary.
* contrib/mtpl_gcc.mak
+ Added -n1 to HARBOURFLAGS. This way Harbour functions
in libs will never be considered as entry points in
executables or when any such module is built as dynamic
lib in the future.
* contrib/make_gcc_all.sh
* Minor formatting.
* make_b32.bat
* make_b32.mak
* make_vc.bat
* make_vc.mak
* make_gcc.mak
* contrib/mtpl_b32.mak
* contrib/mtpl_gcc.mak
* contrib/mtpl_vc.mak
+ Added 'set HB_BUILD_OPTIM=no' option to disable
all C compiler optimization for all compilers in
non-GNU make system. This replaces old envvars
BCC_NOOPTIM and GCC_NOOPTIM and add MSVC support
for this option.
* common.mak
* Formatting.
* make_b32.mak
* make_vc.mak
* make_gcc.mak
* common.mak
+ Added generation of hbmainstd and hbmainwin libs.
* bin/hbmk.bat
+ Changed to use above libs. This also means that '-shared'
can now be used in Harbour binary distributions, too.
* harbour/common.mak
* harbour/make_gcc.mak
! fixed hbtest-dll linking - the path to used harbour shared library
was hardcoded in final binaries
+ added hbrun-dll. Please update make_b32.mak and make_vc.mak
* harbour/make_gcc.mak
! declared non file helper rules as .PHONY ones.
! fixed bad typo in helper rules usage - strange that I haven't seen
it before.
* restored non indirect rules - now they should work as expected
also in parallel builds.
TODO: remove static libraries from HB_BUILD_TARGETS in common.mak
if everything is correct then they should be created to satisfy
hbrun and other tools dependencies. It's not necessary to explicitly
duplicate it.
* harbour/make_gcc.mak
! corrected missing $(HARBOUR_EXE) dependence in .prg files rules
! replaced non indirect rules (::) which are strictly file base with
indirect ones to not confuse dependence logic when parallel
compilation is enabled
! marked harbour.c and cmdarg.c as dependent on pptable.c to fix
compilation order - these files needs hbverbld.h which is generated
together with pptable.c
! fixed HBTESTDLL_EXE dependencies - static library were used instead
of harbour share library. BTW probably it will be good to create also
HBRUNDLL_EXE
With above modification parallel compilation can be enabled for
make_gcc.sh (-j<N> GNU make option). It greatly improves compilation
speed. Probably also make_{bcc,vc}.mak should be fixed even if they
do not support parallel compilation.
* make_gcc.mak
* contrib/mtpl_gcc.mak
+ Added '-march=i586' for Windows platform.
(Sync with other make systems.)
* ChangeLog
+ Some changes marked as TOMERGE 1.0.
* contrib/hbtip/base64x.c
! Fixed and ages old problem with BUILDUSERPASSSTRING()
function, which always returned an empty string thus
making "AUTH PLAIN" broken. I wonder how this went
unnoticed for this long.
This also fixes unsafe strcpy() usage.
[TOMERGE 1.0]
* common.mak
* make_b32.bat
* make_b32.mak
* make_vc.bat
* make_vc.mak
* make_gcc.mak
* HB_BUILD_VERBOSE=yes is now the default. If someone
is wanting to build Harbour from source and is bothered
by the compiler command-lines being shown, these can
be turned off with HB_BUILD_VERBOSE=no.
These lines are IMO very important to see, which options
were exactly used when Harbour was built, I personally
archive these logs along with the builds.
* make_b32.mak
* make_vc.mak
* make_gcc.mak
+ Readded -b when HB_BUILD_STATIC=yes.
Now it should work.
* make_b32.mak
* make_vc.mak
* make_gcc.mak
* contrib/mtpl_b32.mak
* contrib/mtpl_gcc.mak
* contrib/mtpl_vc.mak
% Deleted -l- switch when HB_BUILD_STATIC=yes.
Line numbers are automatically enabled when
-b switch is used.
* source/debug/debugger.prg
* Renamed getdbginput() -> __dbgInput()
; NOTE to TOFIX: Do we need "Mono display" these days? :)
* make_b32.mak
* make_vc.mak
* make_gcc.mak
* Removed disabling -b for non-debug builds.
; We aim to remove RTL .prg dependencies from hbdebug.lib,
either by local implementation, .c rewrite, or force
disabling debug mode in more core files.
Until this happens, one will have to be careful with
using -b switch to compile Harbour. These are the core .prg
modules currently used by hbdebug.lib:
- HBGETLIST(), GET(), __GET(), __GETLISTACTIVE(), __GETLISTSETACTIVE(), READINSERT(), READMODAL()
- HBCLASS()
- HBOBJECT()
- HBEDITOR()
- TBCOLUMNNEW()
- ACHOICE()
- ALERT()
* source/debug/dbgtobj.prg
* source/debug/dbgbrwsr.prg
* source/debug/dbgtwin.prg
* source/debug/dbgmenu.prg
* source/debug/dbgthsh.prg
* source/debug/tbrwtext.prg
* source/debug/dbgwa.prg
* source/debug/debugger.prg
* source/debug/dbghelp.prg
* source/debug/dbgtarr.prg
* source/debug/dbgtmenu.prg
* source/debug/dbgtmitm.prg
+ Readded '#pragma DEBUGINFO=OFF'.
* make_b32.mak
* make_vc.mak
* make_gcc.mak
! Minor formatting.
* include/hbapierr.h
! Fixed casting in macro HB_ERR_FUNCNAME, as it was
generating a new warning with MSVC in 64-bit mode.
'( ( char * ) 1 )' -> '( ( const char * ) NULL + 1 )'
('const' keyword was not enough to silence it)
* include/hbapierr.h
* source/rtl/errorapi.c
- Disabled (marked with HB_LEGACY_LEVEL) hb_errFuncName
symbol. No longer supported, pls use HB_ERR_FUNCNAME
instead.
* make_b32.mak
* make_vc.mak
* make_gcc.mak
* Removed special 'set HB_GT_LIB=gtXXX' support. For the exact
same effect - in case you want to modify default GT at
build time, which is not recommended -, pls use this:
'set C_USR=-DHB_GT_LIB=XXX' where XXX is 'wvt', 'std', etc.
- Removed HARBOURFLAGSDLL, LDFLAGSDLL, CFLAGSDLL as public options.
It's better to keep these settings common IMO, and handle
all DLL subtleties in our make files.
+ L_USR is now respected for .dlls, too.
! Fixed make_gcc.mak internal HARBOURFLAGSDLL to be in sync
with the other .mak files (removed -l switch).
- Removed HB_BUILD_MODE for VC builds. Now C/C++ is left to
the default value (which is C mode for core), and it's possible
to override using:
'set C_USR=-TP' for C++ mode (or -TC for forced C mode).
% Other minor cleanups.
* contrib/mtpl_b32.mak
* contrib/mtpl_vc.mak
- Removed HB_BUILD_MODE undocumented options from contrib
make files. For Borland C++ mode, use 'set C_USR=-P'.
For VC, see above.
- Removed HB_BUILD_ST undocumented option.
% Other minor cleanups.
* contrib/xhb/hbcompat.ch
* contrib/xhb/xhb.ch
! Moved __COPYFILE() translation to xhb.ch.
* common.mak
* make_b32.mak
* make_vc.mak
* make_gcc.mak
- Removed option HB_BUILD_ST to build another version
of Harbour MT build [for non-GNU builds], or forced
SingleThreaded (non -tWM) Harbour builds.
* Modified to not allow CFLAGSMT to be tweaked from the
outside [for non-GNU builds].
* make_b32.mak
* make_vc.mak
! Fixed to use 'COPY /B' instead of 'COPY /A' to install
headers, to avoid appending and EOL to these files.
They should work as is.
* make_gcc.mak
! Fixed mainstd lib name.
[TOMERGE 1.0]
* include/hbthread.h
% Disabled HB_USE_TLS for __BORLAND__ and __MINGW32__ for
best performance.
* contrib/hbwhat/whtmmcap.c
! Fixed some warnings under certain MinGW 4.3.2
installations.
TODO: hbwhat users pls finish this fix.
* utils/hbmake/hbmake.prg
! Fixed hbw32 to hbwin.
* Win32 references changed to Windows.
* make_gcc.sh
* Not accepting CFLAGS anymore as custom C flags envvar.
Pls use C_USR instead.
* make_gcc.mak
+ Added wsock32 lib to Cygwin system liblist.
! Removed setting HB_OS_* macros explicitly.
* make_b32.mak
* make_vc.mak
* Minor formatting.
- harbour-ce-spec
+ harbour-wce-spec
- harbour-w32-spec
+ harbour-win-spec
- make_rpmw32.sh
+ make_rpmwin.sh
- make_rpmce.sh
+ make_rpmwce.sh
* Some steps done to use more consistent names for Windows
and Windows CE, and also to move away from '32' usage.
; TODO: I'd prefer to give all .spec files the same
empty extensions, could anyone help how to
convert current harbour.spec to harbour-spec and
not break .rpm creation? Plus it would be also
good to implement automatic versioning on .rpm
build just like for harbour-win/wce in make_rpmw*.sh
scripts.
- hbgtmk.sh
+ make_rpm_from_svn.sh
* Renamed to give a better idea about its purpose.
; NOTE: make_rpm_from_svn.sh seems a bit pointless now
that we have the final releases in separate SVN tags.
* make_gcc.mak
* Minor formatting.
* make_b32.mak
* make_gcc.mak
* make_vc.mak
* harbour.spec
* source/rtl/hbgtcore.c
* source/rtl/Makefile
* source/rtl/gtsys.c
* config/w32/poccce.cf
* config/w32/xcc.cf
* config/w32/pocc.cf
% Removed HB_GT_DEFAULT envvar, which was the exact synonym
of HB_GT_LIB. Please use HB_GT_LIB instead, if you - by any
chance - want to change the default GT at Harbour build-time.
* tests/speedtst.prg
! Fixed to delete temp .dbf files before exiting.
* harbour/bin/pack_src.sh
* added file list to archive so it's possible to recreate it later without SVN data
* harbour/common.mak
* harbour/make_b32.mak
* harbour/make_gcc.mak
+ added HBVMMT library for default builds
BCC version not tested - please test.
* harbour/source/vm/hvm.c
* moved language and code page setting before class and error initialization
* harbour/source/rtl/fserror.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/filesys.c
! fixed overloading FS error codes by other operations, f.e. accessing
TLS data by OS API function call
* make_b32.mak
* make_vc.mak
* make_gcc.mak
* A change with the goal to further clean duplicate build
controlling options and make the configuration of GNU
and non-GNU build systems closer. INCOMPATIBLE.
Builders should make the following changes in their
configurations and build scripts:
- CFLAGS -> C_USR
- CLIBFLAGS -> C_USR
- LDFLAGS -> L_USR
- HARBOURFLAGS -> PRG_USR
* BCCDLL_WITH_DYNRT -> HB_BCCDLL_DYNRT
Shouldn't this be the default, if it's marked as 'recommended'?
; Basic rules for builders is now pretty simple:
C_USR for .c options, L_USR for link options,
PRG_USR for .prg options.
; L_USR doesn't work the same way as in GNU-make, yet.
; Also expect, that in the future - even before 1.1 release -
these switches might be also standardized to be
HB_USR_C, HB_USR_PRG, HB_USR_L, HB_USR_A.
* contrib/mtpl_b32.mak
* contrib/mtpl_vc.mak
* contrib/mtpl_gcc.mak
* Changed the location of intermediate obj and c files from
/obj/<arch>/ to local [/contrib/<contribname>/]obj/<arch>/
dir so that similar filenames across different contribs
would never interfere with each other anymore when using
non-GNU make. This was a difficult to detect problem,
especially when someone is trying to use custom contribs,
and even more so if these custom contribs happen to have
3rd party code with non Harbour controlled filenames. This
change is also an important last step to make contribs
fully self-containing.
; TODO: mtpl_gcc.mak support has to be finished by someone
familiar with bash.
; NOTE: This change shouldn't go to 1.0.1 until well tested
and reviewed.
; NOTE: As a consequence of the above, from now on a
'make_*.bat clean' won't anymore clean the objects/.c
file of all contribs. If you hadn't so so far, now you'll
need to explicitly call 'contrib/make_*.all.bat clean'
to do that.
* contrib/mtpl_gcc.mak
* make_gcc.mak
% HB_ARCHITECTURE hack from cyg to w32 removed,
as cyg is not a valid public architecture name
in Harbour. cyg is used in make_gcc.sh internally, and
it's automatically converted to w32 before using
make_gcc.mak, so it would seem that this is solved
at the right place already, and the hack is not needed.
* config/os2/gcc.cf
% Cleaned include path for OS/2/GCC.
David, please test it if it still builds successfully.
* make_b32.mak
* make_gcc.mak
* make_vc.mak
* make_vcce.mak
* utils/hbmake/hbmake.prg
% Removed using -D__EXPORT__ from any Harbour command lines,
as this switch has no effect of the .prg level.
* harbour/bin/hb-func.sh
* harbour/source/vm/hvm.c
* harbour/source/rtl/hbgtcore.c
* added const to s_defaultGT and s_pszLinkedMain declarations
* make s_pszLinkedMain visible and functional for platforms
which does not use HARBOUR_START_PROCEDURE
* harbour/source/vm/extrap.c
+ added exception trap for SIGSEGV, SIGILL, SIGFPE and SIGBUS
for *nixes which support sigaltstack()
* harbour/include/hbwmain.c
* harbour/source/vm/mainwin.c
* use of WinMain() from hbwmain.c
* harbour/source/pp/pplib.c
* ignore all #pragma directives setting compiler switches instead
of generating RT error when user uses PP in .prg code by __PP_*()
functions
* harbour/source/Makefile
+ harbour/source/hbextern
+ harbour/source/hbextern/hbextern.prg
+ harbour/source/hbextern/Makefile
* harbour/common.mak
* harbour/make_b32.mak
* harbour/make_gcc.mak
* harbour/make_vc.mak
* harbour/make_vcce.mak
* harbour/bin/hb-func.sh
+ added hbextern library
+ added hbextern to harbour shared library. Now all functions
are registered and visible for dynamically linked applications
not only .prg ones and .c functions explicitly bound with some
.prg code
* harbour/utils/hbrun/Makefile
* harbour/utils/hbrun/hbrun.prg
* use hbextern library instead of #include "hbextern.ch"
It has no noticeable effect on static builds but greatly
reduce the size of dynamic builds, f.e. current hbrun
linked dynamically in my Linux box has 12KB.
* harbour-ce-spec
* harbour-w32-spec
* harbour.spec
* common.mak
* make_b32.mak
* make_gcc.mak
* make_vc.mak
* make_vcce.mak
* make_tgz.sh
* debian/rules
- doc/man/hbdot.1
* doc/man/hbrun.1
- utils/hbdot
* utils/hbrun/Makefile
* utils/hbrun/hbrun.prg
- utils/hbrun/external.prg
* Replaced hbrun functionality with hbdot's.
- Removed separate hbdot tool.
* contrib/hbsqlit3/sqlite3/sqlite3.c
* contrib/hbsqlit3/make_vc.bat
! Fixed bug in foreign code (sqlite3.c) to compile in
MSVC C++ mode. (HANDLE -> HMODULE)
* C++ mode is no longer forced in non-GNU MSVC builds,
this way also avoiding a screen warning.
* contrib/examples/dbu/bld_b32.bat
* contrib/examples/dbu/bld_vc.bat
! Fixed to call 'patch' with '-N' so that it doesn't
ask to reverse patches when run multiple times.
+ utils/hbdoc/bld_b32.bat
+ utils/hbdoc/bld_vc.bat
+ Added non-GNU make batch files to build hbmake.
; This is a step towards detaching hbdoc from core.
* utils/hbdoc/hbdocdef.ch
! Fixed equality operators to be SET EXACT independent.
; Minor formatting.
* make_b32.mak
* make_gcc.mak
* make_vc.mak
* make_vcce.mak
! Fixed to delete hbverbld.h from include dir on 'clean'.
! Using INCLUDE_DIR instead of some hard-wired 'include'
dir references.