* debian/rules
* harbour.spec
* config/instsh.mk
* Do not use HB_INST_PKGPREF.
* harbour.spec
+ Use HB_MAN_INSTALL
* config/global.mk
+ Added HB_MAN_INSTALL and HB_ETC_INSTALL
+ PKG_NAME is now filled in little bit different way for
*nix systems to emulate old mpkg_tgz.sh logic.
* bin/postinst.sh
- Deleted no more used subroutines.
- Deleted mk_hblibso() function.
- it maintained loca list of contribs which breaks the
effort of contrib "plug-in" system
- it contained lots of platform dependent build details in
hard to maintain bash shell code.
; If someone needs this functionality pls try to integrate
it in hbmk2 or write a .hbs script in modular fashion
(not contrib names). I cannot tell what exactly was the functionality
implemented there though. Maybe rewriting it locally is also an
option.
! Do not use HB_INST_PKGPREF.
* config/postinst.hbs
+ Rewritten mpkg_tgz.sh logic in .prg code. This logic is
finally in it's proper place.
+ Implemented copying of man files on *nix systems.
; NOTE: Not tested at all, it was hard enough to rewrite it,
pls help on finishing and debugging it. See TODOs in
source. Previous replicated with some differences.
- mpkg_tgz.sh
- Deleted. Now implemented in postinst.sh.
Build Harbour with HB_BUILD_PKG=yes to try it.
* INSTALL
+ Added HB_MAN_INSTALL and HB_ETC_INSTALL
+ Updated .tgz binary instructions (now same on all platforms)
* utils/hbrun/hbrun.prg
* utils/hbrun/hbrun.hbp
* utils/hbrun/Makefile
* Renamed include dir control var.
* Change so that now simple HB_INC_INSTALL value will
trigger burn-in of header location.
+ Added logic to only use burnt-in header location if
it is an absolute path.
! Synced .hbp file with this feature.
; NOTE: This is still non-portable and error
prone solution. Pls see my thought on dev list
about possible solutions to use precompiled
Harbour headers compiled right into the executable.
* config/global.mk
% Minor optimization for Windows platform
! At the same time fix for CreateProcess( 'uname' ) error on Win9x.
* config/wce/mingwarm.mk
* config/win/mingw.mk
* config/win/cygwin.mk
! Fix to previous: In multi-command cmdlines, f.e.: '(cmd1 && cmd2)'
$(RM) command _must_ be used as a workaround so that GNU Make
converts it to a batch file. Unfortunately with this, an 'ar'
failure will be masked by a successful $(RM), so the make won't
stop.
* config/globsh.mk
+ Added new command macro $(FALSE) preparing for general solution
to force failure.
* config/beos/gcc.mk
* config/qnx/gcc.mk
* config/bsd/gcc.mk
* config/bsd/clang.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
* config/darwin/clang.mk
* config/hpux/gcc.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/linux/clang.mk
* config/linux/sunpro.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
* config/instsh.mk
* 'false' -> '$(FALSE)' for shell independence.
* config/detfun.mk
* config/global.mk
% Streamlined internal handling of HB_SRC_ROOTPATH value.
+ HB_SRC_ROOTPATH will now be conditioned before use:
ending pathsep added, pathseps converted to forward
slash, double slashes deleted.
! Fixed HB_BIN_COMPILE autodetection in PATH, $(realpath
was not necessary, it only ruined already absolute paths
which are likely to appear in PATH anyway.
% Optimized HB_BIN_COMPILE autodetection in PATH to reuse
function created for this purpose.
! Fixed GNU Make 3.81 version detection to work also with
future GNU Make versions.
+ Added GNU Make 3.80 version detection. (unused, commented)
% Deleted version guards from around $(eval) and $(info) calls:
Unknown function calls will simply be ignored by
GNU Make and empty string returned, so this is safe.
% Force HB_BUILD_PKG off only if HB_SRC_ROOTPATH is not
specified (and running < 3.81 GNU Make version).
+ Show warning when using < 3.81 GNU Make version and
HB_SRC_ROOTPATH was not specified.
+ Falling back to using HB_SRC_ROOTPATH in all places where
$(realpath) or $(abspath) calls are used in 3.81 version.
! Protected one $(realpath) with version guard.
+ Automatized how HB_VER_STATUS_SH is filled for final releases.
; NOTE: HB_SRC_ROOTPATH support is completely untested.
; TODO: If everything works as intended, now "only" $(eval)
calls need some workaround to give full blown
functionality also with 3.79 version of GNU Make.
* config/instsh.mk
! Fixed to not use $(realpath) (and fail to install),
when running under < 3.81 GNU Make.
* utils/hbmk2/hbmk2.prg
* config/global.mk
* Changed to use 'wcc386' executable for watcom detection
(was 'wpp386').
* INSTALL
+ Minor updates regarding QT.
* 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
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/genhrb.c
+ added support for compiling multiple .prg modules into single
compilation unit with repeated static or init/exit functions
with the same name.
Now Harbour compiler compiling .prg code from different .prg modules
included by @<name>.clp or by SET PROCEDURE TO ... / DO ... [ WITH ... ]
works exactly like Clipper. It supports separated file wide definitions
for each compiled .prg module when -n switch is used and allows to
use static or init/exit functions/procedures with the same names but
in different modules.
It resolves incompatibility often reported by [x]Harbour users.
Now it's not longer necessary to update existing Clipper code.
@.clp files and SET PROCEDURE TO ... / DO ... [ WITH ... ] are
fully functional like in Clipper.
AFAIR it was the last unintentional incompatibility with Clipper.
TODO: add support for multiple static functions with the same name
in .HRB files - it's necessary to change used format so I'll
probably to that with .HRL support. Now when -gh switch is used
harbour and such functions exists then compiler generates:
Error E0002 Redefinition of procedure or function ...
TODO: modify hbmk2 to pass @<name>.clp files directly to Harbour
compiler so it can compile them just like Clipper does and
generate single output file: <name>.<ext>
* harbour/config/instsh.mk
* disabled install command echo
* harbour/config/lib.mk
* harbour/config/bin.mk
* harbour/config/header.mk
* harbour/config/dyn.mk
* harbour/config/doc.mk
* harbour/config/instsh.mk
! rewritten install rules so now they work without any problem when
more then one target .mk file is included, i.e. lib.mk and header.mk
* harbour/source/pp/Makefile
* harbour/source/dynlib/mt/Makefile
* harbour/source/dynlib/Makefile
* harbour/contrib/hbmysql/Makefile
* harbour/contrib/hbct/Makefile
* harbour/contrib/xhb/Makefile
* harbour/contrib/hbodbc/Makefile
* harbour/contrib/hbtpathy/Makefile
* harbour/contrib/hbsqlit3/Makefile
* harbour/contrib/hbmzip/Makefile
* harbour/contrib/hbblat/Makefile
* harbour/contrib/hbqt/Makefile
* harbour/contrib/hbxbp/Makefile
* harbour/contrib/xpp/Makefile
* harbour/contrib/hbnf/Makefile
* harbour/contrib/hbcurl/Makefile
* harbour/contrib/gtqtc/Makefile
* harbour/contrib/rddsql/sddmy/Makefile
* harbour/contrib/rddsql/sddpg/Makefile
* harbour/contrib/rddsql/sddfb/Makefile
* harbour/contrib/rddsql/sddodbc/Makefile
* harbour/contrib/hbhpdf/Makefile
* harbour/contrib/rddado/Makefile
* harbour/contrib/gtwvg/Makefile
* harbour/contrib/hbpgsql/Makefile
* harbour/contrib/hbclipsm/Makefile
* harbour/contrib/rddads/Makefile
* harbour/contrib/hbfimage/Makefile
* harbour/contrib/hbgd/Makefile
* harbour/contrib/hbtip/Makefile
* harbour/contrib/hbwin/Makefile
* harbour/contrib/hbvpdf/Makefile
* harbour/contrib/hbbtree/Makefile
* harbour/contrib/hbssl/Makefile
* harbour/external/libhpdf/Makefile
* removed not longer necessary workaround for overwritten by different
targets INSTALL_RULE
Possible TODO: clean up some other rules in config .mk files to remove
hacks from pp and dynlib Makefile(s).
Above modifications should fully resolve the problems with repeated
install actions and also build problems with some more restrictive
POSIX SHELLs.
* INSTALL
+ Mentioning dosemu.
* bin/postinst.bat
+ dos shell flavour zip creation.
* config/global.mk
+ Added make platform detection.
+ Changed 'dos shell on win platform' warning to be based on make
platform.
+ Not showing 'dos make on win platform' warning when doing DJGPP
build because this is the right (and only) way in case of this
compiler.
* config/globsh.mk
+ Added command line length limit details for dos shell.
+ Added command line length limit for OS/2. Copied from other .mk file.
* config/dirsh.mk
* config/instsh.mk
- Deleted comments 'We have to use script to overcome the DOS limit of max 128 characters'
from all places.
* config/dos/djgpp.mk
+ Will now error if trying to use other than DJGPP make
to built with this compiler.
* doc/bintools.txt
* config/dosecho.exe
! Restored previous version. (new one gave error on some watcom lines f.e.)
+ Added binary+source links.
* INSTALL
+ Some minor clarifications.
* 'NT system required' changed 'XP system recommended' for win hosts.
+ Added shell requirement for HB_BUILD_PKG.
% Simplified os2/watcom on linux example.
* bin/postinst.cmd
+ Some cleanup/sync with postinst.bat.
* source/Makefile
! Possible fix: Emptying DYNDIRLIST_BASE on dos targets
to save envvar space.
* source/Makefile
* config/lib.mk
+ Added gtcrs and gtsln to dynlib obj list for *nix targets.
* config/global.mk
+ Added Harbour version number to log header.
! Fixed to use short pkg name based on target platform
no host platform (=dos).
* config/bsd/gcc.mk
* config/hpux/gcc.mk
* config/darwin/icc.mk
* config/linux/icc.mk
* config/linux/sunpro.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
+ Added dynamic library generation to rest of targets.
; Please review, especially sunos/sunpro as it had some
.sh tricks which I couldn't replicate.
* config/bsd/global.mk
* config/hpux/global.mk
* config/darwin/global.mk
* config/linux/global.mk
* config/sunos/global.mk
! Setting DYN_PREF to 'lib'.
* config/wce/mingwarm.mk
* config/win/mingw.mk
- Disabled import libs. [They aren't necessary with mingw.]
* config/darwin/icc.mk
* Changed to use libtool instead of xiar.
(blind sync with darwin/gcc)
* config/dos/djgpp.mk
* config/common/watcom.mk
* config/win/bcc.mk
* config/os2/gcc.mk
! Fixed to use $(ECHOQUOTE) in all $(ECHO) calls.
* config/win/bcc.mk
! Fixed use fixed backslashes regardless of shell in scripts.
* config/dyn.mk
! Fixed to use $(LIB_PREF) as implib name prefix.
% Minor opt in IMP_NAME forming.
* config/rules.mk
% Readded $(HB_INC_COMPILE) to be always on cmdline, to
better balance between cmdline and envvar space. (dos)
* config/instsh.mk
% Don't display useless '! Nothing to install' message
when there was no file to install. (could happen with
mingw dynamic lib install where implib is empty because
we don't generate one).
* config/globsh.mk
+ Switched os2 $(CP) command to use config/os2-cp.exe.
* config/instsh.mk
+ Changed os2 install rule to the one used for dos shells except dirsep type.
Based on real OS/2 tests made by Maurilio Longo. Thank you very much.
This also means CMDPREF.
! Typos in my comment.
* source/pp/Makefile
! Fixed to also check presence of hbpp object before trying to
delete it. It may not be there in some rare chain of (failure) events.
* config/global.mk
* config/darwin/gcc.mk
+ Added version macros similar to include/hbver.h ones.
% Using above version macros accross the build system.
+ Bumped minimum GNU Make version requirement to 3.81 (from 3.78).
If there is no negative feedback I'll clean some TOFIXes
which no longer apply, plus start cleanup on the make sources
to use more ideal 'else if' syntax.
+ Added commented 'cp' tool check on os2.
* config/global.mk
* config/instsh.mk
+ Reenabled CMDPREF logic.
* Changed os2 shell rules to use '$(CMDPREF)' instead of
hardwired '$(COMSPEC) /C'. Please don't undo it.
* bin/hb-mkdyn.sh
! Updated a default Harbour version number.
* config/common/watcom.mk
* config/win/bcc.mk
% Yet another experiment, maybe it won't have any bad side
effects: For compilers where $(AR) command supports differential
command (bcc and watcom), we're only passing the list
of changed objects instead of all of them. Should be
much more efficient for incremental builds.
* config/globsh.mk
* config/instsh.mk
! Reset nt shell dirbase and clean rules to previous state
(using 'if [not] exist' instead of $(wildcard)).
New solution had several side effects. Some of them easy
understandable, some others outright mysterious, so more
research will be needed here. Some experiences:
- the whole rule is evaluated before starting to execute the resulting commands.
- multiple rules with the same target are merged before evaluating them
- $(wildcard) is tricky with dirs, especially ones with spaces
- if we use conditional lines ($if()) and all lines are ruled out,
- the rule will become empty, igniting a confusing GNU Make message.
- strange behavior when using 'CLEAN INSTALL'
- $(RM) stayed at default value in one /source/pp/Makefile rule.
; TOFIX: dos/os2 rules are still slightly wrong because of similar problems,
and there 'if [not] exist' isn't a working option either, so
we will need to think about something, like splitting clean
rules to two levels internally, or more make function tricks.
* config/readme.txt
+ config/os2-make.exe
* INSTALL
+ Added os2 GNU Make binary (3.81 static build). Just to be in
sync with other non-*nix platforms. Maybe it will be removed or
renamed.
* config/globsh.mk
+ Minor wording change.
* contrib/hbwin/axcore.c
* Very minor formatting.
- make_gnu_xmingw.sh
- make_gnu_xmingwce.sh
% Deleted two cross-build starter scripts. Their functionality
has been largely moved into our GNU Make system.
Please use these commands for equivalent functionality:
[g]make HB_ARCHITECTURE=[win|wce]
; NOTE: Comments are still welcome regarding experiences
especially from original authors of these scripts.
Maybe I missed something. $(TARGET) var support.
Please comment.
* config/globsh.mk
% Replaced 'if not exist' nt and os2 shell cmds with $(wildcard).
% Using plain (non OS converted) variables in $(wildcard) calls
in dos clean rules.
% Deleted 'if not exist' os2 shell cmds from dirbase rules.
Since we're using GNU tools this isn't necessary, errors will
not be shown if the dir already exists. This makes these rules
similar to dos ones.
! Fixed to not use OS converted parameters with $(RDP) calls with
os2 shell. I can't test, but last information from OS/2 users
was that OS/2 GNU Tools expect *nix style path seps.
* Synced os2 shell clean rules with DOS ones, except using
*nix style parameters in GNU cmds.
* config/instsh.mk
% Replaced 'if not exist' nt and os2 shell cmds with $(wildcard).
In nt I've added a trick to make it work with dirs containing
spaces.
; After these changes no more 'if [not] exist' shell specific
commands are used in Harbour GNU Make system.
; TOFIX: Except sh shell. Probably the rules there can be synced now
with other shells and special bash logic dropped.
* harbour/contrib/hbodbc/odbc.c
* harbour/contrib/rddsql/sddodbc/odbcdd.c
* synced workarounds for missing in some header files SQL* definitions
* harbour/config/globsh.mk
* harbour/config/instsh.mk
! eliminated COMMAND.COM commands used for DOS shell - I've just tested
that they do not work with pure MS-DOS 6.2 without using $(CMDPREF)
though they works with FreeDOS. Anyhow we can safely eliminate them
using dj-*.exe tools directly without any if ... command.com testing.
It also resolve the problem with IF EXIST <DIR>\NUL which is always
true in some environment, i.e. Novel-NetWare drives.