* utils/hbmk2/hbmk2.prg
+ Added filter support to -o option.
+ Added macro support to -o option.
! Fixed missing win system libs from bcc linker command.
IMPORTANT: bcc users will have to make sure they add bcc PSDK
lib to their bcc32.cfg and ilink32.cfg files,
otherwise hbmk2 won't work for them:
--- bcc32.cfg
-I"C:\devl\BCC55\Include"
-L"C:\devl\BCC55\Lib";"C:\devl\BCC55\Lib\PSDK"
--- ilink32.cfg
/L"C:\devl\BCC55\Lib";"C:\devl\BCC55\Lib\PSDK"
---
(or manually pass that with -L option to hbmk2)
* -i option moved to main help screen.
* utils/hbmk2/examples/fwh.hbp
+ Added odbc32 lib.
* harbour/include/hbrddcdx.h
* harbour/source/rdd/dbfcdx/dbfcdx1.c
+ added support for numeric indexes which store keys as modified
32bit big endian integer values - undocumented VFP hack.
* harbour/source/common/hbdate.c
! fixed decoding fractional part of seconds in timestamp expressions
when less the 3 digits were used.
* harbour/source/rtl/dateshb.c
+ added optional logical parameter to hb_TSToStr() function to enabled
packed/stripped form
* harbour/source/rtl/valtoexp.prg
% use hb_TSToStr() with new pack parameter in hb_ValToExp() and hb_CStr()
* utils/hbmk2/hbmk2.prg
! Fixed to find headers in originating file directory.
This may need further tweaking. This works a little
differently in Harbour and C compilers and hbmk2 tries
to mimic both. Possible that it's still not fully
compatible, if you know something pls speak up.
+ Added -incpath= option and incpaths= .hbp option. This
is now the preferred method to add headers paths. All
path will be added to both Harbour and C compiler.
Important: a synonym for this switch is simply -i, just
like before, but now the path will be also added to
C compiler command line.
* From now on Harbour include dir will always be the first
one on the include path list passed to compilers. Before
in Harbour it was always first, in C compilers it was
always last. (disregarding include dirs passed directly
to compiler, which will always come first, but isn't
recommended). The ordering is thus this:
compiler ... flags harbourincludedir incpaths ...
- Deleted include path option detection, from now on
only those paths will be scanned wich were passed to
hbmk2 via -incpath/-i options.
% Added -kmo optimization for hbmk2 source.
+ -info and -quiet will now work in .hbm files.
(they will not control some close-to-startup messages
if specified this way though)
* external/libhpdf/Makefile
* external/libpng/Makefile
+ Enabled for darwin.
* contrib/hbqt/generator/hbqtgen.prg
! Recent fix to hbqt.h applied to generator.
* utils/hbmk2/hbmk2.hbm
- Removed no longer needed -km switch.
* utils/hbmk2/examples/hmg.hbp
* utils/hbmk2/examples/hwgui.hbp
* utils/hbmk2/examples/fwh.hbp
% Updated to use -incpaths=
* utils/hbmk2/examples/fwh.hbp
* Updated to work like similar hwgui and hmg files.
; QUESTION: Is hbwin lib required for FWH?
* harbour/contrib/hbqt/hbqt.h
! fixed QT directory names in #include directives for case sensitive
file systems
* harbour/source/vm/cmdarg.c
! fixed HB_CMDLINE() to work with linear not square cost.
* utils/hbmk2/hbmk2.prg
+ -quiet will now suppress command output in case of error.
This is useful when the commands are large and it makes
valuable tool output visible.
! Fixed recent typos in help code causing RTE.
* utils/hbmk2/hbmk2.prg
+ Using hb_process*() functions instead of hb_run() to elminiate
some bad side effects of the former (like command line limits
on Windows). hb_run() is now only used in DOS builds.
* harbour/include/hbcomp.h
* harbour/source/common/hbdate.c
* harbour/source/rtl/strmatch.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/filesys.c
* enabled some POSIX function added to 1.8 Linux OpenWatcom builds
and cleaned some workarounds not longer necessary
* harbour/source/rtl/hbproces.c
+ added hack with small sysconf() implementation which is still missing
in OpenWatcom 1.8. Now it's possible to build Harbour in Linux using
officially distributed OpenWatcom 1.8
* harbour/source/rtl/disksphb.c
* added TODO warning message
* harbour/source/compiler/cmdcheck.c
! fixed typo in memory freeing in repeated -p<path> options
* utils/hbmk2/hbmk2.prg
! Fixed to inherit .hbm dir before doing wildcard expansion.
This makes wildcarded input files work in .hbm files
located in different than current dirs.
* utils/hbmk2/hbmk2.prg
+ .c header detection now takes place before doing anything.
Also compiler setup got moved to the beginning of the
process.
This allows to make a stop if something is missing. Some
more steps are needed to exploit that in practice.
Please test, this may cause regressions, I didn't test
all combinations.
* Generalized internal support for header location detection.
(now can support any C compiler and it's also possible to
add this feature for .prg files if needed)
+ Added new filter keywords: allgcc, allwin, allmingw, allmsvc,
allpocc, allicc.
+ Added support for include dirs with spaces for msvc and mingw.
* utils/hbmk2/hbmk2.prg
+ Added experimental support for header directory autodetection.
This means that you can pass a list of possible dirs to use
when a .c header cannot be found in explicitly passed locations.
! Fixed to always disable -shared with -hbdyn.
! Added hbmaindllp in -hbdyn mode on win|wce.
! Fix in -nohbp parameter handling.
+ Added support for macros in -L, -*flag=, -workdir=
+ Added -stop command line parameter which stops execution.
Can be used in conjunction with arch/comp filters to stop
execution on certain platforms/compilers.
! Fixed to not create workdir in some unlikely combination of options.
! Fixed typo causing newer headers not being detected in resource files.
+ Now 'unix' can also be used in filters to check for any *nix platform.
% Excluding some well-known headers from parsing (windows.h, ole2, os2.h
currently)
; Above changes makes it possible to use hbmk2 to build our contribs.
The only missing feature is 'install', what is a simple copy.
---
-ohbpgsql
# just for the sake of an example, not needed for real hbpgsql.
-stop{dos}
-inctrypath=${HB_INC_PGSQL}
-inctrypath={unix}/usr/include
-inctrypath={unix}/usr/local/pgsql/include
-inctrypath={unix}/usr/local/pgsql/include/libpq
-inctrypath={unix}/usr/include/pgsql
-inctrypath={unix}/usr/include/postgresql
-inctrypath={unix}/postgres/include
-inctrypath={unix}/opt/local/include/postgresql83
postgres.c
pgrdd.prg
tpostgre.prg
---
* contrib/hbole/oleinit.c
* contrib/hbole/hbwinole.h
* Cleanups in header usage and content. This should fix
missing hb_oleInit() symbol on some compilers.
* contrib/examples/pp/hbpptbl.c
- Removed HB_EXTENSION protected two lines.
* harbour/contrib/gtqtc/gtqtc.h
* harbour/contrib/gtqtc/gtqtc.cpp
* harbour/contrib/gtqtc/moc_gtqtc.cpp
* harbour/contrib/gtqtc/tests/hbqt.hbp
+ IMPLEMENTED : Resizing - Though some more refinement is necessary
but as a proof of concept it is working.
Window is now centered upon startup.
* harbour/contrib/gtqtc/Makefile
! Adopted along hbqt/Makefile pattern.
+ harbour/contrib/gtqtc/tests/wvtext.prg
+ Added harbour/tests/wvtext.prg here also.
Change in only HB_GT_QTC_DEFAULT.
This facilitates the comparison between GTWVT and GTQTC
+ Added harbour/tests/tests.ico
Used as hb_gtInfo( HB_GTI_ICONFILE, 'tests.ico' )
* harbour/contrib/gtqtc/gtqtc.h
* harbour/contrib/gtqtc/gtqtc.cpp
* harbour/contrib/gtqtc/moc_gtqtc.cpp
+ IMPLEMENTED :
Fired Events : HB_GTE_SETFOCUS | HB_GTE_KILLFOCUS | HB_GTE_RESIZE
Cursor : SC_NONE | SC_NORMAL | SC_SPECIAL1 | SC_SPECIAL2
! IMPROVED : Many artifacts.
* harbour/contrib/gtqtc/tests/demoqtc.prg
! Modified to demonstarte above changes.
NOTE: GTQTC is complete on base level. Only few gliches remain for
cursor management under certain circumstances. The lib is
tested on Winsow XP and QT 4.5 (2009.01). I am sure there
may be few issues coming up more you test on different
platforms.
So I am looking for feedback especially from *nix users.
(::) At this point I will request Przemek to review gtqtc.c.h
and point me to optimization it may require.
* harbour/contrib/gtqtc/gtqtc.h
* harbour/contrib/gtqtc/gtqtc.cpp
* harbour/contrib/gtqtc/moc_gtqtc.cpp
! Fixed more Windows specific contents. It should compile
on *nixes now [ Qt::WindowCloseButtonHint could be the exception ]
+ Implemented timer event.
+ Implemented PALETTE functionality of GTWVT.
+ Implemented drawing console output to an image first and then
rendered onto the screen. This requirement is initiated because
nowhere I found a way to mimic blinking CARET.
The proof of concept is implemened through part of image
rendering in a timer event. It may introduce some overhead
but please be noted that we have to live with it until we
reach a proper solution.
Rendered to image and then flushed to screen is a powerful
feature of QT and we may take use of it in many ways in future.
Probably QTWVG will exploit it to maximum if we do not
plan some extenstions in GTQTC.
* harbour/contrib/gtqtc/tests/demoqtc.prg
! Demonstrated implemented facts as above.
Note the BLINKING block on the console, may be,
implemented as a replacement to windows caret.
* 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.
* harbour/source/vm/garbage.c
+ added optional support for automatic GC activation.
It's not enabled by default yet but by compilation with macro
HB_GC_AUTO, f.e. after setting envvar:
set HB_USER_CFLAGS=-DHB_GC_AUTO
Automatic GC activation may be necessary for code which creates
complex variables with cyclic references and does not execute
any other code which may activate idle state GC call. It also
makes unnecessary to explicitly call hb_gcAll() from user code,
f.e. as some type of background task. If some of you were using
code which needed such explicit GC activation then please remove
it and make some tests with Harbour compiled with HB_GC_AUTO macro.
This simple .prg code illustrates the problem. When linked with HVM
without automatic GC it quite fast allocates all available memory
and finished with out of memory error or is interrupted by OS.
When automatic GC is enabled it can work unlimited time period
with some fixed maximum memory usage.
proc main()
local a
while .t.
a:={nil}
a[1]:=a
enddo
return
* harbour/contrib/gtqtc/gtqtc.cpp
* harbour/contrib/gtqtc/gtqtc.h
! Fix to many unsuppoted defines on *nixes.
Przemek, please compile again. Probably by now it will
only 'WindowCloseButtonHint' error may appear. But reading
the documents QT nowhere specifies that it is platform
dependant member. Can you please comment out
#define QT_VERSION 0x040500 in hbqt.h and compile again.
It is left-over residual.
* 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=.
* harbour/contrib/gtqtc/gtqtc.cpp
* harbour/contrib/gtqtc/gtqtc.h
* harbour/contrib/gtqtc/moc_gtqtc.cpp
* harbour/contrib/gtqtc/tests/demoqtc.prg
! More complete.
No more (IMO) Windows specific calls.
Please let me know if it compiles fine on *nixes ?
* 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.