* bin/hb-mkdyn.bat
* bin/postinst.bat
+ Added support for GCC family .dll creation. (Cygwin not tested)
This will also create .def files. Also implib .a files are possible,
code is there commented.
+ Added 'wce' ARCH support.
! Fixed to not include gtwin in WinCE .dlls.
+ Added support for HB_DLLIBS envvar.
; NOTE: The benefits of using cmd shell instead of msys to create
mingw builds is that hbrun-dll and hbtest-dll are also
created and you don't have use forward slashes in HB_INC_*
envvars. It also allows to more easily add implib creation
in the future. Overall the Windows build environment is
more uniform this way. msys build output though is much
sleeker and also seems faster.
If this method turns out to be okay, it may become the
default/support/standard way to build Harbour with MinGW
on Windows. (if not we can return to the msys method)
; TOFIX: Shared MinGW executables cannot be built if Harbour was built
with -DHB_DYNLIB. IMO this macro should be ignored in MinGW
builds as there is no separate DLL build and non-DLL.
[ I cannot fix this. ]
Until then I had to a hack to starter batch files.
* mpkg_win.bat
* Switched to use make_gnu.bat instead of make_gnu.sh to build
GCC family targets.
* make_gnu.bat
+ Added special codepath for GCC familty as it needs one pass only
to create .dlls.
* INSTALL
* Updated to reflect now possible non-msys MinGW build.
* Updated example to use non-msys flavours.
+ Readded MinGW + msys example.
% Minor simplification in mingw64/mingwce targets.
(HB_CCPATH no longer needed on Windows)
* make_gnu_xmingwce.sh
* bin/hb-mkdyn.sh
* bin/hb-func.sh
* bin/postinst.sh
* mpkg_win.bat
* external/sqlite3/Makefile
* make_gnu.sh
+ Added 'wce' ARCH support and 'mingwce' COMP support where needed.
; TODO: Start using above in local contrib Makefiles.
* bin/hb-mkdyn.sh
+ Added comment on how to generate implib when creating the .dll.
* bin/hb-mkdyn.bat
! Added missing setlocal.
* ChangeLog
! Typos.
* make_gnu.bat
+ Will now exit with message if tried to run with mingw/cygwin
targets.
* harbour/doc/Makefile
! removed unexisting license.txt file
* harbour/include/hbapidbg.h
* do not export Harbour debugger functions. If someone wants to create
3-rd party debugger then we should agree the list of functions which
should be public.
* harbour/include/hbstack.h
* minor cleanup in some definitions
* harbour/include/hbdefs.h
+ added HB_DLL_ENTRY_POINT macro to set default DLL entry point for
different Windows compilers
* harbour/source/vm/maindllh.c
* harbour/source/vm/maindllp.c
* use HB_DLL_ENTRY_POINT macro
* harbour/include/hbsetup.h
* added internal macro to disable flatten optimization
* harbour/include/hbmath.h
* harbour/source/rtl/math.c
* make default math error handler function static
* harbour/include/hbatomic.h
+ added atomic inc/dec inline asm code to OW x86 builds
* harbour/source/rtl/console.c
* small code reorganization to not mix public and private function calls
* harbour/source/rtl/hbregex.c
* harbour/source/hbpcre/_hbpcreg.c
* do not use hb_xfree() function pointer directly to avoid problems
with different calling conventions.
* harbour/config/win/owatcom.cf
* harbour/config/os2/owatcom.cf
* removed unnecessary in recent OpenWatcom versions explicit wlink.lnk
including.
* utils/hbmk2/hbmk2.prg
+ Added clipper/rtlink/exospace/blinker self-name recognition.
clipper will switch it to hbcmp mode,
rtlink/exospace/blinker will switch it to hblnk mode.
rtlink parameter recognition is yet to be done.
* contrib/hbct/ctmisc.prg
! Fixed CENTER() to not LTrim() the input string.
* contrib/hbwin/wapi_commctrl.c
! 0/1 -> FALSE/TRUE
! Fixed to use proper macro instead of hb_parnint().
% Using hb_arraySetNL() rather than hb_arraySet().
* mpkg_win.nsi
* Minor.
* doc/Makefile
! Removed license.txt.
* INSTALL
+ Added Windows/Windows CE build examples.
Cleaned mingw64 and mingwce cross-builds.
* mpkg_win.bat
* Using make_gnu.sh instead of make_gnu_xmingwce.sh
for mingwce target for uniformity.
* utils/hbmk2/hbmk2.prg
! Fixed silly typo causing RTE if compiler autodetection
fails to detect any tier-one compilers (or none).
+ Added automatic postfixing external Harbour executable
name if hbmk2 executable name is also prefixed. Currently
-x64 and -ia64 are recognized. Useful to call harbour-x64.exe
/ harbour-ia64.exe when hbmk2-x64.exe / hbmk2-ia64.exe is used.
* make_gnu_xmingwce.sh
* config/rules.cf
* config/win/mingwce.cf
* config/win/poccce.cf
* config/win/msvcce.cf
* config/wce/global.cf
* Moved -D__PLATFORM__WINCE to .cf files. This also fixes
missing __PLATFORM__WINCE for poccce and msvcce targets.
* bin/postinst.bat
! Fixed regression causing shared hbrun/hbtest binaries to
not be built on x64 targets.
* external/sqlite3/Makefile
! Removed header installer rules. There are no headers here
to install.
* INSTALL
+ Added information on HB_EXTERNAL* envvar settings.
* utils/hbmk2/hbmk2.prg
+ Added support for wce target. Currently in parallel
with win/*ce targets.
* bin/hb-mkdyn.bat
+ Added pocc64 support.
* contrib/gtalleg/Makefile
! Excluded for pocc64 due to compile errors.
* contrib/hbsqlit3/Makefile
! Excluded for pocc64 due to overflow.
* contrib/hbqt/generator/hbqtgen.prg
* contrib/hbqt/Makefile
! Excluded for pocc64.
* contrib/xhb/dbf2txt.c
! Fixed for Win64.
* contrib/xhb/hbserv.c
- Excluded for Win64 builds.
* contrib/hbqt/generator/hbqtgen.prg
* Minor formatting in generated code. (Using double quotes
in #include, CLASS -> CREATE CLASS, DATA -> VAR to follow
Class(y) syntax.)
+ config/wce
+ config/wce/dir.cf
+ config/wce/global.cf
+ config/wce/install.cf
+ config/wce/msvcarm.cf
+ config/wce/mingwarm.cf
+ config/wce/poccarm.cf
+ Added new arch for WinCE: wce
These will now live in parallel with old win/*ce targets
until they are fully functional. We can also back up from
here in case this new method turns out to be a dead end
for any reason. The upgrade path is:
win/msvcce -> wce/msvcarm
win/mingwce -> wce/mingwarm
win/poccce -> wce/poccarm
The idea is that this way we may continue adding support
for non-ARM WinCE platforms, if needed. It also makes it
easier to do things globally for wce platform only.
* INSTALL
* Moved Windows CE compilers into a separate section.
* bin/hb-mkdyn.bat
* Changes made to allow wce arch. (provision for wce arch)
* mpkg_win.bat
* Allows to override HB_ARCHITECTURE. (provision for wce arch)
+ Include arch in target directory. (provision for wce arch)
* include/hbatomic.h
- Turned off inline asm for _MSC_VER compilers in 64-bit mode. (pocc64, msvc64)
These target don't support inline asm.
This fixes previously reported regressions with these targets.
* utils/hbmk2/hbmk2.prg
% win/owatcom: Pentium Pro scheduling.
* win/owatcom: Temply set back stack calling convention.
* external/libhpdf/Makefile
- Disabled for pocc64 due to errors, even internal compiler error:
---
can't spill register variable: rcx (3) image
../../hpdf_image.c(480): fatal error: Internal error: best_spillee.
---
* config/win/bcc.cf
+ Added comment about -4, -5, -6.
* ChangeLog
! Minor fix to prev entry.
* include/hbsetup.h
% '( defined(__POCC_TARGET__) && __POCC_TARGET__ == 2 ) )'
removed altogether. WinCE is detected anyway by using _WINCE.
* external/sqlite3/Makefile
- Disabled for poccce due to errors.
* external/libpng/Makefile
! Fix to prev (poccce).
* config/win/poccce.cf
! Added -D_M_ARM.
* config/win/owatcom.cf
* Pentium Pro scheduling.
* Changed back to __cdecl calling convention from register based
until we find a way to tweak HB_EXPORT to force __cdecl for
.dll exported functions.
; TOFIX: Find out how to force __cdecl for HB_EXPORT functions in owatcom.
Or, if this is no good solution for owatcom users, or not
an option and performace is more important, we must rename
owatcom Harbour .dlls to a distinct name: harbour[mt]-11-ow.dll.
We should try to avoid that.
* config/win/bcc.cf
* -4 -> -6 for Pentium Pro instructions. Looking at the generated
code this looks like rescheduling, if someone now can test Harbour
or plain Pentium, it would be good to know if it still works.
* harbour/config/dos/owatcom.cf
* harbour/config/win/owatcom.cf
* harbour/config/linux/owatcom.cf
* harbour/config/os2/owatcom.cf
* harbour/utils/hbmk2/hbmk2.prg
* removed unnecessary linker options
* use 'SYS causeway' to enable causeway stub in DOS builds instead
of setting it manually. DOS users can also use DOS4G (default) or
PMODE (commercial) stubs.
* harbour/source/vm/dlmalloc.c
! fixed casting
* harbour/source/vm/fm.c
% use DLMALLOC as default memory manager in OpenWatcom Windows builds.
Warning: HB_FM_DLMT_ALLOC does not work with OpenWatcom.
* harbour/config/dos/owatcom.cf
* harbour/config/win/owatcom.cf
* harbour/config/linux/owatcom.cf
* harbour/config/os2/owatcom.cf
* changed alignment settings from 8 to 4
* synced optimization flags used in different builds
! fixed linker parameters when HB_BUILD_DEBUG=yes is set
; TOVERIFY: I do not remember what calling convention should be used
in OpenWatcom MT OS2 builds to eliminate GPF when APIENTRY16 functions
are called. It's possible that current settings are wrong.
* harbour/config/win/owatcom.cf
* removed STACK=65536 from OpenWatcom linker parameters.
This switch probably was inherited from old DOS WatcomC builds.
Later I'll test current OpwnWatcom builds to check if we can also
remove it from DOS builds when cwstub.exe is used.
* restored -bm switch. When DLMALLOC is used it does not cause
noticeable performance reduction.
* use default register calling convention. We can change it
in the future but 1-st we should check the performance overhead.
If calling convention is a problem only for .DLLs then it can
be resolved by modifying HB_EXTERN declaration and adding function
attributes which will force given calling convention.
* harbour/config/linux/owatcom.cf
* enabled pentium pro instruction in OpenWatcom Linux builds.
It reduces the code size and increase performance a little bit.
Windows users which do not need pure pentium CPU support can make
the same.
* harbour/utils/hbmk2/hbmk2.prg
! fixed object extension used in OpenWatcom Linux builds: it's .o not .obj
! fixed linker parameters in OpenWatcom Linux builds: DEBUG ALL is single
option
! fixed OpenWatcom calling convention settings. Viktor you cannot chose
simultaneously register and stack calling convention. You have to chose
one and keep it synced with Harbour compile time settings. Otherwise
you will have unresolved external or you will force creating by linker
dynamically function call wrappers (of course if OW support such
functionality) what may strongly reduce the performance.
! removed -j compile time switch - it's not used to compile core code
* synced optimization flags with core code
I'm really interested in current OpenWatcom speedtst results compared
with other Windows builds (MSVC, MinGW, BCC, POCC) in ST and MT builds.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* error string formatting
using hb_GTInfo() functions. Tested only in windows.
* harbour/contrib/examples/uhttpd/session.prg
+ added retrying in case of error in writing / deleting session files.
* harbour/contrib/examples/uhttpd/cgifunc.prg
* changed FCreate() to hb_FCreate()
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ added support for closing console using "X" system button
using hb_GTInfo() functions. Tested only in windows.
* formatting
* harbour/contrib/examples/uhttpd/uhttpdc.c
* added WM_CLOSE event in win_SysRefresh()
* harbour/contrib/examples/uhttpd/session.prg
* minor change
* contrib/hbfbird/Makefile
* contrib/gtalleg/Makefile
- Disabled for poccce due to errors.
* contrib/hbfimage/fi_winfu.c
- Disabled Windows specific functions for poccce due to errors.
* config/win/owatcom.cf
% Removed -bm (MT mode) switch, because besides creating MT friendly
code, it kills performance. Pls shout if MT mode is now broken in
any ways.
* mpkg_win.bat
* Generate .zip file first.
* INSTALL
* Split Windows compiler list to 'recommended' and 'supported'
sublists. Recommended are MinGW and MSVC.
Some comments on the rest:
- pocc: lack of 3rd party support, mediocre performance.
- owatcom: lack of 3rd party support, bad performance,
proprietary object/dll format.
- bcc: lack of 3rd party support, mediocre performance, has known bugs,
proprietary object/dll format.
- xcc: for testing only.
- icc: for testing and code validation only.
- cygwin: for some niche purposes. MinGW is a superior choice.
* mpkg_win.bat
+ Added support for mingw64 and mingwce.
* contrib/hbqt/Makefile
- Disabled for bcc and pocc due to compilation error.
; Maybe it's possible to make them work (at least bcc) by using
some special defines, please play with it if you're interested.
QT seems to like MinGW the best MSVC is also high on the
support list, so IMO we should also put the focus there.
* utils/hbmk2/hbmk2.prg
! Don't attempt to strip leading 'lib' from libnames, since
this breaks libs which actually begin with 'lib', not meant
as a prefix. F.e. libpng, libhpdf, libjpeg.
* contrib/hbqt/tests/hbqt.hbp
+ Added static QT libname as comment (for now).
* contrib/hbsqlit3/hbsqlit3.ch
* contrib/hbsqlit3/hbsqlit3.c
* Added support for sqlite_exec() callback.
Now the 3rd parameter is an optional callback that is invoked
once for each row of any query results.
* Now we can pass name of logfile as third parameter of
sqlite3_trace(), sqlite3_profile().
+ Added sqlite3_set_authorizer() -
Compile-Time Authorization Callbacks.
+ Added sqlite3_busy_handler() -
A Callback To Handle SQLITE_BUSY Errors.
+ Added sqlite3_progress_handler() - Query Progress Callbacks.
+ Added sqlite3_commit_hook(), sqlite3_rollback_hook() -
Commit And Rollback Notification Callbacks
+ Added sqlite3_backup_*() API for backups purposes.
+ Added sqlite3_initialize(), sqlite3_shutdown(), sqlite3_interrupt(),
sqlite3_status(), sqlite3_db_status(), sqlite3_stmt_status(),
sqlite3_sql(), sqlite3_extended_errcode(), sqlite3_threadsafe(),
sqlite3_memory_used(), sqlite3_memory_highwater().
! Fixed sqlite3_table_column_metadata().
- Temporary disabled sqlite3_db_handle().
* Minor changes, cleanup and formating.
+ contrib/hbsqlit3/tests/authorizer.prg
+ contrib/hbsqlit3/tests/backup.prg
+ contrib/hbsqlit3/tests/hooks.prg
+ Added for demonstration of new possibilities.
+ contrib/hbsqlit3/tests/metadata.prg
* Minor changes
* config/win/owatcom.cf
* config/linux/owatcom.cf
* config/os2/owatcom.cf
- Reverted yesterdays attempt to make owatcom builds faster.
After the change the compilation time went slower, the
binaries got smaller, but execution speed got actually worse.
I've left -oz option removed for win, that's the only
remaining change, plus -5r in os2/dos.
owatcom seems not very useful for production.
* config/dos/owatcom.cf
* config/win/owatcom.cf
* config/linux/owatcom.cf
* config/os2/owatcom.cf
% Tweaked optimization options. This will result in slower
build process, but more optimal runtime performance and
executable sizes. One option is now turned on which can
cause bad code with OW 1.1, so make sure you use latest
Open Watcom version, after all the upgrade is free.
It'd be great if owatcom users could make speedtst runs
with this revision and older ones to see the difference,
maybe now owatcom won't perform so poorly as before.
+ Added link to C compiler option docs.
! Fixed to convert slashes in HB_USER_CFLAGS.
% Enabled -5r for DOS and OS/2.
* contrib/hbct/disk.c
! Disabled some volume/disk related code for WinCE.
* contrib/xhb/hbserv.c
! Disabled for poccce.
* contrib/hbnf/getenvrn.c
! Disabled FT_GETE() for poccce.
! Fixed FT_GETE() to return zero/empty string on platforms not
supported (like also OS/2).
* doc/en-EN/Makefile
- doc/en-EN/error.txt
+ doc/en-EN/errsys.txt
* source/rtl/Makefile
- source/rtl/fserror.c
- source/rtl/errorapi.c
- source/rtl/errorapu.c
- source/rtl/errorint.c
- source/rtl/errorsys.prg
+ source/rtl/fserr.c
+ source/rtl/errapi.c
+ source/rtl/errint.c
+ source/rtl/errapiu.c
+ source/rtl/errsys.prg
* contrib/examples/hbdoc/examples/core_es/Makefile
- contrib/examples/hbdoc/examples/core_es/error.txt
+ contrib/examples/hbdoc/examples/core_es/errsys.txt
* Most filenames containing 'error' renamed to make
it easier to search for errors in build logs.
; Three headers remain.
* harbour/include/hbapi.h
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
* harbour/source/vm/fm.c
+ added support for thread local memory allocators by using MSPACE
mechanism in DLALLOC.
It can be enabled by compiling Harbour with HB_FM_DLMT_ALLOC macro.
By default up to 16 (HB_MSPACE_COUNT macro) independent memory
allocators is dynamically created for new threads. When more threads
is used then allocators are shared between them and HVM tries to
balance used allocators to reduce number of threads using the
same allocator.
It should give noticeable scalability improvement in some OS-es
where default memory manages has pure MT performance.
Please try to compiler speedtst.prg with Harbour compiled with
and without HB_FM_DLMT_ALLOC and compare results in this test:
speedtst --thread=2 --scale
using real multiCPU machine.
* harbour/source/vm/dlmalloc.c
* pacified warning when FOOTERS are enabled
* harbour/source/vm/garbage.c
* cleanup comment
* bin/hb-mkdyn.sh
* bin/hb-func.sh
+ Added support for .dll creation and hbmk for mingw64.
* Synced Windows system liblist for dll creation.
* wsock32 -> ws2_32
* bin/hb-mkdyn.bat
! wsock32 -> ws2_32
* contrib/gtwvg/gtwvg.c
! Fixed embedded ANSI C comments.
* contrib/gtwvg/wvgsink.c
! Fixed a few non-ANSI C comments.
* There is more, see: 'grep // *.c'
* INSTALL
* external/Makefile
+ external/libhpdf/*
+ external/libpng/*
+ Added libharu and libpng to Harbour repository.
Now it's possible to use libhpdf as static lib on all
platforms. This is useful because this lib isn't yet part
of Linux distros.
libpng is only built for win/dos/os2 platforms.
It's possible to override libpng location by using
HB_INC_LIBPNG envvar.
* contrib/hbhpdf/Makefile
+ Look for libharu headers in /external dir.
* external/sqlite3/Makefile
- Disabled for bcc. Latest sqlite3 version breaks with this compiler:
---
Error E2293 ../../sqlite3.c 29156: ) expected in function winCurrentTime
Warning W8013 ../../sqlite3.c 29157: Possible use of 'timeW' before definition in function winCurrentTime
Error E2379 ../../sqlite3.c 29157: Statement missing ; in function winCurrentTime
Error E2379 ../../sqlite3.c 29158: Statement missing ; in function winCurrentTime
Error E2379 ../../sqlite3.c 29160: Statement missing ; in function winCurrentTime
Error E2293 ../../sqlite3.c 29161: ) expected in function winCurrentTime
Error E2379 ../../sqlite3.c 29162: Statement missing ; in function winCurrentTime
Error E2293 ../../sqlite3.c 29163: ) expected in function winCurrentTime
Warning W8057 ../../sqlite3.c 29171: Parameter 'prNow' is never used in function winCurrentTime
*** 7 errors in Compile ***
---
bcc users can report this problem here:
http://www.sqlite.org/cvstrac/tktnew
+ tests/bnch_win.bat
- tests/bnchmark
* Moved bnch_win.bat to tests.
* utils/hbmk2/hbmk2.prg
+ Added autofilling CCPREFIX on Windows platform when
-comp=mingw64 or -comp=mingwce is specified.
+ Added autofilling CCPATH on Windows platform when
-comp=mingw64 or -comp=mingwce is specified and
corresponding embedded MinGW installations are found in
Harbour directory.
; IOW this means that it's now possible to create a unified,
self-contained install kit, which is able to easily build
x64, WinCE and x86 executables with command below:
> hbmk2 test.prg => test.exe for x86
> hbmk2 -comp=mingw64 a.prg => test.exe for x64
> hbmk2 -comp=mingwce a.prg => test.exe for ARM/WinCE
Can it be any simpler than that?
My sample install .zip is 322MB and it contains Harbour libs
for msvc, mingw, mingw64, mingwce, bcc, owatcom and contains
all required MinGW files.
It will be even easier if we add CPU platform identifiers
to Harbour.
* config/dos/owatcom.cf
* config/win/owatcom.cf
* config/linux/owatcom.cf
* config/os2/owatcom.cf
+ Added HB_BUILD_MODE=c/cpp support for Watcom compilers.
+ Tweaked optimization options to work with wcc386 (C mode compiler).
+ Tweaked C make rule for wcc386 (only accepts backslashes).
; So now sqlite3 will be forced to C mode and will compile.
; TOFIX: .cpp file compilation will be broken in forced C mode,
so more cleanup will be needed here if we want to allow
all combinations.
* harbour/contrib/examples/uhttpd/uhttpd.prg
+ added #define FIXED_THREADS that disable (temporarly) dynamic threads
support, until I will find a correct way to implement.
* changed default GT in Linux from GTXWC to GTTRM
+ added Actions and Handlers support
rewrote handlers part, now separated and similar to Apache
* changed internal ScripAlias Hash name from Aliases to ScriptAliases
+ added Alias support
+ added PATH_INFO and PATH_TRANSLATED support
this means that parts of urls longer than the real file url are passed to
file as parameters. Actually valid for any file.
* fixed CGIKill() to correct handle killing of not responding CGI apps
* formatting and minor changes
; NOTE: not tested under Linux, more tests to do
; TOFIX: in case of error of cgi executables error output is missing,
this I have to check better.
* harbour/contrib/examples/uhttpd/uhttpd.ini
* changed [ALIASES] section name to [SCRIPTALIASES]
+ added [ALIASES] correct section
* harbour/contrib/examples/uhttpd/session.prg
+ added retrying in case of error in reading session files.
to check it better
; NOTE: still work in progress.
Any comments and suggestions are welcome