diff --git a/ChangeLog.txt b/ChangeLog.txt index 5492a5a69d..5e27e56f78 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,33 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-03-25 21:41 UTC+0100 Viktor Szakats (harbour syenar.net) + + tests/achoice3.prg + + added another AChoice() TOFIX demonstration. + Sent by Tony + ! code adatped to Harbour stds, some formatting + for hbformat misses. + +2013-03-25 21:33 UTC+0100 Viktor Szakats (harbour syenar.net) + * utils/hbmk2/hbmk2.prg + ! corrected a few spelling subtleties + +2013-03-25 21:31 UTC+0100 Viktor Szakats (harbour syenar.net) + * README.txt + ! expression correction + +2013-03-25 20:27 UTC+0100 Viktor Szakats (harbour syenar.net) + * doc/Makefile + ! updated for recently deleted file + + * config/global.mk + * utils/hbmk2/hbmk2.prg + + autodetect gcc 4.8 + + * package/winuni/mpkg_win_uni.bat + + include sjlj and seh libgcc dlls + (starting with gcc 4.8, libgcc dll is required by default) + 2013-03-25 16:14 UTC+0100 Viktor Szakats (harbour syenar.net) * extras/template/tests/hbmk.hbm * reverted to not refer to hbtest.hbc diff --git a/README.txt b/README.txt index 55a84e1d0d..15f3827e3e 100644 --- a/README.txt +++ b/README.txt @@ -2,12 +2,12 @@ WELCOME TO HARBOUR ================== - Harbour is the Free Open Source Software implementation - of a multi-platform, multi-threading, object-oriented, scriptable - programming language, backward compatible with Clipper/xBase. - Harbour consists of a compiler and runtime libraries with multiple - UI and database backends, its own make system and a large - collection of libraries and interfaces to many popular APIs. + Harbour is the free software implementation of a multi-platform, + multi-threading, object-oriented, scriptable programming language, + backward compatible with Clipper/xBase. Harbour consists of + a compiler and runtime libraries with multiple UI and database + backends, its own make system and a large collection of libraries + and interfaces to many popular APIs. diff --git a/config/global.mk b/config/global.mk index a1839bf368..ab17b5c9f0 100644 --- a/config/global.mk +++ b/config/global.mk @@ -597,6 +597,9 @@ ifeq ($(HB_COMPILER),) ifneq ($(HB_COMP_PATH),) HB_COMPILER := mingw64 HB_CPU := x86_64 + ifneq ($(wildcard $(dir $(HB_COMP_PATH))x86_64-*-mingw32-gcc-4.8*),) + HB_COMPILER_VER := 48 + else ifneq ($(wildcard $(dir $(HB_COMP_PATH))x86_64-*-mingw32-gcc-4.7*),) HB_COMPILER_VER := 47 else @@ -608,12 +611,16 @@ ifeq ($(HB_COMPILER),) endif endif endif + endif else HB_COMP_PATH := $(call find_in_path,gcc) ifneq ($(HB_COMP_PATH),) # Check for a mingw64-tdm gcc executable in the same directory ifneq ($(wildcard $(dir $(HB_COMP_PATH))x86_64-w64-mingw32-gcc$(HB_HOST_BIN_EXT)),) HB_COMPILER := mingw64 + ifneq ($(wildcard $(dir $(HB_COMP_PATH))x86_64-w64-mingw32-gcc-4.8*),) + HB_COMPILER_VER := 48 + else ifneq ($(wildcard $(dir $(HB_COMP_PATH))x86_64-w64-mingw32-gcc-4.7*),) HB_COMPILER_VER := 47 else @@ -625,8 +632,12 @@ ifeq ($(HB_COMPILER),) endif endif endif + endif else HB_COMPILER := mingw + ifneq ($(wildcard $(dir $(HB_COMP_PATH))mingw32-gcc-4.8*),) + HB_COMPILER_VER := 48 + else ifneq ($(wildcard $(dir $(HB_COMP_PATH))mingw32-gcc-4.7*),) HB_COMPILER_VER := 47 else @@ -650,6 +661,7 @@ ifeq ($(HB_COMPILER),) endif endif endif + endif endif else HB_COMP_PATH := $(call find_in_path,wcc386) @@ -779,6 +791,9 @@ ifeq ($(HB_COMPILER),) HB_COMPILER := mingw64 HB_CCPREFIX := i686-w64-mingw32- HB_CPU := x86_64 + ifneq ($(wildcard $(dir $(HB_COMP_PATH))$(HB_CCPREFIX)gcc-4.8*),) + HB_COMPILER_VER := 48 + else ifneq ($(wildcard $(dir $(HB_COMP_PATH))$(HB_CCPREFIX)gcc-4.7*),) HB_COMPILER_VER := 47 else @@ -790,6 +805,7 @@ ifeq ($(HB_COMPILER),) endif endif endif + endif else ifeq ($(HB_HOST_CPU),x86_64) # mingw-w64 build @@ -798,6 +814,9 @@ ifeq ($(HB_COMPILER),) HB_COMPILER := mingw64 HB_CCPREFIX := x86_64-w64-mingw32- HB_CPU := x86_64 + ifneq ($(wildcard $(dir $(HB_COMP_PATH))$(HB_CCPREFIX)gcc-4.8*),) + HB_COMPILER_VER := 48 + else ifneq ($(wildcard $(dir $(HB_COMP_PATH))$(HB_CCPREFIX)gcc-4.7*),) HB_COMPILER_VER := 47 else @@ -809,6 +828,7 @@ ifeq ($(HB_COMPILER),) endif endif endif + endif endif endif endif diff --git a/doc/Makefile b/doc/Makefile index dd3519f4d3..12e99dab7c 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -17,7 +17,6 @@ DOC_FILES := \ hdr_tpl.txt \ howtorel.txt \ howtorep.txt \ - inet.txt \ locks.txt \ oldnews.txt \ pcode.txt \ diff --git a/package/winuni/mpkg_win_uni.bat b/package/winuni/mpkg_win_uni.bat index c83535e1be..7281a728e2 100644 --- a/package/winuni/mpkg_win_uni.bat +++ b/package/winuni/mpkg_win_uni.bat @@ -1,7 +1,7 @@ @echo off rem --------------------------------------------------------------- -rem Copyright 2009-2011 Viktor Szakats (harbour syenar.net) +rem Copyright 2009-2013 Viktor Szakats (harbour syenar.net) rem See COPYING.txt for licensing terms. rem --------------------------------------------------------------- @@ -80,6 +80,8 @@ xcopy /y "%HB_DIR_UPX%upx.exe" xcopy /y /s /e "%HB_DIR_MINGW%" %HB_ABSROOT%comp\mingw\ rem del %HB_ABSROOT%comp\mingw\tdm-mingw-1.908.0-4.4.1-2.exe +xcopy /y "%HB_DIR_MINGW%\bin\libgcc_s_seh-1.dll" %HB_ABSROOT%bin\ +xcopy /y "%HB_DIR_MINGW%\bin\libgcc_s_sjlj-1.dll" %HB_ABSROOT%bin\ xcopy /y "%HB_DIR_MINGW%\bin\libgcc_s_dw2-1.dll" %HB_ABSROOT%bin\ xcopy /y "%HB_DIR_MINGW%\bin\mingwm10.dll" %HB_ABSROOT%bin\ diff --git a/tests/achoice3.prg b/tests/achoice3.prg new file mode 100644 index 0000000000..6431523a56 --- /dev/null +++ b/tests/achoice3.prg @@ -0,0 +1,70 @@ + +#ifndef __HARBOUR__ +#include "clipper.ch" +#endif + +#include "achoice.ch" +#include "inkey.ch" + +/* TOFIX: Code below demonstrates an AChoice() difference between Harbour + and Clipper it is called with the number of items in the array is + less than number of rows determined by ( nBottom - nTop + 1 ), + and a user function is specified for cUserFunction. In the attached + example, a box is drawn around the area used by AChoice() to make + it easier to see the difference in action. When cUserFunction is + not specified, the bottom line of the box is not overwritten. + In Clipper, the bottom line of the box is not overwritten, but + in Harbour it is. */ + +MEMVAR m_aItems + +PROCEDURE Main() + + LOCAL nResult + + PRIVATE m_aItems := { ; + "Apple", ; + "Blueberry", ; + "Cashew", ; + "Grape", ; + "Hazelnut", ; + "Jackfruit", ; + "Kumquat", ; + "Mulberry" } + + CLS + @ 7, 25 TO 8 + Len( m_aItems ), 57 + nResult := AChoice( 8, 26, 8 + Len( m_aItems ), 55, m_aItems,, "HotChoice" ) + IF nResult > 0 + Alert( m_aItems[ nResult ] + " selected" ) + ENDIF + + RETURN + +FUNCTION HotChoice( nStatus, nCurrent, window_pos ) + + LOCAL nKey, cKey + + HB_SYMBOL_UNUSED( nCurrent ) + HB_SYMBOL_UNUSED( window_pos ) + + DO CASE + CASE nStatus == AC_EXCEPT + nKey := LastKey() + cKey := Upper( hb_keyChar( nKey ) ) + DO CASE + CASE AScan( m_aItems, {| c | Left( c, 1 ) == cKey } ) > 0 + hb_keyPut( K_ENTER ) + RETURN AC_GOTO + CASE nKey == K_ENTER + RETURN AC_SELECT + CASE nKey == K_ESC + RETURN AC_ABORT + OTHERWISE + ?? Chr( 7 ) + ENDCASE + CASE nStatus == AC_NOITEM + RETURN AC_ABORT + ENDCASE + + RETURN AC_CONT diff --git a/utils/hbmk2/hbmk2.prg b/utils/hbmk2/hbmk2.prg index 9bdd794d83..b6e10066ce 100644 --- a/utils/hbmk2/hbmk2.prg +++ b/utils/hbmk2/hbmk2.prg @@ -2280,6 +2280,11 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit ( hbmk[ _HBMK_cPLAT ] == "wce" .AND. hbmk[ _HBMK_cCOMP ] == "mingwarm" ) DO CASE + CASE File( hb_FNameDir( cPath_CompC ) + "mingw32-gcc-4.8" + hb_osFileMask() ) .OR. ; + File( hb_FNameDir( cPath_CompC ) + "i686-w64-mingw32-gcc-4.8" + hb_osFileMask() ) .OR. ; + File( hb_FNameDir( cPath_CompC ) + "x86_64-pc-mingw32-gcc-4.8" + hb_osFileMask() ) .OR. ; + File( hb_FNameDir( cPath_CompC ) + "x86_64-w64-mingw32-gcc-4.8" + hb_osFileMask() ) + hbmk[ _HBMK_nCOMPVer ] := 48 CASE File( hb_FNameDir( cPath_CompC ) + "mingw32-gcc-4.7" + hb_osFileMask() ) .OR. ; File( hb_FNameDir( cPath_CompC ) + "i686-w64-mingw32-gcc-4.7" + hb_osFileMask() ) .OR. ; File( hb_FNameDir( cPath_CompC ) + "x86_64-pc-mingw32-gcc-4.7" + hb_osFileMask() ) .OR. ; @@ -5517,7 +5522,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit AAdd( hbmk[ _HBMK_aOPTD ], "-Wl, -Xdynamic" ) ENDIF IF hbmk[ _HBMK_lSHARED ] - /* TOFIX: .so is referred by its full link time search path, + /* TOFIX: .so is referred by its full link-time search path, there is even a backslash present in the dir formed by the linker */ AAdd( hbmk[ _HBMK_aOPTL ], "-Wl, -Xdynamic" ) @@ -10629,7 +10634,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) hb_FNameExt( cItemL ) == ".hh" .OR. ; hb_FNameExt( cItemL ) == ".mm" .OR. ; Empty( hb_FNameExt( cItemL ) ) - /* ignore C/C++/Objective C headers */ + /* ignore C/C++/Objective-C headers */ OTHERWISE AAddNew( hbmk[ _HBMK_aCH ], tmp ) ENDCASE @@ -15686,7 +15691,7 @@ STATIC PROCEDURE ShowHelp( hbmk, lMore, lLong ) { "-L" , I_( "additional path to search for libraries" ) }, ; { "-i

