* mpkg_deb.sh
* mpkg_rpm.sh
* mpkg_rpm_win.sh
* mpkg_nightly.sh
* mpkg_src.sh
* mpkg_rpm_wce.sh
* mpkg_tgz.sh
* bin/hb-mkdyn.sh
* bin/hb-func.sh
* bin/postinst.sh
- Do not force bash.
(QNX by default doesn't have bash f.e., and now with the
limited amount of .sh code in SVN, we can focus on making
the code POSIX compliant.)
* ChangeLog
! One QNX TODO marked as DONE.
* mpkg_tgz.sh
! Fixed to detect case when tar is mapped to bsdtar
(such is the case on Snow Leopard). Use slightly modified
tar command in this case.
Please review.
; TOFIX?: Unpacking stub script always uses 'tar', maybe this
needs to be fixed, although current command should
work on Snow Leopard.
- Deleted comment no longer valid.
* utils/hbmk2/hbmk2.prg
! Fixed C++ memory manager override to handle zero size memory
request and added protection when free operations are called
with NULL. Thanks Istvan Bisz and Przemek for input.
* utils/hbmk2/hbmk2.prg
+ Added -hbmake=<hbmake file> option which will attempt to
read hbmake project file and save it as .hbp file.
This is experimental and I'd like to ask hbmake users to
update/extend this converter code as I'm not hbmake user.
This feature is to aid users to migrate from hbmake to hbmk2.
Notice that along the same line converter could be written
for .xbp and xMate project files too.
* src/compiler/Makefile
- src/compiler/gencobj.c
* src/compiler/hbmain.c
* src/compiler/cmdcheck.c
* src/compiler/hbusage.c
* include/hbcompdf.h
* debian/rules
* mpkg_src.sh
* mpkg_tgz.sh
* harbour.spec
- Deleted support for harbour.cfg / compiler -go mode.
This was scheduled to be done after release, but since
hbmk2 seems to be a very solid tool now with visible
acceptance from users, it seems safe to make the move
now. This will mean that one less Harbour file will
"pollute" system locations, which is always a good
thing. Plus this part had a few bugs, which are now
also a thing of the past.
- examples/hbmake
- Deleted hbmake tool. This wasn't really working anyway,
and require -go mode, which was deleted.
Use hbmk2 instead.
* mpkg_src.sh
* mpkg_tgz.sh
! Fixed indentation to be consistent 4 chars.
- source
+ src
* src/Makefile
* src/dynlib/mt/Makefile
* src/dynlib/Makefile
* INSTALL
* Makefile
* ChangeLog
* harbour.spec
* mpkg_tgz.sh
* Renamed 'source' dir to 'src' to move closer to other FOSS
projects. It's also easier to type, plus it has the side
effect that some cmdlines will be shorter in the
build process.
* harbour/harbour.spec
! fixed to build with postinst.prg executed by shared linked hbrun
* harbour/bin/hb-func.sh
* harbour/debian/rules
* harbour/harbour.spec
% use HB_INST_PKGPREF instead of _DEFAULT_*_DIR
Please test DEB building in Debian, Ubuntu or in other DPKG
based distro. It probably has the same problem with postinst.prg
as all other builds.
* harbour/debian/rules
* harbour/harbour.spec
* harbour/mpkg_tgz.sh
* harbour/source/compiler/gencobj.c
* updated harbour.cfg localization in *nix builds
* harbour/utils/hbrun/Makefile
! restored support for default include directory in system wide builds
* harbour/config/instsh.mk
* harbour/bin/hb-func.sh
* harbour/bin/postinst.sh
+ added support for HB_INST_PKGPREF which can be used as package
temporary install directory
* harbour/mpkg_tgz.sh
! use HB_INST_PKGPREF to allow creating install packages without
special user rights and to protect against damaging original system
installation during package building if sufficient user rights were
guarantied
* mpkg_tgz.sh
* bin/postinst.sh
% Attempt to clean mpkg_tgz.sh from redundant make logic.
Some tasks (stripping, shared tool making using HB_BUILD_SHARED,
chmod on HB_INC_INSTALL) moved to postinst.sh, some others
deleted (platform detection, shared tool building using old
method, component detections, install dir forming and creation.
; Please review me and test.
; TODO: Maybe above tasks in postinst.sh should only be
executed when HB_BUILD_PKG=yes.
* config/global.mk
! Fixed to only use lib64 dir if it exists. Please review/test
this feature.
+ Now exports HB_SYSLOC variable which is set to non-empty if
HB_INSTALL_PREFIX points to system location.
* harbour.spec
- Deleted PIC option related lines. These are handled by GNU Make now.
* utils/hbmk2/hbmk2.prg
+ Added PIC related options to *nix compilers when using -hbdyn option.
% Deleted PIC related option from link command. Not needed.
* INSTALL
* HB_INC_* -> HB_WITH_*. This is now the new documented (pbly
the final name) to control external dependencies. Usage is
the same as with HB_INC_*. HB_INC_* is still accepted.
+ Synced .deb and .rpm package names with information found in
mpkg_*.sh files.
* config/detfun.mk
! Fixed to accept HB_WITH_* variables in place of HB_INC_*.
If both are specified, HB_WITH_* will be used.
* mpkg_deb.sh
% Deleted redundant-looking package detection. Packages are now
detected from GNU Make everywhere where needed.
Also deleted redundant assembly of HB_CONTRIBLIBS variable.
* mpkg_tgz.sh
% Deleted -fPIC handling. Now handled by GNU Make system.
- Deleted HB_NCURSES_FINK variable which isn't used in Harbour anywhere.
* config/global.mk
+ Setting lib INSTALL dir to lib64 for x86_64 targets.
(Please extend this with other 64-bit CPU types, if
this is how it should work on *nixes)
This rule was taken from mpkg_tgz.sh.
* mpkg_deb.sh
* bin/hb-func.sh
* harbour.spec
* mpkg_tgz.sh
* HB_WITHOUT_GTCRS -> HB_INC_CURSES
* HB_WITHOUT_GTSLN -> HB_INC_SLANG
* HB_WITHOUT_X11 -> HB_INC_X11
* HB_GPM_MOUSE -> HB_INC_MOUSE (in few remaining hbmk script places)
; NOTE: After all this cleanup/leveling is done, probably
HB_INC_* variables will be changed to more standard
HB_WITH_* format. First I want to finish this part.
* mpkg_deb.sh
* mpkg_tgz.sh
* bin/hb-func.sh
* harbour.spec
+ HB_GPM_MOUSE -> HB_INC_GPM and HB_HAS_GPM depending on whether
it's a config var or a reaction to config (in postinst)
I've left some value in hbmk script which may need further
attention.
I didn't test these changes, please do.
* harbour/harbour.spec
* harbour/mpkg_tgz.sh
+ added hbformat
* harbour/include/hbdefs.h
* harbour/include/hbapi.h
* harbour/source/common/hbarch.c
* redefined macros used to store/retrieve integer and double values
to/from byte arrays in little and big endian order.
Now GCC uses inline functions which are hardly optimized by compiler
giving on x86 machines the same code as direct casting (with the
exception to march=i686 where putting double value forces strict
alignment to avoid hidden CPU exception) but they respect strict
aliasing rules. It also means that now GCC builds always respect
strict alignment even if HB_STRICT_ALIGNMENT macro is not set.
* source/vm/Makefile
+ Enabled "amalgamated" VM lib for all compilers/platforms,
except for those where this doesn't give any advantage, or
it breaks the build, these are: pocc*, xcc, bcc, dmc.
Please note that Open Watcom 1.7 might also fail (I didn't
test), so make sure to upgrade to 1.8.
* harbour-win-spec
* harbour-wce-spec
* mpkg_win.bat
* mpkg_tgz.sh
* harbour.spec
* bin/hb-func.sh
* include/hbsetup.h
* source/vm/Makefile
* source/vm/fm.c
- source/vm/fm
- source/vm/fmmt
* utils/hbmk2/hbmk2.prg
- Removed hbfm and hbfmmt lib references. These libs are
no longer generated or used.
* Narrowed HB_FM_STATISTICS presence in various source
files. From now on the system default for all builds is
HB_FM_STATISTICS_OFF. We may change this to
HB_FM_STATISTICS_DYN_OFF if we find a solution to the
potential and actual problems with this method.
If someone needs to change mem stat default, it can be
done by ususal means.
* utils/hbmk/hbmk2.prg
+ Added object archive support for (currently) gcc compilers.
.a file are gathered like .o files, and they can be added
to the internal command line templates using the {OA} macro.
I've added these after {O} macros in gcc cmdlines.
(Przemek's request #9. Please review.)
* Minor internal change to system location detection.
* harbour-win-spec
* harbour-wce-spec
* harbour.spec
* mpkg_tgz.sh
% Removed -r make flags. No longer needed.
* 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/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.
* bin/hb-func.sh
* mpkg_tgz.sh
! Fixed OSX/Darwin builds:
- to not require harbour.dylib for binary tools supplied
in .tgz package. This way, hbrun/hbmake/hbdoc/hbtest
will work out of the box without the need for any
special installation or extra manual procedure, or
any change whatsoever in the user/system environment.
The change also doesn't prevent user installing Harbour
to system dirs and/or to utilize harbour.dylib in every way.
- so that hbmk script creates '-static' executables by default.
This will make all programs created by hbmk to work out of the
box without any special trick described above, or explicit
need to use '-static' switch.
You can override this with '-shared' switch.
; [ The price to pay is slightly larger binary package
and executable sizes. ]
* make_gnu.sh
* Minor sync in help text with recent change.
* common.mak
! Old typo.
* harbour/bin/hb-func.sh
* updated OS release version checking for new OpenSuse distros
* removed r from uname parameters used in get_hbplatform() function
+ added support for HB_MK_STATIC=yes|no envvar which allows to control
default -static/-shared hbmk switch. It should be set before hb*
scripts are created
* harbour/harbour.spec
* updated OS release version checking for new OpenSuse distros
* harbour/mpkg_tgz.sh
* changed installer envelope code to not use 'sed' and reenabled it
in default builds. Now it should work with different *nixes.
Please test.