* utils/hbmk2/hbmk2.prg
+ Quite big commit aiming to clean path forming in different
situations. After this is change it should be more or less
true that internally hbmk2 always uses native path format,
it should accept _any_ format regardless of platform,
and it should convert filenames to proper format only when
calling external compiler tools, according to their specific
taste.
F.e. this should fix problems when doing Windows cross-build
on *nix systems, with watcom, or other compilers (except
mingw) which has native compiler. It should continue to
work with WINE based on compilers in similar situations.
There is one specific exception when passing around
filenames as part of options. In this case hbmk2 cannot do
too much magic, so try to avoid it.
Though I never actualluy tried this latter case.
Please test it, regressions are possible. I'd be happy to
see stress tests with passing various combination of pathseps
and watching -trace output whether everything is properly
converted to right format.
+ Will now convert filenames to Cygwin format for Cygwin
targets.
! Fixed to accept .hbi files without '@' prefix.
* config/postinst.prg
% Do not add '@' prefix when referring to .hbi files.
* src/vm/extend.c
! Fixed TRACE message of new hb_parnintdef() function.
* src/rtl/hbcomhb.c
* Minor correction to one function description in comment.
* src/rtl/hbsocket.c
* Minor formatting.
* include/hbcom.ch
+ Added comments.
* Formatting.
+ Added comment that code is used by .c code.
* contrib/hbtpathy/telepath.prg
* Rewritten to use native HB_COM*() API (instead of hbct
specific COM_() one).
+ tp_send() code rewritten to use core timeout functionality.
+ Implemented formerly disabled tp_ctrldtr() function.
(pls review it)
% FetchChars() internal function simplified.
* contrib/hbcomm/hbcomm.prg
* Rewritten to use native HB_COM*() API (instead of hbct
specific COM_() one).
* contrib/hbsms/hbsms.prg
* Rewritten to use native HB_COM*() API (instead of hbct
specific COM_() one).
* Receive code rewritten to rely on core timeout functionality
instead of rolling local implementation.
; I didn't make any tests with API converted COM code, so please
review and test these changes.
* contrib/hbtpathy/hbtpathy.hbc
* contrib/hbcomm/hbcomm.hbc
* contrib/hbsms/hbsms.hbc
- Deleted hbct dependency.
* INSTALL
* package/winuni/RELNOTES
* QT 4.6.2 -> 4.6.3
* contrib/hbtpathy/Makefile
* contrib/hbtpathy/hbtpathy.hbp
* contrib/hbtpathy/hbtpathy.hbc
* contrib/hbtpathy/telepath.ch
- contrib/hbtpathy/tpcommon.c
- contrib/hbtpathy/tpwin.c
- contrib/hbtpathy/tpos2.c
- contrib/hbtpathy/tpunix.c
- contrib/hbtpathy/tpdos.c
* contrib/hbtpathy/telepath.prg
* Changed to use hbct lib COM functions.
* Changed some misc functions to .prg from .c.
- Deleted all .c files.
; NO GUARANTEES. PLEASE TEST AND REVIEW IT. All my testing
was to make sure the lib and test app builds properly.
* contrib/hbtpathy/tests/testtp.prg
* Formatting.
* src/rtl/memvarhb.prg
* Minor in comment.
* contrib/hbtpathy/tpunix.c
+ Applied patch sent to the list by Tamas Tevesz.
Fixing some compilation problems due to missing predefined macros
on certain *nix systems.
* contrib/hbqt/hbqt_common.hbm
* Formatting.
* utils/hbmk2/hbmk2.prg
! Fixed to make sure -depcontrol= header path value is added
to the header path search list in the same location as specified
on the cmdline.
* contrib/hbct/ctnet.c
* contrib/hbtpathy/tpwin.c
* contrib/hbnf/getenvrn.c
! Fixed to disable some functionality on all WinCE platforms.
These were WinCE API functions wrongly declared in
mingwarm/poccarm headers. (thus causing link-time errors
for final apps trying to use these functions)
* contrib/hbwin/win_dlg.c
! Enabled more functionality for WinCE. mingwarm builds
will probably crash due to buggy commdlg.h header.
* src/vm/fm.c
! Fixed to redefine ABORT for all wce/msvcarm targets.
* utils/hbmk2/hbmk2.prg
! Minor typo in recently added help item.
* contrib/gtwvg/gtwvg.h
* contrib/gtwvg/wvggui.h
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_prn3.c
* contrib/hbwin/win_dlg.c
* contrib/hbodbc/odbc.c
* contrib/rddsql/sddodbc/sddodbc.c
! Fixed to compile with -DWIN32_LEAN_AND_MEAN.
* src/vm/estack.c
* src/vm/fm.c
* src/vm/garbage.c
% Deleted unnecessary OS/2 INCL_* constant definitions.
* src/vm/cmdarg.c
* src/vm/thread.c
* src/vm/dynlibhb.c
+ Added comment for some exception where OS/2 INCL_ constants
hace to be defined before Harbour headers. (because hbstack.h
will include os2.h through hbthread.h in MT build-pass)
* src/vm/extrap.c
* src/common/hbgete.c
* src/common/hbffind.c
* src/common/hbver.c
* src/common/hbfsapi.c
* src/rtl/filesys.c
* src/rtl/diskspac.c
* src/rtl/gtos2/gtos2.c
* src/rtl/cputime.c
* src/rtl/disksphb.c
* contrib/hbtpathy/tpos2.c
* contrib/hbmzip/hbmzip.c
* contrib/hbqt/hbqt.h
% OS/2 '#define INCL_*' lines moved right before os2.h is included.
Now that os2.h isn't included by Harbour headers, this is possible.
* contrib/hbtpathy/telepath.prg
% Using HB_MILLISECONDS() instead of SECONDS().
! TP_RECVTO(), TP_FLUSH() fixed to honor -1 timeout.
; Please review. No tests made besides compiling and reviewing.
* contrib/hbtpathy/telepath.prg
! Fixed "midnight bug" in several TP functions having timeout option
(it was wrong in all places).
Reported by AbeB.
; Please review/test, I didn't make _any_ testing whatsoever.
* 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.
* contrib/hbtpathy/tpunix.c
+ Cleaned definition of CRTSCTS macro, if not defined.
Based on info sent to dev list by Przemek, plus Darwin value
added after checking my system.
+ Added TODO warning and dummy return value if CRTSCTS
cannot is unknown for target platform.
; Please review me.
* contrib/hbwin/win_os.prg
* contrib/hbwin/win_osc.c
* contrib/hbwin/legacycv.c
+ Added WIN_OSISVISTAORUPPER().
+ Added xhb compatibility functions OS_ISWINVISTA_OR_LATER()
+ WIN_OSNETREGOK() extended to turn of SMB2 on Vista and upper systems.
! Fixed WIN_OSNETREGOK() to only attempt to change HKLM registry settings
if run under admin account (on NT systems). This also fixes a typo
in current xhb implementation.
; Adaptation of xhb addition by Peter Rees.
* contrib/hbwin/win_regc.c
+ Added NOTE about minor xhb incompatibility in registry hive numbers.
(default/zero is HKCU in Harbour, HKLM in xhb)
* contrib/hbide/ideparseexpr.c
* Cleaned int/size type usage.
* Formatting.
* Variables name cleanups.
* 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/contrib/hbtpathy/telepath.prg
! fixed tp_inkey() to not freeze when called without parameter
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* added OS/FS error codes to RTEs generated during indexing
* replaced few numeric error codes with EDBF_* macros
* contrib/hbtpathy/telepath.prg
! Fixed forming default COM port names on Windows NT
systems. (I didn't test Win9x, but I assume they work
like DOS regarding this aspect).
* contrib/hbxbp/Makefile
* contrib/gtwvg/Makefile
! Using HB_INC_DEPEND instead of modifying HB_USER_PRGFLAGS
and HB_USER_CFLAGS. Old solution wasn't good because the
new include dirs were added after central ones, so central
ones effectively masked them and wrong headers could be
picked through the build.
* config/rules.cf
+ Added HB_INC_DEPEND variable to store dirs which should
be included before central include dir.
* config/global.cf
* Small change in predefined HB_BUILD_NAMEs. Unicode 'u'
marker moved to end, C++ marked changed to 'p' (from 'x').
* contrib/rddado/rddado.hbc
* contrib/gtwvg/gtwvg.hbc
* Slash sync with other .hbc files. (forward slash is used)
* config/dos/watcom.cf
% Minor opt in operator.
* config/global.cf
! Fixed 'sh' HB_SHELL detection. Problem experienced with
Cygwin GNU Make, where SHLVL isn't defined on the first
level. Now also checking for SHELL=/bin/sh to detect sh
shell.
* tests/multifnc/Makefile
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* contrib/gtalleg/Makefile
* contrib/hbodbc/Makefile
* contrib/hbtpathy/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbblat/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbxbp/Makefile
* contrib/hbcurl/Makefile
* contrib/gtqtc/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/rddado/Makefile
* contrib/gtwvg/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbtip/Makefile
* contrib/hbwin/Makefile
* contrib/hbssl/Makefile
* source/vm/Makefile
* source/vm/vmmt/Makefile
* source/rtl/gtdos/Makefile
* source/rtl/gtwin/Makefile
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/Makefile
* source/rtl/gtos2/Makefile
* source/rtl/gtsln/Makefile
* source/rtl/gtgui/Makefile
* source/rtl/gtwvt/Makefile
* source/rdd/Makefile
* source/rdd/dbffpt/Makefile
! Including 'global.cf' directly to make HB_ARCHITECTURE/HB_COMPILER/HB_COMMERCE
variables work in case we're relying on autodetection.
; TODO: May need to do this for a few other cases where detection is relying
on some additional variables. Like HB_XBUILD, which needs to be
cleaned further, maybe autodetection added.
; NOTE: Above changes mean that from now on for basic build usage it's
enough to have the compiler in PATH and to issue a simple 'make'
or 'mingw32-make' (or whatever GNU Make is called in that environment),
and make process should just work. IOW, no need to go through
"starter" scripts in root (make_gnu.*).
* Makefile
* tests/Makefile
* contrib/hbmisc/Makefile
* contrib/hbwin/Makefile
* utils/Makefile
% Started converting '=' operators to ':=' where applicable.
; TODO: Rest of Makefiles.
* contrib/hbwin/Makefile
! Including 'global.cf' directly to make HB_ARCHITECTURE/HB_COMPILER
variables work in case we're relying on autodetection.
; TOFIX: Rest of Makefiles.
* config/global.cf
+ Added self-inclusion check to allow adding this .cf file
directly to Makefiles in order to force platform detection
for cases where this information is needed for local decisions.
* config/dos/global.cf
- Deleted 'ifndef MK' construct. Purpose unknown, and not
found similar for other platforms.
* config/global.cf
* config/globsh.cf
+ Added my copyright.
* contrib/hbtpathy/tpwin.c
* contrib/hbtpathy/tpos2.c
% Deleted unnecessary headers.
* contrib/hbtpathy/telepath.ch
* contrib/hbtpathy/tests/testtp.prg
* contrib/hbtpathy/tpwin.c
* contrib/hbtpathy/tpos2.c
* contrib/hbtpathy/tpunix.c
* contrib/hbtpathy/tpdos.c
* contrib/hbtpathy/telepath.prg
+ Added self-guards to header.
! Converted all comments to ANSI C.
+ Added note to header that it's used from C code.
! Put negative macro values into parantheses.
! Fixed bad typo in test program which broke it for all platforms.
% Minor optimization to TP_REOPEN().
! Moved internal structure macros from header to .prg.
+ Added comment for FILE() usage in TP_OPEN().
! Fixed to not use FILE() to check for port existance on non-*nix
platforms. (maybe this works on OS/2 and it can be readded there,
I don't know).
! Using manifest constants instead of literals in few places.
; After these changes, hbtpathy works on Windows platform.
(made basic test only)
* utils/hbmk2/examples/contribf.hbc
* contrib/hbtpathy/Makefile
+ contrib/hbtpathy/tpdos.c
* contrib/hbtpathy/hbtpathy.hbc
+ Added DOS stubs. This makes it possible to enable this contrib
for all existing platforms. Serial support is possible to
implement in DOS.
% Now all source files are compiled for each platform, platform
specific parts are guarded internally, no need to duplicate the
logic on the make level.
* contrib/hbtpathy/tpwin.c
* contrib/hbtpathy/tpos2.c
* contrib/hbtpathy/tpunix.c
* contrib/hbtpathy/telepath.prg
* contrib/hbtpathy/tpcommon.c
+ Renamed all internal functions from P_*() to __TP_*() to
comply with rest of Harbour and lessen chance of colliding
with other code. It also makes it easier to identify them
in code. I won't list this as an incompatibility as we're
talking about internal functions, so no user code is supposed
to use these.
+ Added compatibility wrappers for Telepath(y) functions:
BIN_AND(), BIN_OR(), BIN_XOR(), BIN_NOT().
* contrib/hbtpathy/Makefile
- contrib/hbtpathy/tplinux.c
+ contrib/hbtpathy/tpunix.c
* contrib/hbtpathy/tpcommon.c
* contrib/hbtpathy/tpwin.c
* contrib/hbtpathy/tpos2.c
* contrib/hbtpathy/telepath.prg
* contrib/hbtpathy/hbtpathy.hbc
+ Enabled for all *nix systems (was only linux and darwin).
I don't know if it works on all *nix systems, but it should
be our goal. We will see. Please test.
% Using HB_CRC32() in core instead of reimplementing it locally.
! P_CTRLCTS() dummy now returns proper type.
+ P_OUTFREE() implemented for Windows platforms.
+ P_ISDCD(), P_ISRI(), P_ISDSR(), P_ISCTS()
implemented for Windows platforms. (ideas taken from hbwin)
Neither of these were tested, but it's a start.
+ P_INFREE() added for Windows and OS/2.
Only clean compilation was tested.
+ TP_INFREE() added.
* Some formatting.
* contrib/hbwin/win_prt.c
+ Some extra safety.
* contrib/hbtpathy/telepath.prg
! Fixed tp_open() to not add numeric port to passed portname.
It's now only added to portname if it's not passed and default
is used. On darwin, the portname isn't necessarily ending with
a number.
* contrib/hbwin/win_tprt.prg
* contrib/hbwin/win_prt.c
+ ::Recv() got a new second parameter to return result code.
+ WIN_PORTFCN() now requires port number to be passed as 1st param.
+ WIN_PORTERROR() now requires port number to be passed as 1st param.
* Renamed function WIN_PORTFCN() to WIN_PORTFUNCLAST()
+ Fixed last port operation and last error to be stored per port
rather than in global vars. This makes it possible to use multiple
ports in parallel.
- Deleted WIN_PORTBUFFERS() which wasn't MT friendly.
+ WIN_PORTOPEN() function got enabled 6th and 7th inbuffer/outbuffer
parameters. This replaces WIN_PORTBUFFERS() function.
+ Added WIN_PORTRECV() function which is similar to WIN_PORTREAD()
but returns the result directly rather than putting it in a var
passed by reference. It accepts lenght parameter and return result
code by reference. It's a little bit more effient than WIN_PORTREAD().
% Some if/else branches swapped to make code a little smoother.
* contrib/hbwin/olecore.c
+ Attempt to add vars by reference support. Commented until
there is no test code to try it.
* Minor formatting.
* contrib/xhb/hbserv.h
* contrib/xhb/htmlform.ch
* contrib/xhb/inet.h
* contrib/xhb/hblognet.prg
* contrib/xhb/tfile.prg
* contrib/xhb/html.ch
* contrib/xhb/tedit.prg
* contrib/xhb/tframe.prg
* contrib/xhb/htjlist.prg
* contrib/xhb/xdbmodst.prg
* contrib/xhb/htmlclrs.ch
* contrib/xhb/thtm.prg
* contrib/xhb/hterrsys.prg
* contrib/xhb/tcgi.prg
* contrib/xhb/regexrpl.prg
* contrib/xhb/hbserv.ch
* contrib/xhb/ttable.prg
* contrib/xhb/hjwindow.prg
* contrib/xhb/hbserv.c
* contrib/xhb/htmutil.prg
* Header formatting.
; NOTE: I noticed some xhb components have pure GPL license (recently
added CGI parts), plus some other use some sort of xhb specific
modification of original Harbour + exception license. This
contains some sentence which doesn't seem to make much sense:
"This exception applies only to the code released with this xHarbour explicit exception."
FYI.
* contrib/hbtpathy/telepath.prg
* utils/hbmk2/hbmk2.prg
* Minor formatting, comments.
* contrib/hbtpathy/tpwin.c
* contrib/hbtpathy/ChangeLog
* contrib/hbtpathy/telepath.prg
* Formatting.
+ Added some dummy functions to at least make the win version link
properly. It didn't work for me though.
* contrib/hbwin/win_tprt.prg
* contrib/hbwin/win_prt.c
* Formatting.
* Added Hungarian notation to variables.
! Tweaked a few types.
+ Extended number of ports to 32 (from 16). F.e. on my system
the Nokia phone gets installed on COM22.
; TODO: Rename functions/class to comply with rest of lib.
* make_gnu_os2.cmd
* make_gnu.bat
% Deleted defaulting of HB_*_INSTALL. Now done by make files.
; Same should be done for *nixes.
* contrib/xhb/inet.h
* Converted to a stub which shows error. This header was
making public some local structures and functions which are
no longer supported in Harbour.
* contrib/xhb/inet.h
* contrib/hbct/print.c
* contrib/hbtpathy/tpwin.c
* source/rtl/hbinet.c
! *WIN_32* -> *WIN*
* harbour/config/os2/watcom.cf
* harbour/config/os2/dir.cf
* harbour/config/os2/install.cf
* small cleanup for builds with *nix like shells and cross builds
* harbour/contrib/rddads/Makefile
! disabld from OS2 builds - if ADS supports OS2 then please speak-up
* harbour/include/hbthread.h
* added small hack as workaround for missing OS2 declarations
* harbour/source/rtl/filesys.c
! fixed typo in OS2 builds
* harbour/source/rtl/hbproces.c
! fixed non GCC OS2 builds
* harbour/contrib/hbtpathy/tpos2.c
! fixed casting in OS2 builds
* harbour/contrib/xhb/hbserv.c
! disabled from OS2 non GCC builds
Now I can create OS2 OpenWatcom build in my Linux box using this simple
script:
#!/bin/sh
if [ -z "${WATCOM}" ]; then
export WATCOM="/opt/lng/watcom"
export INCLUDE="${WATCOM}/h:${WATCOM}/h/os2"
export PATH="${WATCOM}/binl:$PATH"
fi
export HB_ARCHITECTURE=os2
export HB_COMPILER=watcom
export HB_INSTALL_PREFIX="$(pwd)/hb-os2/watcom"
#cross build settings
# this should be fixed and we should use HB_PPGEN_PATH as direct
# reference to hbpp binaries and HB_COMP_PATH as direct reference
# to harbour binaries in all builds. Otherwise we have to create
# some hacks to create platform specific names for above binaries
# i.e. in *nixes links with .exe extension.
export HB_PPGEN_PATH="/tmp/cros-hb"
export HB_BIN_COMPILE="/tmp/cros-hb"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -D__PLATFORM__OS2"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -undef:__PLATFORM__UNIX"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -undef:__PLATFORM__LINUX"
# eliminate libraries which scans for local host header files
export HB_XBUILD=yes
./make_gnu.sh "$@"
It should work also in Windows with MSys.
This should resolve the problem with testing OS2 builds, at least
for OpenWatcom. I do not know if GCC for OS2 is available as cross
build environment.
I think that Viktor can quite easy adopt hbmk2 for OS2 cross compilation.