* INSTALL
* minor clarifications to INSTALL/TROUBLESHOOTING
* config/os2/watcom.mk
* config/wce/mingwarm.mk
* config/wce/msvcarm.mk
* config/wce/poccarm.mk
* config/win/bcc.mk
* config/win/mingw.mk
* config/win/msvc.mk
* config/win/pocc.mk
* config/win/watcom.mk
* config/win/xcc.mk
+ added std header paths to RC commands
* utils/hbmk2/Makefile
+ utils/hbmk2/hbmk2.rc
* utils/hbmk2/hbmk2.hbp
+ added std windows versioninfo and manifest to hbmk2
* utils/hbmk2/hbmk2.prg
+ utils/hbmk2/p_extdyn.hb
+ added almost complete hbrun functionality into hbmk2
to run it, type: 'hbmk2 .'
Missing is extension registration, plugins don't seem
to work yet, and I plan to switch from full screen
prompt to shell-like prompt. Plugin paths, extension
configuration, history on-disk files need further
polishing.
+ hbmk2 will act as a hbrun, if renamed to hbrun
* contrib/hbqt/qtcore/hbqt_misc.prg
+ added two TOFIXes for missing PROTECTED keyword
for two object variables of unknown purpose. Not
even HBQT developers know what it is, but without
it, HBQT breaks.
; Those who need "stable" hbqt (meaning "it builds")
Go to:
http://sourceforge.net/p/hbqt/
* utils/hbmk2/hbmk2.prg
+ will now add lib/3rd dir to the link commands, so
unicows lib will be found in uninstalled Harbour SVN
source tree.
* contrib/make.hbs
* contrib/hbpost.hbm
+ automatically enable unicows support for contribs, if available.
- deleted support for undocumented __HB_BUILD_WINUNI envvar
* config/global.mk
* config/rules.mk
- deleted support for undocumented __HB_BUILD_WINUNI envvar
* package/winuni/mpkg_win_uni.bat
* package/mpkg_win_nightly.bat
- deleted special support for unicows libs for nightly
and official releases, along with HB_DIR_UNICOWS envvar.
Now these libs are included in all builds.
* config/win/global.mk
+ automatically enable unicows support for core, if available.
* config/win/xcc.mk
* config/win/icc.mk
* config/win/mingw.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/msvc.mk
+ added support for SYSLIBPATHS. (used by unicows support)
! fixed bcc dynlib link command missing libpaths.
; NOTE: watcom unicows support is missing, as it needs
special tricks due to missing separate libpath option
in this compiler/linker.
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* synced with config/win files
+ config/libbin.mk
+ added rule to install pre-built binary libs.
(for unicows libs)
* Makefile
+ lib/3rd
+ lib/3rd/win
+ lib/3rd/win/mingw
+ lib/3rd/win/mingw/Makefile
+ lib/3rd/win/mingw/libunicows.a
+ lib/3rd/win/mingw/libunicows_license.txt
+ lib/3rd/win/bcc
+ lib/3rd/win/bcc/unicows_license.txt
+ lib/3rd/win/bcc/unicows.lib
+ lib/3rd/win/bcc/Makefile
+ added locally hosted unicows runtime/implibs from:
http://libunicows.sourceforge.net/ by author Vaclav Slavik.
With these libs, it's possible to use UNICODE builds
with both MS unicows.dll and opencows .dll on legacy
Windows-system (Win9x).
These libs will be installed to Harbour core lib directory,
and also used from lib/3rd directory, if they are available.
I've uploaed mingw and bcc libs because these are used
nearly exclusively by users, but they are also available
for older msvc, watcom, dmc and lcc compilers. I don't
think it's worth the extra size to support Win9x using
these legacy compilers, anyhow they can be added easily
if needed (except watcom, which requires more work).
; These changes mean three things:
1. Harbour now has only one build mode on Windows: UNICODE
This will greatly simplify coding and testing and will
allow to focus much better on what's important. It also
allows to drop lots of dual code dealing with separate
UNICODE and non-UNICODE branches.
2. Harbour default builds will now run on Win9x (currently
when using mingw or bcc compilers), though UNICOWS.DLL
is now required. See INSTALL how to get this free .dll
from MS. This also means that Harbour can now theoretically
by built on Win9x systems (I didn't try).
3. Harbour users can create UNICODE builds compatible with
Win9x, by simply adding -lunicows to their .hbp projects.
No extra installation is required.
* utils/hbmk2/hbmk2.prg
* config/beos/gcc.mk
* config/qnx/gcc.mk
* config/bsd/gcc.mk
* config/wce/mingwarm.mk
* config/vxworks/gcc.mk
* config/minix/gcc.mk
* config/darwin/gcc.mk
* config/hpux/gcc.mk
* config/win/mingw.mk
* config/linux/gcc.mk
* config/cygwin/gcc.mk
* config/symbian/gcc.mk
* config/os2/gcc.mk
* config/sunos/gcc.mk
! Separate -Wimplicit-int and -Wimplicit-function-declaration
so that they are added to cflags only when not in cpp mode.
; Patch by Tamas.
* harbour/include/hbcomp.h
* do not inherit in macrocompiler -z compile time switch when -kc is
also used
* harbour/src/common/expropt2.c
* disable logical expression optimization (reduction) in macrocompiler
when -kc compile time switch is used.
* harbour/config/beos/gcc.mk
* harbour/config/qnx/gcc.mk
* harbour/config/bsd/gcc.mk
* harbour/config/wce/mingwarm.mk
* harbour/config/vxworks/gcc.mk
* harbour/config/hpux/gcc.mk
* harbour/config/darwin/gcc.mk
* harbour/config/dos/djgpp.mk
* harbour/config/win/mingw.mk
* harbour/config/linux/gcc.mk
* harbour/config/cygwin/gcc.mk
* harbour/config/symbian/gcc.mk
* harbour/config/os2/gcc.mk
* harbour/config/sunos/gcc.mk
* harbour/utils/hbmk2/hbmk2.prg
* enable some important warnings in GCC builds using -W<name>... instead
of -Wall and -Wno-<name>... for warning level set to low.
It should help in backward compatibility with some older GCC versions.
* harbour/config/beos/gcc.mk
* harbour/config/qnx/gcc.mk
* harbour/config/bsd/gcc.mk
* harbour/config/wce/mingwarm.mk
* harbour/config/vxworks/gcc.mk
* harbour/config/hpux/gcc.mk
* harbour/config/darwin/gcc.mk
* harbour/config/dos/djgpp.mk
* harbour/config/win/mingw.mk
* harbour/config/linux/gcc.mk
* harbour/config/cygwin/gcc.mk
* harbour/config/symbian/gcc.mk
* harbour/config/os2/gcc.mk
* harbour/config/sunos/gcc.mk
* use -Wall -Wno-unused -Wno-pointer-sign -Wno-uninitialized
-Wno-switch -Wno-strict-overflow -Wno-main
instead of -W when warnings are not enabled with GCC based compilers.
Using only -W only is rather useless because this switch enables
warnings which can be usually ignored in 3-rd party code.
This modification should help in locating bugs introduced by us
to 3-rd party code, i.e. due to wrong header files used on some
platforms (we do not use autoconf assuming some default settings
what can be wrong in some cases). It should also not hide some
important/critical bugs in 3-rd party code.
This modification pacifies some common warnings which can be
ignored usually but it also enables some more important ones.
If it's necessary then we can tune it a little bit more and disable
some other warnings too.
It's possible that on some platforms using very old GCC versions
some of -W* switches are not supported - please make tests and
inform us about problems.
* harbour/utils/hbmk2/hbmk2.prg
* use -Wall -Wno-unused -Wno-pointer-sign -Wno-uninitialized
-Wno-switch -Wno-strict-overflow -Wno-main
instead of -W when warning level is set to low with GCC based
compilers
* config/globsh.mk
+ 'FALSE' variable set for 'nt' shells.
* 'FALSE' variable set to a dummy value ($(TRUE)) for 'dos' and 'os2' shells.
* config/wce/mingwarm.mk
* config/win/mingw.mk
* config/win/cygwin.mk
! Fixed to fail after deleting the library on 'ar' failure.
* config/global.mk
% Minor optimization for Windows platform
! At the same time fix for CreateProcess( 'uname' ) error on Win9x.
* config/wce/mingwarm.mk
* config/win/mingw.mk
* config/win/cygwin.mk
! Fix to previous: In multi-command cmdlines, f.e.: '(cmd1 && cmd2)'
$(RM) command _must_ be used as a workaround so that GNU Make
converts it to a batch file. Unfortunately with this, an 'ar'
failure will be masked by a successful $(RM), so the make won't
stop.
* config/globsh.mk
+ Added new command macro $(FALSE) preparing for general solution
to force failure.
* config/beos/gcc.mk
* config/qnx/gcc.mk
* config/bsd/gcc.mk
* config/bsd/clang.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
* config/darwin/clang.mk
* config/hpux/gcc.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/linux/clang.mk
* config/linux/sunpro.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
* config/instsh.mk
* 'false' -> '$(FALSE)' for shell independence.
* config/wce/mingwarm.mk
* config/wce/msvcarm.mk
* config/win/mingw.mk
* config/win/icc.mk
* config/win/cygwin.mk
* config/win/msvc.mk
! Removed delete command which was called when $(AR) command failed.
(usually: '|| $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@)')
This fixes three issues:
- It won't force GNU Make into using cmd shell (in fact temporary batch file)
to execute these commands, thus it won't hit cmd shell length limitations
on NT and W2K systems (maybe Win9x also? TOCHECK).
- Build process will properly stop in case $(AR) (lib assembly) command
fails, instead of deleting the wrong lib and continuing with the build.
Best would be to delete it and fail, but I found no clean way to do this.
- This incorrect variation is no longer used: '|| $(RM) $(LIB_DIR)/$@'
(pathsep conversion is missing)
NOTE: If someone can recommend a way to fail the build after deleting
the partial lib, all above logic can be reintroduced, but in this
case the lib creation cmds need to be rewritten like mingw to
avoid long cmdline lengths.
IOW I'm looking for a win shell equivalent of this sequence:
AR_RULE = $(AR) ... || ( $(RM) ... && **false** )
where **false** is something which creates no output and returns
non-zero errorlevel.
* ChangeLog
+ More explanation to prev log entry.
* config/wce/mingwarm.mk
* config/win/mingw.mk
* config/win/cygwin.mk
+ Added support for host systems with shorter cmdline limits
(in lib creation command). F.e. on WinW2K or WinNT.
* config/win/cygwin.mk
! Fixed delete command on 'ar' failure to work on native
Windows shell.
* config/win/mingw.mk
+ Added (commented) support for -m32/-m64 options.
This may be useful in the future f.e. for mingw tdm 4.5.0
compiler which can build both 64 and 32-bit targets using
the same compiler binaries.
* config/global.mk
* 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/cygwin.mk
* config/win/msvc.mk
* config/os2/watcom.mk
+ Changed to init RCFLAGS from global.mk.
* config/global.mk
+ Added support for theoretical QNX cross-builds.
* ChangeLog
* Updated QNX TODO list.
* 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.
* INSTALL
* config/rules.mk
+ config/res.mk
* config/bin.mk
* config/wce/global.mk
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* config/common/watcom.mk
* config/win/xcc.mk
* config/win/mingw.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/watcom.mk
* config/win/cygwin.mk
* config/win/global.mk
* config/win/msvc.mk
* config/os2/watcom.mk
* config/os2/gcc.mk
* config/os2/global.mk
+ Added support to GNU Make system to compile and link resources
on win, wce and os2 platforms.
* bin/postinst.bat
+ Deleted requirements from local comment. These are
documented in INSTALL.
* contrib/hbssl/evpmd.c
! Disabled md2 support for >= 1.0.0 OpenSSL versions.
Seems they dropped it.
* contrib/hbssl/ssl.c
* contrib/hbssl/x509.c
* contrib/hbssl/sslctx.c
! Disabled some code parts which didn't compile with
>= 1.0.0 OpenSSL versions. This is not the right fix,
but I just can't figure what went wrong (or what
has been changed) in OpenSSL which cases it. There
is something wrong around 'X509_NAME' symbol.
* utils/hbmk2/hbmk2.prg
* config/beos/gcc.mk
* config/bsd/gcc.mk
* config/wce/mingwarm.mk
* config/darwin/gcc.mk
* config/hpux/gcc.mk
* config/win/mingw.mk
* config/win/cygwin.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/os2/gcc.mk
* config/sunos/gcc.mk
- Deleted '-pipe' option. Efficient, but buggy. It didn't take
too long to bump into the problem: On build error, the
.o file is generated with some dummy content, so a second
build attempt will silently make build errors ignored.
* contrib/rddsql/sddfb/sddfb.c
* Minor formatting.
* config/win/cygwin.mk
* config/win/mingw.mk
* config/wce/mingwarm.mk
% Added -pipe option to win/gcc compilers, this way it's faster
(but consume more memory) since it passes intermediate files
- I could only spot the .s file - without writing them to disk.
Probably we should enable this on other platforms as well,
and if it works out well, also in hbmk2.
* utils/hbmk2/hbmk2.prg
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
! Fixes to previous change after testing:
- '-D_WINCE' is required by pocc headers, so I've readded it there.
- '-DARM' is already defined by mingwarm, so it's not needed.
* include/hbsetup.h
* Cleaned the way WinCE is detected.
Now looking for UNDER_CE or _WIN32_WCE constants. (was: _WINCE)
* utils/hbmk2/hbmk2.prg
* Cleaned the way constants are initialized for WinCE platform. It's also
means they are now synced with GNU Make build system. This means:
UNICODE, _WIN32_WCE (to 0x501), UNDER_CE are always defined.
Secondary CPU macros are defined as needed.
Removed all the other WinCE related constants.
+ Defining UNDER_CE and _WIN32_WCE for resource compiler for WinCE targets.
* config/wce/global.mk
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* Cleaned the way constants are initialized for WinCE platform.
- '-D_WIN32_WCE=0x501 -DUNDER_CE' moved to global, so now these will
be equally defined for all WinCE compilers.
- Deleted these from msvcarm targets ('-D_WINCE' was apparently used
by our own hbsetup.h detection code only):
'-D_WINCE -DCE_ARCH -DWINCE -D_WINDOWS -D_UNICODE -D_UWIN'
- Deleted this from from poccarm targets:
'-D_WINCE'
- Deleted several secondary CPU constants for msvc* targets:
'-D_ARM_ -DARMV4 -D_ARMV4I_ -Darmv4i -D__arm__'
'-D_SHX_'
'-D_MIPS_ -DMIPS_HAS_FPU'
These are not necessarily true, and not even necessary. I you know
otherwise, speak up.
- Kept primary CPU constants:
'-D_M_*'
- Kept secondary CPU constants (needed by some inconsistent Windows header files):
'-DARM', '-DSHx', '-DMIPS', '-D_X86_'
* config/win/global.mk
* Cleaned to use 'HB_BUILD_UNICODE' setting to enable UNICODE for non-x86 targets.
* config/win/msvc.mk
! Fixed to respect 'HB_BUILD_UNICODE' user-setting when enabling UNICODE for
newer MSVC targets. IOW it's now possible to turn off UNICODE for newer
MSVC targets.
; Above should ensure more consistency for different WinCE compilers.
Closer behavior and more consistent build logs, with less unnecessary options.
* contrib/hbwin/hbwin.ch
+ Added HB_WIN_DLL_CALLCONV_* macros. (so far only privately defined inside .c code)
+ Added HB_WIN_DLL_CTYPE_* macros. (so far only privately defined inside .c code)
+ Reworked HB_WIN_DLL_CTYPE_* macro values. INCOMPATIBLE. Since they weren't
previously documented, this should not be a breakage, pls report it if this is
a problem.
! Fixed .ch syntax to also work in .c files.
* contrib/hbwin/hbwin.h
* contrib/hbwin/legacycd.c
* contrib/hbwin/win_dll.c
* contrib/hbwin/tests/testdll.prg
* Using hbwin.ch for callconv and C type constants.
+ Added public low-level interface: hbwin_dllCall().
This has provision for exact parameter type specification.
* Changed Harbour level functions to use new public
interface hbwin_dllCall().
+ Moved CALLDLL(), CALLDLLBOOL(), CALLDLLTYPED() to legacy source.
* HB_DLLEXEC structure made private to XPP compatibility
section.
+ Added new WIN_DLLCALL() API. This can replace all old CALL*()
function and give more flexibility. Its first parameter is an
optional array, which can specify calling convention (it was
fixed in old implementation), return type and UNICODE swicth,
plus it has provision to specify parameter types, too.
+ Changed test app to use new WIN_DLLCALL() API.
* hb_getprocaddress() made public (but not exported) and
renamed to hbwin_getprocaddress().
* config/wce/mingwarm.mk
* config/win/mingw.mk
- Deleted hack to always add frame buffer for hbwin.
It's not necessary anymore.
* src/vm/runner.c
* BYTE -> char
* contrib/hbct/ctstrfil.c
* LONG -> HB_ISIZ
* contrib/hbmzip/hbmzip.c
* Changed to use FS API instead of C RTL.
* Using std Harbour method to include windows.h.
* package/winuni/RELNOTES
+ Added note about downgrade to mingw64 4.4.0, which is
a more stable release than 4.5.0, and where .dlls also
work properly.
* config/wce/mingwarm.mk
* config/win/mingw.mk
! Fixed to not use -fomit-frame-pointer option for debug builds.
! Hack added to disable -fomit-frame-pointer for hbwin lib.
; TOFIX: Fix hb_Dynacall() to not be sensitive on this option
in mingw builds. Is it possible?
* config/beos/gcc.mk
* config/bsd/gcc.mk
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* config/hpux/gcc.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
* config/darwin/clang.mk
* config/dos/watcom.mk
* config/dos/djgpp.mk
* config/common/watcom.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
* config/linux/watcom.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/linux/clang.mk
* config/linux/sunpro.mk
* config/os2/watcom.mk
* config/os2/gcc.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
* Initializing LDFLAGS, DFLAGS and ARFLAGS at the beginning of files.
This allows to easily add to these var according to build settings.
It also syncs all .mk files to use the same layout in this regard.
* config/wce/msvcarm.mk
* config/win/msvc.mk
+ Added -debug linker option to .dll linking for msvc/msvcarm targets.
* Makefile
- source/hbpcre
- source/hbzlib
* external/Makefile
+ external/pcre
+ external/zlib
* external/pcre/Makefile
* external/zlib/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* include/hbsetup.h
* include/hbzlib.h
* include/hbregex.h
* source/rtl/hbzlibgz.c
* source/rtl/Makefile
* source/rtl/hbregexc.c
* source/rtl/hbregex.c
* source/rtl/hbzlib.c
* source/Makefile
* contrib/xhb/Makefile
* contrib/hbmzip/Makefile
* utils/hbmk2/hbmk2.prg
* config/global.mk
* config/lib.mk
* config/bin.mk
* config/detect.mk
* config/darwin/libs.mk
* config/linux/libs.mk
* 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
* config/dyn.mk
* config/os2/watcom.mk
* config/os2/gcc.mk
* config/bsd/libs.mk
* config/hpux/libs.mk
* config/sunos/libs.mk
* Changed the way embedded zlib and pcre are handled:
- They now reside in /external dir.
- They are now excluded from Harbour dynlib. This means they
will now be linked statically on non-*nix systems and
dynamically on *nix systems. On *nix it's probably easy to
switch to link statically. On non-*nix this is quite
complicated to do.
- If these libs are provided by the system, those will be used.
- On non-*nix systems the locally hosted versions will be used,
unless user overrides them using HB_INC_PCRE or HB_INC_ZLIB.
- There is currently no officially supported way to force usage
of locally hosted libs.
- If PCRE lib is forcibly disabled or not found, build system
will fall back to POSIX regex on *nix systems and Borland regex
with bcc compiler. Otherwise it will stop the build with an error.
- If zlib is forcibly disabled or not found, an error will be
generated at build-time (in hbrtl). hbmzip is simply skipped
in this case.
- hbmk2 will use local builds of these libs if they are present
in lib dir.
; TOFIX: hbmk script.
; TOFIX: dos builds. cmdline lenghts are most probably too big for them.
; NOTE: Bumps are expected.
; NOTE: I've yet to test/verify it.
- external/libhpdf/ori_src
- external/libhpdf/ori_dst
- Deleted. (added in prev commit by oversight)
* utils/hbmk2/hbmk2.prg
! Fixed to use 'rc' AR cmd on sunos. (instead of 'rcs')
+ Added -hbdyn support for gcc family of compilers. (very light testing with mingw)
+ Added sunpro compiler support. (not tested, bazaar style)
! Basic CPU detection fixed for clang.
+ Added TOFIX for CPU detection for *nix based gcc, icc, clang, sunpro
compilers.
* config/wce/mingwarm.mk
* config/hpux/gcc.mk
* config/win/mingw.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/linux/sunpro.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
* Minor: AR cmd chars reordered to be in sync with hbmk2.
* config/wce/mingwarm.mk
* config/win/mingw.mk
+ Reenabled implib generation for mingw targets.
This will be needed to implement multi-host binary distros
supporting cross-build shared targets. This way there is no
need to fiddle with switching BIN dirs in cross-build situations,
the LIB dir selection is enough to find all required libs,
regardless where .dlls are installed. (.dlls should ideally
be installed to system locations).
* INSTALL
+ Added DJGPP cross-builds to support matrix.
+ Added DJGPP bash.exe to the shell mix.
+ Added OS/2 bash.exe to the shell mix.
; NOTE: djgpp build fails here when using bash too
(I've used a Windows machine to test), see below.
* ChangeLog
* Updating pending item status.
* contrib/hbbtree/hb_btree.c
! Added TOFIX about bad bug. (hitting win64, maybe more)
Reported on the list a while ago.
* utils/hbmk2/hbmk2.prg
- Deleted HB_CCPATH support for *nix based gcc/icc compilers.
To be in sync with GNU Make files.
+ Added HB_CCPATH support for os2 and dos.
+ Added HB_CCPREFIX and HB_CCPOSTFIX support for dos/djgpp to
support cross-builds.
+ Using host dependent executable extension for compiler
tools in dos/djgpp to support cross-builds.
* config/wce/mingwarm.mk
* config/win/mingw.mk
+ Added HB_CCPOSTFIX support. Now in sync with rest of gcc
family compilers in GNU Make and with hbmk2.
* config/win/cygwin.mk
+ Added HB_CCPATH, HB_CCPREFIX, HB_CCPOSTFIX support.
To be in sync with rest of gcc family compiler in GNU Make
and with hbmk2.
* config/dos/djgpp.mk
+ Added HB_CCPATH, HB_CCPREFIX, HB_CCPOSTFIX support for
dos/djgpp.
! Fixed to only give error when using non-DOS build of
GNU Make on a Windows host.
; NOTE: Tried the bld process with bash.sh, and it starts
when using nativ DOS make.exe, but it fails also
with 'Bad command or file name' and 'No command name seen.'
when building hbcommon lib. Same effect when using
msys. So I conclude our djgpp make files are broken
for POSIX shells, I hope someone else can also do
tests.
* config/os2/gcc.mk
+ Added HB_CCPATH support.
To be in sync with rest of gcc family compiler in GNU Make
and with hbmk2.
* config/win/bcc.mk
! Readded dbl quotes around tlib filename. This breaks tlib
on msys shells. The real problem is caused by /P64 option.
Fix unknown, besides avoiding msys shell+bcc target
combination.
* contrib/hbfbird/Makefile
* Indented/rearranged.
* 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).
* config/wce/mingwarm.mk
* config/win/mingw.mk
* config/win/cygwin.mk
! Don't quote filenames in DY_RULE commands to make them work
on all shells (sh in particular). This means that we lost
some level of 'space in filename' support, but it's acceptable
since it's unlikely to have space in internal paths anyway.
* 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.
* 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.
* config/global.mk
* config/wce/mingwarm.mk
* config/win/mingw.mk
+ Added logic to support linux wince cross-builds.
My goal was to implement make_gnu_xmingwce.sh functionality
inside make files. I've yet to install cegcc to my Linux,
so I didn't test it yet, but please do. It's experimental
yet and ATM the wce target can be enabled by pointing
HB_CCPATH to cegcc install dir. This may change in the future.
+ In cross build scenarios the default HB_INSTALL_PREFIX is
now /usr/local/harbour-<arch>-<comp>
Somewhat replicating current .sh behaviour. Not exactly
because I wanted to stay with conventions found in other parts
of Harbour. With .sh the dir was:
/usr/local/arm-wince-mingwce-harbour
With new system it's:
/usr/local/harbour-wce-mingwarm
; QUESTION: I'm not familiar with .spec files, but it looks there are
some redunant settings inside harbour-wce-spec.
F.e. HB_CONTRIBLIBS should be left to default and local
Makefiles should do the ground work of deciding whether
a given contrib needs to be built.
CC_HB_USER_PRGFLAGS also seems redundant now, although
there may still be some .sh logic which needs it.
'make -i' seems dangerous option when creating a release
package.
* make_gnu_xmingwce.sh
! Typo in comment.