* contrib/hbtpathy/tpwin.c
* contrib/hbwin/win_regc.c
! mingw64 reported (64-bit) problems fixed.
* contrib/hbwin/wapi_winbase.c
! mingw64 reported (64-bit) problem fixed.
! ISNIL() -> ISCHAR(). It appear many times, but using ISNIL()
has the same cost IS<ACTUAL_TYPE>(), yet only covers one
case, so it's very dangerous and leave potential GPFs when
passing wrong type. So, when there is no strong special reason
to use ISNIL() (like we really want to allow all types except NIL),
always use ISCHAR(), ISNUM(), ISPOINTER(), ... instead.
* ChangeLog
- Deleted resolved mingw64 warnings from entry.
* utils/hbmk2/hbmk2.prg
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/owatcom.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* Changed Harbour to uniformly link against ws2_32 winsock
lib on Windows. Previous we've been using a mixture of
ws2_32 and wsock32, sometimes both. For some platforms
one of these libs is automatically included by linker,
f.e. for bcc, wsock32 is used.
! This fixes wsock32 no longer available for mingw64.
; These platforms should be retested if this causes any
problems, but ws2_32 should be available for all since long.
* utils/hbmk2/hbmk2.prg
! Typo in prev commit.
* source/vm/maindllp.c
* source/vm/extrap.c
! Fixed for mingw64.
! Fixed warning for mingw64.
; TODO: Check for possible regression.
* contrib/hbodbc/odbc.c
! Fixed mingw64 warning.
; TODO: Check for possible regression.
; TOFIX: (3rd party dependent contribs not yet included)
Errors/Core:
Temp/ccVJXjZS.s: Assembler messages:
Temp/ccVJXjZS.s:19: Error: Incorrect register `%rax' used with `l' suffix
Temp/ccVJXjZS.s:20: Error: `0x0e10(%rax,%ecx,4)' is not a valid base/index expression
Temp/ccVJXjZS.s:36: Error: Incorrect register `%rax' used with `l' suffix
Temp/ccVJXjZS.s:37: Error: `0x0e10(%rax,%ecx,4)' is not a valid base/index expression
+ GTWVG (also lots of warning)
Warnings/Core:
../../hbprintf.c: In function 'hb_snprintf':
../../hbprintf.c:1067: warning: implicit declaration of function 'finite'
../../hbprintf.c:1148: warning: cast from pointer to integer of different size
../../itemapi.c: In function 'hb_itemStrBuf':
../../itemapi.c:2159: warning: implicit declaration of function 'finite'
../../dbfntx1.c: In function 'hb_ntxTagHeaderCheck':
../../dbfntx1.c:1016: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1016: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfntx1.c:1017: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c: In function 'hb_nsxTagHeaderCheck':
../../dbfnsx1.c:1233: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1235: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c: In function 'hb_nsxPageFree':
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1525: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c: In function 'hb_nsxPageNew':
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
../../dbfnsx1.c:1574: warning: dereferencing type-punned pointer will break strict-aliasing rules
Warnings/Contrib:
../../files.c: In function 'HB_FUN_SETFDATI':
../../files.c:247: warning: cast to pointer from integer of different size
../../files.c:268: warning: cast from pointer to integer of different size
../../getenvrn.c: In function 'HB_FUN_FT_GETE':
../../getenvrn.c:178: warning: implicit declaration of function 'GetEnvironmentStrings'
../../getenvrn.c:178: warning: initialization makes pointer from integer without a cast
../../tpwin.c: In function 'HB_FUN_P_INITPORTSPEED':
../../tpwin.c:78: warning: cast to pointer from integer of different size
../../tpwin.c:89: warning: cast to pointer from integer of different size
../../tpwin.c: In function 'HB_FUN_P_READPORT':
../../tpwin.c:108: warning: cast to pointer from integer of different size
../../tpwin.c: In function 'HB_FUN_P_WRITEPORT':
../../tpwin.c:119: warning: cast to pointer from integer of different size
../../win_dll.c: In function 'DllExec':
../../win_dll.c:509: warning: cast from pointer to integer of different size
../../win_dll.c:603: warning: cast to pointer from integer of different size
../../win_dll.c:672: warning: cast to pointer from integer of different size
../../win_dll.c:689: warning: cast to pointer from integer of different size
../../win_dll.c: In function 'hb_getprocaddress':
../../win_dll.c:809: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'hb_oleItemToVariant':
../../win_ole.c:466: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'FreeParams':
../../win_ole.c:762: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'hb_oleVariantToItem':
../../win_ole.c:1092: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'HB_FUN_CREATEOLEOBJECT':
../../win_ole.c:1425: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'HB_FUN_GETOLEOBJECT':
../../win_ole.c:1478: warning: cast from pointer to integer of different size
../../win_ole.c: In function 'HB_FUN_OLEADDREF':
../../win_ole.c:1486: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_OLERELEASEOBJECT':
../../win_ole.c:1498: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_OLEVALUE':
../../win_ole.c:1648: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO__OLEVALUE':
../../win_ole.c:1675: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_OLENEWENUMERATOR':
../../win_ole.c:1703: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_INVOKE':
../../win_ole.c:1786: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_SET':
../../win_ole.c:1810: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_GET':
../../win_ole.c:1834: warning: cast to pointer from integer of different size
../../win_ole.c: In function 'HB_FUN_TOLEAUTO_ONERROR':
../../win_ole.c:1861: warning: cast to pointer from integer of different size
../../win_regc.c: In function 'hb_regkeyconv':
../../win_regc.c:77: warning: cast to pointer from integer of different size
../../win_regc.c: In function 'HB_FUN_WIN_REGCREATEKEYEX':
../../win_regc.c:82: warning: cast to pointer from integer of different size
../../win_regc.c:96: warning: cast from pointer to integer of different size
../../win_regc.c: In function 'HB_FUN_WIN_REGOPENKEYEX':
../../win_regc.c:118: warning: cast from pointer to integer of different size
../../win_regc.c: In function 'HB_FUN_WIN_REGCLOSEKEY':
../../win_regc.c:193: warning: cast to pointer from integer of different size
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_GETITEMRECT':
../../wapi_commctrl.c:521: warning: value computed is not used
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_GETIMAGELIST':
../../wapi_commctrl.c:553: warning: cast from pointer to integer of different size
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_ADJUSTRECT':
../../wapi_commctrl.c:632: warning: value computed is not used
../../wapi_commctrl.c: In function 'HB_FUN_WAPI_TABCTRL_CREATE':
../../wapi_commctrl.c:782: warning: cast to pointer from integer of different size
../../wapi_commctrl.c:786: warning: cast from pointer to integer of different size
../../wapi_winbase.c: In function 'HB_FUN_WAPI_GETMODULEHANDLE':
../../wapi_winbase.c:83: warning: cast to pointer from integer of different size
../../hbserv.c: In function 's_serviceSetHBSig':
../../hbserv.c:638: warning: passing argument 1 of 'SetUnhandledExceptionFilter' from incompatible pointer type
../../hbxml.c: In function 'HB_FUN_HBXML_DATAREAD':
../../hbxml.c:2321: warning: cast to pointer from integer of different size
* INSTALL
* utils/hbmk2/hbmk2.prg
+ config/win/mingw64.cf
* config/win/mingw.cf
+ Added support for mingw64. MinGW 64-bit mode.
Harbour doesn't build yet due to some compiling errors
(plus some internal MinGW ones to be investigated).
; TODO: Add support in postinst.sh.
* source/vm/extrap.c
* win32 -> win.
* config/win/mingwce.cf
* config/win/cygwin.cf
* config/win/mingw.cf
+ Added -fomit-frame-pointer switch for win/gcc family.
It causes quite a huge improvement in all areas, bringing
MinGW very close to MSVC and even faster in many aspects.
Some FP operations are still slower a bit, and this seems
to be the only remaining - small - disadvantage.
For C level debugging this switch should be turned off AFAIK.
* tests/bnchmark/bnch_win.bat
+ Added option to override benchmark program name, so now
it can be used with customized speedtst versions or other
benchmark apps.
+ Added HB_CMP_FLAGS envvar to define common compilation flags.
+ Now echoing all benchmark settings to output.
* config/win/icc.cf
+ Added -nologo.
* Changed -W4 to -W3, as -W3 is really verbose in this compiler.
* INSTALL
* bin/hb-mkdyn.bat
* utils/hbmk2/hbmk2.prg
+ config/win/iccia64.cf
+ Added Intel(R) C++ Compiler IA64 support.
All Harbour libs (including contribs) compiled successfully,
but I couldn't try linking any executables.
; TODO: Add processor information to appropriate places into
Harbour. Currently we have only bit width and endianness,
but no actual CPU family info. CPU instruction families
Harbour can currently be built on out of the box:
x86, amd64, IA64, PPC, PPC64, ARM.
* tests/bnchmark
+ tests/bnchmark/bnch_win.bat
+ Added speedtst comparison tool, featuring:
- CPU + physical memory info dump from WMI
- Tasklist before and after test runs
- Harbour /build info included in output
- Complete dump of commands executed, hbmk2 output
- Dir listing of tested .exes
- All tests repeated three times by default (configurable)
- 8 slots maximum to compare different speedtst scenarios
- By default it will run -st vs. -mt tests.
; Please read the comments in the file for usage instructions.
Here's an example for parameter setup:
--
set PATH=C:\devl\MinGW-432\bin;%PATH%
set HB_BENCH_RUNS=3
set HB_RUN_FLAGS=--exclude=030
set HB_CMP_FLAGS_1=-gc2
set HB_CMP_FLAGS_2=-gc3
call bnch_win.bat > results.txt 2>&1
--
* config/rules.cf
+ Restored -ko flag. Thanks Mindaugas for analysing test result.
* contrib/hbodbc/todbc.prg
* contrib/hbodbc/odbc.c
* Formatting + minor cleanups.
+ contrib/xhb/inet.h
+ Added from xhb.
* contrib/xhb/xhbfunc.c
+ Added HB_POINTER2STRING() and HB_STRING2POINTER().
Just for the record, I've commented them, as they're both
very dangerous and violating basic programming rules.
* contrib/hbwin/win_prn2.c
+ Added XISPRINTER() from xhb.
% Optimizations / cleanups in Windows spaghetti code.
Would need a complete 'refactor'.
* INSTALL
* contrib/Makefile
+ Added QT to the mainstream build. See INSTALL how to
enable it. We will disable it before release if it will
be a build blocker.
+ contrib/hbqt/hbqt_base.cpp
+ Added missing file from previous commit.
* utils/hbmk2/hbmk2.prg
+ Added -dflag: and -aflag: options.
* contrib/xhb/Makefile
+ contrib/xhb/hbserv.h
+ contrib/xhb/hbserv.ch
+ contrib/xhb/trpccli.prg
+ contrib/xhb/hbrpc.ch
+ contrib/xhb/ttable.prg
+ contrib/xhb/trpc.prg
+ contrib/xhb/ttable.ch
+ contrib/xhb/hbserv.c
+ Added few components from xhb. They compile without warnings,
but I didn't try any of them.
* contrib/hbqt/hbqt_qabstractbutton.cpp
* contrib/hbqt/hbqt_qdialog.cpp
* contrib/hbqt/hbqt.h
* contrib/hbqt/Makefile
+ Added QT_VERSION(), QT_VERSION_STR()
+ Added QT version protection.
! Fixed to use forward slashes in #include filenames.
* Changed Linux include dir autodetection.
* Changed autodetection to look for qglobal.h.
* contrib/rddads/tests/testmg.prg
- Removed unnecessary lines.
* bin/postinst.bat
- Removed generation of odbc32.lib for BCC.
You should configure BCC to include <bcc>/Lib/PSDK in
the lib paths in bcc32.cfg and ilink32.cfg. It's not
Harbour's job to generate it.
- contrib/hbodbc/tests/harbour.mdb
+ contrib/hbodbc/tests/test.mdb
* contrib/hbodbc/tests/odbcdemo.prg
* contrib/hbodbc/tests/odbccall.prg
* contrib/hbodbc/tests/testodbc.prg
* Created working test table from test.dbf.
(previous .mdb was broken)
* contrib/hbodbc/tests/odbcdemo.prg
* contrib/hbodbc/tests/odbccall.prg
* contrib/hbodbc/tests/testodbc.prg
* contrib/hbodbc/todbc.prg
* contrib/hbodbc/browodbc.prg
* contrib/hbodbc/sql.ch
* Formatting.
* Optimizations and cleanups. (could still use a lot more)
! Fixed to not use Alert().
* contrib/hbmysql/mysql.c
* contrib/hbmysql/tmysql.prg
* Renamed all functions to standard mysql equivalents.
Please update your code and turn off old function
names with -DHB_MYSQL_LEGACY_LEVEL_OFF to test for
success. Legacy function names will be removed from
Harbour in the next release. This move allows to use
hbmysql and hbodbc in the same app.
SQLAND() has to be replaced with HB_BITAND(), be aware
that latter will RTE when non-numeric var is passed,
while SQLAND() was silently ignoring it.
Changed functions names:
SQLVERSION() => mysql_get_server_version()
SQLCONNECT() => mysql_real_connect()
SQLCLOSE() => mysql_close()
SQLCOMMIT() => mysql_commit()
SQLROLLBACK() => mysql_rollback()
SQLSELECTD() => mysql_select_db()
SQLQUERY() => mysql_query()
SQLSTORER() => mysql_store_result()
SQLUSERES() => mysql_use_result()
SQLFREER() => mysql_free_result()
SQLFETCHR() => mysql_fetch_row()
SQLDATAS() => mysql_data_seek()
SQLNROWS() => mysql_num_rows()
SQLFETCHF() => mysql_fetch_field()
SQLFSEEK() => mysql_field_seek()
SQLNUMFI() => mysql_num_fields()
SQLFICOU() => mysql_field_count()
SQLLISTF() => mysql_list_fields()
SQLGETERR() => mysql_error()
SQLLISTDB() => mysql_list_dbs()
SQLLISTTBL() => mysql_list_tables()
SQLAFFROWS() => mysql_affected_rows()
SQLHOSTINFO() => mysql_get_host_info()
SQLSRVINFO() => mysql_get_server_info()
DATATOSQL() => mysql_escape_string()
FILETOSQLBINARY() => mysql_escape_string_from_file()
SQLAND() => hb_bitAnd()
* source/vm/maindll.c
* source/vm/maindllh.c
* source/vm/maindllp.c
* contrib/hbodbc/odbc.c
* Minor formatting.
* source/vm/Makefile
+ source/vm/maindllp
+ source/vm/maindllp/Makefile
+ Added generation of hbmaindllp lib, to create pcode .dlls
on Windows platform. -DHB_DYNLIB is always defined for
this lib. This is just the first step, we will need compiler,
hbmk2 and other changes. I'll contribute with hbmk2 changes.
* source/vm/maindllp.c
% Code made less verbose.
! Created HB_EXPORT declaration for DllEntryPoint().
* config/win/icc.cf
* Changed optimization to -O3 (from MSVC ones).
With max optim (-Ox) it was just a bit faster than MSVC 2008.
+ contrib/hbqt
+ contrib/hbqt/hbqt_qabstractbutton.cpp
+ contrib/hbqt/hbqt_qdialog.cpp
+ contrib/hbqt/hbqt.h
+ contrib/hbqt/Makefile
+ Added initial QT wrapper lib layout with content posted
by Pritpal to the list. (I did a few renames, please check
them)
* contrib/hbwin/hbwapi.h
* Fixes in header.
* harbour/source/rtl/minmax.c
! fixed min()/max() functions to always return the 1-st item when
items are equal. It's Clipper behavior and can be important when
two items with the same wight have different other attributes
like formatted value size or number of decimal places.
* harbour/include/hbatomic.h
! fixed inline assembler code for atomic inc/dec operations.
It's late and I haven't wrote anything in assembler using
Intel syntax for years.
* reenabled inline assembler code for atomic inc/dec operations
for POCC/XCC builds - such version should work. Please check.
* include/hbatomic.h
! Typo (__inline__ -> __inline).
! Temply disabled new _MSC_VER inline asm code, because it causes this with POCC5:
include\hbatomic.h(268): error #3114: [asm] Invalid combination of opcode and operands.
include\hbatomic.h(273): error #3114: [asm] Invalid combination of opcode and operands.
* harbour/include/hbatomic.h
+ added atomic inc/dec inline assembler code for 32bit MSVC builds
and probably also to other compilers which defines _MSC_VER
macro (XCC/POCC). Thanks to Viktor for help. Please make some tests.
* harbour/source/compiler/hbopt.c
! disabled one assert() in PCODE optimization code.
Mindaugas, I left note which explains why.
* config/rules.cf
+ Added -ko optimization switch for Harbour.
; TODO: Disable it for specific places of hbtest.
* bin/hb-mkdyn.bat
+ Added missing pocc implib generation.
* utils/hbmk2/hbmk2.prg
+ mingwce support synced with mingw some more.
F.e. now resources are supported for mingwce executables.
* bin/hb-mkdyn.sh
* bin/hb-func.sh
! mingw/cygwin .dll name generation tweaked to work
properly. This fixes both TOFIXes in prev commit.
* mpkg_win.bat
+ Added -9 switch to zip.
- contrib/examples/hbdoc/examples/core_es/hbpplib.txt
* contrib/examples/hbdoc/examples/core_es/dirstruc.txt
* Cleanup.
* bin/hb-mkdyn.sh
* bin/hb-mkdyn.bat
* source/vm/maindllp.c
* utils/hbmk2/hbmk2.prg
+ Renamed all Windows Harbour .dlls to harbour-11.dll and
harbourmt-11.dll. This means that MinGW will now have a versioned
name to be in sync with other builds. It also means that
-vc, -pocc, -ow postfixes are gone (and additionally DMC
could also be supported). What remains is -x64 to
signal an x64 and -ia64 to signal a IA64 build. Another thing
which remains is -b32 (now renamed to -bcc to be in sync with
rest of Harbour), because Borland has an non-standard
name mangling, and while it can be made work with other
compilers since the calling convention is the same, it requires
the .dll user applications to be rebuilt with some implib tricks.
Overall Borland isn't recommended for .dll creation.
Please do further tests for binary compatibility.
; TOFIX: Location of .dll still differs for mingw/cygwin, they
are created in lib while rest of compilers create it in
bin. I think we should sync them by creating a copy
of the .dlls in bin for mingw/cygwin. Przemek, could
you help here?
; TOFIX: "Making <dllname>..." screen messages. I'll need some
help here also.
* bin/hb-mkdyn.sh
* ${MAJOR} default set to 1.
* make_gnu_os2.cmd
* Minor formatting.
* contrib/hbgd/gdwrp.c
! Minor correction to recent change. (avoiding warning for MinGW)
* harbour/tests/speedtst.prg
+ added new tests of dynamic code blocks performance
* modified to compile by __XPP__ and __CLIP__ - now for single
thread only
* utils/hbdoc/genos2.prg
* utils/hbdoc/genng.prg
* utils/hbdoc/genasc.prg
* utils/hbdoc/genchm.prg
* utils/hbdoc/genhpc.prg
* utils/hbdoc/ft_funcs.prg
* utils/hbdoc/hbdoc.prg
* utils/hbdoc/genhtm.prg
* utils/hbdoc/genpdf1.prg
* utils/hbdoc/gentrf.prg
* utils/hbdoc/genrtf.prg
+ Enabled line number for all files to aid finding crashes.
! Few crashes fixed. Still far from usable state.
* source/vm/thread.c
+ Added short Harbour level API description. (from Przemek)
* contrib/xhb/Makefile
* contrib/xhb/hbcompat.ch
+ contrib/xhb/xhbmt.prg
+ Added translation for all xhb MT functions.
(Thanks a lot Przemek)
* INSTALL
+ Added 3.81 or upper as GNU Make requirement. Older ones
have bugs exploitet by current .cf files.
* contrib/hbssl/Makefile
- Disabled for owatcom.
* config/win/msvc.cf
! Fixed -TP switch. Stopped using CFLAGS.
* Changed to use link.exe directly instead of cl.exe.
* config/win/msvcce.cf
* Minor cleanup.