* utils/hbmk2/hbmk2.prg
* config/global.mk
! Fixed to -undef:__PLATFORM__UNIX even for Windows host platforms.
This is required because Cygwin builds have this envvar set.
I'm not sure that setting __PLATFORM__UNIX for Cygwin is right
behavior though.
* config/dos/watcom.mk
* config/win/watcom.mk
* config/linux/watcom.mk
* config/os2/watcom.mk
+ config/common/watcom.mk
% Moved common watcom compiler specific make logic to one file.
I've choosen OS/2 rules in this global makefile, as they will
work on all platforms, albeit in the known slighly hacky way.
It's easy to reintroduce shell specific rules for more advanced
shells. There was one common rule set for nt/dos shells, plus
a very clean one for sh. I may do this in a next commit.
After this change it's possible to create all possible watcom
cross-builds. Pls shout if I missed something or the concept
seems to have some potential flaws.
; QUESTION: Does 'wlib' support '-p=64' option on Linux watcom builds?
; NOTE: Still most of the not yet merged logic could be merged,
since there is only a few minor difference between them.
; TODO: Add shell optimized watcom rules for nt/dos/sh shells.
; TODO: Try to do a similar stunt for gcc.mk files.
* source/pp/ppcore.c
* #ifdef -> #if defined()
* config/global.mk
! Fixed dos autodetection to not be overridden by explicit
HB_ARCHITECTURE value since it prevent dos hosted cross
build creation.
! Fixed *nix -> win/wce autodetection to not kick in on os2/dos
platforms.
* INSTALL
+ Updated cross-build matrix to not show some dos/os2 builds
fully untested. They should now work in a generic sence.
; TOFIX: watcom rules should be synced across platforms to use
shell specific tricks according to HB_SHELL excpect
assuming it being the host native one.
F.e. watcom/dos -> os2 builds will end with:
Bad command or filename - "@..\..\..\..\..\config\dj-echo".
watcom/dos -> linux builds will choke because of too long cmdlines.
* config/dos/watcom.mk
* DOS shell specific hacks protected by HB_SHELL guard.
* Merged together DOS shell specific hacks.
* config/win/watcom.mk
* config/linux/watcom.mk
* config/os2/watcom.mk
+ Added DOS shell specific hacks, so that cross-builds to these
targets on DOS hosts work.
* config/global.mk
* INSTALL
* bin/hb-mkdyn.sh
* bin/hb-mkdyn.bat
+ Added HB_USER_DFLAGS to add custom linker flags to .dll link command.
(just like in hbmk2)
- In hb-mkdyn.sh HB_USER_LDFLAGS deleted, now HB_USER_DFLAGS replaced it.
(HB_USER_LDFLAGS was missing from darwin link cmd)
* bin/hb-mkdyn.bat
! HB_DLLLIBS -> HB_DLLIBS
* config/global.mk
+ Added HB_DLLIBS to list of misc custom settings.
* INSTALL
+ Revision of OPTIONS AVAILABLE WHEN BUILDING HARBOUR section.
! Typo.
* harbour/config/bsd/gcc.mk
* harbour/config/darwin/gcc.mk
* harbour/config/hpux/gcc.mk
* harbour/config/dos/djgpp.mk
* harbour/config/win/mingw.mk
* harbour/config/linux/gcc.mk
* harbour/config/linux/icc.mk
* harbour/config/linux/sunpro.mk
* harbour/config/os2/gcc.mk
* harbour/config/sunos/gcc.mk
* harbour/config/sunos/sunpro.mk
! replaced wrongly used 'findstring' functions with 'filter' functions.
Now findstring is used only in places where we are looking for
substrings not whole words.
* harbour/source/rdd/wacore.c
! fixed typo in comment (by Phil Krylov borrowed from xHarbour)
* harbour/ChangeLog
! fixed my typo in Latin translation of Phil Krylov family
name - sorry Phil.
* utils/hbmk2/hbmk2.prg
* config/wce/msvcarm.mk
! Fixes to cmdline macros, now many warnings are gone.
* utils/hbmk2/hbmk2.prg
+ Added ceshell, oleaut32 syslibs to default wce liblist.
(to be more in sync with win)
* contrib/hbwin/hbwin.hbc
! Added sms syslib for wce.
* config/global.mk
+ Don't attempt to install includes and docs if HB_INSTALL_PREFIX
is set to source tree root. (to suppress 'cannot copy file to itself'
warnings)
* utils/hbmk2/hbmk2.prg
* config/global.mk
+ Added autodetection for old MSVC for WinCE versions (clarm.exe based ones).
+ Added autodetection for HB_VISUALC_VER_PRE80 value for msvcarm targets.
* INSTALL
+ Added cross-build matrix. Tweaked cross-build information.
+ Added MSVC 2005 for WinCE/ARM example.
; TODO: Create separate example section for native and cross-builds.
* contrib/hbwin/legacy.prg
* contrib/hbwin/legacyco.c
+ Reimplemented numeric pointer support in legacy OLE interface
with the help of Przemek and Antonio. Please test.
* config/global.mk
! Fixed to handle spaces in PATH elements.
Now '#' is used as intermediate char. Please change it to something
else if you feel this might clash with some real-world scenarios.
* utils/hbmk2/hbmk2.prg
* config/wce/msvcarm.mk
! Readded -DUNDER_CE.
Does anyone know of any documentation about required macros
for WinCE compilation?
* harbour/config/global.mk
! fixed typo in platform detection 'ifeq' instead of 'ifneq' and 'win'
was set as default
! replaced wrongly used 'findstring' functions with 'filter' functions
! added small trick in path prefix detection to avoid false results
from 'findstring' function
! look for 'suncc' instead of 'cc' detecting SunPRO C compiler
('cc' is default C compiler link in all *nixes)
* harbour/bin/hb-func.sh
* use -I<path> parameter passed to Harbour compiler in hb* scripts
also with C compiler for C code inside #pragma begindump/enddump
* INSTALL
+ Added msvcarm examples (using MSVC 2008. 2005 should be similar).
* config/wce/msvcarm.mk
% Somewhat reduced number of macro options.
! Deleted debug switch from default c option list.
% Deleted a few more default c options.
! Added corelibc to syslib list.
! Cleaned linker flags to make it link. Some others
just removed, they seem not required.
* utils/hbmk2/hbmk2.prg
* Synced msvcarm settings with .mk.
* config/global.mk
* utils/hbmk2/hbmk2.prg
+ Added msvcarm autodetection to both GNU Make and hbmk2.
* config/wce/global.mk
* config/wce/poccarm.mk
* utils/hbmk2/hbmk2.prg
* bin/hb-mkdyn.bat
+ Added coredll to wce syslib list.
(required for msvc and pocc, optional for mingw)
; Now msvcarm builds, with a lot of warnings.
* utils/hbmk2/hbmk2.prg
+ Added support for detecting Harbour binary environment
in raw form, meaning the one after simple 'make' *without*
'make install'.
Of course 'install' is still useful to build dlls (and
implibs on win), but for normal cases this may be a very
useful feature. You do a 'make' (no admin needed on *nix),
go to ./bin/arch/comp and hbmk2 works without any extra
configuration.
This feature also allows us to distribute multihost
binary packages. Such unified binaries can be run under
multiple hosts. (IOW we can have one binary distro which
covers potentially all our supported platforms/compilers
both as host OS and target OS). See watcom for such an
example in the C compiler world.
* INSTALL
+ Replaced make_gnu_xmingw*.sh references with simple make
commands.
; There are no more script/batch references inside INSTALL doc.
(except some compiler configuration ones but these don't belong
to Harbour, included for convenience only)
* contrib/hbwin/legacy.prg
! Deleted pointer to numeric conversions.
This means even code using compatibility interface may
have to be slightly adapted to use this version of Harbour.
Checks like ISNUMBER( CreateOLEObject() ) and CreateOLEObject() == 0
will have to be changed to Empty( CreateOLEObject() ). This
stays compatible with other Harbour versions and implementations.
Methods/Functions accepting numeric pointers in old implementation
will only accept pointers aquired from appropriate OLE API functions.
* harbour/config/global.mk
! extended shell detection - now when we do not use make_gnu.sh
we have to accept also shells like ksh which do not set SHLVL
envvar.
Probably the safest method is using HB_SHELL=sh for all host
platforms except DOS, WIN & OS2.
* contrib/hbtip/thtml.prg
! Fixed hang in 'OEMTOHTML( "&" )'. Reported on c.l.xhb.
Fix based on Eduardo Fernandes suggestion, although done
a little differently and extended to avoid new RTE.
* utils/hbmk2/hbmk2.prg
+ Added wininet syslib to std lib list for win platform.
(to be in sync with wce and hbmk script).
* INSTALL
* Using 'platform' in a few places where 'architecture' was used
in text.
* contrib/hbxbp/xbpwindow.prg
! Some tweaks.
* contrib/hbxbp/xbpbrowse.prg
+ Implemented Footers.
+ Reworked entire browse management. Now Qt's powerful "LAYOUT" features
are exploited.
! Thoughly rewritten horizontal scrolling.
* contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated Footer implementation.
Please play with horizontal scrolling.
;TODO : Left Freeze and RightFreeze
I have an idea how to do it.
* 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.