* harbour/include/hbstack.h
* harbour/source/vm/estack.c
* small cleanup in some macros definitions
* harbour/source/vm/hvm.c
* pacified ICC++ warnings
* harbour/source/vm/mainstd.c
! do not force main() declaration as extern "C"
* harbour/include/hbdefs.h
* harbour/include/hbsetup.h
* modified HB_FUNC*() macros declarations to respect global extern "C"
settings
* harbour/source/vm/classes.c
* use HB_FUNC*() macros to declare harbour functions
* harbour/source/common/hbprintf.c
* added workaround for some missing C99 math macros in SunOS GCC used in
C++ mode. Warning C++ mode in SunOS-GCC disables C99 extensions.
* harbour/contrib/gtalleg/gtalleg.c
* hack for compilation with SunPRO C
* utils/hbmk2/hbmk2.prg
! Fixed to work on newer Darwin systems (f.e. latest XCode
with gcc 4.2.1). -Wno-long-double option had to be removed.
This way hbmk2 is in sync with GNU Make.
* source/vm/thread.c
! Fixed to compile HB_MT().
* harbour/source/vm/thread.c
+ added HB_MT() PRG function which exists only in MT HVM version and
can be REQUESTed from .prg code to force linking MT HVM.
* harbour/contrib/hbnetio/utils/netiosrv.prg
! fixed typo in port parameter support
* modified name of second parameter. Instead of 'address' use 'ifaddr'
(interface address) which seems to be more precise name.
* added 'request HB_MT' to protect linking with HVM without MT support.
* harbour/source/rtl/hbsocket.c
% modified hb_socketResolveAddr() to try use given address in
raw form. On some platforms like MS-Windows it eliminates
huge delay caused by unnecessary DNS lookup for addresses given
in dot.number notation. It should be well seen in NETIO open
operation if client program is compiled for windows.
* utils/hbmk2/hbmk2.prg
+ Added experimental support for @.clp files.
A bit hacky and could be incomplete. I'm not a .clp file user,
so pls test and extend.
* INSTALL
* contrib/gtalleg/Makefile
+ contrib/gtalleg/gtallegs
+ contrib/gtalleg/gtallegs/Makefile
* contrib/gtalleg/gtalleg.hbc
+ contrib/gtalleg/gtallegs.hbc
+ Added static flavour of gtalleg. This was an option until now,
now both versions are automatically built to be in sync with
rest of contribs. This also means that HB_ALLEGRO_STATIC
setting is no longer needed.
+ Added separate static/dynamic .hbc files accordingly.
* contrib/hbqt/Makefile
+ contrib/hbqt/hbqts
+ contrib/hbqt/hbqts/Makefile
* contrib/hbqt/hbqt.hbc
+ contrib/hbqt/hbqts.hbc
+ HB_QT_STATIC=yes setting will now cause building of static
flavor hbqt lib *above* the default one which links against
dynamic qt libs. Until now this setting caused that the
static version was built *instead* of the dynamic one.
NOTE: Using this setting will cause a significantly longer
build time on non-*nix systems.
+ Added separate static/dynamic .hbc files accordingly.
* config/global.mk
! Fixed to set CXX predefined variable to empty to make
defaulting logic in rules.mk work as expected.
This fixes recent hbqt build failure with MSVC.
* config/dos/watcom.mk
+ Added watt lib support. (untested, please test)
* source/rtl/Makefile
* source/rtl/hbsocket.c
* config/detect.mk
* config/dos/djgpp.mk
* Renamed HB_*_TCP to HB_*_WATT.
+ Added HB_INC_WATT to INSTALL. (couldn't make it work locally,
so it's not very precise yet)
* config/detect.mk
* Minor: lowercased component name for watt lib.
* config/dos/djgpp.mk
* Minor: Using LIBPATHS to store watt lib path instead of LDLIBS.
* config/install.mk
% Deleted no longer used/needed HB_INSTALL_DEF variable.
* harbour/doc/cmpopt.txt
* added information about ( "<alias>" )-> to <alias>-> compile time
optimization
* harbour/source/rtl/valtostr.c
! fixed GPF if hb_valToStr() is called without any parameters.
In such case RTE is generated.
* harbour/source/rtl/transfrm.c
! fixed GPF if transform() is called without any parameters, i.e.:
? &("transform")()
* harbour/source/vm/itemapi.c
! return "U" if hb_itemTypeStr() is called with NULL parameter
It fixed GPF when valtype() is called without any parameters, i.e.:
? &("valtype")()
NOTE: Compiler check number of parameters in some functions and
refuse to compile the code when it's wrong but such validation
does not work in macrocompiler or when function is called
indirectly like in above examples or using function symbols
so always write such functions to work with wrong number of
parameters.
* harbour/source/compiler/hbmain.c
! added missing pFunc initialization in symbol structure.
It was causing GPF when C code was attached to .prg file using
HB_INLINE() {} or #pragma BEGIN/ENDDUMP with HB_FUNC_STATIC()
inside. Many thanks to Andi for information about the problem.
* harbour/source/common/hbver.c
! added additional hack for conditional code used for Windows detection
to work with VC98.
Viktor please verify it but this condition:
( !defined( _MSC_VER ) || _MSC_VER >= 1400 )
was not enough.
* harbour/source/vm/runner.c
! fixed possible GPF after loading .hrb module - clear function
address if dynamic symbol does not exist
* harbour/source/compiler/hbmain.c
! fixed typo in conditional compilation in last commit
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/genhrb.c
+ added support for compiling multiple .prg modules into single
compilation unit with repeated static or init/exit functions
with the same name.
Now Harbour compiler compiling .prg code from different .prg modules
included by @<name>.clp or by SET PROCEDURE TO ... / DO ... [ WITH ... ]
works exactly like Clipper. It supports separated file wide definitions
for each compiled .prg module when -n switch is used and allows to
use static or init/exit functions/procedures with the same names but
in different modules.
It resolves incompatibility often reported by [x]Harbour users.
Now it's not longer necessary to update existing Clipper code.
@.clp files and SET PROCEDURE TO ... / DO ... [ WITH ... ] are
fully functional like in Clipper.
AFAIR it was the last unintentional incompatibility with Clipper.
TODO: add support for multiple static functions with the same name
in .HRB files - it's necessary to change used format so I'll
probably to that with .HRL support. Now when -gh switch is used
harbour and such functions exists then compiler generates:
Error E0002 Redefinition of procedure or function ...
TODO: modify hbmk2 to pass @<name>.clp files directly to Harbour
compiler so it can compile them just like Clipper does and
generate single output file: <name>.<ext>
* harbour/config/instsh.mk
* disabled install command echo
* harbour/config/lib.mk
* harbour/config/bin.mk
* harbour/config/header.mk
* harbour/config/dyn.mk
* harbour/config/doc.mk
* harbour/config/instsh.mk
! rewritten install rules so now they work without any problem when
more then one target .mk file is included, i.e. lib.mk and header.mk
* harbour/source/pp/Makefile
* harbour/source/dynlib/mt/Makefile
* harbour/source/dynlib/Makefile
* harbour/contrib/hbmysql/Makefile
* harbour/contrib/hbct/Makefile
* harbour/contrib/xhb/Makefile
* harbour/contrib/hbodbc/Makefile
* harbour/contrib/hbtpathy/Makefile
* harbour/contrib/hbsqlit3/Makefile
* harbour/contrib/hbmzip/Makefile
* harbour/contrib/hbblat/Makefile
* harbour/contrib/hbqt/Makefile
* harbour/contrib/hbxbp/Makefile
* harbour/contrib/xpp/Makefile
* harbour/contrib/hbnf/Makefile
* harbour/contrib/hbcurl/Makefile
* harbour/contrib/gtqtc/Makefile
* harbour/contrib/rddsql/sddmy/Makefile
* harbour/contrib/rddsql/sddpg/Makefile
* harbour/contrib/rddsql/sddfb/Makefile
* harbour/contrib/rddsql/sddodbc/Makefile
* harbour/contrib/hbhpdf/Makefile
* harbour/contrib/rddado/Makefile
* harbour/contrib/gtwvg/Makefile
* harbour/contrib/hbpgsql/Makefile
* harbour/contrib/hbclipsm/Makefile
* harbour/contrib/rddads/Makefile
* harbour/contrib/hbfimage/Makefile
* harbour/contrib/hbgd/Makefile
* harbour/contrib/hbtip/Makefile
* harbour/contrib/hbwin/Makefile
* harbour/contrib/hbvpdf/Makefile
* harbour/contrib/hbbtree/Makefile
* harbour/contrib/hbssl/Makefile
* harbour/external/libhpdf/Makefile
* removed not longer necessary workaround for overwritten by different
targets INSTALL_RULE
Possible TODO: clean up some other rules in config .mk files to remove
hacks from pp and dynlib Makefile(s).
Above modifications should fully resolve the problems with repeated
install actions and also build problems with some more restrictive
POSIX SHELLs.
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/genhrb.c
% removed FUNCALLS internal structures and functions.
It simplifies compiler code, reduce memory usage and
increase performance due to eliminating unnecessary
structures which were update and scanned in previous.
Now we have all necessary information in symbol table.
* harbour/contrib/hbnetio/netiocli.c
+ added support for DNS addresses
* harbour/source/rtl/hbsocket.c
! added sock_init()/sock_exit() calls to DOS builds.
! use select_s() and close_s() instead of select() and close()
in DOS builds.
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/netiosrv.c
! initialize socket library automatically - it's necessary for some
platforms.
* harbour/config/detect.mk
* harbour/source/rtl/Makefile
* harbour/source/rtl/hbsocket.c
+ added support for TCPIP in DOS builds using WATTCP/WATT-32 library.
The latest release of Watt-32 is available at
http://www.bgnett.no/~giva/
* harbour/source/pp/Makefile
* harbour/source/main/Makefile
! hacked the order of linked library list to resolve problem with
potential cross references between libraries on platforms which do
not support library grouping
* harbour/source/nortl/nortl.c
! added missing include hbmemory.ch
* harbour/source/compiler/hbmain.c
! added protection against multiple init function freeing
* source/pp/hbpp.c
+ Added command to HB_DYNLIB guard.
* source/pp/Makefile
! Deleted wildcard check before hbpp obj deletion. It's wrong
because hbpp obj isn't there when the rule is validated, so
the deletion would never take place. (For some reason it was
still deleted on some platforms though - apparently not on
OS/2 GNU Make.). Anyhow addition of $(wildcard) call at this
spot was not critical anyway. See: 2009-08-22 11:59
* utils/hbmk2/hbmk2.prg
! Fixed checking wrong dependencies when non-.prg extension was
used for .prg source files in incremental mode.
* harbour/include/hbcomp.h
* harbour/source/compiler/hbmain.c
! fixed typo in -m parameter handling
! fixed old memory leak exploited by compile time error in code with
static variables
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/cmdcheck.c
* harbour/source/compiler/hbcomp.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/harbour.y
* harbour/source/compiler/hbdbginf.c
* harbour/source/compiler/genhrb.c
* harbour/source/compiler/gencobj.c
- removed old "AutoOpen" code used for @<name>.clp, SET PROCEDURE TO ...
and DO <func> [ WITH <args,...> ] statements
It was neither Clipper compatible not working correctly in some cases.
+ added new code for multi .prg module compilation into single unit
with support for multiple file wide declarations just like Cipper
does doe @.clp files and SET PROCEDURE TO / DO ... [ WITH ... ]
% cleaned redundant code used in harbour compiler to execute grammar
parser with different conditions. Now it's much shorter and simpler
and hb_compparse() is called only from one place.
! fixed possible multiple declarations in symbol table for ANNOUNCE
function
% rewritten C code generation to increase speed and make it independent
from some internal compiler structures. Now it's shorter and faster
but it strongly uses scope attributes in symbol table so they have
to be properly set during compilation and new code for .c file
generation should help in their validation.
% few other optimizations and cleanups
Now Harbour can compile code like:
/*** t01.prg ***/
static s_var := "main sVar"
proc main()
? procname(), "->", sVar
do t02
return
/*** t02.prg ***/
static s_var := "t02 sVar"
proc t02()
? procname(), "->", sVar
return
by simpe:
harbour -n -w -es2 t01
or using tst.clp:
t01
t02
and:
harbour -n -w -es2 @tst
in both cases it works just like Clipper. Please note that in the
second version generated file inherits (like in Clipper) name from
.clp file and is called "tst.c". The .clp file name is also used
as module handler signature.
TODO: add support for multiple static functions with the same name
but coming from different .prg modules compiled into single
unit using @.clp files or SET PROCEDURE TO / DO ... [ WITH ... ]
In above modifications I already implemented it partially but
I haven't made one very important extension which strongly
interacts with symbol table usage during compilation and can
be source of really bad problems if I made sth wrong so I plan
to finish when above changes will have been tested.
* contrib/hbssl/bio.c
- Disabled feature which doesn't seem to be exported via
implibs.
+ contrib/hbssl/hbssls.hbc
+ contrib/hbssl/hbssls
+ contrib/hbssl/hbssls/Makefile
* contrib/hbssl/hbssl.hbc
* contrib/hbssl/Makefile
* Default hbssl lib is now created to link dynamically (on Windows).
+ Added static build of hbssl by the name hbssls, with new .hbc
file linking to static OpenSSL libs.
* contrib/hbssl/Makefile
+ contrib/hbssl/hbssls.hbc
* contrib/hbssl/hbssl.hbc
* bin/hb-func.sh
- Commented creation of dynamic libs. Now it's done on GNU Make
level.
* config/os2/gcc.mk
- Disabled os2/gcc .dll creation. If someone comes up with a working
solution we can readd it, but in current form it just broke os2/gcc
target with no short-term hope for a solution.
* source/common/hbver.c
+ Added "Embarcadero" to Borland C compiler name.
Borrowed from xhb / Andi Jahja
+ Readded also "Borland" to both Embarcadero and CodeGear compiler
names. Probably for most ppl "Borland" tells a hell lot more than
these names which keep changing every second year.
* contrib/gtwvg/Makefile
* contrib/hbtip/Makefile
* contrib/hbtip/hbtipssl/Makefile
* Formatting.
* bin/hb-func.sh
! Fixed recent mistake in gpm detection at postinst (now redundant)
dynlib generation phase.
* source/rtl/fssize.c
! Fixed warnings shown by mingw64 4.5.0.
* config/detfun.mk
+ Now accepting HB_WITH_* control variables in place of HB_INC_* once.
If HB_WITH_* is set it overrides HB_INC_*. Experimental yet.
* Minor in comments.
* config/detect.mk
* Minor correction for conf.mk inclusion.
* config/detfun.mk
* config/detect.mk
+ Added positive platform/compiler filters.
+ Simplified internal platform/compiler filter syntax, now it's
one unified list where compiler/platform can be mixed and
negative filters can be passed by using '!' char prefix.
! In comment text.
* source/rtl/gtsln/Makefile
! Fixed silly copy-paste mistake in recent autodetection changes.
Thanks to Tamas Tevesz for spotting it.
* source/rtl/gtsln/mousesln.c
* Using macros instead of a constants.
(2 -> STDERR_FILENO)
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gtsln/Makefile
* Using HB_HAS_GPM instead of old HB_GPM_MOUSE.
* config/bin.mk
* config/dyn.mk
* config/bsd/libs.mk
* config/darwin/libs.mk
* config/hpux/libs.mk
* config/dos/djgpp.mk
* config/win/mingw.mk
* config/linux/libs.mk
* config/os2/gcc.mk
* config/sunos/libs.mk
* Extended the way it's decided whether to include
rtl external lib dependencies or not. Now binary specific
logic was moved to bin.mk, and dynamic lib logic was added
to dyn.mk.
The flag is called HB_LINKING_RTL (not empty means yes).
+ Updated syslib list assembly parts to use HB_HAS_*
autodetection variables instead of trying to find it out
by other means.
* config/global.mk
+ Adding gtcrs, gtsln, gtxwc to std liblist if required
components are available. This means that it's now again
possible to select these as build-time default GTs.
* Updated comment for setting plans.
* INSTALL
+ Documented HB_CCPATH, HB_CCPREFIX, HB_CCPOSTFIX config variables.
* source/Makefile
* config/lib.mk
+ Added gtxwc to Harbour dynamic libs on *nixes.
* config/global.mk
! Always set HB_INC_INSTALL on sh shells to make postinst.sh
happy.
* config/linux/global.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/linux/sunpro.mk
% Moved 'system' library name and path list forming logic to
platform global.mk.
; TODO: Also for other platforms.
* source/Makefile
! Fixed to use '-' separator between dynlib name and version
on *nixes too, except on darwin, where it's a '.'.
* harbour/include/hbapifs.h
* harbour/source/rtl/filebuf.c
+ added hb_fileExists() and hb_fileDelete() functions
+ added support for alternative file IO API used in RDD code which
can be implemented by 3-rd party developers and registered using
hb_fileRegister() function.
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* use hb_fileExist() and hb_fileDelete() functions for files accessed
by hb_file*() API
* config/global.mk
+ Added SVN revision detection and display in log header.
Will kick in only if svn is installed. For non-live SVN
sandboxes (exported/nightly/other dl) it will display
'exported'. It will also show if there was any local
modifications done by appending an 'M' to revno.
* TOFIX -> NOTE
* source/Makefile
% Minor to recent.
* config/global.mk
+ Added dos/djgpp autodetection for *nix platforms.
* contrib/hbfbird/Makefile
+ Extended autodetection and feedback. Experimenting.
* config/globsh.mk
+ Added web links to DJGPP FAQ instead of binary FAQ package.
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/gtqtc/Makefile
* source/Makefile
* config/global.mk
* HB_OS_UNIX GNU Make var renamed to HB_PLATFORM_UNIX.
Content is now non-empty or empty (was yes or no).
* config/sunos/sunpro.mk
+ Changes made to config/linux/sunpro.mk applied here also.
* harbour/config/linux/sunpro.mk
! fixed dynamic library creation - @<filename> is not supported by
SunPRO C compiler, because it's ported only to POSIX environments
then we can simply pass file list as shell arguments
* harbour/include/hbrdddbf.h
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* cleaned memo block size decoding.
* harbour/include/hbvmpub.h
+ added new internal macro HB_ITEM_PUT_LONGRAW()
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* use HB_ITEM_PUT_LONGRAW()
* harbour/source/vm/hvm.c
* harbour/source/common/expropt2.c
* cleaned casting in date and timestamp math operations to use exactly
the same conversions in all places in compiled and HVM
* bin/postinst.bat
! Fixed to work without HB_TOP value. Regression after recent change.
* contrib/rddsql/sddmy/mysqldd.c
* contrib/rddsql/sddpg/pgsqldd.c
* contrib/hbbtree/hb_btree.h
* contrib/hbbtree/hb_btree.c
* source/vm/macro.c
* source/vm/hvm.c
* source/common/expropt2.c
* source/compiler/complex.c
! Fixed MSVC warnings.
Please review me, especially the date related ones in core.
* LONG -> long in hb_compExprReduceTimeStampPut().
; NOTE: Number of MSVC (32-bit) -W4 warnings are reduced to 280,
all of them in RDD code. (plus just few more here and there)
* bin/postinst.bat
+ Reworked to work better in cross-build/cross-shell scenarios.
* config/common/watcom.mk
! Use envvars to pass parameter either if shell is dos or target.
This fixes dos/watcom builds under non-dos shells.
* source/dynlib/mt/Makefile
* source/dynlib/Makefile
* config/none.mk
! Fixed the way these dynamic lib targets are skipped.
* package/mpkg_win.nsi
* Changed to also work on trees using short names.
(only 'ChangeLog' is a problem here).
Maybe it's time to rename to CHANGES. It causing too much
headache.
* bin/postinst.cmd
* Sync with .bat.
* config/global.mk
+ Exporting HB_SHELL for postinst scripts.
! Fixed HB_PKGNAME assembly for dos targets.
! Typo in comment.
* config/win/bcc.mk
! Deleted dbl quotes from tlib commands as it totally confused it
under msys shell.
* doc/bintools.txt
* config/dosecho.exe
! Restored previous version. (new one gave error on some watcom lines f.e.)
+ Added binary+source links.
* INSTALL
+ Some minor clarifications.
* 'NT system required' changed 'XP system recommended' for win hosts.
+ Added shell requirement for HB_BUILD_PKG.
% Simplified os2/watcom on linux example.
* bin/postinst.cmd
+ Some cleanup/sync with postinst.bat.
* source/Makefile
! Possible fix: Emptying DYNDIRLIST_BASE on dos targets
to save envvar space.
* source/Makefile
* config/lib.mk
+ Added gtcrs and gtsln to dynlib obj list for *nix targets.
* config/global.mk
+ Added Harbour version number to log header.
! Fixed to use short pkg name based on target platform
no host platform (=dos).
* config/bsd/gcc.mk
* config/hpux/gcc.mk
* config/darwin/icc.mk
* config/linux/icc.mk
* config/linux/sunpro.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
+ Added dynamic library generation to rest of targets.
; Please review, especially sunos/sunpro as it had some
.sh tricks which I couldn't replicate.
* config/bsd/global.mk
* config/hpux/global.mk
* config/darwin/global.mk
* config/linux/global.mk
* config/sunos/global.mk
! Setting DYN_PREF to 'lib'.
* config/wce/mingwarm.mk
* config/win/mingw.mk
- Disabled import libs. [They aren't necessary with mingw.]
* config/darwin/icc.mk
* Changed to use libtool instead of xiar.
(blind sync with darwin/gcc)
* config/dos/djgpp.mk
* config/common/watcom.mk
* config/win/bcc.mk
* config/os2/gcc.mk
! Fixed to use $(ECHOQUOTE) in all $(ECHO) calls.
* config/win/bcc.mk
! Fixed use fixed backslashes regardless of shell in scripts.
* config/dyn.mk
! Fixed to use $(LIB_PREF) as implib name prefix.
% Minor opt in IMP_NAME forming.
* config/rules.mk
% Readded $(HB_INC_COMPILE) to be always on cmdline, to
better balance between cmdline and envvar space. (dos)
* config/instsh.mk
% Don't display useless '! Nothing to install' message
when there was no file to install. (could happen with
mingw dynamic lib install where implib is empty because
we don't generate one).
* harbour/include/hbmacro.h
* harbour/source/macro/macro.yyc
* harbour/source/macro/macro.y
* hb_macroIdentNew() made public
* harbour/include/hbexprb.c
! use hb_macroIdentNew() instead of hb_compIdentifierNew()
in code compiled for macrocompiler
* harbour/include/hbexprb.c
* minor modification
* harbour/source/common/expropt2.c
+ added compile time optimization for expression like ("alias")->var
and ("alias")->(<exp>)