* utils/hbmk2/hbmk2.prg
+ Added -[no]ignore option which tells hbmk2 to ignore
errors returned by compiler tools and continue as normal.
Useful to gather all build errors in one pass.
! Fixed hbmk2 errorlevel on resource compiler error.
* 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.
* bin/postinst.bat
+ Added .hbc search paths: /contrib, /contrib/rddsql, /addins, /examples.
NOTE: addins will be the directory where 3rd party addins
can be added.
* utils/hbmk2/hbmk2.prg
* Refinements to path handling of -icon= parameter.
- utils/hbrun/hbrun.rc
* utils/hbrun/hbrun.hbp
* Switched to use -icon option instead of .rc file.
* contrib/hbtip/client.prg
! Minor cleanups and fixes to proxy handling.
% Deleted second parameter from HB_BASE64() calls.
* contrib/hbtip/smtpcln.prg
% Deleted second parameter from HB_BASE64() calls.
* 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.
* utils/hbmk2/hbmk2.pt_BR.po
+ Portuguese translation. Work of Vailton Renato. Thank you very much.
* contrib/hbxbp/tests/demoxbp.prg
! Fixed to use lowercase extensions. Please remember that
uppercase extensions are only used in DOS.
* contrib/hbxbp/xbpbitmap.prg
! Fixed warning.
* utils/hbmk2/hbmk2.prg
* Minor.
* INSTALL
* Minor corrections.
* utils/hbmk2/hbmk2.prg
+ Added app bundle generation for OS X targets in -gui mode.
It's experimental yet. (f.e. clean will not clean it f.e.)
Thanks to Teo Fonrouge for the hints.
* Using escapting function (instead of manual escaping) when
launching Windows apps on NT.
; TOFIX: hb_FCopy()
* source/rtl/fscopy.c
+ Now it will copy flags on *nix systems (just like __COPYFILE()).
* source/rtl/copyfile.c
* Minor formatting.
; TODO: Add generic app icon support. Possible?
* utils/hbmk2/hbmk2.prg
* commandResult() merged into hbmk_run().
This also means that 'getFirstFunc()' will now use
hb_process*() API on non-DOS platforms to retrieve
stdout output of 'nm' command executed.
; Przemek, could you please review this logic? It may be
wrong according to one of your recent mails. In this
case, maybe the temp file method should be used on all
platforms.
* utils/hbmk2/hbmk2.prg
* Cleanups to command substitution support. Added examples.
! Fixed RTE due to typo. This code branch was activated
today, due to the MT optimization modification.
* make_gnu.bat
- Deleted pocc64 autodetection. With newer versions this wouldn't
work just mask normal pocc autodetection.
* contrib/xhb/hboutdbg.c
% Cast.
* utils/hbmk2/hbmk2.prg
+ Added support for `<command-creating-stdout>` type of macro
in all options where regular macros are accepted.
It's now possible to use this in an .hbp file:
-cflag={unix&gcc}"`wx-config --cflags`"
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
% reduced INASSING definition - thanks to Xavi for information
* harbour/source/compiler/hbopt.c
! fixed stupid bug in logical expression optimization - thanks to Randy
for self contain example
* harbour/include/hbapi.h
* harbour/include/hbmacro.h
* harbour/include/hbexprb.c
* harbour/source/vm/macro.c
* harbour/source/vm/hvm.c
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
+ added direct support for pushing references to macro expressions.
It resolves the problem with Clipper compatibility (thanks to Alex
for information and example) in code like:
m->var := {0}
&("var[1]") += 10
and also many other things, f.e. now Harbour can cleanly compile
and execute this code:
proc main
local s
m->o := errorNew()
s:="o:tries"
? m->o:tries
? &s
? &(s+"+=2")
? m->o:tries
? &(s+":=3")
? m->o:tries
?
&s := 4
? m->o:tries
&s -= 2
? m->o:tries
&s++
? m->o:tries
?
s := "o"
m->o := 1
? &s
&s := &s + 4
? &s
? &s += 5
? --&s
?
s := "o[2]"
m->o := { 1, 2 }
? &s
&s := &s + 4
? &s
? &s += 5
? --&s
return
* harbour/utils/hbtest/Makefile
* force hbtest compilation with line numbers - information about line
numbers is important part of this test.
* utils/hbmk2/hbmk2.prg
! Fixed regression (when implementing filename escaping)
with forming libnames specified with an absolute path on
gcc-family compilers. This broke building qt apps on darwin,
and -shared support on *nix.
* contrib/Makefile
* Moved hbxbp to the end of list as a workaround for potentially
outdated hbqt.ch reference, if it's before hbqt build.
Still not prefect though. We should probably fix the ordering
of -I option in build process, but it doesn't seem trivial.
Or avoid installing headers into central include dir, but that
also leads far.
* utils/hbmk2/hbmk2.prg
* Minor step to fix a recent regression.
* source/rtl/hbzlibgz.c
* HB_GZDIRECT() is now always defined in core, if it's built against
older zlib version, it will simply do nothing.
We can discuss how to handle this situation, all have pros and cons:
1) Always define: Throw RTE at runtime.
2) Always define: Return error at runtime.
3) Don't define if low-level wrapper isn't present. Makes it
easy to catch missing dependencies on .prg level, but it
break Harbour to provide a consistent higher level API.
* examples/hbextern/hbextern.prg
! Minor fix in generated comment.
* examples/hbextern/hbextern.hbp
+ -w2 -> -w3
* ChangeLog
! Wrong header in previous entry.
* contrib/hbqt/hbqt_qimage.cpp
* contrib/hbqt/hbqt_qtextdocument.cpp
* contrib/hbqt/hbqt_qapplication.cpp
* contrib/hbqt/hbqt_qtextcursor.cpp
* contrib/hbqt/hbqt_qclipboard.cpp
* contrib/hbqt/hbqt_qurl.cpp
* contrib/hbqt/hbqt_qwebhistoryitem.cpp
* contrib/hbqt/hbqt_qvariant.cpp
* contrib/hbqt/hbqt_qfont.cpp
* contrib/hbqt/hbqt_qimagereader.cpp
* contrib/hbqt/hbqt_qcursor.cpp
* contrib/hbqt/hbqt_qfontdatabase.cpp
* contrib/hbqt/hbqt_qcoreapplication.cpp
* contrib/hbqt/hbqt_qobject.cpp
* contrib/hbqt/hbqt_qtextframe.cpp
* contrib/hbqt/hbqt_qabstractitemmodel.cpp
* Minor EOF change after regerenating them with hbqtgen.
(probably it would be better to generate only one EOLs at
EOF by hbqtgen)
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
! Changed special language ID macro from ${lng} to %{hb_lng} to
avoid collision with normal macros.
* include/hbapifs.h
* source/rtl/filebuf.c
* source/rtl/filesys.c
* Changed file I/O buffer parameters from
'( [const] BYTE * )' to '( [const] void * )'
* utils/hbmk2/hbmk2.prg
+ Added ${hb_curdir} macro support.
+ Added ${hb_first} macro support (will return first source name
specced on cmdline)
+ Added support for 'sources=' line in .hbc files. This
will accept .prg, .c/.cpp, .po/.pot, object and resources.
For resources, also wildcards are supported. Files with
no extension will be considered .prg.
This also replaces former 'pos=' line.
This can be useful to put some central sources into all
project without using a lib (or when a lib isn't an option
for some reason).
- man
- Dir deleted.
* 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.
* mpkg_dos.bat
* mpkg_win.bat
* make_gnu.bat
* Now make_gnu.bat will also install libs to lib/<arch>/<comp>
by default. This will enable default settings to work in
multi-compiler mode.
; NOTE: hbmk script may need to be adapted for this change,
to add lib/<arch>/<comp> to libpath. Only MinGW + msys
users using hbmk *script* are affected though.
* contrib/hbqt/hbqt_slots.cpp
! Fixed QT_QDEBUG() to map to QT function even on Windows.
(no OutputDebugString() here please)
! Fixed wrong hb_itemPutCPtr() usage. Here, only string
allocated by Harbour functions can be used. Attaching
foreign string pointers will produce serious problems.
This fixes one GPF reported by Lorenzo on Linux.
! Renamed static vars to have 's_' prefix.
! Commented unused SlotsExecFocusEvent(). This fixes the
MinGW warning.
! Fixed to use hb_snprintf() instead of unsafe sprintf().
% Events::eventFilter() simplified.
* Formatting.
* source/rtl/gtwvt/gtwvt.c
! Fixed hb_gtInfo( HB_GTI_SCREENSIZE ) called with invalid parameter.
(untested, please test)
* contrib/gtwvg/gtwvg.c
! Fixed hb_gtInfo( HB_GTI_SCREENSIZE ) called with invalid parameter.
! Fixed hb_gtInfo( HB_GTI_SETPOSANDSIZE ) called with invalid parameter.
(untested, please test)
* contrib/hbxbp/tests/demoxbp.prg
! Fixed FUNCTION not returning value.
* utils/hbmk2/hbmk2.prg
* Cleanup to path separator handling in .hbc files found
automatically.
* utils/hbmk2/hbmk2.prg
! Rewritten PathNormalize().
Previous version had problems with relative paths, didn't
normalize everything possible and always added an ending
backslash. This new one hopefully fixes all these problems.
It also won't touch empty paths.
I'd appreciate if someone could take a reviewers look at
the code, it's now actually much simpler.
; beta2 release delayed a bit because of this change.
* mpkg_win.nsi
* Changed from MUI to MUI2. (no visible changes)
* harbour-win-spec
* harbour-wce-spec
* mpkg_win.bat
* include/hbver.h
* harbour.spec
* Changed version to 2.0.0beta2 (from 2.0.0beta1)
; NOTE: Everyone is encouraged to create binary releases
for various platforms and try this new version with real apps.
We can even upload these binary releases to sf.net.
* utils/hbmk2/hbmk2.prg
* Minor internal cleanup regarding macro marker chars.
% Not including libpaths containing late-evaluation macros in
actual commands.
* Cleaned handling of paths added from .hbc. Now slashes are
properly formed and paths are normalized.
* INSTALL
* Minor in new section.
* include/hbapi.h
* include/hbapiitm.h
* source/vm/itemapi.c
* source/vm/arrays.c
* source/vm/extend.c
! Fixed hb_parvc() function to return NULL in case an array
is passed as Harbour level parameter. This makes this function
(and _parc()) fully CA-Cl*pper compatible.
; Please review maybe there is a lighter patch to achieve this
goal. I had to add NULL versions for two functions downstream.
* utils/hbmk2/hbmk2.prg
* Formatting.
* utils/hbmk2/hbmk2.prg
+ Added filter support for input file types .rc, .res, .o, .obj, .c, .cpp.
! Fixed filter support for some existing cases with input files.
+ Added special support for escaping filenames inside watcom
command script file. Of course this is different from common
command line escaping rules. I didn't try to find out the details,
but for simple spaces, it now works. If someone wants to tweak
them, they go under the name _ESC_SINQUOTE_WATCOM.
* utils/hbrun/hbrun.hbp
* utils/hbrun/hbrun.rc
* Changed the way harbour.ico is referred to. Now the dir of
it is passed as include dir and no dir is used inside the .rc
file. This was needed to make watcom happy, which counts
relative dirs in #include from cwd, rather than from host
file.
* harbour/bin/hb-func.sh
* harbour/utils/hbmk2/hbmk2.prg
* updated automatic first function detection to decode non symbol
characters in C function names
* utils/hbmk2/hbmk2.prg
* Changed ${hb_self} macro to ${hb_dir}
+ Added ${hb_name} macro which translates to the container
filename (so f.e. in hbwin.hbc it will be "hbwin")
+ Added "late-evaluation" macros in libpaths= lists,
when looking for .hbc files. Late eval macros are marked
with %{}. This feature means you can setup
'libpaths=contrib/%{hb_name}' and when looking for
'hbwin.hbc', it will look for it in contrib/hbwin dir.
* libpaths/-L values will not be checked for existence before
adding them to internal lib list.
; All this means that it's now possible to setup contrib
libs and headers in their own directory while keeping the
"zero-conf" work environment. IOW contrib libs and directories
don't need to "pollute" central lib/header dir. This also
means that we can lift lots of restrictions regarding
naming, since only lib name needs to be unique, headers
don't (it's still good practice though since one users
may want to use both contribs at the same time), they
also don't bother those users who aren't using them. This
system also makes it very easy to add 3rd party libs to
the contrib dir. So in this sense it's basically a fully
open "plugin" system for any libs.
It's very easily possible to add 'examples', or 'extras'
subtrees to libpath also.
From the user side, it looks like this (without any extra
configuration or any path specs):
> hbmk2 myprogram.prg hbwin.hbc hbct.hbc
; QUESTION: Where such contribs (with libs and headers)
could go on a *nix system? While developing
above stuff I had the unified Windows installer
in mind, but it would be good to adapt these
on *nix systems, too.
+ contrib/xpp/xpp.hbc
+ Added .hbc file for xpp lib.
* utils/hbmk2/hbmk2.prg
! Deleted first empty string parameter passed to HB_COMPILE()
function. AFAIR it seems it was needed so far (or was ignored,
but I've put it there for some reason), but after recent fix,
it's interpreted as empty filename, which seems logical.
* utils/hbmk2/hbmk2.prg
! Always escape filenames/paths if they contain "-" char.
(on Windows).
(this could recently cause a regression with BCC)
* include/hbapi.h
! Missded change from previous commit.
* bin/postinst.bat
+ hbrun is now built also in non-dll mode at the end of the
build process, so it gets built with the icon.
Probably we should switch to using hbmk2 to build these
extra tools, eventually.
* contrib/gtwvg/Makefile
! Disabled for mingw C++ mode.
Due to fatal errors reported to the dev list.
* contrib/hbwin/hbwinole.h
! Fixed for mingw C++ mode.
+ package
+ package/harbour.ico
+ Added harbour.ico to central place.
* utils/hbmk2/hbmk2.prg
- Deleted support for HB_COMPILET=gpp. Use -cpp switch instead.
- utils/hbrun/hbrun.ico
* utils/hbrun/hbrun.rc
* Using central harbour.ico.
* mpkg_win.nsi
+ Added Harbour icon to the installer executable.
* utils/hbrun/hbrun.hbp
+ utils/hbrun/hbrun.rc
+ utils/hbrun/hbrun.ico
+ Added Harbour icon to hbrun executable (on Windows).
Thanks to Vailton Renato for the .ico.