|-incpath=

" , I_( "additional path to search for headers" ) }, ; { "-static|-shared" , I_( "link with static/shared libs" ) }, ; - { "-gt" , I_( "link with GT GT driver, can be repeated to link with more GTs. First one will be the default at runtime" ) }, ; + { "-gt" , I_( "link with GT GT driver, can be repeated to link with more GTs. First one will be the default at run-time" ) }, ; { "-inc[-]" , I_( "enable/disable incremental build mode (default: disabled)" ) }, ; { "-hbexe" , I_( "create executable (default)" ) }, ; { "-hblib" , I_( "create static library" ) }, ; @@ -15873,7 +15878,7 @@ STATIC PROCEDURE ShowHelp( hbmk, lMore, lLong ) { "-debugi18n" , "display internals on translation file generation" }, ; { "-debugdepd" , "display internals of dependency detection" }, ; { "-debugpars" , "display all input parameters in processing order" }, ; - { "-debugrte" , "generate a runtime error" } } + { "-debugrte" , "generate a run-time error" } } LOCAL aHdr_Opt_Self := { ; NIL, ; @@ -16321,13 +16326,13 @@ STATIC PROCEDURE ShowHelp( hbmk, lMore, lLong ) e"%1$s is an integrated and portable build tool, making it possible to " + ; e"create various types of executable binaries (executable, dynamic library, " + ; e"static library, Harbour portable binary) out of multiple types of source " + ; - e"files (C, C++, Objective C, Harbour, gettext translations, Windows " + ; + e"files (C, C++, Objective-C, Harbour, gettext translations, Windows " + ; e"resources). 'Integrated' means that a single %1$s project file can " + ; e"control all or most aspects of the build process. 'Portable' means that " + ; e"a single %1$s project file can control the build on all supported OS " + ; e"platforms and across all supported C compilers. It also aims to cover " + ; e"the majority of build tasks via short and simple project files (options). " + ; - e"%1$s supports pure -non-Harbour- C/C++/Objective C projects as well. " + ; + e"%1$s supports pure -non-Harbour- C/C++/Objective-C projects as well. " + ; e"In order to achieve above goals, %1$s will autodetect Harbour, C compiler " + ; e"and other required tools, then configure and call them appropriately. " + ; e"%1$s allows to extend the types of supported source files via plugins.\n" + ;