2011-04-16 19:40 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* src/common/hbtrace.c
  * contrib/xhb/hbsyslog.c
    + Added Android specific logging support. Untested.

  * contrib/xhb/hbsyslog.c
    ! Disabled syslog() call for Symbian.

  * include/hbsetup.h
    + Added Android OS platform detection. Untested.

  * utils/hbmk2/hbmk2.prg
    % Disabled some very old HB_INSTALL_PREFIX autodetection logic,
      which supports some obsolete looking scenarios when hbmk2 executable
      is not in standard location. Rest of logic and failure detection
      rearranged accordingly. After this step hbmk2 no more requires
      harbour executable to be present next to it.
      IMPORTANT: This is live testing, pls report any problems.
This commit is contained in:
Viktor Szakats
2011-04-16 17:41:23 +00:00
parent 678e4d7e3e
commit 78eccb928c
5 changed files with 97 additions and 13 deletions

View File

@@ -16,12 +16,31 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-04-16 19:40 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/common/hbtrace.c
* contrib/xhb/hbsyslog.c
+ Added Android specific logging support. Untested.
* contrib/xhb/hbsyslog.c
! Disabled syslog() call for Symbian.
* include/hbsetup.h
+ Added Android OS platform detection. Untested.
* utils/hbmk2/hbmk2.prg
% Disabled some very old HB_INSTALL_PREFIX autodetection logic,
which supports some obsolete looking scenarios when hbmk2 executable
is not in standard location. Rest of logic and failure detection
rearranged accordingly. After this step hbmk2 no more requires
harbour executable to be present next to it.
IMPORTANT: This is live testing, pls report any problems.
2011-04-16 09:30 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbxbp/xbpfontdialog.prg
! Minor.
* contrib/hbxbp/xbpwindow.prg
! Protected: :setStyleSheet() method.
! Protected: :setStyleSheet() method.
It was not Xbase++ compatible so to achieve exactly Xbase++
compatibility, this is necessary.

View File

@@ -12,11 +12,19 @@
#include "hblogdef.ch"
#if defined( HB_OS_WIN )
#include "windows.h"
static HANDLE s_RegHandle;
#include "windows.h"
#elif defined( HB_OS_UNIX ) && !defined( __WATCOMC__ ) && !defined( HB_OS_VXWORKS )
static HANDLE s_RegHandle;
#elif defined( HB_OS_ANDROID )
#include <android/log.h>
#elif defined( HB_OS_UNIX ) && \
! defined( __WATCOMC__ ) && \
! defined( HB_OS_VXWORKS ) && \
! defined( HB_OS_SYMBIAN )
#include <syslog.h>
@@ -105,16 +113,37 @@ HB_FUNC( HB_SYSLOGMESSAGE )
else
#endif
hb_retl( HB_FALSE );
#elif defined( HB_OS_UNIX ) && !defined( __WATCOMC__ ) && !defined( HB_OS_VXWORKS )
#elif defined( HB_OS_ANDROID )
int logval;
switch( hb_parni( 2 ) )
{
case HB_LOG_CRITICAL: logval = ANDROID_LOG_VERBOSE; break;
case HB_LOG_ERROR: logval = ANDROID_LOG_ERROR; break;
case HB_LOG_WARN: logval = ANDROID_LOG_WARN; break;
case HB_LOG_INFO: logval = ANDROID_LOG_INFO; break;
default: logval = ANDROID_LOG_DEBUG;
}
__android_log_print( logval, "xhb", "[%lX]: %s", hb_parnl( 3 ), hb_parcx( 1 ) );
hb_retl( HB_TRUE );
#elif defined( HB_OS_UNIX ) && \
! defined( __WATCOMC__ ) && \
! defined( HB_OS_VXWORKS ) && \
! defined( HB_OS_SYMBIAN )
int logval;
switch( hb_parni( 2 ) )
{
case HB_LOG_CRITICAL: logval = LOG_CRIT; break;
case HB_LOG_ERROR: logval = LOG_ERR; break;
case HB_LOG_WARN: logval = LOG_WARNING; break;
case HB_LOG_INFO: logval = LOG_INFO; break;
default: logval = LOG_DEBUG;
case HB_LOG_ERROR: logval = LOG_ERR; break;
case HB_LOG_WARN: logval = LOG_WARNING; break;
case HB_LOG_INFO: logval = LOG_INFO; break;
default: logval = LOG_DEBUG;
}
syslog( logval, "[%lX]: %s", hb_parnl( 3 ), hb_parcx( 1 ) );

View File

@@ -410,6 +410,12 @@
#endif
#endif
#ifndef HB_OS_ANDROID /* Experimental */
#if defined( __ANDROID__ )
#define HB_OS_ANDROID
#endif
#endif
#ifndef HB_OS_CYGWIN
#if defined( __CYGWIN__ )
#define HB_OS_CYGWIN
@@ -432,6 +438,7 @@
defined( HB_OS_VXWORKS ) || \
defined( HB_OS_BEOS ) || \
defined( HB_OS_SYMBIAN ) || \
defined( HB_OS_ANDROID ) || \
defined( HB_OS_CYGWIN ) || \
defined( HB_OS_MINIX )
#define HB_OS_UNIX

