* source/pp/Makefile
! Fixed to not throw harmless but still confusing error
messages when cleaning hbpp binary parts.
* bin/hb-mkdyn.bat
% Minor optimization in initialization.
- make_gnu_os2.cmd
- make_gnu.bat
- Deleted these starter batch files.
; Please use 'mingw32-make' (if installed in PATH) or
'config/mingw32-make' (if not installed in PATH) instead.
OS/2 users should use 'make'.
; OS/2 users will have to add:
set HB_USER_CFLAGS=-DTCPV40HDRS
to local configuration unless they used:
set HB_OS2_TCP32=yes
I'd like to ask OS/2 users to add (now deleted) related
documentation to one of our docs: INSTALL or include/hbsetup.h.
Since this was a setting to disable some default setup,
we can readd this setting with another name to
config/global.cf if needed. Pls tell me about it.
; TODO: Delete make_gnu.sh and/or integrate make_gnu_xmingw*.sh.
There is still two things which is done by make_gnu.sh:
- Detection for -fPIC option.
- Setting HB_INSTALL_PREFIX to system location.
(I don't like this, but it seems to be standard
behaviour on Linux, so we may want to change GNU Make
default logic according to that)
; TODO: Move mpkg_*.sh files with related support files to /package.
Best would be to integrate them to postinst.sh.
* INSTALL
+ Added TOFIX to one example: djgpp with NT shell will choke on
too long cmdline when building external/libhpdf.
; TOFIX: see above. (if possible. If it's too complicated we
should simply drop this scenario, after all DJGPP GNU
Make also works well.
* contrib/gtalleg/Makefile
* contrib/hbmysql/Makefile
* contrib/hbodbc/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbxbp/Makefile
* contrib/hbcurl/Makefile
* contrib/gtqtc/Makefile
* contrib/rddsql/sddmy/Makefile
* contrib/rddsql/sddpg/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/hbhpdf/Makefile
* contrib/gtwvg/Makefile
* contrib/hbpgsql/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbgd/Makefile
* contrib/hbwin/Makefile
+ Indentation.
* source/pp/pplib.c
* source/compiler/hbstripl.c
+ Added HB_EXTERN_BEGIN/END plus explicit declaration of
some static functions to make SunPro C++ mode happy.
There are still *tons* of warnings messages, most of them
complaining about function declaration 'extern "C"' and
const differences, even in Harbour generated C code.
These fixes are experimental and address just the tip
of the iceberg.
Please review me.
* contrib/hbwin/wapi_winbase.c
+ Added WAPI_FORMATMESSAGE(). Unicode support implemented, but
not tested, last parameter not implemented. This should replace
limited FORMATMESSAGE() implementation found in win_prt.c.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/win_tprt.prg
* contrib/hbwin/tests/testprt1.prg
* contrib/hbwin/tests/testprt2.prg
* contrib/hbwin/win_prt.c
* Functions and class renamed to have "win_" prefix.
% Other minor cleanups.
+ win_portopen() returns -1 if the port number was out of
range, so MAXSERIAL constant could be elminiated.
% INVALID_HANDLE_VALUE constant is in reality an explicit
-1 used by low-level lib layer, so I've elminiated it,
and high-level lib layer also uses plain -1 now.
Could be replaces by some macros, but it shouldn't
use a Windows specific name.
- Deleted FORMATMESSAGE().
* Using WAPI_FORMATMESSAGE() instead of local FORMATMESSAGE().
(they are not compatible)
* contrib/hbwin/wce_smsc.c
! Added TOFIX for an lstrcpy() function. This is unsafe
and can easily cause buffer overrun. Until someone
fixes this properly, I've added a workaround where input
string lenght is checked to be smaller than approriate
buffer size. Only compilation was tested using poccarm,
I have no WinCE decide.
Jose, please have a look at it.
* contrib/hbwin/olecore.c
* Minor formatting.
* source/pp/Makefile
! Do not install hbpp executable when HB_HOST_BUILD == 'lib'.
Please verify me.
* config/global.cf
% Minor simplification to HB_*_INSTALL defaulting.
* utils/hbmk2/hbmk2.prg
* Minor formatting.
* harbour/include/hbstack.h
+ added socket error codes to HB_IOERRORS
* harbour/include/Makefile
+ harbour/include/hbsocket.ch
+ harbour/include/hbsocket.h
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbsocket.c
+ added new BSD socket functions: hb_socket*(). They should be quite
close to low level C socket interface with few modifications which
help to hide some platform differences. Unfortunately we do not use
autoconf so I had to arbitrary set which features are available
on some platforms. In practice it means that it reduces portability
to older OS-es, i.e. it should work with current Linux versions
but it will not without some modifications in macros used to control
supported features with older Linuxes using kernel 2.2 or 2.0.
The same can happen with other *nix ports like Darwin, SunOS, HP-UX
or with different versions of some Windows compilers. I also do not
know which functionality is available in OS2 GCC ports and I would
like to ask OS2 users to make tests and disable not working features.
We also need tests with HP-UX, Darwin and SunOS.
IP6 support is enabled only in *nixes. If Windows users are interested
in IP6 then please add support for it. Most of Windows compilers do
not support standard POSIX functions so I do not want to make it
myself using unknown for me API without testing.
In *nix builds PF_UNIX/PF_LOCAL sockets are also supported.
Support for other socket types can be easy added if someone is
interested in them.
The constant values used in hbsocket.ch are equal to original BSD
socket definitions. If it's necessary then it's possible to enable
their translation inside hbsocket.c code though I do not think we
will find such OS.
The list of hb_socket*() functions was designed to cover all existing
functionality in hbinet.c and socket.c. Most of functions supports
timeout parameter what effectively allows to hide direct select()
usage.
Please make test with real applications and report any problems
with hb_inet*() functions you will find.
* harbour/source/vm/hvm.c
* minor cleanup
* harbour/source/rtl/hbi18n1.c
* cleaned variable name
* harbour/source/rtl/hbinet.c
* harbour/examples/uhttpd2/socket.c
* harbour/contrib/hbssl/hbssl.c
* updated to use hb_socket*() functions
* harbour/include/hbextern.ch
* enabled HB_INET*() functions in DOS builds - they will simply return
errors
- harbour/include/hbapinet.h
- removed old header file
* harbour/source/pp/ppcore.c
! modified ENDTEXT marker to work also with comments in the same line
It's more closer to Clipper though intentionally we are not fully
CA-Cl*pper compatible here.
* harbour/source/pp/Makefile
* removed old HB_PP_RULES used for precomputed pptables
* added protection against setting possible actions executed without
HB_ARCHITECTURE and HB_COMPILER
* harbour/source/pp/Makefile
! set EXE_FILE - it's workaround to force bin/<arch>/<cmp> directory
creation in current make files and then cleaning it if possible
* harbour/config/rules.cf
* removed old hardcoded clean rules which deleted files not created
by build process
* harbour/config/instsh.cf
* pacified install command echo
* harbour/config/globsh.cf
! fixed new sh clean rules: [ ! -f $(LIB_DIR)/* ] causes syntax
error when more then one file exists in $(LIB_DIR) directory
* source/pp/Makefile
! Fixed to delete hbpp.tds.
* config/globsh.cf
+ Attempt to fix nt shell clean rules. Please test.
! Fixed to create bin dir even when lib targets are being
created. This hack is needed to support existing hack
inside source/pp/Makefile. If there is any possibility
to solve current hbpp lib+bin rules in some cleaner ways
IMO we should do it, but so far I couldn't figure out
how current method works.
* source/pp/Makefile
* config/rules.cf
* config/global.cf
+ Added new internal variable HB_HOST_BIN_DIR to avoid touching
original HB_BIN_COMPILE and in turn mess up __PLATFORM__ macro
definitions in recursive runs to GNU Make.
* harbour/harbour.spec
! fixed RPM building after recent modification in Makefiles
* harbour/harbour-win-spec
* harbour/harbour-wce-spec
* updated for new binary files directory and HB_BIN_COMPILE meaning
* harbour/source/pp/Makefile
* harbour/config/rules.cf
! fixed binary extension used to execute hbpp and harbour,
AFAIK in current version it should be HB_HOST_BIN_EXT not EXE_EXT
* harbour/config/global.cf
! fixed host architecture autodetection:
@uname = $(shell uname -a)
does not execute command silently but creates envvar '@uname'
% added function for host detection and extended host detection
rules to work with some envvars
% test some known OS envvars before calling uname
! use 'uname -s' instead of 'uname -a' which may cause wrong host
detection when host name contains some string we are looking for
! set .exe in HB_HOST_BIN_EXT for win_amd64
* source/pp/Makefile
* source/pp/hbpp.c
+ hbpp is now accepting directory for -c parameter and in this
case it will check ChangLog names in specified dir.
+ Modified make file to pass dir to hbpp so now it configures
itself automatically no matter where we move the object directory.
; Please review me.
* source/pp/Makefile
- Removed HB_PPGEN_PATH setting. Now HB_BIN_COMPILE is used to
point to the directory where all native executables are to be
found. This means you can simply delete HB_PPGEN_PATH from
your local settings.
; NOTE: Please update make_gnu_xmingw*.sh script accordingly,
it should probably accept (detect) HB_BIN_COMPILE and
drop HB_COMP_PATH / HB_PPGEN_PATH settings.
Or, we should define some new ways to define cross
builds replacing the current mess (there is also
HB_XBUILD). I'd vote for these envvars:
- HB_HOST_ARCH (linux, win, dos, os2, etc...)
- HB_HOST_BIN (dir of native executables)
- HB_HOST_BIN_EXT (.exe or empty)
* INSTALL
* Updated cross-build sections and deleted make_gnu_xmingw*.sh
related exception to keep instructions clean.
* contrib/hbwin/wapi_commctrl.c
* contrib/hbwin/hbwapi.h
! Fixed to compile under various other win compilers.
! Added missing WinCE protections. (notice all tools are freely
available to check these and avoid breaking builds)
Added non-WinCE branch to return dummy values.
! Formatted: (_WIN32_IE >= 0x0300) -> ( _WIN32_IE >= 0x0300 )
! Fixed non-ANSI comments.
! Fixed warnings, and there is still some dubious comversions
in there like HANDLE - HTREEVIEW and RECT passings. I wonder
if it is possible at all to create clean Windows API code.
; NOTE: Please take care of above stuff, it's not a pleasure
to be the cleaner of such code, but it breaks builds
to it must be done all the time.
; NOTE: I'd like to recommend adding only Windows API functions
which are available on all Windows platforms (WinCE,
Win64) otherwise it will be more difficult to build
anything portable on top of them.
; QUESTION: Why many functions are disabled with #if 0?
* source/pp/Makefile
* config/rules.cf
* config/darwin/gcc.cf
* config/dos/watcom.cf
* config/dos/djgpp.cf
* config/global.cf
* config/lib.cf
* config/win/watcom.cf
* config/bin.cf
* config/linux/watcom.cf
* config/os2/watcom.cf
* config/os2/gcc.cf
+ Now all binaries will be created inside bin/<arch>/<comp>,
instead of the work/obj dir.
; Please test. (I didn't test cross-compilation yet, but maybe
now it's a better time to cleanup the HB_PPGEN_PATH, HB_BIN_COMPILE
settings and drop the former.
! Reverted prev cleanup.
; TOFIX: install rule for hbpp lib doesn't work after recent
change.
; TODO: Delete HB_PPGEN_PATH
* harbour/source/pp/Makefile
! fixed hardcoded for windows shortcut (Change~1) ChangeLog name
in DOS OpenWatcom builds so now it's possible again to create
such builds in real DOS without LFN support
* source/pp/Makefile
! Ugly hack added to make dos/watcom creation under NT hosts.
Please check/fix since this probably broke dos/watcom on
DosBox.
; NOTE: we should probably rename ChangeLog to CHANGES, as it's
almost impossible to get it right properly.
Or, hbpp could look for these alternate short names in
some predefined order.
* include/hbcomp.h
* include/hbcompdf.h
* include/hbapifs.h
* include/hbexprop.h
* include/hbmacro.h
* include/hbapi.h
* include/hbapiitm.h
* include/hbdate.h
* source/pp/ppcore.c
* source/vm/itemapi.c
* source/vm/arrays.c
* source/vm/extend.c
* source/common/expropt1.c
* source/rtl/philes.c
* source/rtl/empty.c
* source/rtl/minmax.c
* source/rtl/dates.c
* source/rtl/filesys.c
* source/rdd/dbfnsx/dbfnsx1.c
* source/rdd/dbfcdx/dbfcdx1.c
* source/rdd/dbf1.c
* source/rdd/dbffpt/dbffpt1.c
* source/rdd/hbsix/sxdate.c
* source/compiler/hbmain.c
* source/compiler/complex.c
* source/compiler/harbour.yyc
* source/compiler/harbour.y
* contrib/hbct/files.c
* contrib/hbct/dattime2.c
* contrib/hbct/datetime.c
* contrib/xhb/filestat.c
* contrib/hbtip/utils.c
* examples/hboleold/win_ole.c
* LONG -> long for date/time related values
(julian, date, type, millisec)
; This is an effort to clean Harbour sources from
Windows/legacy-Clipper basic types and replace
them with own or ANSI C ones.
In the above case, usage wasn't consistent,
LONG and long were mixed.
* source/main/harbour.c
* source/vm/fm.c
* LONG -> long for some stat counters.
* harbour/source/pp/Makefile
! fixed / used as directory separator in $(RM) command with non *nix like
shells
* restored wildcard hack for some dynamic shortcut redirectors, f.e.
DOSEMU
* INSTALL
* Updated.
* source/pp/Makefile
! Fixed to ignore clean command result which is a TOFIX.
(anyone to help here?)
! Changed ChangeLog file detection to specifically look
for CHANGE~1 and to not look for CHANGE~* and CHANG~*
where the latter cannot exist and the former may
accidentally pick up wrong file.
* harbour/contrib/gtwvg/wvgwin.c
! fixed wrongly used & operator
* harbour/source/rtl/hbproces.c
* added TODO warning in OpenWatcom Linux builds
* harbour/make_gnu.sh
! fixed test_param() function definition - it has to be defined it's
before use
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
* harbour/source/rtl/round.c
* removed unnecessary <math.h>
* harbour/source/vm/hvm.c
* harbour/source/common/expropt2.c
* harbour/contrib/hbct/ctmath.h
* harbour/contrib/hbclipsm/num.c
* harbour/contrib/hbclipsm/numfloor.c
* harbour/contrib/hbclipsm/numceil.c
* use "hbmath.h" instead of <math.h> to avoid possible desynchronization
between used math libraries and header files
* harbour/source/pp/Makefile
! fixed real DOS compilation - replaced Windows only hack by wildcard
function usage
* harbour/config/dos/dir.cf
* removed intermediate sh call from executed commands
* harbour/source/vm/Makefile
* disabled HB_HVM_ALL in all Watcom builds - it works but the compilation
time is very huge so user who wants to use it should set envvar
HB_HVM_ALL=yes
* enabled HB_HVM_ALL for DJGPP builds
* source/pp/Makefile
! Fixed (almost) to delete include/hbverbld.h on clean.
Keeping this file there hid DOS build problems when using
Windows host.
; TOFIX: Filename in delete command for all platforms.
; TOFIX: HB_CHANGELOG value for DOS builds. It's currently
broken for MS-DOS hosts. To avoid these problems
we should use 'CHANGES' instead of 'ChangeLog'...
; TOFIX: I applied Przemek's patch to make_gnu.sh wrongly,
and have no idea how to fix it.
; TOFIX: dos/owatcom builds can now created successfully
(using standard Open Watcom 1.8 installation),
the bad news is that f.e. hbmk2 will crash the
NTVDM when trying a simple make.
* INSTALL
! Minor fix to DOS instructions.
+ Added DOS build examples.
* mpkg_dos.bat
! Fixed target dir and archive name to be different
for djgpp and owatcom builds.
* make_gnu.bat
+ config/djg-make.exe
+ Added embedded copy of DOS build of GNU Make.
This is to make DOS builds, specifically dos/owatcom
builds simpler. Original filename was 'make.exe'.
This can probably be removed once we move DOS
platform status to a 'target-only' one, like WinCE/ARM.
* make_gnu.bat
! Ugly hack added to create doc/en-EN dir. This still
won't solve the DOS copy problem unless I remove
the hack committed previously. If I remove it
the make process cannot be anymore started without
this batch file as it would choke on xcopy if
above dir doesn't exist.
* make_gnu.sh
! Applied fix to only create install dirs if called
with 'install' option. At the same time enabled
this feature for all platforms. It will also create
doc/en-EN dir.
PLEASE TEST/REVIEW, I didn't do any testing.
; TOFIX: Much or all of these should IMO be done directly
from make files, it would be much self-contained
and consistent.
* source/pp/Makefile
! Fixed to find ChangeLog when building for DOS targets.
This was a problem when trying to build dos/owatcom.
Now in DOS mode it will refer to the ChangeLog by its
8.3 name.
* utils/hbmk2/hbmk2.prg
* Minor formatting.
* mpkg_deb.sh
* harbour.spec
- Deleted hbmsql.
; TOFIX: hbqt is missing from some Linux make files.
; TOFIX: (in next major release) We should try to
make Linux build files less-maintenance intensive.
* INSTALL
+ Added comp.lang.clipper as public forum.
* make_gnu.bat
! Minor.
* source/pp/hbpp.c
! Added version status to banner.
* examples/superlib/hbsuper.hbp
* examples/superlib/hbsuper.dif
* examples/superlib/readme.txt
* examples/dbu/dbu.hbp
- examples/dbu/dbu.dif
+ examples/dbu/dbu52.dif
+ examples/dbu/dbu53.dif
* examples/dbu/readme.txt
* examples/rl/rl.hbp
* examples/rl/rl.dif
* examples/rl/readme.txt
* Updated instructions: New item for *nix users to convert
to lowercase and native EOL format, added hbmk2 command
for all projects, separate 5.2/5.3 DBU patches.
+ Added separate patch for C53 version of DBU sources.
* Converted all original filename references to lowercase.
! Fixed a few bugs in previous patches.
! Fixed .dif files to work on both *nix and non-*nix systems
(had to create them on *nix then convert them to have consistent EOLs)
* harbour/source/vm/eval.c
* update number of parameters in HB_EXECMSG() to keep the HVM stack
clean for any external code which can try to make some HVM stack
tracing/scanning
* harbour/source/vm/evalhb.c
! use hb_vmSend() instead of hb_vmDo()
* harbour/source/pp/pplib.c
* harbour/source/pp/pplib3.c
* harbour/source/vm/runner.c
* harbour/source/vm/hvm.c
* harbour/source/vm/thread.c
* harbour/source/vm/eval.c
* harbour/source/vm/dynlibhb.c
* harbour/source/vm/classes.c
* harbour/source/rtl/do.c
* harbour/source/rtl/xhelp.c
* harbour/source/rdd/workarea.c
* harbour/source/rdd/dbf1.c
% use hb_vmProc() instead of hb_vmDo() in all places where context is
well known as function or procedure call
* harbour/source/pp/ppcore.c
! fixed line number set for C preprocessor in #pragma begindump
* harbour/include/hbcomp.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/genc.c
* added detection of static Harbour functions in #pragma begindump
code. I do not like it because it cannot be well implemented on
other then real C compiler/preprocessor level but it's probably
better then different workarounds I see in some [x]Harbour 3-rd
party projects.
Warning this functionality is not officially supported. It's a hack
to existing #pragma begindump hack and activated only for dumped C
code. It tries to detect Harbour static functions declared by
HB_FUNC_STATIC( name ) but it does not make any real C preprocessing.
Only strips comments and strings and then looks for above statement
dividing the code to some basic tokens so it will give wrong results
for code like:
#if 0
HB_FUNC_STATIC( MYFUNC )
#else
HB_FUNC( MYFUNC )
#endif
{
hb_retc( "MyFunc" );
}
but it works correctly for simple code which does not use conditional
compilation and does not try to redefine HB_FUNC_STATIC() macro, f.e:
proc main()
? YEAR( DATE() ), MONTH( DATE() ), DAY( DATE() ), TEST()
return
#pragma begindump
#include "hbapi.h"
/* are comments stripped? If not then HB_FUNC_STATIC( DATE )
in comment can create troubles. */
// HB_FUNC_STATIC( YEAR ) just like this one in C++ comments
#define MYHB_FUNC_STATIC( fun ) #fun // to test whole word tokens
/* COMMENT */HB_FUNC_STATIC( TEST )
{
hb_retc( "HB_FUNC_STATIC( DAY )->" MYHB_FUNC_STATIC( MONTH ) );
}
#pragma enddump
Before we had wrong results for any code like:
HB_FUNC_STATIC( MYFUNC )
{
hb_retc( "MyFunc" );
}
so it's not making anything worse (I hope ;-)).
The implementation is intentionally local to -gc output to not
effect other compiler code.
* harbour/source/pp/ppcore.c
* harbour/source/common/hbdate.c
* harbour/source/macro/macrolex.c
* harbour/source/compiler/complex.c
+ added alternative support for date constant values as: d"YYYY-MM-DD"
As delimiter the following characters can be used: "-", "/", "."
Just like in t"..."