* utils/hbmk2/hbmk2.prg
+ Upped warning level for plugins to -w3.
* utils/hbmk2/examples/plug_moc.prg
+ Added -inc, -clean and -rebuild (IOW incremental)
support for moc plugin. It was tested OK in small
example.
* utils/hbmk2/examples/plug_tpl.prg
* Minor.
* utils/hbmk2/hbmk2.prg
* Moved some local variables to internal hbmk2 structure.
+ Made some more functions and variables accesible to plugns
in order to help creating smooth external calls.
+ utils/hbmk2/examples/plug_moc.prg
+ Added 'moc' plugin, which is supposed to be fully functionaly,
though I didn't test it live.
- utils/hbmk2/examples/plug_moc.prg
+ utils/hbmk2/examples/plug_tpl.prg
* Renamed first example.
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/examples/plug_moc.prg
% Further cleaned context passing, so that now even the
'state' variable is passed as part of context rather than
as separate variable, so now the only parameter the plugin
gets is the callback. This is much more flexible and future
proof this way.
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/examples/plug_moc.prg
% Refined how context is passed to plugins, and how
context is passed back to public APIs.
+ Added way to accept parameters from the cmdline and .hbp
files. This is possible via '-pflag=' and '-pi=' options.
Latter serves to pass input file, so the input file magic
logic is always applied to it. Notice that all plugins are
getting all input parameters, so it's their job to process
only what's relevant to them. plugin specific option prefixes
f.e. can be a solution for that.
+ Added API to add new input .prg, .c, .cpp and .rc files
to the build process.
+ Added better protection from tampering internal hbmk2
structures by plugins.
+ Showing error condition and location in case of an RTE occurs
in a plugin.
* utils/hbmk2/hbmk2.prg
+ utils/hbmk2/examples/plug_moc.prg
+ Added experimental plugin system. Plugins are written in .prg
or .hrb and can be passed using '-plug=<.prg|.hrb>' option
or simply by passing '.hrb' filename from cmdline or .hbp/.hbm
files. Plugin names without dir component will be searched
in local dir, hbmk2 dir then PATH.
For the details of the calling protocol and available hbmk2
API calls and variables, pls check the example and hbmk2
source code.
Plugin is called from several build stages, in case of multiple
plugins all of them are called at each stage. The plugin
receives the stage name, hbmk2 context and a hash table for
custom variables. The variables are shared between stages and
plugins. Notice that hbmk2 isn't hbrun, so there is a limited
set of the Harbour language which you can use, this also ensures
that the plugins will behave like hbmk2 itself for the most part.
Nothing is finalized.
; The example is the working replica of moc detection logic found
inside hbqt.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ In non-incremental mode when no workdir is manually set, hbmk2
will now create a temp subdir inside temp dir and create any
intermediate output files there. (previously it was using the
temp dir without creating a temp subdir inside).
; Please test and report leftover temp files and dirs, also test
it on *nix platforms.
* Changed 'couldn't', 'don't' style English abbrevs to
'could not', 'do not', etc.
* config/rules.mk
! Fixed to include static-only C compiler options for targets
which have no separate static/dynamic C compiler pass.
This should fix wrongly built pcre lib causing missing
exported functions in mingw Harbour .dlls.
* utils/hbmk2/hbmk2.prg
+ Changed filtering implementation for cmdline parameters.
Now filters can be placed anywhere and they work for all
parameters.
Please test, regressions may be possible.
* config/postinst.prg
! Added gpm handling logic to hbmk.cfg creation. This was
previously done in recently deleted postinst.sh function.
* utils/hbmk2/hbmk2.prg
! -hbimplib extended for bcc and msvc* to automatically recognize
and use .def file with the same name as the .dll, if present.
! -hbimplib extended for bcc to first look for any existing
OMF .lib file with the same name as the .dll.
! Refined fallback logic used in implib generation.
(moved .dll existence check to lower level)
* Refinements in pathsep usage in implib generation.
* contrib/sddfb/sddfb.hbi
* contrib/hbfbird/hbfbird.hbi
+ Using COFF libs for pocc targets.
* utils/hbmk2/hbmk2.prg
! -hbimplib extended for msvc to first look for any existing
.lib file with the same name as the .dll.
* contrib/sddfb/sddfb.hbi
* contrib/hbfbird/hbfbird.hbi
* Changed to use existing .lib for msvc compilers.
* utils/hbmk2/hbmk2.prg
! Fixed filter evaluation to not let envvar names colliding
with built-in filter keywords influence the results.
(f.e. '{watcom}' while having properly configured watcom
compiler defining WATCOM envvar and using a non-watcom
compiler for the actual hbmk2 session).
% Optimized filter evaluation.
; Thanks to Przemek for the patches.
* utils/hbmk2/hbmk2.prg
! Fixed to ignore .cpp files in main entry detection function.
! Fixed to strip ending pathsep in header and lib path options
passed to compiler tools.
* utils/hbmk2/hbmk2.prg
+ Added hbmk2 level support for multiple input .def files.
NOTE: Multiple .def files are only supported by gcc family
compilers (mingw/cygwin) (and maybe watcom, but I can't
tell by looking at the output), so for portable scripts,
stick to using only one .def file per .dll. bcc,
msvc, pocc will either ignore some of them, or
stop with error.
* ChangeLog
- Deleted accented (UTF8) char.
! Deleted UTF8 file marked added by subsequent committer's editor.
; --- Pls remember to use ASCII 7-bit chars in our files ---
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added .def file support for win|os2/watcom targets in hbmk2.
ATM it requires the special file format required by watcom,
there is no transparent conversion done by hbmk2.
+ Enabled .c stub (for -main, -gt, etc features) in -hbdynvm mode.
* Disabled linking harbour .dll in '-hbdyn -shared' mode.
NOTE: I'm not sure of this move. This way -hbdyn will now
never link any Harbour libs (neither static nor dynamic),
so at least we should renamed -hbdyn to -hbdynraw and
-hbdynvm to -hbdyn, or make some other cleanup in this
regard. Specifically I'm not sure if hbmk2 satisfies
this use-case now by default (without '-nohblib-' option):
"I can use -hbdyn and -static to create self contain DLL
which uses it's own private copy of HVM and Harbour RTL
library which can be linked statically or loaded dynamically
with/from any other applications"
* Text "VM" changed to "Harbour VM"
; NOTE 2: I've checked win/watcom -6s option, but it's still not
good because it appends '_' to exported symbols, so
watcom -shared executables stop working with mingw/msvc
Harbour .dll. Any idea how to solve that?
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added experimental -hbdynvm mode.
+ Added support for .def input file in -hbdyn/-hbdynvm modes.
; TODO: Couldn't find how to pass .def files to Open Watcom wlink.
Anybody with an experience here?
* src/rtl/memvarhb.prg
+ Added one initialization to NIL.
* harbour.spec
* contrib/Makefile
+ contrib/hbsms
+ contrib/hbsms/tests
+ contrib/hbsms/tests/send.prg
+ contrib/hbsms/tests/hbmk.hbm
+ contrib/hbsms/hbsms.prg
+ contrib/hbsms/hbsms.hbc
+ contrib/hbsms/Makefile
* utils/hbmk2/examples/contribf.hbc
+ Readded hbsms lib.
+ Modified to use newly added core com functions
via HBCT .prg level interface. (instead of hbtpathy)
+ Added disclaimer:
EXPERIMENTAL CODE. USE AT YOUR OWN RISK. NO GUARANTEES.
The code well may be pure crap, so if you have problem
with it, supply working patches. Pls note that the
reader function uses locally implemented timeout
functionality, which may or may not work at all,
though you can fix it if you have better idea.
I've only tested it using Mac OS X 10.6 + old Nokia "S40"
phone and one bad SMS number to see it kicks off at
all and that's also the end of my testing possibilities.
* INSTALL
* Two minor cleanups
* config/postinst.prg
+ Will now honor HB_CONTRIBLIBS and HB_CONTRIB_ADDONS
when creating import libraries. IOW it will only create
implibs to the contribs actually built.
* utils/hbmk2/hbmk2.prg
+ Added trick when using real xhb toolchain to detect
-tW C flag and in this case automatically select the ST
C RTL library. (Notice that -tW will only be detected
when passed normally via cmdline or script, and not
when using legacy HB_BUILD_CFLAGS envvar or inherited
compiler flags).
+ contrib/gtalleg/gtalleg.hbi
+ contrib/hbblat/hbblat.hbi
+ contrib/hbcairo/hbcairo.hbi
+ contrib/hbcurl/hbcurl.hbi
+ contrib/hbfbird/hbfbird.hbi
+ contrib/hbfimage/hbfimage.hbi
+ contrib/hbgd/hbgd.hbi
+ contrib/hbhpdf/hbhpdf.hbi
+ contrib/hbmysql/hbmysql.hbi
+ contrib/hbpgsql/hbpgsql.hbi
+ contrib/hbssl/hbssl.hbi
+ contrib/rddads/rddads.hbi
+ contrib/sddfb/sddfb.hbi
+ contrib/sddmy/sddmy.hbi
+ contrib/sddoci/sddoci.hbi
+ contrib/sddpg/sddpg.hbi
+ Added local import library generation hbmk2 make files
to each contrib which requires it.
* config/postinst.prg
+ Changed to use contrib local implib creation hbmk2 scripts to
create import libraries.
- Deleted mingw exception for ocilib to use the static library.
Static lib is definitely better, but if someone would like to
use it, it should be done locally/manually, just like for any
other dependency.
+ Solved firebird implib creation hack/exception in contrib
local .hbi file.
; These fix the last "centralization" issues in Harbour make system.
Still remains documentation problem (everything is in INSTALL),
and *nix .deb/.rpm centralized solution for contrib dependencies
and contrib names in general.
* utils/hbmk2/hbmk2.prg
+ Combining multiple -o options (one with name, one with directory)
is now supported in -hbimplib mode. This makes it work like in
other existing modes.
! Fixes regarding -o option combining and dir inheritance.
(beware of regressions here)
* contrib/gtalleg/gtalleg.hbc
* Changed to use import library on Windows with an unmodified name
(containing version).
* src/rtl/hbcom.c
! Fixed one non-ANSI comment.
* ChangeLog
+ Added two changes missed from prev entry:
* utils/hbmk2/hbmk2.prg
+ In -hbimplib mode any options are automatically passed to
import library creation command (so -iflag option is not
absultely needed)
- Deleted -mkimplibms option now replaces by generic -iflag
solution.
! Stripped UTF-8 char from a recent entry.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
- Deleted 'experimental' flags from all features.
* Finalized import lib creation feature in hbmk2.
+ Added -hbimplib mode switch (this replaces -mkimplib= option)
+ Input source files (.dlls) now should be passed to
hbmk2 as simple source filenames (without option prefix).
+ Multiple input source files are now supported.
+ Added -iflag= option to pass flags to import library creation
command directly.
* Changed so that target import library name/dir can now be
specified using -o option (like in other modes).
+ Filenames/dirs are now all normalized.
+ Some warnings are now only shown in -info mode.
; F.e.:
'hbmk2 -hbimplib mydll1 mydll2 -omydir -iflag={bcc}-a'
This also means that a simple .hbp file can be created
to solve the import library needs for a given dependency.
* config/postinst.prg
* Adapted to use new import library creation hbmk2 commands.
* src/rtl/hbcom.c
! Fixed minor typo.
* utils/hbmk2/hbmk2.prg
+ Extended -mkimplib option for windows gcc compilers (mingw/cygwin)
to first look for matching COFF .lib file and use it to create
import library. If such is not found, try to use matching .def
file and automatically generate import library using dlltool.
If none if these were found, use the .dll directly, to create
the import library. In case of Harbour, this method resolves
almost all mingw implib needs.
See longer note in source (in function win_implib_command_gcc())
about the details of the problem, the only thing I cannot see
is why mingw/cygwin developers insist on not fixing this issue
since ten year, while all other compilers can properly resolve
this problem. Anyhow until then mingw cannot use .dll using
stdcall calling convention without COFF .lib or .def file. If
both are missing, the only solution is to manually build a
.def file by first generating it from .dll then manually
adding '@nn' decoration according to function prototypes.
Thanks mingw.
* config/postinst.prg
- Deleted APOLLO implib generation. Apollo fall into the
problematic category for mingw, because developers chose
to use stdcall callconv and they forgot to provide
implib or .def file. It's not part of core anyway.
* Slightly changed mysql implib generation to also work
for mingw.
- Deleted no more necessary manuall hack for mysql implib
generation.
+ Added manual hack for firebird implib generation. In
this hbmk2 automatism cannot work as they distribute
COFF .lib in another directory and using a different
name than the .dll.
* config/win/mingw.mk
+ Enabled --nxcompat and --dynamicbase options for mingw64
targets.
* utils/hbmk2/hbmk2.prg
* Changed -mkimplib usage as follow:
-mkimplib=some.dll [implib_name_or_dir]
It's incompatible with previous one, but allows for simpler,
short calls.
! Fix to path normalizer to also append a pathsep to "." when
the resulting directory is an empty one.
* Minor internal change (cCCEXT moved to hbmk structure)
* config/postinst.prg
% Changed to use new -mkimplib parameter format.
(untested)
* utils/hbmk2/hbmk2.prg
+ Refining cygwin autodetection by additionally
looking for gcc.exe next to cygstart.exe.
+ -o option will now accept macros, filters and will inherit
parent path even in -gh and other Harbour-only modes.
* config/os2/gcc.mk
* utils/hbmk2/hbmk2.prg
- Deleted resource support from os2/gcc and os2/gccomf.
It didn't work with any gcc flavours. Resource support
seems to be broken in gcc tools.
* src/rtl/achoice.prg
! Added patch by Jerry Finuliar to fine tune cursor
positioning behavior.
* contrib/hbmysql/mysql.c
+ Added MYSQL_REAL_ESCAPE_STRING() function.
! Fixed some types to be in sync with actual MYSQL implementation
(int -> unsigned int, int -> unsigned long)
in MYSQL_ESCAPE_STRING(), MYSQL_ESCAPE_STRING_FROM_FILE(),
MYSQL_FETCH_ROW() functions.
* utils/hbmk2/hbmk2.prg
+ Added comment on dbfnsx lib availability in xhb.
* utils/hbmk2/hbmk2.prg
! Fixed path normalization to return '.' in case a
non-empty path becomes an empty one after normalization.
* Added extra protection to avoid '-I' option with empty
parameter.
* src/common/hbtrace.c
* INSTALL
+ Added trace output support to syslog() for *nix systems
(except watcom builds).
It's enabled by HB_TR_SYSOUT=yes envvar, which now
supercedes previous HB_TR_WINOUT setting.
Windows users pls change HB_TR_WINOUT to HB_TR_SYSOUT.
! Fixed potential problem in HB_TR_WINOUT code, where
the same vararg holder variable was used multiple
times. On *nix this caused GPF. The safest is to make
a copy of it for each usage.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/Makefile
+ contrib/hbwin/tests/testevnt.prg
+ contrib/hbwin/win_evnt.c
+ Added function to add a new event to the Windows event log:
WIN_REPORTEVENT( [<cServerName]>, <cEventLog>,
<nType>, [<nCategory>], [<nEventID>],
<cString> | <acString>, [<cRawData>] ) -> <lSuccess>
* contrib/hbwin/win_prn2.c
! Fixed wce warning.
* utils/hbmk2/examples/contribf.hbc
* utils/hbmk2/examples/contrib.hbc
+ Added minizip lib.
* config/win/msvc.mk
* utils/hbmk2/hbmk2.prg
* Replaced -Ot2b1 win/msvc* option with -O2 as recommended by Microsoft,
and in sync with GNU Make. This will result in somewhat larger
executable, but this gives the best overall performance. AFAICS
this change will practically allow automatic inlining to take place.
This puts msvc in the lead again compared to mingw regarding speed.
* config/wce/msvcarm.mk
* Deleted bogus option -Od turning off all optimization for
wce/msvcarm targets for new compiler versions.
* config/wce/msvcarm.mk
* config/win/msvc.mk
* Deleted Exception Handling options from all msvc cmdlines
where it was supplied. It has a heritage from the past, and
I could depict no sense in the setup:
- old wce/msvcarm: -EHsc
- new wce/msvcarm: -EHsc-
- old win/msvc*: none
- new win/msvc*: -EHs-c-
The only place this could be needed ATM is hbqt, so pls report
results after this change, or unleash any information about
proper usage of these options.
NOTE: These options were already left out from hbmk2.
* utils/hbmk2/hbmk2.prg
* Deleted -YX option for old msvc versions. (to be in sync with
this recent change in GNU Make)
* Synced msvcarm options for new compiler versions with GNU Make.
(deleted bogus -Od and some other options)
; TODO: msvc optimization options for old compiler version could
still use a revamp.
* utils/hbmk2/hbmk2.prg
+ -info parameter will now enable output line with target
filename. This is done by default in -inc mode, so to get
it also in non -inc mode, just add -info to cmdline.
This fixed target detection in HBIDE.
* harbour.spec
* utils/hbmk2/examples/contribf.hbc
* contrib/Makefile
+ contrib/hbblink
+ contrib/hbblink/hbblink.ch
+ contrib/hbblink/hbblink.hbc
+ contrib/hbblink/Makefile
+ contrib/hbblink/blinker.prg
* contrib/hbmisc/hbmisc.hbc
* contrib/hbmisc/Makefile
- contrib/hbmisc/blinker.prg
- contrib/hbmisc/blinker.ch
* Moved Blinker compatibility calls to separate library.
* Renamed blinker.ch to hbblink.ch
! Changed to use '-c' instead of '/c' in command execution.
; QUESTION: Any opinions on including that in core?
* utils/hbmk2/hbmk2.prg
! Fixed not propely working filters in some options + situations.
(should fix hbrun.hbp problem after recent update)
* Cleanups regarding pathsep conversion to native
format in some internal routines.
+ package/harb_os2.ico
+ Uploaded OS X Harbour icon.
Thanks to Vailton Renato.
* utils/hbrun/hbrun.rc
* utils/hbrun/hbrun.hbp
* Changed to use OS/2 .ico file for OS/2 targets. Pls test.
- package/harbour.ico
+ package/harb_win.ico
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.nsi
* utils/hbrun/hbrun.rc
* utils/hbrun/hbrun.hbp
* Renamed .ico to make it obvious that it is a Windows icon file.
* utils/hbmk2/hbmk2.prg
! Fixed to always convert pathseps in icon filename to forward
slashes.
* utils/hbrun/hbrun.rc
* Cleaned. Now back to original commit with purely forward
slashes. Should see if this works with OS/2 GCC windres.
* utils/hbmk2/hbmk2.prg
* config/os2/gcc.mk
! Fixed to not use '-O coff'. It generates strange error.
'-O omf' is still used, pls test it.
* utils/hbrun/hbrun.rc
* Trying to make it work for OS/2 and at the same time
lessen the chaos (f.e. using forward slashes in filenames).
* bin/postinst.prg
* Corrected double pathseps in one place.
* ChangeLog
+ Marked TODO's as DONE.
! Fixed timezone for today.
* utils/hbrun/hbrun.rc
+ Added support for OS/2. Can someone test it?
* config/wce/mingwarm.mk
* config/win/mingw.mk
* config/win/cygwin.mk
* config/os2/gcc.mk
! Fixed resource compiler binary name to honor CCPREFIX and friends.
* utils/hbrun/Makefile
+ utils/hbrun/hbrun.rc
+ Added resource file to include icon.
; TOFIX: The .ico file path is hard-wired and will break if HB_BUILD_NAME
contains subdirs.
* bin/postinst.bat
- Deleted no more necessary hack to build hbrun with icon using hbmk2.
* utils/hbmk2/hbmk2.prg
* Minor cleanup to use native pathseps in hb_FileExists() call.
* bin/postinst.bat
! Fixed missing '\' when forming PGSQL .dll path.