* harbour/config/win/bcc.mk
* eliminated IF EXIST command and updated to work with non NT shells.
Now only OS2 gcc.mk and watcom.mk uses directly IF & FOR shell
commands.
* config/dos/watcom.mk
* config/dos/djgpp.mk
* config/win/bcc.mk
* config/win/watcom.mk
* config/os2/watcom.mk
* config/os2/gcc.mk
* 'echo' -> '$(ECHO)'
* config/readme.txt
+ Added link to DJGPP echo tool.
; TOFIX: This isn't the echo tool which is currently included
in SVN, but points to the place where other dj-*.exes
came from.
* ChangeLog
! Fixed date in my today's entries.
* 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.
* harbour/config/dir.mk
% small simplification in used logic
* harbour/config/dirsh.mk
! use := instead of = for DIR_RULE assignment - these rules contain
dependencies macros which cannot be resolved during assignment
* config/global.mk
* Upped minimum GNU Make version requirement to 3.78 (from 3.70).
We use many 3.78-only features since very long and in many
Makefiles (like $(if)). 3.78 was released in 1999, the year
Harbour has born, so this requirement looks pretty modest.
Notice however that the "officially" documented (in INSTALL)
minimum version is 3.81, and there are a few feature we
actually use and need from this version. Some other make features
are only enabled when using 3.80 (or upper) (parallel build),
some others when using 3.81 (or upper) (build configuration
information, verbose output).
; TODO: Either up the minimum version, or try to fix the remaining
unprotected 3.80/3.81 features.
My personal opininon is that if there is any reasonable
chance we should make 3.80 or 3.81 the minimum official
requirement.
This is a *nix-only issue, as dos/win/os2 are all covered
with recent 3.81 binary builds. Question is:
How and which *nix platforms would be affected or limited
in such this case?
BTW, 3.81 was released in 2006, 3.80 in 2002.
* ChangeLog
* Updated cross-build compatibility chart.
* config/global.mk
+ Added autodetection of cegcc tools on default install location.
+ Added error messages if specified or autodetected mingw/cegcc
cross-tools couldn't be found.
! Minor cosmetic in warning/error msgs. (ending dot seems to be added
by GNU Make)
; NOTE: Currently possible cross-build scenarios (except cross-CPU only cases,
by host platform:
on win hosts:
-> wce/mingawrm
-> wce/poccarm
-> wce/msvcarm
-> dos/djgpp
-> dos/watcom (* using DOS GNU make)
-> os2/watcom
-> linux/watcom
on dos hosts:
-> win/watcom (*)
-> os2/watcom (*)
-> linux/watcom (*)
on os2 hosts:
-> win/watcom
-> dos/watcom (*)
-> linux/watcom (*)
on linux hosts:
-> wce/mingwarm
-> win/mingw
-> win/watcom
-> dos/watcom (*)
-> os2/watcom
on darwin/bsd/hpux/sunos hosts:
-> win/mingw (*)
(*): Theoretically possible, but not heard of such build yet.
* contrib/rddads/adsfunc.c
+ Added TOFIX to a very old typo in ADSDDREMOVETABLE() which
makes it require a dummy variable to be passed as 3rd parameter.
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* config/win/xcc.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/watcom.mk
* config/win/icc.mk
* config/win/msvc.mk
* config/rules.mk
+ Made dynamic compilation pass a little bit more generic.
Now HB_DYN_COPT variable should be set to the switch(es) which
are used in this pass. This will automatically enable the
dynamic compilation pass. F.e. for *nix/gcc compilers it can
be set to -fPIC.
* config/global.mk
+ Implemented win/mingw cross-tool autodetection.
Based on the logic found in make_gnu_xmingwce.sh. It's not
exactly the same, because I used HB_CCPATH and HB_CCPREFIX
only. There is no fiddling with the PATH f.e. This may cause
problems on some systems, but I couldn't understand the intent
behind every logic (and host environments) in the old script.
F.e. I left out dealing with 'TARGET' variable completely,
including just recently added manual override. If they are
needed with the new system, hopefully we can implement it in
some ways.
Please test. If this works out good, the two launcher scripts
are no longer necessary.
* Changed the way wce cross-builds are initiated. From now on
HB_ARCHITECTURE needs to be set to wce in this case.
For win targets, it needs to be set to win.
So basically, to launch a win build on Linux you need to type:
make HB_ARCHITECTURE=win
(optionally you may set HB_CCPREFIX and HB_CCPATH (before make)
to your liking, if the tool autodetection doesn't work)
For wce builds, use:
export HB_CCPATH=...
make HB_ARCHITECTURE=wce
* config/global.mk
! Fixed previous commit after actual testing.
Now wce cross build on linux works by simply setting HB_CCPATH
and issuing 'make'.
; TODO: Extend above logic to other *nix platforms.
* config/global.mk
* config/wce/mingwarm.mk
* config/win/mingw.mk
+ Added logic to support linux wince cross-builds.
My goal was to implement make_gnu_xmingwce.sh functionality
inside make files. I've yet to install cegcc to my Linux,
so I didn't test it yet, but please do. It's experimental
yet and ATM the wce target can be enabled by pointing
HB_CCPATH to cegcc install dir. This may change in the future.
+ In cross build scenarios the default HB_INSTALL_PREFIX is
now /usr/local/harbour-<arch>-<comp>
Somewhat replicating current .sh behaviour. Not exactly
because I wanted to stay with conventions found in other parts
of Harbour. With .sh the dir was:
/usr/local/arm-wince-mingwce-harbour
With new system it's:
/usr/local/harbour-wce-mingwarm
; QUESTION: I'm not familiar with .spec files, but it looks there are
some redunant settings inside harbour-wce-spec.
F.e. HB_CONTRIBLIBS should be left to default and local
Makefiles should do the ground work of deciding whether
a given contrib needs to be built.
CC_HB_USER_PRGFLAGS also seems redundant now, although
there may still be some .sh logic which needs it.
'make -i' seems dangerous option when creating a release
package.
* make_gnu_xmingwce.sh
! Typo in comment.
* ChangeLog
; Added missing change to one the recent entries:
---
* config/global.cf
+ Added 'SHELL := $(COMSPEC)' to OS/2 shells.
I'm not sure this is needed, please test and confirm
whether it solves possible interference with sh.exe in
PATH.
---
* harbour/source/rtl/hbproces.c
! fixed hb_fsProcessRun() (__RUN() and HB_RUN()) in WinCE builds
to pass application name as 1-st parameters
+ added parameters passing to hb_fsProcessRun() (__RUN() and HB_RUN())
in WinCE builds - please test.
* utils/hbmk2/hbmk2.prg
+ Added support for HB_INSTALL_PREFIX macros (recently introduced
in global.cf). Maybe it'd be better to not use this build-time
envvar at all.
Now that autoconfiguration is working pretty well, I think it may
be time to drop support for some envvars in hbmk2. In case of
HB_INSTALL_PREFIX it rather makes things more complicated.
* include/hbsetup.h
% Optimized out HB_OS_UNIX_COMPATIBLE. HB_OS_UNIX should be used
instead. Since the definition logic for HB_OS_UNIX was completely
different from HB_OS_UNIX_COMPATIBLE, it may be possible that
it's not 100% the same as before, although their meaning was
the same.
HB_OS_UNIX_COMPATIBLE is still available for compatibility, but
it's now marked with HB_LEGACY_LEVEL2 and will be removed in next
major release.
* include/hbapifs.h
* include/hb_io.h
* include/hbsocket.h
* source/vm/set.c
* source/debug/dbgentry.c
* source/common/hbffind.c
* source/rtl/fscopy.c
* source/rtl/fstemp.c
* source/rtl/gtstd/gtstd.c
* source/rtl/gttrm/gttrm.c
* source/rtl/version.c
* source/rtl/hbsocket.c
* source/rtl/copyfile.c
* source/rtl/filesys.c
* source/rtl/console.c
* source/rtl/cputime.c
* source/rtl/gtpca/gtpca.c
* source/rtl/fssize.c
* source/rtl/memofile.c
* source/compiler/hbcomp.c
* source/compiler/gencobj.c
* contrib/hbct/files.c
* contrib/xhb/xhbcopyf.c
* contrib/xhb/hbserv.c
* contrib/hbnf/getenvrn.c
* HB_OS_UNIX_COMPATIBLE -> HB_OS_UNIX
* config/global.cf
* HB_UNIX_COMPATIBLE -> HB_OS_UNIX
* contrib/hbxbp/tests/demoxbp.prg
! Opening test.dbf in RO mode to avoid it being update.
Couldn't spot the code which touched it.
* config/global.cf
- Deleted unused and commented code section.
* INSTALL
- Deleted HB_INSTALL_PREFIX from quickstart instructions.
! Modified hbmk2 hello.prg command to work on *nixes.
(I never tried this default scenario though)
* Modified non-*nix hbmk2 commands to look more natural
and similar to *nix.
- Deleted mingw32-make as suggested tool for dos builds done
on NT hosts. It chokes with too long cmdline with mingw32-make.
* bin/hb-mkdyn.sh
- Deleted wininet from wce liblist.
* make_gnu_xmingw.sh
+ Allow user to override the default TARGET.
* config/global.cf
! Don't add /harbour (LIB|INC)POSTFIX if HB_INSTALL_PREFIX contains
/usr/home (synonym of /home under FreeBSD).
! Fixed INCPOSTFIX usage so it works now.
* config/linux/global.cf
! Added x86_64 to -fPIC machines.
* config/global.cf
+ Package creation now only works if run from Harbour source root.
+ 'clean' of pkg dir will only happen now if run from Harbour source root.
* ChangeLog
* config/globsh.cf
+ 'clean' now deletes pkg/<arch>/<comp> dir. This ensures that
package creation always starts with a fresh empty dir.
Resolves existing TOFIX (marked DONE).
* config/global.cf
! Fixed to process HB_BUILD_NAME when forming package install dir
inside /pkg dir.
% Delete an unnecessary line.
* package/mpkg_win.nsi
* config/global.cf
* bin/postinst.bat
* Little bit changed the way dirs/names are communicated from
GNU Make to postinst package creation code.
The goal was to have an internal PKG_DIR var which is similar
to other *_DIR vars. It was also possible to delete some
exported vars this way.
- Disabled package creation for non-NT shells (= pure MS-DOS).
I found no way to make this work cleanly on pure MS-DOS.
+ Documented weird requirements of zip building. Also to better
clarify why abspath is needed in GNU Make.
* config/instsh.cf
* Updated OS/2 comment to clarify some issues according to
information from Maurilio.
* ChangeLog
* source/rtl/Makefile
* source/rdd/Makefile
* config/bin.cf
* config/wce/global.cf
* config/rules.cf
% Using HB_PRGFLAGS instead of HB_GCMODE. Logic is now simple
and standard.
* config/global.cf
* config/rules.cf
* config/dos/watcom.cf
* config/win/watcom.cf
* config/os2/watcom.cf
% Using HB_PRGFLAGS instead of HB_FLAGSEXTRA.
% Using HB_CFLAGS and HB_PRGFLAGS instead of HB_CDBG.
% Using HB_CFLAGS instead of HB_CUNICODE.
% Moved all flags from HB_RULE to HB_FLAGS (except HB_USER_PRGFLAGS).
This only affects dos/watcom, more cmdlines will be put in HARBOURCMD.
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* source/vm/maindllh/Makefile
* source/vm/maindllp/Makefile
* source/vm/vmmt/Makefile
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gtsln/Makefile
* contrib/gtalleg/Makefile
* contrib/hbmysql/Makefile
* contrib/hbodbc/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbcurl/hbcurls/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/hbtip/hbtipssl/Makefile
* contrib/hbssl/Makefile
! Using HB_CFLAGS/HB_PRGFLAGS to specify Makefile local
compiler settings instead of modifying HB_USER_*FLAGS.
This way the double defines are gone.
+ Included global.cf to all Makefiles which needs to modify
HB_CFLAGS/HB_PRGFLAGS. Probably we should move global.cf
inclusion to the top of all Makefiles as a convention.
Not terribly elegant, but solves a few problems and
more efficient.
% Changed ', -I$(d))' to ',-I$(d))' along the way. This avoids
wasting an extra space in command line.
; NOTE: It'd still be beneficial to find a way to get rid of
'descend' rule. It could make cmdlines cleaner/shorter
and whole build process simpler/faster. I didn't manage
so far.
* source/vm/Makefile
* Deleted 'HB_USER_CFLAGS := $(subst -DHB_MT_VM,,$(HB_USER_CFLAGS))'
(since it's no longer supported practice to modify user supplied flags)
I'm not sure if it's important enough to have. AFAIK there is no
reason users use HB_MT_VM define, it's not a public setting, so we
shouldn't go too much far in trying to protect against its presence.
If it's needed, we should add 'HB_CFLAGS += -DHB_ST_VM' and handle
HB_ST_VM as the reverse of HB_MT_VM inside the source.
* source/rdd/dbffpt/dbffpt1.c
* source/rdd/dbffpt/Makefile
* Optimizations are now disabled using #pragma for __XCC__ instead of
deleting them from HB_USER_CFLAGS. Please test, and see above on
modifying HB_USER_CFLAGS in our make files.
* bin/postinst.cmd
! Deleted double quote from target dir in xcopy commands.
Blind change.
* utils/hbtest/rt_main.ch
* utils/hbtest/hbtest.hbp
* utils/hbtest/Makefile
+ Changed to use #pragma to turn on line numbers instead of
using HB_USER_PRGFLAGS (or HB_PRGFLAGS). This way there is
no need for Makefile hack/tweaks and it works with all make methods
automatically.
* config/instsh.cf
! Partially restored a few things which were lost without comments
in prev OS/2 commit:
- Formatting
- '@' prefixes
- '-' prefixes
* config/global.cf
+ Added new plans for further setting cleanup.
* config/global.cf
* config/rules.cf
* config/dos/watcom.cf
* config/win/watcom.cf
* config/os2/watcom.cf
+ Added HB_CFLAGS, HB_PRGFLAGS. These will now replace all
Makefile level manipulation of flags. Should eventually
replace all HB_USER_*FLAGS, HB_GCMODE, HB_INC_DEPEND,
HB_CUNICODE, HB_CDBG and HB_FLAGSEXTRA variables, if everything
goes well.
* contrib/hbwin/wapi_winuser.c
+ Added WAPI_GETKEYSTATE().