This commit is contained in:
Viktor Szakats
2013-03-25 21:58:21 +01:00
7 changed files with 137 additions and 14 deletions

View File

@@ -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

View File

@@ -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.
<http://harbour-project.org/>

View File

@@ -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

View File

@@ -17,7 +17,6 @@ DOC_FILES := \
hdr_tpl.txt \
howtorel.txt \
howtorep.txt \
inet.txt \
locks.txt \
oldnews.txt \
pcode.txt \

View File

@@ -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\

70
tests/achoice3.prg Normal file
View File

@@ -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

View File

@@ -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<libpath>" , I_( "additional path to search for libraries" ) }, ;
{ "-i<p>|-incpath=<p>" , I_( "additional path to search for headers" ) }, ;
{ "-static|-shared" , I_( "link with static/shared libs" ) }, ;
{ "-gt<name>" , I_( "link with GT<name> GT driver, can be repeated to link with more GTs. First one will be the default at runtime" ) }, ;
{ "-gt<name>" , I_( "link with GT<name> 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" + ;