* config/bsd/gcc.cf
* config/wce/msvcarm.cf
* config/wce/mingwarm.cf
* config/wce/poccarm.cf
* config/darwin/gcc.cf
* config/hpux/gcc.cf
* config/dos/watcom.cf
* config/dos/djgpp.cf
* config/win/watcom.cf
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/win/bcc.cf
* config/linux/watcom.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/instsh.cf
* config/dirsh.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
% Removed spaces before $(foreach) parameters. A space is
automatically added by GNU Make, so it's not needed. May
save a little bytes here and there and command look more
tidy (source looks a little bit clumsier though).
* config/bin.cf
+ Harbour binary core liblists are now formed centrally.
Four variations are generated:
HB_LIBS_ST_RDD
HB_LIBS_MT_RDD
HB_LIBS_ST_NORDD
HB_LIBS_MT_NORDD
Binaries can choose by using: 'LIBS = $(HB_LIBS_*)'.
Important to use '='.
This step also fixes potential problems with former liblists,
where it was easy to make a local mistakes and some libs which
needed more complicated logic, or which were just rarely used
simply weren't added. Now all liblists are guaranteed to have
proper order and content.
HB_GT_LIBS and HB_DB_DRIVERS are automatically added centrally,
so no need to add them manually in each compiler specific .cf.
* tests/Makefile
* tests/hbpptest/Makefile
* tests/multifnc/Makefile
* utils/hbformat/Makefile
* utils/hbmk2/Makefile
* utils/hbtest/Makefile
* utils/hbi18n/Makefile
* utils/hbrun/Makefile
% Using above HB_LIBS_* macros.
; The only few places which I didn't thouch is non-Harbour
executables (harbour exe and hbpp exe).
* config/bsd/gcc.cf
* config/wce/msvcarm.cf
* config/wce/mingwarm.cf
* config/wce/poccarm.cf
* config/hpux/gcc.cf
* config/darwin/gcc.cf
* config/dos/watcom.cf
* config/dos/djgpp.cf
* config/win/watcom.cf
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/win/bcc.cf
* config/linux/watcom.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
% Deleted local logic to merge HB_GT_LIBS and HB_DB_DRIVERS
into LIBS.
* utils/hbmk2/hbmk2.hbp
* utils/hbrun/hbrun.hbp
! Extra libspecs are still needed for some compilers.
I've readded them until better solution is found.
* config/wce/mingwarm.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
% Deleted system libs not needed for core Harbour.
* config/wce/mingwarm.cf
* config/win/mingw.cf
% Using := instead of = in one place.
* config/globsh.cf
* config/bsd/gcc.cf
* config/wce/msvcarm.cf
* config/wce/mingwarm.cf
* config/wce/poccarm.cf
* config/darwin/gcc.cf
* config/hpux/gcc.cf
* config/dos/djgpp.cf
* config/win/cygwin.cf
* config/win/mingw.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/linux/sunpro.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/sunos/sunpro.cf
% Using ':=' instead of '=' where possible.
(incomplete. pass two)
The rest is really the core and need deeper examination
of ordering and variable dependency. There is probably more
room for improvement.
* config/global.cf
! Switched to use HB_FLAGSEXTRA for __PLATFORM__ macros instead
of cumulating HB_USER_PRGFLAGS. It didn't work in linux/watcom
builds from win hosts. This way also HB_HOST_FLAG_ isn't needed.
* config/wce/global.cf
- Deleted commented HB_FLAGSEXTRA line.
* source/hbpcre/_hbconf.h
* Minor formatting.
* harbour/config/global.cf
! yet another fix for exporting relative paths in HB_BIN_COMPILE
* harbour/config/wce/global.cf
! disabled HB_FLAGSEXTRA=-D__PLATFORM__WINCE
-D__PLATFORM__WINCE is already added in global.ch
- config/hpux/dir.cf
* config/hpux/global.cf
- config/hpux/install.cf
- config/darwin/dir.cf
* config/darwin/global.cf
- config/darwin/install.cf
- config/dos/dir.cf
* config/dos/global.cf
- config/dos/install.cf
* config/win/global.cf
- config/win/install.cf
- config/win/dir.cf
- config/linux/dir.cf
* config/linux/global.cf
- config/linux/install.cf
- config/os2/dir.cf
* config/os2/global.cf
- config/os2/install.cf
- config/sunos/dir.cf
* config/sunos/global.cf
- config/sunos/install.cf
- config/bsd/dir.cf
* config/bsd/global.cf
- config/bsd/install.cf
- config/wce/dir.cf
* config/wce/global.cf
- config/wce/install.cf
* Minor change in dos specific dirbase:: checks. Should be
equivalent.
* darwin/gcc was running RANLIB on install. I've removed
this for now and if ranlib is required on Darwin, it
should be readded to gcc.cf.
* config/os2/gcc.cf
* Changed to not rely on LIB_FILE_OS.
* config/dir.cf
+ config/dirsh.cf
* config/global.cf
+ config/globsh.cf
* config/install.cf
+ config/instsh.cf
! Fixed NT vs dos shell detection. (hopefully)
+ Shell dependent logic merged and moved into new *_sh.cf
files. The filename is ugly, but couldn't yet find a better one.
This means a great deal of redundancy is now removed, plus
now cross-platform combinations aren't limited by missing
shell support. New shells can now be added with much less work.
; Please test, it's possible that I made some mistakes along the way,
and haven't tested bash yet. Nor OS/2 obviously.
* config/global.cf
* config/win/global.cf
* config/linux/global.cf
* config/os2/global.cf
* config/wce/global.cf
+ Changed host CPU detection.
+ Added automatic __PLATFORM__* macro configuration in cross-build
situations.
+ Enhanced target/host CPU detection and decisions based on them.
+ Added automatic HB_BIN_COMPILE setup if not specified by user.
In such case Harbour build will automatically look for the first
available native build and use that.
+ Protected detection related screen messages with HB_BUILD_VERBOSE=yes.
* Minor sync in shell command definition order.
* INSTALL
% User set __PLATFORM__* macro tweaks not needed anymore.
* bin/postinst.cmd
* bin/postinst.bat
* bin/hb-func.sh
* addins -> addons
(hm, which is better?)
* config/dos/global.cf
* config/global.cf
* config/win/global.cf
* config/linux/global.cf
* config/os2/global.cf
* config/wce/global.cf
+ COMSPEC detection centralized. Added command.com defaulting in DOS shells.
* Some 'MK:=' changed to 'MK='. (maybe ':=' is the correct one, I just
syncing yet)
+ Added IA64 detection.
+ Not giving warning on missing HB_BIN_COMPILE on some host-target
combinations which don't require it (win32 on win64 and dos on win32).
* config/dos/global.cf
% Simplified an if construct. QUESTION added.
* config/hpux/install.cf
* config/darwin/install.cf
* config/dos/install.cf
* config/win/install.cf
* config/install.cf
* config/linux/install.cf
* config/os2/install.cf
* config/sunos/install.cf
* config/bsd/install.cf
* config/wce/install.cf
! Restored previous install rule setup, to fix hbpp combined
lib/bin install case.
; QUESTION: How to use multiple commands in a non-bash (= batch)
INSTALL_RULE variable? This would be needed to support
automatic addition of install dirs with non-bash shells.
* config/darwin/install.cf
* config/hpux/install.cf
* config/dos/install.cf
* config/install.cf
* config/win/install.cf
* config/linux/install.cf
* config/os2/install.cf
* config/sunos/install.cf
* config/bsd/install.cf
* config/wce/install.cf
* Little tweak to install rules to allow multiline rules
on non-bash shells.
Maybe there is another way, but couldn't find it.
; This is a step towards moving install dir creation to
GNU Make level.
* config/darwin/global.cf
* config/hpux/global.cf
* config/dos/global.cf
* config/win/global.cf
* config/linux/global.cf
* config/os2/global.cf
* config/sunos/global.cf
* config/bsd/global.cf
* config/wce/global.cf
+ Added dir creation for executables.
This is a preparation step towards generating executables
inside bin/<ARCH>/<COMP>.
* Dir creation on OS/2 shells changed a bit, I hope it works,
and I'm not sure if it was intentional to use a different
solution than DOS/NT shells, since there is only GNU Make
logic involved. Anyhow, please test.
* config/dos/global.cf
% Deleted (unused) RANLIB reference.
* Makefile
! Adjusted a little bit to postinst.bat executed for Linux
cross builds also.
* doc/linux1st.txt
* source/rtl/Makefile
* config/hpux/global.cf
* config/darwin/global.cf
* config/dos/global.cf
* config/win/global.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/linux/watcom.cf
* config/linux/global.cf
* config/os2/global.cf
* config/sunos/global.cf
* config/bsd/global.cf
* config/wce/global.cf
* config/wce/poccarm.cf
- Deleted references of already halfly-deleted HB_GT_LIB
support. Users should use -DHB_GT_LIB=<gtname>. HB_GT_LIB
also has a different, special purpose in os2, this is still
kept, but it would be better to use some other names for it.
! Fixed linux/watcom to suppress .elf extension of binaries
when built on a non-Linux host.
- Deleted extra GT libs from link list. Now all *portable* GTs
plus the default one are *linked*, and all GTs are always
attempted to be *built*.
- Deleted checking GT libs extistance. They always exist
unless the source tree is corrupted, so there is no point
to do this check.
* wce/poccarm now always have /SUBSYSTEM:WINDOWS.
; NOTE: If we want to support build-time default GT selection/override,
we should find some proper ways, but it makes things
very complicated without much benefit, since GT can be
easily overridden in final apps, supplied binary tools can
also very easily rebuilt using hbmk2 with whatever GT.
* utils/hbmk2/hbmk2.prg
* Minor formatting.
* INSTALL
+ Added Linux build on NT host example.
* utils/hbmk2/hbmk2.prg
+ Added support for most watcom cross-compile situations.
(os2/linux/dos on win, os2/linux/win on dos, dos/win/linux on os2,
dos/win/os2 on linux - I didn't test them all obviously)
! Some fixes regarding Linux targets on non-Linux hosts cross
build situations. This is brand new situation.
! Synced watcom/os2 flags with build ones to avoid hbmk2 build errors
on os2.
! Fixed linux/watcom object extension, which appears to be .obj
when using non-Linux hosts.
* make_gnu.bat
* Linux cross-build support.
! Fixed to find make_gnu.sh when doing partial builds using
bash on Windows.
* config/win/global.cf
* config/win/install.cf
* config/linux/dir.cf
* config/linux/global.cf
* config/linux/install.cf
* config/os2/global.cf
* config/os2/install.cf
* config/wce/global.cf
* config/wce/install.cf
+ install bash section synced across linux/windosos2 platforms.
+ empty target handling synced across linux/windosos2 platforms.
+ Added support to linux build files for cross builds on
Windows and OS/2 hosts.
; TODO: Whole install/global/dir.cf logic is just crying to be moved
to central location and be branched by host platform/shell
rather than target platform.
; Please check me on the linux changes, could be that I messed it up.
* source/rtl/Makefile
+ Enabled to try building all GTs on every platform.
Local autodetection should take care of the decision to finally
build it or not.
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gtsln/Makefile
+ Added self-detection for external headers just like it's done
in contribs. This is required to support Linux cross-builds on
Windows. (djgpp + curses ends with build errors)
+ Added GPM autodetection.
+ Enabled gttrm for cygwin. (only in local make file)
; TOFIX: Remove such detection logic from make_gnu.sh (it's
now redundant and doesn't work for djgpp/cygwin)
* source/rtl/gtwin/gtwin.c
* source/rtl/hbgtcore.c
* contrib/xhb/txml.prg
* Minor formatting.
* 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.
* 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.
* 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).