View File

@@ -63,6 +63,8 @@
#if defined( HB_OS_WIN )
#include <windows.h>
#elif defined( HB_OS_ANDROID )
#include <android/log.h>
#elif defined( HB_OS_UNIX ) && \
! defined( __WATCOMC__ ) && \
! defined( HB_OS_VXWORKS ) && \
@@ -282,7 +284,6 @@ static void hb_tracelog_( int level, const char * file, int line, const char * p
TCHAR lp[ 1024 ];
} buf;
/* We add \n at the end of the buffer to make WinDbg display look readable. */
if( proc )
hb_snprintf( buf.psz, sizeof( buf.psz ), "%s:%d:%s() %s %s\n",
@@ -298,6 +299,29 @@ static void hb_tracelog_( int level, const char * file, int line, const char * p
#endif
OutputDebugString( buf.lp );
}
# elif defined( HB_OS_ANDROID )
{
char psz[ 1024 ];
int slevel;
switch( level )
{
case HB_TR_ALWAYS: slevel = ANDROID_LOG_ASSERT; break;
case HB_TR_FATAL: slevel = ANDROID_LOG_VERBOSE; break;
case HB_TR_ERROR: slevel = ANDROID_LOG_ERROR break;
case HB_TR_WARNING: slevel = ANDROID_LOG_WARN; break;
case HB_TR_INFO: slevel = ANDROID_LOG_INFO; break;
case HB_TR_DEBUG: slevel = ANDROID_LOG_DEBUG; break;
default: slevel = ANDROID_LOG_DEBUG;
}
if( proc )
hb_snprintf( psz, sizeof( psz ), "%s:%d:%s() %s", file, line, proc, pszLevel );
else
hb_snprintf( psz, sizeof( psz ), "%s:%d: %s", file, line, pszLevel );
__android_log_print( slevel, psz, message );
}
# else
{
int slevel;

View File

@@ -1468,6 +1468,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
l_cHB_INSTALL_PREFIX := MacroProc( hbmk, PathSepToSelf( GetEnv( "HB_INSTALL_PREFIX" ) ), NIL, _MACRO_NO_PREFIX )
IF Empty( l_cHB_INSTALL_PREFIX )
l_cHB_INSTALL_PREFIX := hb_DirSepAdd( hb_DirBase() ) + ".."
#if 0
DO CASE
CASE hb_FileExists( hb_DirSepAdd( hb_DirBase() ) + cBin_CompPRG + hbmk[ _HBMK_cCCEXT ] )
l_cHB_INSTALL_PREFIX := hb_DirSepAdd( hb_DirBase() ) + ".."
@@ -1481,6 +1483,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
hbmk_OutErr( hbmk, I_( "Error: HB_INSTALL_PREFIX not set, failed to autodetect.\nPlease run this tool from its original location inside the Harbour installation or set HB_INSTALL_PREFIX environment variable to Harbour's root directory." ) )
RETURN _ERRLEV_FAILHBDETECT
ENDCASE
#endif
ENDIF
/* Detect special non-installed dir layout (after simple 'make') */
@@ -1496,10 +1499,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
hb_FileExists( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + Replicate( ".." + hb_ps(), PathSepCount( hbmk[ _HBMK_cBUILD ] ) ) + ".." + hb_ps() + ".." + hb_ps() + "include" +;
hb_ps() + "hbvm.h" )
l_cHB_INSTALL_PREFIX := hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + Replicate( ".." + hb_ps(), PathSepCount( hbmk[ _HBMK_cBUILD ] ) ) + ".." + hb_ps() + ".." + hb_ps()
ENDIF
/* Detect special *nix dir layout (/bin, /lib/harbour, /lib64/harbour, /include/harbour) */
IF hb_FileExists( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + "include" +;
ELSEIF hb_FileExists( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + "include" +;
hb_ps() + iif( _HBMODE_IS_XHB( hbmk[ _HBMK_nHBMODE ] ), "xharbour", "harbour" ) +;
hb_ps() + "hbvm.h" )
IF Empty( l_cHB_INSTALL_BIN )
@@ -1515,6 +1516,10 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
IF Empty( l_cHB_INSTALL_INC )
l_cHB_INSTALL_INC := hb_PathNormalize( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + "include" + hb_ps() + iif( _HBMODE_IS_XHB( hbmk[ _HBMK_nHBMODE ] ), "xharbour", "harbour" ) )
ENDIF
ELSEIF ! hb_FileExists( hb_DirSepAdd( l_cHB_INSTALL_PREFIX ) + hb_ps() + "include" +;
hb_ps() + "hbvm.h" )
hbmk_OutErr( hbmk, I_( "Error: HB_INSTALL_PREFIX not set, failed to autodetect.\nPlease run this tool from its original location inside the Harbour installation or set HB_INSTALL_PREFIX environment variable to Harbour's root directory." ) )
RETURN _ERRLEV_FAILHBDETECT
ENDIF
#if defined( __PLATFORM__UNIX )