* 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/
* contrib/hbqt/hbqt_slots.cpp
! Completely reworked events management. It now supports multi-threads.
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbxbp/xbpdialog.prg
* contrib/hbxbp/xbpgeneric.prg
! Reworked event management to support multi threads.
* contrib/hbxbp/tests/demoxbp.prg
! Demonstrated the MT support. Click on <Dialogs> on main menu and play
with more than one dialog.
/* Still there are few glitches in MT mode and I do request Przemek to
look into the code and suggest us what else is required.
*/
* contrib/gtwvg/gtwvg.c
! A small fix in caret handelling. Under certain circumstances,
when other modal consoles are opened, HideCaret() is issued multiple
time and hence caret is diappeared. For normal console it was ok.
* contrib/gtwvg/wvgsink.c
! Some optimizations and formatting.
* 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.
* INSTALL
* Updated Ubuntu external pkg list.
+ Added slang to darwin external pkg list.
* config/darwin/libs.mk
+ Added two syslib paths required for slang (gtsln).
* utils/hbmk2/hbmk2.prg
! Fixed to add user GTs before the list of user libs.
This is to ensure proper linkage with linkers which need
this (mingw f.e. and all which used lib grouping switches
before they were removed from hbmk2/make in Harbour)
* config/bin.mk
* config/dyn.mk
+ Added new HB_LINKING_VMMT variable, which is set to non-empty
if hbvmmt is to be linked. It makes it possible to add
MT dependent libs to sys lib list, if needed.
* config/linux/libs.mk
+ Adding pthread lib when HB_LINKING_VMMT is set. This isn't
needed on my *nix systems (Ubuntu and Darwin), but was used
for all platforms in postinst.sh dynlib creation logic, so
please speak up if we should add this lib to other *nix
platforms, or we can delete it from Linux.
* 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/rules.mk
* config/dos/djgpp.mk
* config/common/watcom.mk
* config/os2/gcc.mk
+ Finished support for HB_LDFLAGS variable (to hold Makefile
local extra linker options). We don't use this feature yet.
* config/sunos/sunpro.mk
+ Setting CXX for sunos/sunpro.mk to make it build .cpp files
without forcing cpp mode explicitly. (suncc seems to do nothing
with .cpp input files.)
* config/bsd/libs.mk
* config/hpux/libs.mk
* config/darwin/libs.mk
* config/sunos/libs.mk
- Deleted commented /usr/X11R6/lib64 lib dir. It's a Linux
distro specific thing.
* config/linux/libs.mk
+ Added comment for /usr/X11R6/lib64
* external/libhpdf/Makefile
! Fixed typo in recent rework, causing embedded libpng
component not being detected.
* config/global.mk
! Reverted override support. This will need 3.81.90,
in 3.81 override and export keywords don't mix tool
well together, or I'm missing something, it could be.
* INSTALL
+ Added new HB_INC_* values to the list. Added more
information on them. Described 'no' option.
+ Added info on passing these config vars through cmdline.
* config/global.mk
+ Added support to override some vars even if passed via
make commandline.
* config/bsd/gcc.mk
* config/hpux/gcc.mk
! Restored cmdline lenght saver trick for BSD and HPUX after
giving this http://www.in-ulm.de/~mascheck/various/argmax/
a bit more careful read.
* config/linux/libs.mk
! Deleted some stuff left when doing the copy from
global.mk (yesterday).
Should fix double -fPIC switches seen on 64-bit Linux builds.
* config/linux/libs.mk
+ Adding /usr/X11R6/lib64 to sys lib path list on 64-bit systems.
If you find this wrong, please tell, we can tweak conditions.
* config/bsd/gcc.mk
* config/darwin/gcc.mk
* config/hpux/gcc.mk
* config/linux/gcc.mk
* config/sunos/gcc.mk
* Changed to just plain pass list of obj on cmdline in dynamic
lib creation rule. Should be safe on these OSes according to this doc:
http://www.in-ulm.de/~mascheck/various/argmax/
(we need about 31-32KB of cmdline at this moment)
* config/bsd/gcc.mk
* config/hpux/gcc.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/sunos/gcc.mk
* Changed to use different method to pass object file list to gcc.
Previous method (@<filename>) only works in 4.x (?) gcc versions.
* config/linux/sunpro.mk
+ Setting CXX for linux/sunpro.mk to make it build .cpp files
without forcing cpp mode explicitly. (suncc seems to do nothing
with .cpp input files.)
Same fix for sunos/sunpro?
* config/rules.mk
+ Added option to override C++ compiler tool name with
$(CXX) variable.
* external/sqlite3/Makefile
* external/libpng/Makefile
* Formatting/cleanup.
* config/linux/sunpro.mk
* config/sunos/sunpro.mk
+ Added HB_CCPATH, HB_CCPREFIX and HB_CCPOSTFIX support for CC and LD.
- Deleted HB_CCPREFIX from linux/sunpro AR command.
* config/global.mk
* Updated comments.
* contrib/hbqt/Makefile
* contrib/hbxbp/Makefile
* contrib/gtqtc/Makefile
+ QT detection is now also based on detfun.mk.
* hbxbp changed a little, but the logic is basically the same.
* mpkg_deb.sh
* HB_WITHOUT_ADS -> HB_INC_ADS
* HB_WITHOUT_ODBC -> HB_INC_ODBC
; Please verify these changes.
* contrib/gtalleg/Makefile
* contrib/hbmysql/Makefile
* contrib/hbodbc/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbfbird/Makefile
* contrib/hbcurl/hbcurls/Makefile
* contrib/hbcurl/Makefile
* contrib/rddsql/sddmy/Makefile
* contrib/rddsql/sddpg/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/hbhpdf/Makefile
* contrib/hbpgsql/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbgd/Makefile
* contrib/hbtip/Makefile
+ Using new central detection function instead of replicating
in in every contrib. The "side effect" is that now precise
instructions will be shown if a given contrib isn't included in a build.
Code is much cleaner/simpler/shorter now.
; It's possible that I made some mistakes along the line,
plus report if anything is wrongly detected.
* external component names converted to all lowercase.
; QT will be done in next commit.
* config/detfun.mk
* config/detect.mk
+ Added usage instructions (moved parts from detect.mk to detfun.mk).
* Moved help to detfun.mk.
+ Added HB_INC_* 'force' option.
+ Now clearing _DET_* vars on exit.
* external component names converted to all lowercase.
* config/global.mk
+ Updated plans.
* mpkg_deb.sh
* bin/hb-func.sh
* harbour.spec
* mpkg_tgz.sh
* HB_WITHOUT_GTCRS -> HB_INC_CURSES
* HB_WITHOUT_GTSLN -> HB_INC_SLANG
* HB_WITHOUT_X11 -> HB_INC_X11
* HB_GPM_MOUSE -> HB_INC_MOUSE (in few remaining hbmk script places)
; NOTE: After all this cleanup/leveling is done, probably
HB_INC_* variables will be changed to more standard
HB_WITH_* format. First I want to finish this part.
* mpkg_deb.sh
* mpkg_tgz.sh
* bin/hb-func.sh
* harbour.spec
+ HB_GPM_MOUSE -> HB_INC_GPM and HB_HAS_GPM depending on whether
it's a config var or a reaction to config (in postinst)
I've left some value in hbmk script which may need further
attention.
I didn't test these changes, please do.
* 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)
* config/lib.mk
+ Added hack to make hbpp hack (in source/pp/Makefile) happy.
Should fix missing 'pow' symbols reported on the list.
* config/detect.mk
! Fixed gpm mouse detection prerequisites.
; TODO: Will need some more tweaking to make it clean, I'll do it
a bit later.
* 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.
+ config/detfun.mk
+ config/detect.mk
* config/global.mk
+ Added generic external component detection function.
+ Added central detection for optional external components
used by Harbour core. These are: openssl, gpm, slang, curses, x11
Easy to extend with new ones.
The detection code will run once per make session and
results can be used in all our make files by checking HB_HAS_*
variable. If it's empty we cannot use the component, if
it's not we can. In this case it contains dir where headers
were located. It's possible that it's a list of paths.
Users can control these components by using HB_INC_* variable
the following way: if it's left empty, Harbour make system
will automatically look into default locations, this usually
works on *nix systems. If set to a path (or a list of paths),
this list will be checked. Finally to explicitly disable a
component, user can set the variable to 'no'.
Following legacy control variables are yet understood, but
the will be removed in the near future:
HB_WITHOUT_GTCRS=yes is the same as HB_INC_CURSES=no
HB_WITHOUT_SLANG=yes is the same as HB_INC_SLANG=no
HB_WITHOUT_GTXWC=yes is the same as HB_INC_X11=no
Notice that these settings aren't meant to allow user control
of actual Harbour components (like gtxwc). If we need something
like this, we can do it, but it wasn't the subject of this change.
HB_GPM_MOUSE var is still set for compatibility with internals.
NOTE: I've left verbose output on to see what's happening, this will
tuned after testing.
; TODO: Remove reliance on legacy settings in our own codebase.
; TODO: Start using HB_HAS_* values for dynamic lib syslib list assembly
and in GT Makefiles.
* contrib/hbtip/hbtipssl/Makefile
* contrib/hbtip/Makefile
* contrib/hbssl/Makefile
* HB_HAS_OPENSSL works a little differently now, not empty
means 'yes', empty means 'no'.
* config/bsd/gcc.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
* config/hpux/gcc.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
+ Added "system" libs to dynamic lib creation commands.
; TODO: There is one step left: To build system lib list
also when dynamic libs are to be created.
This will need some extra detection logic.
* INSTALL
+ Added new section: HOW TO DO A PARTIAL [RE]BUILD
This wouldn't have been possible a week ago, the
situation was so much different and complicated for
various cases.
! Cleaned msys/cygwin/<DIR> references and NOTEs.
* config/dyn.mk
* config/bin.mk
* config/global.mk
+ config/bsd/libs.mk
* config/bsd/gcc.mk
+ config/hpux/libs.mk
* config/hpux/gcc.mk
+ config/darwin/libs.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
+ config/linux/libs.mk
* config/linux/global.mk
+ config/sunos/libs.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
% Moved "system" library logic to compiler libs.mk files
for all *nix compilers.
* config/dos/djgpp.mk
* config/global.mk
* DJGPP with win-based make messages converted to a warning
and moved next to the other similar warning detecting
another non-ideal combination.
* 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 '.'.