* 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>)
* source/vm/itemapi.c
! Added casts to avoid MSVC -W4 warnings. All of them was related
to casting Harbour numeric value number of digits/decimals
coming as an 'int' but stored as an USHORT in HB_ITEM.
* source/hbpcre/Makefile
* source/hbzlib/Makefile
+ Added 'HB_BUILD_WARN := no' which causes that these foreign
sources will be compiled using default compiler warning level.
Should avoid a few MSVC warnings.
* source/pp/Makefile
% Deleted rule to delete hbpp_dyn object. No longer necessary
after patching hbpp.c. Just left there in prev commit to
have this line fixed.
! Deleted comment which became irrelevant after prev commit,
but forgot to remove it.
* source/pp/Makefile
! Fixed case when OBJ_DYN_POSTFIX was empty (all platforms
except win/wce non-gcc family) and hbpp object was deleted
twice, the second one resulting in error message.
! Deleted ineffective hack to add an empty line after pptable
rules. I turned out the behavior I was trying to fix with this
is totally random.
* source/pp/hbpp.c
! Disabled content when built in HB_DYNLIB. This file should
never go into a the Harbour dynamic library.
Of course we already have the object deletion trick, but,
at least on bcc it doesn't work reliably. After chasing this
for half a day it turns out bcc build with mingw32-make 3.81
has some sort of random behvior and sometimes hbpp_dyn.obj is
deleted, sometimes not. Also 'rm hbpp.obj' either appears at
the end of the make process, or not, I don't know if there is
any realtion between the two. Maybe we're exploiting some
make bugs with bcc rules, I don't know.
So this patch will make bcc dynamic lib creation reliable.
* config/global.mk
* Comments.
* source/dynlib/mt/Makefile
* source/dynlib/Makefile
* source/Makefile
- Deleted extra dos platform guards. It's not needed. I hope
it won't cause bad side effects.
* config/common/watcom.mk
! Fixed to not use $? in LD_RULE. Typo of yesterday.
! Restored remaining $? to $^. It exploited some bad side effects
in hbpp lib.
* config/globsh.mk
+ Switched os2 $(CP) command to use config/os2-cp.exe.
* config/instsh.mk
+ Changed os2 install rule to the one used for dos shells except dirsep type.
Based on real OS/2 tests made by Maurilio Longo. Thank you very much.
This also means CMDPREF.
! Typos in my comment.
* source/pp/Makefile
! Fixed to also check presence of hbpp object before trying to
delete it. It may not be there in some rare chain of (failure) events.
* config/rules.mk
* config/dyn.mk
! Fixed to handle dynamic lib creation gracefully for targets
where this isn't supported. Now a message will be shown.
+ config/os2-cp.exe
* config/readme.txt
+ Added os2 cp tool. For testing.
* source/pp/Makefile
* source/dynlib/mt/Makefile
* source/dynlib/Makefile
* Minor rename.
* source/vm/maindllh.c
* source/vm/Makefile
+ Added support for os2 .dll. Please review.
* config/os2/watcom.mk
+ Added os2 .dll generation for watcom.
Now it generates OK.
* source/Makefile
* config/lib.mk
+ Added support for os2 and some level of *nix support.
* INSTALL
* Minor update to a few option description.
* utils/hbmk2/hbmk2.prg
+ Added preliminary/experimental/untested OS/2 -shared (.dll)
support for watcom targets.
* source/dynlib/mt/Makefile
* source/dynlib/Makefile
+ Added 'install' logic for dynamic lib implibs.
* config/global.mk
+ Added useful GNU Make link.
! Added HB_HOST_CPU "detection" for os2 and dos to avoid
situation where cross-build is detected due to different
to HB_CPU value. (HB_CPU autodetection for os2 dos was
added yesterday). It's quite theoretical, as os2 dos
has CPU type set to constant 'x86'.
+ Added IMP_DIR value. This hold where to store implibs
for dynamic libs. Empty if platform don't need implibs
(huge relief BTW). For *nix this value is set empty, for
non-*nix it's set to LIB_DIR.
+ Added initialization for DYN_PREF (to empty).
* config/dyn.mk
+ Added handling of IMP_DIR, IMP_FILE.
! Dyn lib build rule guarded with HB_BUILD_DLL and DY_RULE
checks.
* config/globsh.mk
+ Added dirbase and clean rules for implibs.
! Fixed using OS version of dirs in $(wildcard) for nt
clean rules for OBJ_DIR and PKG_DIR.
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.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
+ Dynamic lib rules extended to generate implib in IMP_DIR.
This goes smoothly with all compiler except bcc, which requires
a copy and a delete to move the implib to lib dir. 'move'
doesn't work (says 'command not found' or equivalent and
requires '$(COMSPEC) /C' with GNU Make + nt shell), so I
didn't use it finally. Anyhow bcc implib is small.
* config/globsh.mk
- Deleted $(MV) variable with move command.
(problematic under nt shells)
- config/dj-mv.exe
* config/readme.txt
- Deleted DJGPP mv tool.
; NOTE: dynamic library handling seems to be about feature complete.
* source/pp/Makefile
- Deleted just added global.mk. It's not needed.
* config/globsh.mk
+ Added $(MV) variable with move command.
+ Added $(LN) variable with *nix link command.
! Fixed $(RM) in os2 shell rules to use os2-rm.exe
instead of shell provided del. Latter show errors
if filename doesn't exist, and we're now using
clean rules copied from dos shell, which doesn't
make extra existance checks. Well, to put it
shortly I've synced $(RM) with dos shell solution.
+ config/dj-mv.exe
* config/readme.txt
+ Added DJGPP mv tool.
* bin/hb-func.sh
! Fixed typo in syslib lone in a recent commit.
* source/pp/Makefile
! Deleted double clean rules for hbpp executable + .tds file.
Since BIN_FILE is set, it will be done in central clean rules
anyway.
This solves the recently shown up error message on 'clean'
when using certain shells (nt). It was cleaned twice and for
some reason this created a problem after switching central
rules to use $(wildcard) instead of 'if exist'. Probably
rules are merged, then evaluated at once, thus leaving
two delete commands, since when the file existed when
this evaluation took place.
* source/pp/Makefile
! Readded empty line after pptable rule.
I couldn't find the reason why this was needed, anyhow
without it the dynamic hbpp obj deletion didn't work.
Which GNU Make syntax rules am I forgetting? Any hints?
; TOFIX: Another issue has shown its ugly head, here clean
in hbpp shows error message from 'del' command on
nt shell deleting the .exe (and .tds), despite the
file is there and we're doing wildcard check too.
Ideas are welcome. This worked a few days ago.
* source/dynlib/Makefile
* source/Makefile
+ Moved dynamic lib generation initialization logic to source
root Makefile. This ensures that all subdirs are built before
creating the dynamic libraries.
* config/globsh.mk
+ Added rules to delete .def files.
* config/win/bcc.mk
* config/win/watcom.mk
+ Added new .dll build rules.
; TODO: Solve handling of generated implib.
; TODO: Add dynlib generation logic for *nix targets.
; TODO: Delete postinst script if the new method turns out to
work alright.
* config/win/cygwin.mk
* config/win/icc.mk
* config/win/xcc.mk
* config/win/pocc.mk
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
+ Implemented .dll creation for rest of win/wce compilers:
icc uses the same logic as msvc.
pocc/poccarm/msvcarm/xcc uses the same logic as msvc
except /subsystem option.
mingwarm/cygwin uses the same logic as mingw.
; I didn't test wce ones yet.
* config/win/msvc.mk
% Using $(wildcard) instead of echo trick to delete __lib__.tmp.
* config/win/mingw.mk
* config/win/msvc.mk
* Moved HB_USER_DFLAGS in cmdline.
* config/win/watcom.mk
* config/dos/watcom.mk
* config/linux/watcom.mk
* config/os2/watcom.mk
+ Added 'OP quiet' option to wlink command.
* source/pp/Makefile
! Using OBJ_DYN_POSTFIX instead of hardwired value.
* source/vm/mainwin.c
* source/vm/mainstd.c
! Typo in prev commit regarding watcom/dynlib hack.
* source/rtl/gtwvt/gtwvt.c
! Fix for msvcarm build, where WS_OVERLAPPEDWINDOW macro
is reported missing.
* source/dynlib/Makefile
* source/Makefile
* config/rules.mk
* config/dyn.mk
+ Respect HB_BUILD_DLL=no setting.
* Don't try to create .dll if there were no compiler local rules set.
* source/pp/Makefile
* bin/hb-mkdyn.bat
+ Deleting hbpp dynamic built object to not interfere with
harbour dll creation when picking up the objects with wildcard.
* Changed .dll creation script to not filter out above object
explicitly, it's not needed anymore.
* source/vm/mainwin.c
* source/vm/mainstd.c
* bin/hb-mkdyn.bat
+ Added hack to exclude any content when creating dynamic build
objects for win/watcom. Any content here breaks .dll creation
on this target.
* Changed .dll creation script to not filter out above objects
explicitly, it's not needed anymore.
* config/global.mk
% Changed CPU detection to use $(filter)
+ Added CPU detection based on wce compilers.
+ Showing detected host and target CPU architecture in log
(if it could be detected - this is currently only implemented
for non-*nix targets)
- Deleted host binary extension display in verbose mode.
- Deleted now unused HB_BUILD_VERBOSE option.
* config/global.mk
+ Added HB_DYN_VER variable to hold the version number used in Harbour
dynamic libary name.
* config/bsd/global.mk
* config/darwin/global.mk
* config/hpux/global.mk
* config/linux/global.mk
* config/os2/global.mk
* config/sunos/global.mk
* config/wce/global.mk
* config/win/global.mk
+ Added DYN_EXT variables for each platform.
* source/Makefile
* config/rules.mk
+ config/dyn.mk
+ source/dynlib
+ source/dynlib/mt
+ source/dynlib/mt/Makefile
+ source/dynlib/Makefile
* config/win/msvc.mk
+ Added experimental .dll building feature to the GNU Make system.
It's only implemented for MSVC yet.
The goal is to replace shell specific (postinst) solutions.
* utils/hbmk2/hbmk2.prg
+ Added darwin/icc support. Untested yet.
* source/vm/maindllp.c
! Fixed typo in prev commit.
* utils/hbmk2/hbmk2.prg
* Improvement in msvc/wce support to support multiple WinCE
CPUs.
! Fixed to add '/manifest:no' only for 8.00 or upper msvcarm
compilers.
* config/wce/msvcarm.mk
* Minor improvements.
+ Added preliminary support for MIPS/SH/x86 WinCE build settings.
* source/vm/maindllp.c
+ Added MIPS and SH .dll names.
* include/hbsetup.h
* source/common/hbver.c
* HB_CPU_SUPERH -> HB_CPU_SH
* utils/hbmk2/hbmk2.prg
* config/global.mk
! Fixed to -undef:__PLATFORM__UNIX even for Windows host platforms.
This is required because Cygwin builds have this envvar set.
I'm not sure that setting __PLATFORM__UNIX for Cygwin is right
behavior though.
* config/dos/watcom.mk
* config/win/watcom.mk
* config/linux/watcom.mk
* config/os2/watcom.mk
+ config/common/watcom.mk
% Moved common watcom compiler specific make logic to one file.
I've choosen OS/2 rules in this global makefile, as they will
work on all platforms, albeit in the known slighly hacky way.
It's easy to reintroduce shell specific rules for more advanced
shells. There was one common rule set for nt/dos shells, plus
a very clean one for sh. I may do this in a next commit.
After this change it's possible to create all possible watcom
cross-builds. Pls shout if I missed something or the concept
seems to have some potential flaws.
; QUESTION: Does 'wlib' support '-p=64' option on Linux watcom builds?
; NOTE: Still most of the not yet merged logic could be merged,
since there is only a few minor difference between them.
; TODO: Add shell optimized watcom rules for nt/dos/sh shells.
; TODO: Try to do a similar stunt for gcc.mk files.
* source/pp/ppcore.c
* #ifdef -> #if defined()
* harbour/config/bsd/gcc.mk
* harbour/config/darwin/gcc.mk
* harbour/config/hpux/gcc.mk
* harbour/config/dos/djgpp.mk
* harbour/config/win/mingw.mk
* harbour/config/linux/gcc.mk
* harbour/config/linux/icc.mk
* harbour/config/linux/sunpro.mk
* harbour/config/os2/gcc.mk
* harbour/config/sunos/gcc.mk
* harbour/config/sunos/sunpro.mk
! replaced wrongly used 'findstring' functions with 'filter' functions.
Now findstring is used only in places where we are looking for
substrings not whole words.
* harbour/source/rdd/wacore.c
! fixed typo in comment (by Phil Krylov borrowed from xHarbour)
* harbour/ChangeLog
! fixed my typo in Latin translation of Phil Krylov family
name - sorry Phil.
* harbour/source/rtl/hbproces.c
! fixed hb_fsProcessRun() (__RUN() and HB_RUN()) in WinCE builds
to pass application name as 1-st parameters
+ added parameters passing to hb_fsProcessRun() (__RUN() and HB_RUN())
in WinCE builds - please test.
* include/hbsetup.h
% Optimized out HB_OS_UNIX_COMPATIBLE. HB_OS_UNIX should be used
instead. Since the definition logic for HB_OS_UNIX was completely
different from HB_OS_UNIX_COMPATIBLE, it may be possible that
it's not 100% the same as before, although their meaning was
the same.
HB_OS_UNIX_COMPATIBLE is still available for compatibility, but
it's now marked with HB_LEGACY_LEVEL2 and will be removed in next
major release.
* include/hbapifs.h
* include/hb_io.h
* include/hbsocket.h
* source/vm/set.c
* source/debug/dbgentry.c
* source/common/hbffind.c
* source/rtl/fscopy.c
* source/rtl/fstemp.c
* source/rtl/gtstd/gtstd.c
* source/rtl/gttrm/gttrm.c
* source/rtl/version.c
* source/rtl/hbsocket.c
* source/rtl/copyfile.c
* source/rtl/filesys.c
* source/rtl/console.c
* source/rtl/cputime.c
* source/rtl/gtpca/gtpca.c
* source/rtl/fssize.c
* source/rtl/memofile.c
* source/compiler/hbcomp.c
* source/compiler/gencobj.c
* contrib/hbct/files.c
* contrib/xhb/xhbcopyf.c
* contrib/xhb/hbserv.c
* contrib/hbnf/getenvrn.c
* HB_OS_UNIX_COMPATIBLE -> HB_OS_UNIX
* config/global.cf
* HB_UNIX_COMPATIBLE -> HB_OS_UNIX