* INSTALL
+ Added OS/2 cross-build examples for both Windows and Linux
hosts (Thanks Przemek for the Linux one).
+ Added information that DOS and OS/2 builds can be created
on other host OSes.
* config/os2/global.cf
* config/os2/install.cf
+ Added support for non-bash non-OS/2 shell for
Windows NT cross compilation.
! Fixed syntax error in one of the OS/2 specific rules.
* config/dos/dir.cf
* config/win/global.cf
* config/win/dir.cf
* config/wce/dir.cf
* Some more sync. Now os2/win/wce dir.cfs are the same,
and they're almost the same as the dos one.
* harbour/config/dos/watcom.cf
* harbour/config/win/watcom.cf
* harbour/config/os2/watcom.cf
! hacked to not revert slashes to backslashes for wcc in Linux host OS
It's not clean solution because it will have to be adopted also for
other OS2 ports
* harbour/config/dos/watcom.cf
! fixed passing parameters to wcc by environment variable
* harbour/external/sqlite3/Makefile
* set SQLITE_OS_OTHER for all DOS builds
* harbour/config/dos/watcom.cf
* harbour/config/win/watcom.cf
* modified to work with *nix like shells so it can be used in cross build
environment
Now in my Linux box I can create Windows, DOS and OS2 harbour builds
using OpenWatcom 1.8 and native Linux binaries. Final Windows executables
works correctly. DOS one doesn't and it's probably problem with
OpenWatcom Linux linker and DOS DPMI stubs - I'll check it yet.
I cannot tested generated OS2 executable files. If someone has
OS2 and can try to run it then I can send them to him for test.
* make_gnu.bat
+ Minor adjustment to support OS/2 cross-builds.
* source/rtl/gtwvt/gtwvt.c
* Minor adjustment to casting to Windows type.
* contrib/hbfimage/Makefile
- Disabled for OS/2.
* bin/postinst.cmd
+ Synced with .bat. 'copy' replaced by 'xcopy'.
* config/os2/watcom.cf
+ Added fix (from win/watcom.cf) to swap dirseps
for wcc386 as it cannot accept forward slashes.
Przemek, please adapt this for Linux, as it's
probably not needed there.
* harbour/config/os2/watcom.cf
* harbour/config/os2/dir.cf
* harbour/config/os2/install.cf
* small cleanup for builds with *nix like shells and cross builds
* harbour/contrib/rddads/Makefile
! disabld from OS2 builds - if ADS supports OS2 then please speak-up
* harbour/include/hbthread.h
* added small hack as workaround for missing OS2 declarations
* harbour/source/rtl/filesys.c
! fixed typo in OS2 builds
* harbour/source/rtl/hbproces.c
! fixed non GCC OS2 builds
* harbour/contrib/hbtpathy/tpos2.c
! fixed casting in OS2 builds
* harbour/contrib/xhb/hbserv.c
! disabled from OS2 non GCC builds
Now I can create OS2 OpenWatcom build in my Linux box using this simple
script:
#!/bin/sh
if [ -z "${WATCOM}" ]; then
export WATCOM="/opt/lng/watcom"
export INCLUDE="${WATCOM}/h:${WATCOM}/h/os2"
export PATH="${WATCOM}/binl:$PATH"
fi
export HB_ARCHITECTURE=os2
export HB_COMPILER=watcom
export HB_INSTALL_PREFIX="$(pwd)/hb-os2/watcom"
#cross build settings
# this should be fixed and we should use HB_PPGEN_PATH as direct
# reference to hbpp binaries and HB_COMP_PATH as direct reference
# to harbour binaries in all builds. Otherwise we have to create
# some hacks to create platform specific names for above binaries
# i.e. in *nixes links with .exe extension.
export HB_PPGEN_PATH="/tmp/cros-hb"
export HB_BIN_COMPILE="/tmp/cros-hb"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -D__PLATFORM__OS2"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -undef:__PLATFORM__UNIX"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -undef:__PLATFORM__LINUX"
# eliminate libraries which scans for local host header files
export HB_XBUILD=yes
./make_gnu.sh "$@"
It should work also in Windows with MSys.
This should resolve the problem with testing OS2 builds, at least
for OpenWatcom. I do not know if GCC for OS2 is available as cross
build environment.
I think that Viktor can quite easy adopt hbmk2 for OS2 cross compilation.
* harbour/config/dos/watcom.cf
* harbour/config/win/watcom.cf
* harbour/config/os2/watcom.cf
* disabled DOS/4GW Banner
* harbour/utils/hbmk2/hbmk2.prg
* use DOS/4G for DOS OpenWatcom binaries instead of causeway which seems
to have some troubles with executing child processes. At least in
FreeDOS inside DOSEMU.
Warning DOS/4G reduce maximal size of command line. Ideal seems to
be PMDEV but it's not free for commercial use though we can think
about using it to create Harbour binaries.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added support for -icon= option to specifiy application icon.
If used multiple times, all icons will be added to the target
executable and the first one will be used as app icon.
Currently supported platforms: win, wce, darwin, os2.
(OS/2 is just guesswork)
+ Added resource support for OS/2 + watcom targets.
(untested)
* Minor correction in one warning messages.
* config/os2/watcom.cf
% Suppressing 'echo' commands from build log.
* INSTALL
- Deleted QT version number from example settings to
ease on maintenance without making the doc look outdated.
* source/rtl/hbmd5.c
! Minor typo in comment.
* config/win/global.cf
* config/wce/global.cf
% Removed unnecessary @ chars.
* config/none.cf
* config/win/global.cf
* config/wce/global.cf
! Attempt to fix problem where 'COMSPEC' envvar wasn't picked
by GNU Make on default XP installation, where this envvar
is defined as 'ComSpec', and mingw GNU Make is case-sensitive
for envvar names. This patch is needed to make Harbour build
with clean PATH (without OS).
Thanks to April White for discovering this.
* INSTALL
* make_gnu.bat
+ Added support for Cygwin builds (passes call to make_gnu.sh).
+ Added Cygwin build starter example.
+ Cygwin mentioned as a requirement for mingwarm builds,
also added to PATH.
! Fixed cygwin autodetection.
! Fixed wrong PATH order in 'MinGW GCC + MSYS' example.
* Merged mingw+msys and cygwin bash based build methods,
and titled as "alternate" method.
Now all supported compilers work by starting up make_gnu.bat.
* utils/hbmk2/hbmk2.prg
! Change compiler autodetection to work for cygwin.
* mpkg_dos.bat
* mpkg_win.bat
* make_gnu.bat
! Fixed build process to work in paths containing spaces.
I didn't test the batch in pure DOS, so I may have broken it.
* config/win/install.cf
* config/wce/install.cf
! Fixed 'install' to work when there is a space in install path.
* make_gnu.bat
* INSTALL
+ Added support for HB_BUILD_LOG envvar. If set to 'yes',
it will automatically set log output filename to:
'log-<arch>-<comp>.txt'
if set to 'no' it will no make any extra redirection,
if set to any other value, it will be used for output
(both std and err). The batch will set HB_BUILD_LOGFILE
to the filename used for output for processing.
This feature requires Windows NT or upper host.
I didn't enable this feature yet by default to not break
existing user setups, but maybe I'll do it before the
final release.
* Modified text shown (+ beep thrown) when build failed.
* Messages now all start with 'Harbour'.
* Do not do the second build pass if the first one failed.
* contrib/hbwin/legacy.prg
! Fixed CreateObject() not working due to typo.
Thanks to Itamar Lins for the report.
* mpkg_dos.bat
* mpkg_win.bat
* mpkg_win.nsi
+ Enabled HB_BUILD_LOG=yes.
* Silenced copy, zip, makensis commands.
+ Added message about failed build process.
* Changed to use 'copy' instead of 'xcopy'
* Changed internals so now they don't require HB_COMPILER
and HB_ARCHITECTURE to be set. This means that now
we can rely on autodetection even for mpkg_*.bat files.
Creating an installer is very easy now for most cases.
Just type:
mpkg_gnu.bat
* source/vm/set.c
+ Added file commit support to __MVSAVE(), if Set( _SET_HARDCOMMIT )
is set to .T.. This is the default which means by default we aren't
CA-Cl*pper compatible. Addition protected by HB_C52_STRICT.
* source/rdd/dbf1.c
! Minor typo in comment.
* doc/en-EN/hb_apiit.txt
* include/hbapi.h
* include/hbapiitm.h
* source/vm/itemapi.c
* source/vm/extend.c
* source/rtl/gtwvt/gtwvt.c
* source/rdd/dbf1.c
* contrib/gtqtc/gtqtc.cpp
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* contrib/hbwin/olecore.c
* examples/hboleold/win_ole.c
* Finishing long planned function renames to clear up
a very (10 years) old naming inconsistency.
To adapt you code to this, please do changes below:
1) hb_itemPutCPtr() (with three parameters) -> hb_itemPutCLPtr()
2) hb_itemPutCPtr2() -> hb_itemPutCPtr()
Unmodified code will generate compile time errors, so it's easy
to spot where the modifications need to be done. For most users,
only case 1) will need to be dealt with.
; INCOMPATIBLE. Please update your code.
* source/rtl/hbi18n1.c
* source/rdd/dbfnsx/dbfnsx1.c
* hb_itemPutCPtr() (with three parameters) -> hb_itemPutCLPtr()
* contrib/gtwvg/wvggui.c
* contrib/gtqtc/gtqtc.cpp
! Fixed GPF in hb_gtInfo( HB_GTI_SCREENSIZE ) call with wrong
parameter.
* contrib/gtwvg/Makefile
! Typo in prev.
* INSTALL
- config/linux/gpp.cf
- Deleted HB_COMPILER=gpp. Please use HB_BUILD_MODE=cpp
which works with all compilers.
* config/hpux/gcc.cf
* config/sunos/gcc.cf
* config/bsd/gcc.cf
* config/darwin/gcc.cf
* config/dos/djgpp.cf
* config/win/cygwin.cf
* config/win/mingw.cf
* config/win/bcc.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/os2/gcc.cf
* config/wce/mingwarm.cf
* config/win/icc.cf
+ Added support for HB_BUILD_MODE=cpp for all platforms
where it's available.
Now it's about in sync with hbmk2.
* config/linux/gpp.cf
* Changed to set HB_BUILD_MODE=cpp and redirect to gcc.
(retained for compatibility, pls use HB_BUILD_MODE=cpp instead
of HB_COMPILER=gpp)
* config/win/gcc.cf
* Now redirected to mingw (was cygwin).
* config/darwin/gcc.cf
* Changed to use 'gcc' as compiler name like on other platforms
and in hbmk2.
For old Darwin systems it may need to be redefined to 'cc' using
export HB_CMP=cc.
* harbour/contrib/gtwvg/wvgwin.c
! fixed wrongly used & operator
* harbour/source/rtl/hbproces.c
* added TODO warning in OpenWatcom Linux builds
* harbour/make_gnu.sh
! fixed test_param() function definition - it has to be defined it's
before use
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
* harbour/source/rtl/round.c
* removed unnecessary <math.h>
* harbour/source/vm/hvm.c
* harbour/source/common/expropt2.c
* harbour/contrib/hbct/ctmath.h
* harbour/contrib/hbclipsm/num.c
* harbour/contrib/hbclipsm/numfloor.c
* harbour/contrib/hbclipsm/numceil.c
* use "hbmath.h" instead of <math.h> to avoid possible desynchronization
between used math libraries and header files
* harbour/source/pp/Makefile
! fixed real DOS compilation - replaced Windows only hack by wildcard
function usage
* harbour/config/dos/dir.cf
* removed intermediate sh call from executed commands
* harbour/source/vm/Makefile
* disabled HB_HVM_ALL in all Watcom builds - it works but the compilation
time is very huge so user who wants to use it should set envvar
HB_HVM_ALL=yes
* enabled HB_HVM_ALL for DJGPP builds
; TOFIX: dos/owatcom builds can now created successfully
(using standard Open Watcom 1.8 installation),
the bad news is that f.e. hbmk2 will crash the
NTVDM when trying a simple make.
* INSTALL
! Minor fix to DOS instructions.
+ Added DOS build examples.
* mpkg_dos.bat
! Fixed target dir and archive name to be different
for djgpp and owatcom builds.
* make_gnu.bat
+ config/djg-make.exe
+ Added embedded copy of DOS build of GNU Make.
This is to make DOS builds, specifically dos/owatcom
builds simpler. Original filename was 'make.exe'.
This can probably be removed once we move DOS
platform status to a 'target-only' one, like WinCE/ARM.
* make_gnu.bat
! Ugly hack added to create doc/en-EN dir. This still
won't solve the DOS copy problem unless I remove
the hack committed previously. If I remove it
the make process cannot be anymore started without
this batch file as it would choke on xcopy if
above dir doesn't exist.
* make_gnu.sh
! Applied fix to only create install dirs if called
with 'install' option. At the same time enabled
this feature for all platforms. It will also create
doc/en-EN dir.
PLEASE TEST/REVIEW, I didn't do any testing.
; TOFIX: Much or all of these should IMO be done directly
from make files, it would be much self-contained
and consistent.
* source/pp/Makefile
! Fixed to find ChangeLog when building for DOS targets.
This was a problem when trying to build dos/owatcom.
Now in DOS mode it will refer to the ChangeLog by its
8.3 name.
* utils/hbmk2/hbmk2.prg
* Minor formatting.
* mpkg_deb.sh
* harbour.spec
- Deleted hbmsql.
; TOFIX: hbqt is missing from some Linux make files.
; TOFIX: (in next major release) We should try to
make Linux build files less-maintenance intensive.
* doc/en-EN/Makefile
* config/dos/global.cf
* config/dos/install.cf
* config/doc.cf
! Fixes to prev. Nothing is simple in the world of DOS.
'copy' restored for general purpose to avoid idiotic
and unavoidable Microsoft xcopy message:
"Does destination specify a file name or directory name on the target
(F = file, D = directory)?"
* Using xcopy for install purposes only.
* Change the way above idiotic message is avoided. Made the
hack local to Makefile. It doesn't work either way, but at
least it lets it run.
* make_gnu.bat
* Minor.
* config/dos/global.cf
! Typo in prev.
* ChangeLog
- ChangeLog-old
* Restored unified ChangeLog. I know it has some drawbacks,
like longer loading time with some apps, but it's much
more elegant this way and easier to search in it.
* config/dos/global.cf
! Fixed to use xcopy instead of copy to 'install' files.
This means long filenames (and also casing) will be retained.
This also means that now 'install' actually works.
It may also mean that creating a DJGPP build isn't anymore
possible on a pure DOS system, I can't remember when xcopy
was introduced. Anyway I think it's better to have this
requirement than not having a proper DOS build at all
(since long years).
This also means that our DOS release cannot even be *used*
in pure DOS environment, since our long filenames will
be chopped when extracting the distro .zip. Only final
.exes are able to run under DOS.
We still have the option to implement full short name
support, but I'm not sure this has any importance anymore.
If we don't want to do this, we can finally lift some
restrictions which tied our hands so far, based on the
fact that DOS builds cannot even be created and run on
real DOS. So, this means:
- We may use long filenames as distro name.
- We may convert DOS platform as a target only platform,
similar to WinCE/ARM.
- If we do the above, we may even embed our DOS
libs in Windows distro, and build DOS apps using
hbmk2 hello.prg -arch=dos
- We may use long filename anywhere in our tree.
(but we must check first if long names are also
supported for headers, dirnames and source names)
If you have an opinion, please tell.
* config/dos/global.cf
! Adding ending pathsep to DOC_SUBDIR to make xcopy happy
and not ask if the target is a file or directory.
; TOFIX: Anyhow, DOC_SUBDIR feature simply doesn't work since
very long, so we should do something about it in the future.
* debian/changelog
+ Added new version entry. (Thanks Guy)
* bin/postinst.bat
! Added workaround to make it work under DOS.
(avoiding 'Out of environment space' error)
+ mpkg_dos.bat
+ Added DOS package generator batch. Very similar
to mpkg_win.bat, maybe we should merge them in
the future.
* mpkg_win.bat
* Using short name for main dir, just to sync it with
DOS version.
* utils/hbformat/hbformat.prg
+ Changed default GT to GTCGI.
* utils/hbmk2/hbmk2.prg
! Added workaround for dos/djgpp anomaly in hb_DirBase()
(and also hb_ProgName()) where path contains forward
slashed instead of backslashes.
; TOFIX: In core.
* source/vm/Makefile
! Disabled hbvmall for dos build because of thid djgpp error:
---
gcc -I. -I../../../../include -Wall -W -O3 -c ../../hvmall.c -ohvmall.o
In file included from ../../../../include/hbmath.h:60,
from ../../itemapi.c:97,
from ../../hvmall.c:67:
c:/devl/djgpp/include/libm/math.h:97: error: redefinition of 'struct exception'
---
* contrib/hbblat/hbblat.hbc
* contrib/hbhpdf/hbhpdf.hbc
* Minor formatting.
* INSTALL
+ Added minimum tested version of MinGW.
* make_gnu.bat
+ Added echo to display errorlevel after running GNU Make
if it's not zero. Eventually I'd like to add proper
error display in case GNU Make returned with error
(not that GNU Make doesn't display it), but first I'd
like to inspect how it works (there is no documentation
about returned errorlevels).
* config/win/mingw.cf
! Fixed 'del' command receiving wrongly formed path seps
in non-msys mode when lib creation failed.
* ChangeLog
! Typo in one yesterday's entry.
+ config/mingw32-make.exe
+ Added GNU Make (Windows, 32-bit) executable (size: 173KB),
this is the version recommended by INSTALL, found here:
https://sourceforge.net/project/showfiles.php?group_id=2435&package_id=23918
* make_gnu.bat
* Modified to utilize above GNU Make binary for Harbour
Windows/WinCE builds in order to make one thing less to
worry about for users wishing to build from source.
From this point the only two requirements for building
Harbour are a C compiler and the source itself. Much less
things to go/get wrong. If this works out good, we can
remove a few instructions from INSTALL.
If someone wants to override supplied version (not very
good idea, but who knows) the supplied version has to be
replaced by custom version.
In case group thinks it's onorthodox or inappropriate
(or outright illegal) to have such binaries stored in
our repository, please shout, it's not yet late to undo
this change.
Also please test.
* include/hbsetup.h
+ Added MSVS 2010 version information.
* contrib/gtwvg/wvggui.c
- Temporarily disabled whole file for MSVS 2010 due to lots
of compilation errors, similar to the ones recently seen
with letdb. (errors posted on the list)
* utils/hbmk2/hbmk2.prg
! Fixed to use hb_osPathSeparator() instead of hardcoded
backslash in mingw* init section, as it may also be used
on *nix in cross compilation scenarios.
! Dropped .exe extensions from mingw* init section to also
work on *nix systems.
* Extended xmingw, mingw32ce detection for all *nix systems.
* contrib/hbodbc/odbc.c
! Cast.
* INSTALL
* config/global.cf
* Removed requirement of 3.81 or upper GNU Make, now it's a
recommendation only. If I understand correctly after
2009-05-22 16:28 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
older ones can also be used without parallel build feature.
Lowered minimum version to 3.70.
* utils/hbmk2/hbmk2.prg
+ Added automatic configuration for bcc compiler. This kicks in
for bcc installations missing bcc32.cfg or ilink32.cfg next to
bcc32.exe. In this case Lib/Include dir will automatically
added to the lib/include lists by hbmk2. This means that
hbmk2 will work with bare bcc installations without doing any
manual configuration.
* config/global.cf
+ Added link to blog dealing with GNU Make.
* harbour/source/rdd/workarea.c
* formatting
* harbour/source/vm/Makefile
* minor cleanup
* harbour/config/dir.cf
! added protection against double build call when -j<n> is used in
install phase
* utils/hbmk2/hbmk2.prg
+ Added support for source file parsing for headers in -inc mode.
.prg, .c and .rc files are currently parsed recursively,
include paths will be scanned for included files. There are
currently three levels of scanning: disabled, partial (default)
and full. Partial will scan the first 16K of each source file
for performance reasons, full will scan the complete files.
The source parser is currently very simple; '#include "<filename>"'
pattern is recognized anywhere in the processed source, no
other variations are supported ATM. Using this format is IMO
best practice for user programs, if someone needs more
than this, it needs to be developed, current method is quite
fast, which is important when dealing with lots of source
files.
+ Added option to control header scanning: -[no]head=<mode>
This is also supported in .hbp files.
+ Added support to look in current dir for libs for compilers
where this is supported.
+ Added cmdline option -resflag=, .hbp option resflags= and
overall support for user supplied resource compiler flags.
+ Added support for cyg*.dll style libs.
! Fixed to handle libs with explicit dirs for compilers
where this is supported.
* config/dos/owatcom.cf
* config/win/owatcom.cf
* config/linux/owatcom.cf
* config/os2/owatcom.cf
+ Added link to wlink options.
* INSTALL
* Minor.
* utils/hbmk2/hbmk2.prg
! Fixed to add 'lib' prefix when -hblib option is used with
GCC family compilers.
! Fixed to not override compiler output when -hblib option is used.
* contrib/hbqt/generator/hbqtgen.prg
+ contrib/hbqt/Makefile_gen
* contrib/hbqt/Makefile
+ Added Makefile_gen which holds the generated part of
the Makefile. This way there is no (less) hidden make
logic inside hbqtgen.
* config/wce/global.cf
- Removed gtwin.
; TODO: Move GT inclusion logic to GT local Makefiles.
* harbour/doc/Makefile
! removed unexisting license.txt file
* harbour/include/hbapidbg.h
* do not export Harbour debugger functions. If someone wants to create
3-rd party debugger then we should agree the list of functions which
should be public.
* harbour/include/hbstack.h
* minor cleanup in some definitions
* harbour/include/hbdefs.h
+ added HB_DLL_ENTRY_POINT macro to set default DLL entry point for
different Windows compilers
* harbour/source/vm/maindllh.c
* harbour/source/vm/maindllp.c
* use HB_DLL_ENTRY_POINT macro
* harbour/include/hbsetup.h
* added internal macro to disable flatten optimization
* harbour/include/hbmath.h
* harbour/source/rtl/math.c
* make default math error handler function static
* harbour/include/hbatomic.h
+ added atomic inc/dec inline asm code to OW x86 builds
* harbour/source/rtl/console.c
* small code reorganization to not mix public and private function calls
* harbour/source/rtl/hbregex.c
* harbour/source/hbpcre/_hbpcreg.c
* do not use hb_xfree() function pointer directly to avoid problems
with different calling conventions.
* harbour/config/win/owatcom.cf
* harbour/config/os2/owatcom.cf
* removed unnecessary in recent OpenWatcom versions explicit wlink.lnk
including.
* doc/Makefile
! Removed license.txt.
* INSTALL
+ Added Windows/Windows CE build examples.
Cleaned mingw64 and mingwce cross-builds.
* mpkg_win.bat
* Using make_gnu.sh instead of make_gnu_xmingwce.sh
for mingwce target for uniformity.
* utils/hbmk2/hbmk2.prg
! Fixed silly typo causing RTE if compiler autodetection
fails to detect any tier-one compilers (or none).
+ Added automatic postfixing external Harbour executable
name if hbmk2 executable name is also prefixed. Currently
-x64 and -ia64 are recognized. Useful to call harbour-x64.exe
/ harbour-ia64.exe when hbmk2-x64.exe / hbmk2-ia64.exe is used.
* make_gnu_xmingwce.sh
* config/rules.cf
* config/win/mingwce.cf
* config/win/poccce.cf
* config/win/msvcce.cf
* config/wce/global.cf
* Moved -D__PLATFORM__WINCE to .cf files. This also fixes
missing __PLATFORM__WINCE for poccce and msvcce targets.