* source/vm/Makefile
+ Enabled "amalgamated" VM lib for all compilers/platforms,
except for those where this doesn't give any advantage, or
it breaks the build, these are: pocc*, xcc, bcc, dmc.
Please note that Open Watcom 1.7 might also fail (I didn't
test), so make sure to upgrade to 1.8.
* harbour-win-spec
* harbour-wce-spec
* mpkg_win.bat
* mpkg_tgz.sh
* harbour.spec
* bin/hb-func.sh
* include/hbsetup.h
* source/vm/Makefile
* source/vm/fm.c
- source/vm/fm
- source/vm/fmmt
* utils/hbmk2/hbmk2.prg
- Removed hbfm and hbfmmt lib references. These libs are
no longer generated or used.
* Narrowed HB_FM_STATISTICS presence in various source
files. From now on the system default for all builds is
HB_FM_STATISTICS_OFF. We may change this to
HB_FM_STATISTICS_DYN_OFF if we find a solution to the
potential and actual problems with this method.
If someone needs to change mem stat default, it can be
done by ususal means.
* utils/hbmk2/hbmk2.prg
+ Added support for envvar HB_VISUALC_VER_PRE80 to signal
older MSVC versions (just like in Harbour builds).
+ Synced mscvarm optimization switches.
The sync between hbmk2 and Harbour build switches is
now done. The only - intentional - difference is that
hbmk2 won't set any explicit C compiler warning level,
but this also can be implemented later with optional
switches.
! Fixed regression in win/icc linker name.
* utils/hbmk2/hbmk2.prg
! Fixed -strip for gcc family. It got broken after switching
to separate link phase.
! Fixed -bind_as_load and -multiply_defined suppress to be
passed at link phase on darwin. Got broken like above.
Change not tested.
! Fixed RTE in FINDNEWERHEADERS(3064).
* utils/hbmk2/hbmk2.prg
+ Added -opt/-noopt switch (plus .hbp param) to control
C compiler optimizations.
+ Added C compiler optimizations to all compilers identical
to the ones used to build Harbour. Specifically MinGW,
MSVC got new switches, bcc got -6, owatcom got fully
synced.
+ Added internal support for C++ mode selection for all
compilers.
+ Added -debug support for all compilers where it was missing
(most).
! Synced poccarm switch with Harbour build.
- utils/hbmk2/examples/minigui.hbp
+ utils/hbmk2/examples/hmg.hbp
+ Harbour MiniGUI hbmk2 param file updated
and instructions added. Now it's possible
to build hmg apps using hbmk2 very easily,
see instructions in file.
* utils/hbmk2/examples/hwgui.hbp
+ hwgui hbmk2 param file updated and
instructions added. Now it's possible
to build hwgui apps using hbmk2 very easily,
see instructions in file.
* source/vm/itemapi.c
* source/rtl/hbffind.c
* contrib/hbct/atnum.c
! Fixed macro related warnings.
* utils/hbmk2/hbmk2.prg
+ Added support for wildcarded input files for Harbour,
C, resource compiler and object input files.
This also works in .hbm files. Note: You must specify
the extension, so *.* won't work, but *.prg and *.c will.
Use with care, as hbmk2 will pickup everything and this
may not be what you want to do f.e. in our tests dirs,
but it can be useful if you store source files belonging
to the same project in one dir, or with some unique
filename prefix.
(some of these may be unnecessary on *nix platforms, where
the shell does such expansion already, it's still useful
though, as *nix users can also benefit from wildcard usage
inside .hbm files)
* utils/hbmk2/hbmk2.prg
% Skipping duplicate headers while walking the inclusion tree.
This is a more efficient way to avoid inclusion loops,
allowing deeper recursion.
+ Recursion level increased to 10 (from 4).
* 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.
* utils/hbmk2/hbmk2.prg
+ Added -inc support for lib dependencies. This means that
changed libs will also force a target rebuild.
I've implemented three separate logic for mingw/cygwin,
gcc/linux+sunos and the rest of compilers. This may not
be precisely the way each of the hbmk2 supported compilers
wotk, but it probably covers most cases. Anyhow please
tweak and correct if you find some problems. I did
tests with mingw, msvc, bcc static and shared mode.
! Removed automatic path tweak in .hbp/libpaths=.
* utils/hbmk2/hbmk2.prg
! Fixed bcc targets linking wrong (own bcc) PCRE engine instead
of the Harbour one by reordering lib list. This should fix
hbtip problems reported on the list.
* utils/hbmk2/hbmk2.prg
+ libpaths= can now have relative paths specified, and in this
case the path will be adjusted by absolute path of host .hbp.
This makes it possible to point hbmk2 to a .hbp file in a
foreign dir, and let it pick up local lib dirs automatically.
+ .hbp files passed without absolute paths will now inherit
the .hbm path if applicable.
+ Will now echo all explicitly specified .hbp filenames on
screen in -info mode.
+ Added echo= support in .hbp files. The parameter will be
echoed to stdout as is.
+ Added macro support for following .hbp lines:
libpaths=, prgflags=, cflags=, ldflags=, echo=.
Supported macros are:
${hb_root}: hbmk2 base dir
${hb_parent}: .hbp file dir
${hb_arch}: architecture
${hb_comp}: compiler
${<envvar>}: any envvar
+ .hbp files are now searched in libpaths, too.
; NOTE: With above changes it's possible to refer to a 3rd
party lib solely by pointing to its .hbp file, from
that point all lib/include paths can be automatically
picked up. Here's an example for hwgui, the file
needs to be places in hwgui root dir:
---
{win}prgflags=-i${hb_parent}include
{win}cflags=-I${hb_parent}include
{win}libpaths=${hb_parent}lib
{win}libs=hwgui hwg_qhtm procmisc hbxml
{win}gt=gtgui
---
Any hwgui apps can be compiled with this command:
hbmk2 appname.prg C:\hwgui\hwgui.hbp
* contrib/hbtip/tests/dnldftp.prg
% Minor opt.
* utils/hbmk2/hbmk2.prg
+ Added support for -hbdyn option with bcc. .dll is created
but I cannot test if it's usable.
! Worked around strange behaviour of filefind API, when it will
return 'filename.extx' when we're looking for '*.ext' files.
This can be seen with Directory().
* utils/hbmk2/hbmk2.prg
! Fixed additional bcc link parameter to honor GUI/CUI mode.
This should fix the command window for GUI GTs.
* utils/hbmk2/examples/hwgui.hbp
! Fixed.
! Added gt=gtnul.
* utils/hbmk2/hbmk2.prg
! Fixed Borland stub for both GUI and CUI mode.
This bug surfaced now that a separate link phase is always used.
! Fixed handling of libpaths with '-' chars in them for bcc.
* utils/hbmk2/hbmk2.prg
* Changed to put user supplied lib to the beginning of the lib
list. This should fix situations where user lib is overriding
some Harbour objects (like getsys).
+ Added internal switch to enable simple -inc debug.
! Fixed to add .prg extension for Harbour input files when
checking their timestamp, so files passed without extension
will now work in -inc mode.
+ contrib/hbcurl/hbcurls
+ contrib/hbcurl/hbcurls/Makefile
* contrib/hbcurl/Makefile
+ Added generation of static flavour of hbcurl. This can
be used to link against static libcurl.
* utils/hbmk2/hbmk2.prg
! Fixed target exe name with msvc.
! Added /debug link switch for msvc in -debug mode.
* utils/hbmk2/hbmk2.prg
+ Added -clean option to clean incremental work files and dir.
+ Added -rebuild option to force full rebuild in incremental mode.
* utils/hbmk2/hbmk2.prg
* Autodetection of embedded MinGW installation is now done
*after* trying to detect user installed compiler. This way
it's more natural to use the unified build as it will
automatically use the user's C compiler if setup. It's also
easier to override MinGW in unified builds, since there
is no need to force compiler using -comp: option, it's
enough to put preferred C compiler in the PATH.
* utils/hbmk2/hbmk2.prg
+ Added -workdir:<dir> cmdline option to override default
working dir (arch/comp) in -inc mode.
+ Added support for working directory in -inc mode.
Due to lack of output dir option in certain compilers
(most sadly in gcc family), these compilers will have to
be executed for each input file, slightly reducing
performance. I hope some day their developers will add such
basic option.
+ -quiet option will now suppress the header lines for
executed commands, creating a good progress output with
'-trace -quiet'.
! Fixed output related regressions in msvc/bcc.
* Removed explicit warning level settings from C compiler
options. User can override if needed.
* Returns errorlevel 19 instead of 9 in help mode. Now
returns 9 if the working dir couldn't be created.
! Fixed resource compiler command for bcc, msvc, pocc.
Turns out none of them supported multiple inputs.
% Minor code size optimization in target output dependency
checking.
* utils/hbmk2/hbmk2.prg
! Fixed to delete stub object in -inc mode.
! Fixed to handle .res input files with MinGW compilers.
+ Now using different extension (.reso) for compiled .rc and
.res file with MinGW compilers instead of former .o extension
which could collide with source files with the same name.
* utils/hbmk2/hbmk2.prg
* Added separate compile and link phases for gcc family.
Please retest, this may cause regressions.
* win/bcc made to use separate compile/link phases in all
cases.
+ Added simple progress in -inc mode.
! Fixed to detect target timestamp in hblib/hbdyn modes.
* utils/hbmk2/hbmk2.prg
+ Added support for incremental build mode. Still a work in
progress, many combinations weren't tested and some features
may not work with certain compilers yet. (bcc/msvc/pocc/owatcom
should be working, only msvc was tested)
+ Added support for multiple resource input files for mingw
and owatcom.
+ Added support for inc=on/off .hbp option.
+ msvc targets now use separate link phase. This will automatically
enable incremental linking if target already exists.
! Fixed not prepending CCPATH to resource compiler in mingw mode.
* tests/speedtst.prg
! Fixed missing hb_progname() for non-Harbour compilers.
* include/hbextern.ch
+ Added time related new functions.
* utils/hbmk2/hbmk2.prg
+ Added -runflag: option to pass flags to target executable.
+ Started -inc (incremental link) support. It's very early
stage, don't expect it to work yet and please don't report
any problems with this feature yet.
* source/vm/asort.c
! Fixed to return Clipper compatible results when non-logical
non-numeric value is returned from ASORT() codeblock.
* utils/hbtest/rt_array.prg
* Cleaned ASORT() tests when sorting block returns constant value.
Now Clipper results aren't bent anymore, instead I've added
different expected results for Harbour and Clipper. The
difference is due to different sorting algorithms used,
here the point is to get similar *pattern* for different
invalid values.
* source/rtl/philes.c
% HB_FGETDATETIME(): Removed double call to hb_stortdt().
* contrib/hbqt/tests/hbqt.hbp
* Removed extra line at EOL.
* contrib/gtqtc/tests/hbqt.hbp
! Removed environment dependent 'libspath=' line.
Please don't add such path to Harbour SVN, since these
can differ from system to system and is also non-portable.
The correct name of the directive is: 'libpaths='.
* contrib/gtqtc/Makefile
% Removed double SVN ID.
This file needs to be updated according to hbqt latest
Makefile portability changes.
* contrib/rddads/ads1.c
* Minor formatting.
* utils/hbmk2/hbmk2.prg
+ Added executable / dll compression using -compr switch.
hbmk2 uses UPX, which needs to be in PATH to work.
Not having UPX won't cause a fatal error even when -compr
switch is specified.
* utils/hbmk2/hbmk2.prg
! Possible fix for *nix shared lib problem when Harbour
is installed in system location. Couldn't test it.
* ar now called with 'rcs' parameter (was: cr).
Advertized as runlib equivalent, but it doesn't seem to
make any difference.
* bin/postinst.bat
! Fixed shared executable creation for cross-builds.
* utils/hbmk2/hbmk2.hbm
* utils/hbi18n/hbi18n.hbm
% Added -nulrdd. This will remove the hbmk2 build size overhead
compared to GNU Make built executables.
* utils/hbmk2/hbmk2.prg
! Don't add the same libdir twice in some cases.
+ Added support for wce arch in remaining places.
! Added hbmainwin and hbmainstd for mingw targets.
This should fix some failing shared lib scenarios I've
experienced with minwgce. I hope it doesn't break
everything else (tested mingw64 and mingw scenarios worked).
* Internal change to handle shared libname separately
so that special extensions and handling can be added
for it, if needed.
* utils/hbmk2/hbmk2.prg
! Fixed to properly set errorlevels. For some reason I thought
returning a number from MAIN() will set the errorlevel. Now
using ErrorLevel() function.
* contrib/hbqt/generator/rebuild_hbqt.bat
* Added errorlevel checking after hbmk2 call.
! Removed HB_COMPILER check.
* bin/hb-mkdyn.bat
* owatcom tweaks. Build is still going dunno if this will be okay.
* contrib/hbqt/generator/rebuild_hbqt.bat
* Added hbmk2 dir.
* utils/hbmk2/hbmk2.prg
! Fixed stupid MSVC typo.
* utils/hbmk2/hbmk2.prg
+ Added --hbdirbin, --hbdirlib, --hbdirinc
+ Added --version and --help to help screen.
! Changed to use OS native slashed in path when calling harbour executable.
+ -quiet will now suppress messages when -traceonly option is used.
Script dumps will still have a header for clarity.
+ Will now dump harbour executable name to Harbour command -trace
output, even if internal compiler is used.
* utils/hbmk2/hbmk2.prg
! Fixed finding shared libs since /lib/<arch>/<comp> lib path
autodetection was added. Please test.
+ Added -traceonly cmdline switch which will display all commands to
be executed, without actually executing them. Notice that this isn't
a complete "dry" run, as some temp files will may be created and
normally created temp files are deleted along the process.
* contrib/hbqt/Makefile
! Fix to include statement.
* utils/hbmk2/hbmk2.prg
+ Enabled rtlink/blinker parsing code, so now hbmk2 will
work as a plugin replacement for clipper, rtlink/blinker/exospace
when renamed to these names. Example:
---
> copy hbmk2.exe clipper.exe
> copy hbmk2.exe rtlink.exe
> clipper hello.prg
> echo OUT myhello FI hello > rtl.lnk
> rtlink @rtl.lnk
---
* 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-wce-spec
* INSTALL
* bin/postinst.bat
* Makefile
* make_gnu.bat
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* contrib/gtalleg/Makefile
* contrib/hbodbc/Makefile
* contrib/hbtpathy/Makefile
* contrib/hbole/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/generator/hbqtgen.prg
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbwin/Makefile
* source/vm/Makefile
* source/vm/vmmt/Makefile
+ Added wce arch and mingwarm/msvcarm/poccarm support.
In parallel with old win/mingwce|msvcce|poccce support.
As soons as this new one work, the old one will be deleted.
* make_gnu.bat
! Fixed to work like rest of targets for GCC family.
It will now only initiate a 'clean install' if HB_BUILD_DLL=yes.
* utils/hbmk2/hbmk2.prg
+ Added Przemek's code for rtlink/blinker script parsing.
Not yet activated.
* utils/hbmk2/hbmk2.prg
+ Added support for pocc64, poccce. Not tested.
This is a very gray area for pocc. Currently it doesn't work
because polib is broken and doesn't generate an implib:
POLIB: fatal error: Internal error (create_archive_file).
; TOFIX: poccce also doesn't work, but this is probably solvable,
there are unresolved externals when linking.