* 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
* include/hbextern.ch
+ Added new HB_SOCKET*() functions.
* config/postinst.prg
! Fixed to exclude whole extra shared binary creation for
all platforms except win/wce/os2.
+ examples/udpds/udpds.hbp
+ Added hbmk2 make file.
* INSTALL
* external/sqlite3/Makefile
* utils/hbmk2/hbmk2.prg
* config/global.mk
* config/wce/msvcarm.mk
* config/win/msvc.mk
* Changed HB_COMPILER_VER values for msvc targets. Previously it was
the Visual Studio version, now it is the C compiler version,
the same value used in _MSC_VER predefined macro:
Name old NEW
-------------------------------------- ---- ----
C Compiler version 6.0 600
C/C++ compiler version 7.0 700
Visual C++, Windows, version 1.0 100 800
Visual C++, 32-bit, version 1.0 100 800
Visual C++, Windows, version 2.0 200 900
Visual C++, 32-bit, version 2.x 200 900
Visual C++, 32-bit, version 4.0 400 1000
Visual C++, 32-bit, version 5.0 500 1100
Visual C++, 32-bit, version 6.0 600 1200
Visual Studio .NET (2002), version 7.0 700 1300
Visual Studio .NET 2003, version 7.1 710 1310
Visual Studio 2005, version 8.0 800 1400
Visual Studio 2008, version 9.0 900 1500
Visual Studio 2010, version 10.0 1000 1600
INCOMPATIBLE for users setting HB_COMPILER_VER manually, pls
change the value as indicated above. For most users it's
recommended to rely on autodetection and not to set this
variable at all.
* config/postinst.prg
! Fixed to use hb_osFileMask() instead of hard-coded '*' mask.
* contrib/xhb/hbcompat.ch
* contrib/xhb/xhbfs.c
! Deleted FILESIZE(). It's not an xhb compatibility function,
but one offered as part of CT lib in xhb, and HBCT in Harbour.
* src/common/hbver.c
+ Added compiler version detection for clang 2.x (and newer)
Patch by Tamas Tevesz.
* INSTALL
* Minor.
* config/bsd/clang.mk
* config/linux/clang.mk
+ Clearing forced C++ mode if clang 1.x is detected.
(Patch from Tamas Tevesz. Slight fix added by me to
set HB_CMP when falling back to C mode. I didn't make
tests though.)
; NOTE: Probably HB_BUILD_MODE=c should be export-ed
to avoid double evaluation. Pls test it.
* config/postinst.prg
* config/ren_sfn.prg
+ Raised warning level to 3.
* INSTALL
+ Added one more envvar which is apparently used by users
even though it does nothing since many years.
(see '10. TROUBLESHOOTING' section)
* config/postinst.prg
* Minor cleanups.
* 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.
* debian/rules
- doc/man/hbmk.1
+ doc/man/hbmk2.1
! Renamed to hbmk2 to be in sync with name of the tool.
* Makefile
! Fixed to always descend into utils directory,
because (in 'install' mode) hbrun and hbmk2 needs
to be built regardless of HB_BUILD_PARTS setting.
* contrib/hbfbird/hbfbird.hbi
! Fixed to set output libname. This is needed because
we can't rely on input filename due to mingw trick.
* config/global.mk
+ Show HB_BUILD_IMPLIB setting. Now there is nothing
hackish in it, so it can be fully supported setting.
* config/postinst.prg
% Minor optimizations in hbmk2 invocation lines.
(removed unnecessary spaces, using envvar macros,
deleted unnecessary double quotes)
! Fixed (in two places) to only invoke hbmk2 if
HB_HOST_BIN_DIR envvar is set.
! NSIS invocation command made more friendly to cross
platform environment by using native pathsep.
+ Will now echo the external commands issued to stdout.
* config/postinst.prg
+ Added new experimental envvar:
HB_BUILD_ADDONS=prj1.hbp prj2.hbp prjn.hbp
Harbour build process will initiate the build of the passed
.hbp files at 'install' phase.
% Simplification to other hbmk2 invocation commands.
* contrib/hbwin/win_svc.c
! Fixed to set running status only if entry function
is valid and able to reenter HVM.
+ Added trace message when entry function cannot be found.
* 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)
* config/postinst.prg
! Added hack to workaround the exception where mysql .dll doesn't
work with Harbour if copied to .a file. Instead I copy over the
import .lib to .a as before. If anyone knows a better solution,
pls speak up.
* external/zlib/zlib.dif
* external/zlib/zconf.h
! Tweak to make it build with BCC (when this specific
constant is defined, f.e. by libharu).
* external/pcre/Makefile
! Tweak to make 8.02 work with BCC.
; NOTE: BCC is seemingly not tested/used by any important
external projects. If it goes like this, I will stop
doing these updates and leave them to real BCC users.
It's going against the flow.
* config/postinst.prg
* /V2 -> -V2 to make *nix shells happy.
* Makefile
- bin/postinst.prg
+ config/postinst.prg
* Moved postinst.prg from bin to config dir.
* config/postinst.prg
+ Changed to automatically build all tools found in /utils,
thus dropping hard-wired tool names from postinst.
* Minor cleanup.