* INSTALL
+ Extended Linux deb/rpm sections:
- Added list of base packages
- Listed actual active distro names
- Added pkg install command for various rpm distros
- Added link to webpage containing extensive information
about pkg management commands on different distros
+ Added SUNWsvn package for OpenSolaris.
* harbour.spec
! Typo in comment.
+ Added 'DISCONTINUED' comments to those distros which are
(suprise!) discontinued.
* contrib/hbwin/wapi_winbase.c
! Fixed to set internal getlasterror value in WAPI_FORMATMESSAGE().
Thanks Xavi.
* contrib/hbwin/wapi_err.c
! Fixed to include 'hbwapi.h'
Thanks Xavi again.
* config/global.mk
+ Added autodetection of Gentoo Linux package manager.
* contrib/hbbtree/hb_btree.c
+ Added two TOFIX notes. Both reported on the list previously.
* config/global.mk
! Fixed to not require HB_BIN_COMPILE is host and target
platform is the same, host is x64 and target is x86.
x64 hosts can run x86 binaries. (pls shout if you know
any exception)
* INSTALL
+ Added extra info to openSUSE section.
; TODO: Update .rpm/opensuse section.
* harbour.spec
+ Added initialization of HB_USER_DFLAGS.
; TOFIX: Current setup doesn't allow passing -m32 to force 32-bit
.rpm builds on 64-bit systems.
; TOFIX: OpenSUSE 10.2 uses 'gpm' instead of 'gpm-devel'.
* contrib/hbqt/hbqt.hbc
* contrib/hbqt/hbqts.hbc
* Changed to enable -hbcppmm only on win and os2 platforms.
I don't know about linux, but on darwin this option caused
this error:
hbide(70507,0x7fff708a0be0) malloc: *** error for object 0x1019d3948: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap
* config/wce/msvcarm.mk
+ Added -nxcompat and -dynamicbase to .dll link command.
(I'm unsure what -dynamicbase is good for in a .dll, but it's
accepted and set)
! Fixed to add -nxcompat/-dynamicbase for MSVC 2008 and upper.
(it's also possible to use it with MSVS 2005 SP1 though, but
build won't detect this case)
* include/hbwince.h
* Formatting.
* src/vm/dlmalloc.c
! Fixed two potentially uninitialized variables, signaled by MSVC.
* src/common/hbgete.c
+ Changed to use native SetEnvironmentVariable() API instead of
forced ANSI one.
* src/common/hbwince.c
* include/hbwince.h
% Deleted unused ANSI Windows API stubs.
+ Added empty SetEnvironmentVariable() stub for WinCE
builds where it's missing.
* Reconfigured these stubs:
SetCurrentDirectory()
GetCurrentDirectory()
GetComputerName()
GetUserName()
* config/win/global.mk
* Comment updated.
* config/win/msvc.mk
+ Added -nxcompat and -dynamicbase to .dll link command.
(I'm unsure what -dynamicbase is good for in a .dll, but it's
accepted and set)
! Fixed to add -nxcompat/-dynamicbase for MSVC 2008 and upper.
(it's also possible to use it with MSVS 2005 SP1 though, but
build won't detect this case)
* INSTALL
+ Added free SVN book link.
* src/vm/extrap.c
% Marked exception filter callback as 'static'
; TOCHECK: Please verify that OS/2 still works this way.
* src/rtl/oemansi.c
! Fixed two tabs.
* src/rtl/gtwvt/gtwvt.c
* contrib/gtwvg/gtwvg.c
* contrib/rddads/adsfunc.c
! Fixed to not use unsafe/ANSI CharToOemBuffA() API.
; Please review me.
* config/win/mingw.mk
+ Added information about MinGW alternatives for MSVC
security features. Unfortunately they need Cygwin
binary plus some depend on MinGW host platform
and/or version.
* include/hbwince.h
* src/common/hbwince.c
- Deleted CharToOemBuffA(), OemToCharBuffA(). No longer
needed by Harbour.
; TODO: Delete rest of not anymore used ANSI WinAPI
functions. Now Harbour never uses ANSI
WinAPI functions in UNICODE mode.
* config/win/global.mk
- Deleted reference to CharToOemBuffA(), OemToCharBuffA().
* src/vm/extrap.c
* contrib/hbwin/win_prn3.c
+ Added TOFIXes for unsafe function usage:
IsBadWritePtr(), IsBadReadPtr(), lstrlen(), lstrcpy(), lstrcat()
; QUESTION: Any idea how to fix that? win_prn3.c can
probably be fixed with some good general coding
idea.
* contrib/hbwin/wce_smsc.c
! Fixed to not use unsafe CRTL functions.
* src/rtl/oemansi.c
! Rewritten HB_OEMTOANSI() and HB_ANSITOOEM() to not use
Windows API functions marked as unsafe. New version is a bit
slower but won't mark Harbour apps as unsafe in an audit.
; Please test and review.
* utils/hbmk2/hbmk2.prg
* config/wce/msvcarm.mk
* config/win/msvc.mk
% Deleted -Gs MSVC option. Testing with MSVC 2008 I've found
this have no effect on x86 builds, and it makes x64 builds
slighly less efficient by forcing stack checks in each function
call. This seems to contradict MSDN, which doesn't suggest such
difference between x86 and x64:
http://msdn.microsoft.com/en-us/library/9598wk25.aspx
% Deleted -GS- MSVC option used for wce targets for MSVC >= 8.00.
'-GS-' will disable stack cookies (on by default), thus trading
app size/speed for security. Maybe this is preferred for wce
users, but in Harbour I'd rather opt to pass this decision to users
for all targets.
Enable with: HB_USER_CFLAGS=-GS- / -cflag={allmsvc}-GS-
MSDN:
http://msdn.microsoft.com/en-us/library/8dbf701c.aspx
* INSTALL
* Updated valgrind example.
* contrib/hbnetio/utils/netiosrv.hbp
* utils/hbformat/hbformat.hbp
* utils/hbmk2/hbmk2.hbp
* utils/hbi18n/hbi18n.hbp
* utils/hbtest/hbtest.hbp
* utils/hbrun/hbrun.hbp
* config/wce/msvcarm.mk
* config/win/msvc.mk
+ Added MSVC linker switches to enhance security by
enabling NX compatibility and ASLR.
Especially important for server apps like netiosrv and hbrun.
; TODO: Enable the same for MinGW.
; TOCHECK: Please test this with old MSVC versions and MSVCARM,
maybe we will need to disable them in some cases.
; QUESTION: I'm unsure of -fixed:no MSVC option. Do we need it
to increase security?
* config/wce/msvcarm.mk
+ Changed to use link.exe for linking instead of cl[arm].exe.
This now syncs it with rest of Harbour.
* config/global.mk
% Applied optimization sent by Tamas Tevesz.
% Applied little further optimization.
* One variable renamed.
- Deleted checking for MAKE_381 when using 3.81 features.
Now 3.81 is the minimum required so there is no point.
* config/global.mk
% Applied little optimization from Tamas Tevesz.
* contrib/hbide/idemisc.prg
+ hbide_PathProc()
This function can combine relative paths together so it's
the key to avoid macros dealing with placing paths to their
intended location. It can replace current method of
<IdeSrc> = hb_dirBase(). F.e.:
hbide_PathProc( "src/mysource_in_project.prg", "projects_dir/" ) ->
"projects_dir/src/mysource_in_project.prg"
hbide_PathProc( "projects/myproject.hbi", hb_dirBase() ) ->
"C:/harbour/contrib/hbide/projects/myproject.hbi"
Please use it.
; TOFIX: Since hbide seems to intend to support a hbrun-like
command prompt, maybe it's a good idea to prefix all
public functions with hbide_, otherwise there will
be problems when name collision occurs with user code.
If this is not the goal, we can leave it.
* INSTALL
* Clean Linux .rpm section, added full install commands just
like for Ubuntu, added qt45-devel, added more description.
(not tested, I don't have .rpm based distro)
* config/global.mk
! Fixed debian package manager detection, as suggest by
Tamas Tevesz.
* config/global.mk
+ Added rudamentary package manager detection (so far for
darwin and linux). Please extend. This will allow to make
proper dependency checking in detect.mk.
* src/common/hbtrace.c
! Fixed some leftover causing error on non-win.
% Replaces \r\n with \n in printf() calls.
[TOMERGE 2.0]
* config/win/bcc.mk
+ Added -CP437 bcc option as default, so that it fixes compilation
on windows systems are setup to use certain (f.e. far east)
multibytes codepages as default non-Unicode CP.
* harbour-win-spec
* harbour-wce-spec
* harbour.spec
* include/hbver.h
* config/global.mk
* Changed version to interim version number
2.0.1dev (from 2.0.0)
* harbour-win-spec
* harbour-wce-spec
* harbour.spec
* include/hbver.h
* package/winuni/RELNOTES
* config/global.mk
* Changed version to 2.0.0 (from 2.0.0rc1)
* package/winuni/RELNOTES
* Finalization (djgpp -> watcom)
* package/winuni/mpkg_win_uni.nsi
! Fixed uninstallation of Start Menu on Vista/Win7, at the
same time it won't ask for admin credentials anymore on
these OS versions.
* MS-DOS/OS2/Linux libs are now not selected by default.
* config/dos/watcom.mk
* config/dos/djgpp.mk
* Disabled .dll generation for MS-DOS build for now.
dos/watcom doesn't work, dos/djgpp needs special fixes
in djgpp to work.
In the meantime, for testing purposes they can be
enabled using: HB_BUILD_DLL=dostest
* harbour/config/bsd/gcc.mk
+ added c i s to ar parameters
* harbour/src/vm/estack.c
* formatting
* harbour/include/hbtypes.h
% replaced #ifdef ... / #undef ... with simple #undef
* harbour/include/hbgtcore.h
* harbour/include/hbapigt.h
* moved declaration of hb_gtSetDefault() from hbgtcore.h to hbapigt.h
* harbour/include/hbapi.h
* harbour/src/vm/hvm.c
+ added new function hb_vmSetDefaultGT()
* harbour/bin/hb-func.sh
* harbour/utils/hbmk2/hbmk2.prg
* use hb_vmSetDefaultGT() to set default GT
* removed extern declarations for functions defined in hbapi.h
* harbour/src/vm/dynlibhb.c
+ added support for HB_LIBLOAD()/HB_LIBFREE() in DJGPP 2.04 builds
* harbour/config/global.mk
* use 8.3 names for harbour dynamic libraries in all DOS builds
* harbour/config/dos/djgpp.mk
+ added support for dynamic libraries (DXE) in DJGPP builds.
DXE is sth similar to DLL in Windows and can be used with
DJGPP 2.04. I had to make some modifications in DXE header
files to make it working so it will not work in default DJGPP
installation. I'll document these modifications in the future.
* harbour/config/dos/watcom.mk
* enable creating of harbour dynamic libraries only when HB_BUILD_DLL
is explictly set by user to 'yes'. In DOS DJGPP and OpenWatcom builds
DLLs support is not functional yet.
* harbour/config/dyn.mk
* added an option to create harbour dynamic libraries from static
ones instead of .o|.obj files. It's necessary for DXE3GEN which
internally calls LD which has some limited on maximum size of passed
parameters.
TODO: make HB_DYN_LIBS definition common for dyn.mk and lib.mk
* harbour-win-spec
* harbour-wce-spec
* include/hbver.h
* package/winuni/RELNOTES
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* harbour.spec
* config/global.mk
* Changed version to 2.0.0rc1 (from 2.0.0beta3)
; TODO: Please also change debian/changelog.
; Rehearsing version change, I don't plan to make binary
release of this interim version.
* doc/codestyl.txt
* Minor update.
I don't plan a full update this time, as we have a huge
amount of well formatted source code, and it's pretty
consistent too, so it's enough to peek into any one of
them for a perfect example. So if someone needs and
example, just look under src/* for both .c and .prg.
* config/common/watcom.mk
* config/global.mk
* config/rules.mk
! Added relatively ugly hack to change dir separators in CC_RULE in
a generic way. It's ugly because it's only needed for non-linux
Watcom C (not C++!) builds, but this way it's possible to avoid
CC_RULE override in common/watcom.mk. CC_RULE override didn't
implement dynlib support, which meant that after switching
to C mode as default for watcom, dynlib generation got broken
on win and os2.
* src/compiler/hbmain.c
* src/compiler/cmdcheck.c
* src/compiler/hbcomp.c
* src/compiler/hbusage.c
* include/hbcompdf.h
+ Added support for -i- and -i+ options. They will disable/enable
handling of INCLUDE envvar.
* config/rules.mk
+ Added -i- Harbour compiler switch to avoid any interference
with user set INCLUDE envvars.
* harbour/include/hbsetup.h
* harbour/include/hbdefs.h
* harbour/include/hbthread.h
* harbour/src/common/hbver.c
* harbour/bin/hb-func.sh
* harbour/bin/postinst.sh
* harbour/config/linux/gcc.mk
+ harbour/config/linux/open64.mk
+ added support for Open64 C/C++ compiler in Linux builds
* harbour/src/common/hbver.c
* removed unnecessary casting compiler version number parameters
to 'short'
* extended the size of szBuf buffer as requested by Tamas
* harbour/include/hbatomic.h
* removed 'static inline' from OpenWatcom ASM functions defined
by '#pragma aux ...' to make OpenWatcom < 1.8 happy.
Version 1.8 ignores 'static inline' attributes in such declarations.
* harbour/config/dos/watcom.mk
* harbour/utils/hbmk2/hbmk2.prg
* switched from DOS/4GW to DOS/32A extender. It's faster what is
noticeable also in final Harbour binaries, does not have DOS4G
command line limitations and has nice tools which allow to easy
set different runtime parameters (ss.exe) or compress final
executable (sc.exe)
BTW people having problem with maximum command line size in
OpenWatcom tools can replace DOS/4GW with DOS/32A in this tools
It can be made also globally by coping dos32a.exe to dos4gw.exe.
NOTE: I've found why DOS Harbour OpenWatcom application created
in my Linux box were not working. Just simply the directory
with DOS extender setup files was not in PATH.
Creating DOS OpenWatcom applications in other systems (i.e.
Linux or OS2) do not forget to add directory with DOS binaries
'%WATCOM%\binw' to PATH after directory with platform native
OpenWatcom binaries '%WATCOM%\bin*' or copy DOS extender
(dos32a.exe) to one of PATH directories.
* harbour/config/dos/watcom.mk
* added workaround for not included automatically by linker CLIB
library when Harbour is compiler in pure C mode. I hope it's only
temporary hack which we can remove in the future. I haven't added
it to hbmk2 so linking DOS applications using hbmk2 user will have
to add -lclib3r to hbmk2 parameters.
* harbour/config/common/watcom.mk
* disable DOS/32A banner messages
* contrib/hbqt/Makefile
+ Added generic support to MOC compile headers.
; If this works out well, it makes it possible to use granular
(non-monolythic) headers for 'Q_OBJECT' classes.
It's also possible to move this logic into sub-libs.
This may also mean that some hacks which were currently
employed can be solved cleanly.
Please test/review.
* contrib/hbqt/hbqt_slots.h
+ contrib/hbqt/hbqt_hbqtableview.h
* contrib/hbqt/hbqt_hbqtableview.cpp
* contrib/hbqt/qth/QTableView.qth
* contrib/hbqt/hbqt_hbdbfmodel.cpp
* contrib/hbqt/qth/QAbstractItemModel.qth
+ contrib/hbqt/hbqt_hbdrawingarea.h
* contrib/hbqt/hbqt_hbdrawingarea.cpp
+ contrib/hbqt/hbqt_hbqmainwindow.h
* contrib/hbqt/hbqt_hbqmainwindow.cpp
+ contrib/hbqt/hbqt_hbqsyntaxhighlighter.h
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/qth/QSyntaxHighlighter.qth
+ contrib/hbqt/hbqt_events.h
* contrib/hbqt/hbqt_events.cpp
* Split monolithic hbqt_slots.h header to distinct
class headers.
* contrib/hbqt/generator/hbqtgen.prg
- contrib/hbqt/filelist.mk
* contrib/hbqt/Makefile
* Changed to not generate central filelist.mk.
(no dynamic files in central lib)
* config/rules.mk
- Deleted .l reference.
* contrib/hbqt/qtgui/QSyntaxHighlighter.cpp
* contrib/hbqt/qtgui/QTableView.cpp
* contrib/hbqt/qtcore/QAbstractItemModel.cpp
* Regenerated.
* src/macro/Makefile
- src/macro/macro.l
* src/compiler/Makefile
- src/compiler/harbour.l
- src/compiler/fixflex.c
* INSTALL
* config/c.mk
* config/rules.mk
* Deleted references to Flex and related files.
Flex is not used since long. It couldn't generate MT safe lexer code.
* harbour/contrib/hbtpathy/tpunix.c
! fixed tty raw IO mode setting
* reduced CRTSCTS redefinition to WATCOMC and Linux, added small
comment about it and iTODO compile time warning if CRTSCTS is
not defined.
TODO: make some cleanup and extensions for *nix version of this
library.
* harbour/config/os2/watcom.mk
* disabled -s from GTSTD compile time parameters to test possible
workaround for OW problems in MT mode and APIENTRY16 functions.
* src/rtl/gtos2/Makefile
* config/os2/watcom.mk
% Changed the way -s option is disabled for certain modules
(currently gtos2).
This method doesn't require new variable, although it's still
a hack.
* harbour/src/rtl/gtos2/Makefile
* harbour/config/os2/watcom.mk
* disable -s in GTOS2 OpenWatcom builds using HB_CSTACK_CHECK variable.
This is workaround for wrong code generated by OpenWatcom <= 1.8
when -s switch is used for functions calling APIENTRY16 functions.
Such code executed from non main thread causes GPF.
* config/global.mk
+ Added some provisions for separate -cpu selection:
Now win/wce compiler autodetection code tries to fill HB_CPU.
This should eventually be extended to all platforms/compilers.
+ HB_CPU autodetection will now consider -m64 and -m32 HB_USER_CFLAGS
on linux platform. This may not be correct on non-intel
linux platforms. Eventually this hidden knob should be changed
to proper CPU selection (probably).
% De-xmas.
! Minor fixes to HB_COMPILER autodetection when HB_PLATFORM=wce
is used on win hosts.
; I just hope there won't be any regressions.
* config/beos/gcc.mk
* config/bsd/gcc.mk
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* config/hpux/gcc.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
* config/darwin/clang.mk
* config/dos/watcom.mk
* config/dos/djgpp.mk
* config/common/watcom.mk
* config/win/xcc.mk
* config/win/mingw.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/watcom.mk
* config/win/icc.mk
* config/win/cygwin.mk
* config/win/msvc.mk
* config/linux/watcom.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/linux/clang.mk
* config/linux/sunpro.mk
* config/os2/watcom.mk
* config/os2/gcc.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
* Initializing LDFLAGS, DFLAGS and ARFLAGS at the beginning of files.
This allows to easily add to these var according to build settings.
It also syncs all .mk files to use the same layout in this regard.
* config/wce/msvcarm.mk
* config/win/msvc.mk
+ Added -debug linker option to .dll linking for msvc/msvcarm targets.
* utils/hbmk2/hbmk2.prg
! Added -debug linker option when building .dll for msvc and compatible targets.
! Fixed minor regression in embedded CRLFs of hbmk2 texts.
* config/win/msvc.mk
* utils/hbmk2/hbmk2.prg
+ Added -MT/-MTd for win/msvc compatible targets when verison is 7.1 (.NET 2003)
or older. On these versions this will assure that multithreading C RTL is
being used (at the same time forcing static C RTL).
* config/wce/msvcarm.mk
* config/win/msvc.mk
+ Added -debug linker option for executables.
; TODO: Add it for .dlls too.
* config/globsh.mk
+ Deleting (MSVC) .pdb and .ilk files for executables and dynlibs on 'make clean'.
* config/global.mk
* utils/hbmk2/hbmk2.prg
+ Added autodetection of DWARF-2 build of mingw.
This is mingw build is required for QT 4.6.0.
* utils/hbmk2/hbmk2.prg
! Fixed to consider HB_CCPOSTFIX setting when trying to autodetect gcc/win, gcc/wce.
* bin/hb-mkimp.bat
- Deleted creation of QT implibs for mingw. Enough to use what's
provided by QT SDK.
* contrib/hbqt/qtgui/QLabel.cpp
* contrib/hbqt/hbqt_garbage.h
* contrib/hbqt/qtcore/filelist.mk
* Rerun generator. This caused that QTUILoader references
got removed, plus a few other changes.
* contrib/hbqt/qtcore/QUiLoader.cpp
- Deleted header telling this file is automatically generated.
! Manually fixed debug lines to be in sync with rest of hbqt.
* contrib/hbqt/qtcore/Makefile
! Fixed to add QTUILoaded stuff manually, since it's missing
from generated filelist.mk.
* config/win/msvc.mk
* Minor in comment.
* contrib/xhb/freadlin.c
* contrib/hbide/freadlin.c
! Fixed C mode MSVC warning.
* config/win/msvc.mk
- Removed -MT switch from default MSVC options. It should be user controlled
and -MT seemed to be the default anyway. Now it's also in sync with hbmk2
and also with msvcarm target.
* INSTALL
+ Documented HB_WITH_CAIRO setting.
* bin/hb-mkimp.bat
+ Added HB_BUILD_IMPLIB support for cairo lib.
I didn't test them.
* contrib/hbcairo/hbcairo.hbc
* Changed cairo lib name from 'libcairo-2.0' to 'cairo'
This is what HB_BUILD_IMPLIB will generate.
; TODO: It's the "fun" part of any component adaptation, that
each build and platform use a different lib naming scheme.
We should fix this one by one for all platforms.
; TODO: Make build tests on each platform/compiler.
* contrib/hbcairo/Makefile
+ Added cairo component detection.
- Deleted installation of .h header. It doesn't seem to be
one for the public.
* config/global.mk
% "De-xmastree"-d one if/else structure.
* mpkg_rpm.sh
* INSTALL
* harbour.spec
* config/global.mk
* config/detect.mk
* HB_COMMERCE renamed to HB_BUILD_NOGPLLIB (in sync with existing
--without option)
+ HB_BUILD_NOGPLLIB now documented in INSTALL.
; Please update your enviroment.
; BTW, I'm open to other names which are more generic and clearly
states what we're talking about exactly. Current terminology
is limited to GPL license.
* config/global.mk
* config/bin.mk
* src/rdd/Makefile
* Moved central RDD related information to local makefiles.
- Deleted support for $(HB_DB_DRVEXT) envvar.
To extend Harbour with RDDs these should be added as
regular addons, and optionally hbrun rebuilt using hbrun.hbp.
[ $(HB_DB_DRVEXT) is still used from hbmk script, I didn't
touch that part. ]
* INSTALL
* Minor.
* INSTALL
* bin/hb-mkimp.bat
* contrib/hbqt/hbqt.hbc
* contrib/hbqt/hbqts.hbc
* contrib/gtqtc/gtqtcs.hbc
* contrib/gtqtc/gtqtc.hbc
* utils/hbmk2/examples/xhgtk.hbc
* config/global.mk
+ Eliminated HB_DIR_* envvar requirement to find required 3rd
party component libs.
This means that it's now enough to only set HB_WITH_* envvars
to enable HB_BUILD_IMPLIB.
This should make configuration a lot simpler, and this clears
the last pending TODO in this area.
HB_INC_* won't work this way, so please start to migrate to
HB_WITH_* envvars, the values should stay the same.
* external/pcre/cnv_o2hb.bat
* external/pcre/cnv_hb2o.bat
* Updated comment.
* harbour/src/vm/fm.c
* enabled HB_FM_DL_ALLOC by default in OS2 OpenWatcom builds
* harbour/config/os2/watcom.mk
! enabled -bm flag (MT code) in OS2 OpenWatcom builds - now when
HB_FM_DL_ALLOC is enabled by default it should not kill the
performance. Please make tests with OS2 OpenWatcom builds.