diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3331ddadb2..8679185b87 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -9,6 +9,17 @@ */ +2006-05-29 14:10 UTC+0100 Ryszard Glab + + Add information about the upcoming alpha build 45. + *fixed invalid memory access + + + *fixed to generate error in cases when variable name is duplicated + in PARAMETERS and PRIVATE statements (NOTICE: this error is + generated when automatic memvar declaration was requested only + using -a command line switch) + + 2006-05-23 14:21 UTC+0300 Chen Kedem * doc/whatsnew.txt + Add information about the upcoming alpha build 46. @@ -81,7 +92,7 @@ * harbour/source/vm/hvm.c ! fixed hb_rddGetFieldValue() to not operate on unallocated stack area -2006-05-14 09:36 UTC+0200 Chen Kedem + it could cause unpredictable results when RDD had to access HVM, f.e. for evaluation some pending relations. The whole code should be carefully checked and to not operate on hb_stackTopItem() if other functions are called to make the HVM fully reentrant. diff --git a/harbour/doc/en/compiler.txt b/harbour/doc/en/compiler.txt index 811ec23860..ced140501b 100644 --- a/harbour/doc/en/compiler.txt +++ b/harbour/doc/en/compiler.txt @@ -21,7 +21,7 @@ * harbour [options] [options] * * The command line options have to be separated by at least one space. - * The option can start with either '/' character or '-' character. + * The option can start with either '/' character or '-' character. * * The Harbour command line options: * ================================= @@ -30,12 +30,12 @@ * ================= * This causes all variables declared by PARAMETER, PRIVATE or PUBLIC - * statements to be automatically declared as MEMVAR variables. + * statements to be automatically declared as MEMVAR variables. * * /b debug info * ================= - * The compiler generates all information required for debugging + * The compiler generates all information required for debugging * * /d[=] #define * ================= @@ -46,20 +46,22 @@ * /es or /es0 - all warnings are ignored and exit code returned by * the compiler (accessed by DOS ERRORLEVEL command) * is equal to 0 if there are no errors in compiled - * source file. + * source file. * * /es1 - any warnings generate a non-zero exit code, but - * output is still created. + * output is still created. * * /es2 - all warnings are treated as errors and no output * file is created. The exit code is set to a non-zero - * value. + * value. * /g output type generated is * ================= * * /gc[] output type: C source (.c) (default) * : 0=compact 1=normal 2=verbose (default) + * 3=generate real C code instead of PCODE + * array called by a C wrapper. * * /go output type: Platform dependant object module * @@ -72,28 +74,28 @@ * /k enable compatibility mode * ================= * - * /kc clear all flags (strict Clipper compatibility) + * /kc clear all flags (strict Clipper compatibility) * - * /kh Harbour extensions (default) + * /kh Harbour extensions (default) * * /ki HB_INLINE support enabled (default) * - * /kr use runtime settings for the macro compiler + * /kr use runtime settings for the macro compiler * - * /ks enable support for strings as array of bytes (default) + * /ks enable support for strings as array of bytes (default) * - * /kx other xbase dialects extensions (default) + * /kx other xbase dialects extensions (default) * - * /kJ disable optimalization of jump and noop pcodes + * /kJ disable optimalization of jump and noop pcodes * - * /k? invoke help information + * /k? invoke help information * * /l suppress line number information * ================= * - * The compiler does not generate the source code line numbers in - * the output file. The PROCLINE() function will return 0 for - * modules compiled using this option. + * The compiler does not generate the source code line numbers in + * the output file. The PROCLINE() function will return 0 for + * modules compiled using this option. * * /m compile current module only * ================= @@ -107,7 +109,7 @@ * wide scope and can be accessed/used in all functions/procedures * defined in the compiled source file. All executable statements * placed at the beginning of the file and before the first - * PROCEDURE/FUNCTION statement are ignored. + * PROCEDURE/FUNCTION statement are ignored. * * /o output file drive and/or path * ================= @@ -116,26 +118,26 @@ * ================= * * The compiler only creates the file that contains the result of - * pre-processing the source file. + * pre-processing the source file. * * /q quiet * ================= * * The compiler does not print any messages during compiling - * (except the copyright info). + * (except the copyright info). * - * /q0 be really quiet and don't display even the copyright info + * /q0 be really quiet and don't display even the copyright info * * /r[] request linker to search (or none) * ================= * - * Currently not supported in Harbour. + * Currently not supported in Harbour. * * /r= sets maximum number of preprocessor iterations * ================= * * This set the maximum number of preprocessor iterations - * during processing the source code. If this switch is not + * during processing the source code. If this switch is not * used then the preprocessor stops after 1024 iterations. * This value is used to stop processing of infinite loops, * for example: @@ -144,13 +146,13 @@ * /s syntax check only * ================= * - * The compiler checks the syntax only. No output file is generated. + * The compiler checks the syntax only. No output file is generated. * * /t path for temp file creation * ================= * * Currently not used in Harbour (the Harbour compiler does not - * create any temporary files). + * create any temporary files). * * /u[] use command definition set in (or none) * ================= @@ -160,7 +162,7 @@ * * All undeclared or unaliased variables are assumed MEMVAR * variables (private or public variables). If this switch is not - * used then the scope of such variables is checked at runtime. + * used then the scope of such variables is checked at runtime. * * /w[] set warning level number (0..4, default 1) * ================= @@ -179,7 +181,7 @@ * /w4 - Enables warning about suspicious operations, which * means if you mix undeclared types, or types which * can not be calculated at compile time,together with - * declared types, a warning will be generated. + * declared types, a warning will be generated. * * /x[] set symbol init function name prefix (for .c only) * ================= @@ -188,14 +190,14 @@ * (in C output currently). This function is generated * automatically for every PRG module compiled. This additional * prefix can be used to suppress problems with duplicated symbols - * during linking an application with some third party libraries. + * during linking an application with some third party libraries. * * /y trace lex & yacc activity * ================= * * The Harbour compiler uses the FLEX and YACC utilities to parse * the source code and to generate the required output file. This - * option traces the activity of these utilities. + * option traces the activity of these utilities. * * /z suppress logical shortcutting (.and. & .or.) * ================= @@ -206,7 +208,7 @@ * @ compile list of modules in * ================= * - * Not supported yet. + * Not supported yet. * * Known incompatibilities between harbour and clipper compilers * ============================================================= @@ -218,7 +220,7 @@ * option should be defined in the file include/hbsetup.h (in fact this * option is placed in a comment by default - you need to remove the * /* */ characters only). This change has to be done before invoking - * the make utility. + * the make utility. * * * Handling of undeclared variables @@ -227,23 +229,23 @@ * When a value is assigned to an undeclared variable and the '-v' * command line option is not used, then the Clipper compiler assumes * that the variable is a PRIVATE or a PUBLIC variable and generates - * POPM (pop memvar) opcode. + * POPM (pop memvar) opcode. * * When the value of an undeclared variable is accessed and the '-v' * command line option is not used, the Clipper compiler generates PUSHV * (push variable) opcode that determines the type of variable at runtime. * If a field with the requested name exists in the current workarea then * its value is used. If there is no field then a PRIVATE or a PUBLIC - * variable is used (if exists). + * variable is used (if exists). * * The Harbour compiler generates an opcode to determine the type of * variable at runtime (POPVARIABLE or PUSHVARIABLE) in both cases - * (assignment and access). + * (assignment and access). * - * The difference can be checked by the following code: + * The difference can be checked by the following code: * * - * PROCEDURE MAIN() + * PROCEDURE MAIN() * PRIVATE myname * * DBCREATE( "TEST", { { "MYNAME", "C", 10, 0} } ) @@ -266,7 +268,7 @@ * * RETURN * - * + * * Passing an undeclared variable by the reference * =============================================== * @@ -278,46 +280,46 @@ * This is the reason why the Harbour compiler uses the usual * PUSHMEMVARREF opcode in such cases. Notice that the runtime behavior * is the same in Clipper and in Harbour - only the generated opcodes - * are different. + * are different. * * * Handling of object messages * =========================== * * The HARBOUR_STRICT_CLIPPER_COMPATIBILITY setting determines - * the way chained send messages are handled. + * the way chained send messages are handled. * - * For example, the following code: + * For example, the following code: * - * a:b( COUNT() ):c += 1 + * a:b( COUNT() ):c += 1 * - * will be handled as: + * will be handled as: * - * a:b( COUNT() ):c := a:b( COUNT() ):c + 1 + * a:b( COUNT() ):c := a:b( COUNT() ):c + 1 * - * in strict Clipper compatibility mode and + * in strict Clipper compatibility mode and * - * temp := a:b( COUNT() ), temp:c += 1 + * temp := a:b( COUNT() ), temp:c += 1 * - * in non-strict mode. + * in non-strict mode. * * In practice, Clipper will call the COUNT() function two times: * the first time before addition and the second one after addition. - * In Harbour, COUNT() will be called only once, before addition. + * In Harbour, COUNT() will be called only once, before addition. * * The Harbour (non-strict) method is: * 1) faster * 2) it guarantees that the same instance variable of the same object - * will be changed + * will be changed * - * (See also: source/compiler/expropt.c) + * (See also: source/compiler/expropt.c) * * Initialization of static variables * ================================== * * There is a difference in the initialization of static * variables that are initialized with a codeblock that refers to - * a local variable. For example: + * a local variable. For example: * * PROCEDURE TEST() @@ -332,10 +334,10 @@ * The above code compiles fine in Clipper, but it generates a * runtime error Error/BASE 1132 Bound error: array access - * Called form (b)STATICS$(0) + * Called form (b)STATICS$(0) * * In Harbour this code generates a compile time error: - * Error E0009 Illegal variable (b) initializer: 'MyLocalVar' + * Error E0009 Illegal variable (b) initializer: 'MyLocalVar' * * Both Clipper and Harbour are handling all local variables used in a * codeblock in a special way: they are detached from the local stack @@ -345,7 +347,7 @@ * ('STATICS$' in Clipper and '(_INITSTATICS)' in Harbour) before the * main procedure and before all INIT procedures. The local variables * don't exist on the eval stack when static variables are initialized, - * so they cannot be detached. + * so they cannot be detached. * * $END$ */ diff --git a/harbour/doc/whatsnew.txt b/harbour/doc/whatsnew.txt index 6165ba457f..9601221993 100644 --- a/harbour/doc/whatsnew.txt +++ b/harbour/doc/whatsnew.txt @@ -2,6 +2,304 @@ * $Id$ */ +---------------------------------------------------------------------- +Version 0.46 Alpha Build 46 (2006-05-??) + +The compiler +------------ +- Added new compiler switch -gc3 to generate real C code output + (instead of PCODE array called by a C wrapper). +- Fixed bug in divide by 0 substitution. +- Fixed bug in ASC() optimization (when character code > 127) +- Remove default API and stack macros. Now API/stack macros can be + enabled by including hb_vmopt.h file. This file should be included + ONLY by core code because binary object/libraries generated after + can work only with EXACTLY the same HVM compiled the same C + alignment switches. +- Added HB_TYPE to as HB_ITEM type marker. +- Set HB_TYPE as UINT32. +- Cleaned some ~HB_IT_BYREF which has no effect in current VM. +- Added -undef: compiler switch (borrowed from xHarbour). +- Fixed path delimiters in included file names. +- Added support for FOR EACH loop. +- Added warnings in cases of duplicated loop variables. +- Removed strong typing in the compiler. Reactivate it by compiling + with -DHB_COMP_STRONG_TYPES. +- New pcodes were added. +- Changed main VM loop to eliminate one comparision done on each loop. + Now HB_P_ENDBLOCK and HB_P_ENDPROC pcodes set HB_ENDPROC_REQUESTED + and the main loop can be exited only from one place. It gives some + small but noticeable speed improvement. +- Emit warning and error messages to stderr instead of stdout on *nix + platforms. +- FLEX: Added support for DATE type constants in the format 0dYYYYMMDD +- FLEX: Added support for SWITCH command (see tests/switch.prg). +- Fixed to release the memory if macro compiled code contains a + variable or a function reference. +- Rewritten jump optimization. +- Do not optimize jumps and local variable access by shorter PCODE + version and HB_P_NOOP when jump optimization is disabled. +- Added support for multi passes in jump/dead code elimination. +- Added dummy jumps elimination. +- Added unconditional and conditional jump joining optimization. +- Added optimization for: IF .T. + IF .F. + WHILE .T. + WHILE .F. +- Restored empty BEGIN/RECOVER sequence block elimination if Jump + Optimization is enabled then it marks the block with HB_P_NOOPS else + it cut the generated PCODE. +- Added dead code eliminator. It works only when Jump Optimization is + not disabled. As a result, we have smaller and faster PCODE. +- Fixed to release memory allocated with the proeprocessor. +- PP: Fixed bug in processing the list of optional repeatable code. +- PP: Added tracing code. +- PP: Fixed handling of optional clauses in command/translate. +- PP: Fixed <-x-> match marker. +- PP: Fixed bug in ParseOptional <"var"> were not recognized + correctly. +- PP: Fixed compilation of \[ and \] in command/translate. +- PP: Fixed to preserve spaces the same way (almost) as Clipper. +- Added support for @filelst[.clp] - partially borrowed from xHarbour. + It's not exactly the same as in Clipper because Clipper creates one + final file when [x]Harbour series of files. +- Do not strip redundant line information when compiled for debug (-b). +- Fixed many more memory leaks in the compiler. Now, the Harbour code + compiles itself with no memory leaks. +- Added optimalization of '+=' '-=' '*=' '/=' operators using new + PCODS: HB_[PLUS|MINUS|MULT|DIV]EQ + HB_[PLUS|MINUS|MULT|DIV]EQPOP +- Added more optimization for localvar+=integer using + HB_P_LOCALNEARADDINT pcode (borrowed from xHarbour). +- Enabled FM statistic by default when compiled without + -DHB_FM_STATISTICS_OFF. +- All compiler structures are deallocated on exit now. +- Added to new errors (memory corruption and memory overflow) for + compiler level FM statistic. +- Fixed compilation of included files in cases when the file ends + with ';' (with no LF or CR). +- Fixed translation of nested command/translate. +- Fixed translation of TEXT/ENDTEXT to be more Clipper compatible. +- Added new hidden preprocessor directive + __text|ParseBlockCode|EndBlockCode|StartBlockCode +- Added new command line switch -r= +- Modified TEXT/ENDTEXT to use '#pragma __text'. +- Added #pragma __stream and #pragma __cstream. +- Fixed hb_p_functionshort pcode size returned by genc function. +- Fixed double value presented in verbose genc mode for + HB_P_PUSHDOUBLE. +- Fixed number of cases presented in verbose genc mode for HB_P_SWITCH. +- Fixed stripping non identifier characters from symbol table name. +- Added support for dead code elimination in functions which uses + SWITCH ...; CASE ...; ...; END syntax. +- Cleaned the code which created HB_ITEMs on C stack. +- Added memory duplication for macro text (&a._m). +- Added escaping of '?' character in generated strings to avoid + possible conflicts with trigraph sequences which are part of ANSI C + standard. +- Force .0 at the end of double numbers to avoid possible range + conflicts in generated .c files. +- Fixed optimization of 'EVAL' in macro compiler. +- Upper the default .prg function name created from .prg file name + when compiled without -n switch. +- Fixed registering of startup procedure name. +- Changed code generated for double values to avoid limitation in some + C compilers like MSC and possible differ conversion inside C RTL + then the one which uses Harbour RTL. +- Message symbols are not function symbols, cleaned the HB_FS_MESSAGE + usage and fix the problem with registering static function in global + symbol table. +- Classed: Added support to passing function references as + HB_IT_SYMBOL. + +The runtime modules +------------------- +- GT: Multi GT support with an option to link many GT drivers in a + single binary and switch between GTs at application startup based + on its environment. +- GT: New GTAPI. +- GT: Added GTI_* defintions for hb_gtInfo() function. This function + works in similar way to dbInfo() in RDD. +- GT: New driver GTCRS based on xHarbour and Flagship curses code. +- GT: New driver GTWVT for Win32 using GUI window instead of console. +- GT: New driver GTXWC for XWindow Console. +- GT: New driver GTALLEG for Allegro cross platform graphic libraries. +- GT: Respect pure REQUEST HB_GT_NUL as user GT choice if only GTNUL + is linked. +- Separated internal and external API. Now the definitions for + internal HVM structures and functions are excluded by default they + could be enabled if user include hbvmopt.h before other header + files. Such operation should be done ONLY by core code! If 3rd party + developers use something like that then it's for their own risk and + such code may stop to work with next Harbour versions. Without + hbvmopt.h the internal structures like HB_ITEM, HB_DYNS, ... are + mapped to 'void' so there is no way to access their members so we + can modify them in the future without afford for 3-rd party code. +- Added new functions: hb_extIsObject(), hb_codeblockId(), + hb_idleSleep(), hb_fsGetOsHandle(), hb_dynsymFindSymbol(), + hb_dynsymGetSymbol(), hb_dynsymSymbol(), hb_dynsymName(), + hb_dynsymMemvarHandle(), hb_dynsymAreaHandle(), + hb_dynsymSetAreaHandle(). +- Changed hb_arrayClone() declaration to: + PHB_ITEM hb_arrayClone( PHB_ITEM pArray ) +- Changed hb_arrayFromParams() declaration to: + PHB_ITEM hb_arrayFromParams( int iLevel ) + The previous version needed a pointer to stack relocatable area so + any stack resizing could cause GPF. +- Codepage: Updated UNICODE values for characters in rabge 1-31 to + keep DOS compatibility. +- Codepage: Renamed files (cdp*.c -> cd*.c). +- Codepage: Added UTF8 related functions: hb_cdpUTF8StringLength(), + hb_cdpStringInUTF8Length(), hb_cdpUTF8ToStrn(). +- Make HB_SET_TYPEAHEAD Clipper compatible. +- Set DOSERROR() to oError:OSCODE when RT error is generated. +- Fixed some small incompatibilities with Clipper in number to string + conversions. +- Fixed possible GPF in CTOD when badly formated date is given. +- Fixed invalid handle error in Windows when file() fails (borrowed + from xHarbour). + at least one lang module defined at sartup. +- Fixed RT error number in hb_vmAddInt() for negative values to be + Clipper compatible. +- Optimized __CLSADDMSG() to call hb_parc() only once instead of 25 + times for most cases. +- Possible problem fixed in __CLSADDMSG() where message parameter was + required to be uppercase when overloading operators .NOT. .AND. .OR. +- Fixed GPF in HB_LIBDO called with wrong parameter. +- hb_itemType() return "S" for HB_IT_SYMBOL. +- Lang: Moved EN lang definitions to core lang code so we always have +- Lang: HU sorting order fixed to be more compatible with Clipper. +- Lang: Added BG language support. +- hb_DiskSpace() changed to not give a runtime error in case of any + error, but set the FError() value instead. +- Fixed displaying of boxes under the xterm, use @ TO instead of @ BOX. +- Cleaned some HB_EXTERN_C declaration. +- Cleaned startup initialization code for lang and codepages. +- Synced file IO with xHarbour, it fixed some problems, added some + missing functionality and long (64bit) file support for Windows. +- Added C -> OS file error trnalsations - not perfect but better then + the used hacks (borrowed from xHarbour). +- Use hb_fileNameConv() instead of hb_filecase(), hb_fileNameConv() + is the only one function to make file name conversions dependent on + some SETs. +- SetUnhandledExceptionFilter() is called if HB_INCLUDE_WINEXCHANDLER + define is used. +- UnhandledExceptionFilter renamed as hb_UnhandledExceptionFilter, and + WINBASEAPI removed. +- Allow hb_param() to return parameters accessed by HB_IT_BYREF. +- Optimized hb_dateEncode(). +- Added HB_STR_DATE_BASE for conversion to string, Clipper + compatibility though we are not 100% Clipper compatible in STOD() + because we will have to reduce functionality (supported date range) + to reach it. In Clipper STOD(DTOS()) is not revertible, it is + revertible in [x]Harbour for the whole supported in string + conversion range: 0000/01/01 : 9999/01/01. +- Changed definition of HB_SYMB structure. +- HB_MATHERRMODE() input validation logic moved to the lower level + function. This is a step to make this a simple Set(). +- Added STRPEEK and STRPOKE FS functions covered by HB_COMPAT_FLAGSHIP + macro. +- Fixed GPF when unshareing string item buffer with embedded 0 by + using hb_itemUnShare(). +- Added hb_fsSetDevMode() Unix branch added. +- hb_secondsCPU() move inside FlagShip guard instead of HB_EXTENSION. +- Added new functions HBDLLENTRY1() and HBDLLENTRY2(). These function + allow to call a Harbour (self contained) DLL and provide it one or + two Harbour items as parameters. + +RDD +--- +- DBT, FPT, SMT memos are fully support and automatically detected in + USE command. For newly created tables the memo type can be set with + rddInfo(RDDI_MEMOTYPE, [,]) + It's possible to use any combinations of memo and index files. +- Added RDDINFO() to set global RDD parameters. See dbinfo.ch for + possible actions. +- Rewritten DBFNTX, now it supports in practice all CDX features with + multi tags and many others. With RDDINFO() some important new + features in DBFNTX can be enabled like increased maximum NTX file + size up to 4TB, support structural/autoopen indexes, bounding record + number with index key (like in CDX format what resaolves the + performance problem with indexes which have a lot of non unique + keys, etc.) +- User setable locking DBF mode. +- Added SIXCDX which is modified version of DBFCDX without trailing + spaces compresion for SIX3 compatibility. +- Added ordKeyRelPos([nNewPos])->nOldPos which works with all RDDs + and returns relative (from 0.0 to 1.0) position in index file but + much faster then ordKeyPos()/ordKeyCount() combination. It works + like AdsGetRelKeyPos()/AdsSetRelKeyPos() and the results for CDX are + the same. For NTX ADS implementation is broken, just simply Extended + System uses the same algorithm as for CDX what is wrong. +- Fixed ordKeyPos() for records out of scope. +- Implemented RDD level transforms (COPY TO/APPEND FROM). +- Long file support for all native RDDs. Now the maximum file size + is reduced only by its structure if OS/file system supports 64bit + file IO, f.e. for DBF it's 2^32 records. For memos it's: + 2^32 * MemoBlockSize, etc. +- Synhronize RDD code with xHarbour. +- New HSX RDD. +- New HBSIX RDD. +- Fixed possible GPF when "/an/existing/path/" was used as file name. +- Enable 'Y' (currency) fields, translated to HB_IT_DOUBLE. +- Fixed some wrong behavior in SORT parameters setting in __dbArrange() +- Removed hack with COPY TO when lastrec() == 1. +- Fixed GPF in DBF2TEXT when work are is not in use. +- __dbDelim() generate 2001 RT error when work area is not in USED() + before export file is created. +- Added DBI_SCOPEDRELATION action. It alow to test if given relation + on current work area sets scope on child index. +- Set Operation in error object to field name in field{put,get} + methods. +- Added DBI_LOCKOFFSET. +- Added support for NULL value set in memo fields by ACCESS. +- Added all Clipper 5.3 BLOB*() functions support. +- Added new RDD DBFBLOB compatible with Clipper 5.3 DBFBLOB. It + operates on memo files only (.dbv) without tables (.dbf). +- Do not report error when empty structure table is passed to + DBCREATE(). +- Added support for NIL value in SIX3 FPT files. +- Changed definition of SUPERTABLE for optional dynamic overloading. +- Added default SYSNAME method. +- Fixed possible memory leak when APPEND failed in TRANSREC method. + +Contrib +------- +- ADS: Added ADSCDX, ADSNTX and ADT RDDs. ADS RDD should not be longer + used, it's only for backward compatibility. +- ADS: Call AdsFlushFileBuffers() only when _SET_HARDCOMMIT is set. +- ADS: Added possibility to save memo fields > 64K. +- ADS: Added support for relations in ADS* RDDs which are not + supported directly by ADS or are for other non ADS* tables. +- ADS: Synced base RDD with xHarbour. +- Added conversion from tiny int MySQL type into numeric DBF. +- Added MYSQL_DECIMAL_TYPE for MySQL versions 5.0 and above. +- libct: Added CT3 like Window System, it's a GT driver which inherits + from the existing one and adds CTW functionality. +- libct: Updated for GTAPI modifications. +- libnf: Use hb_fs*() API functions instead of calling DOS interrupts. + Now NF dir functions works on all platforms. + +Utilities +--------- +- HbExtern: Heavily modified to produce more accurate output. + +General +------- +- Fixed for popper compilation with GNU C++ and OpenWatcom on Linux. +- Added support for cross compilation (Windows binaries at Linux) with + MinGW (borrowed from xHarbour). +- Added functions for machine independent double and long long + conversions. +- Enable HB_COMPAT_FLAGSHIP by default. +- Include ADSRDD by default in RPMs. +- Updated for new RPM which does not accept some old tags. +- Some modification in xhb* scripts building, adding passing + predefined compiler and linker switches. +- hb-func.sh: Support for detecting startup function in C++ mode. +- hb-func.sh: Added support -go[0-3] and other -g* switches to xhb* + scripts. + ---------------------------------------------------------------------- Version 0.45 Alpha Build 45 (2005-05-25) diff --git a/harbour/source/compiler/hbusage.c b/harbour/source/compiler/hbusage.c index 9f376c2344..66bdb127c3 100644 --- a/harbour/source/compiler/hbusage.c +++ b/harbour/source/compiler/hbusage.c @@ -68,6 +68,7 @@ void hb_compPrintUsage( char * szSelf ) "\n %cg output type generated is (see below)", "\n %cgc[] output type: C source (.c) (default)", "\n : 0=compact 1=normal 2=verbose (default)", + "\n 3=generate real C code", "\n %cgo output type: Platform dependant object module", "\n %cgw output type: Windows/DOS OBJ32 (.obj)", "\n %cgh output type: Harbour Portable Object (.hrb)", @@ -188,5 +189,5 @@ void hb_compPrintLogo( void ) { printf( "Harbour Compiler Alpha build %d.%d (%s)\n", HB_VER_MINOR, HB_VER_REVISION, HB_VER_LEX ); - printf( "Copyright 1999-2005, http://www.harbour-project.org/\n" ); + printf( "Copyright 1999-2006, http://www.harbour-project.org/\n" ); }