* utils/hbmk2/hbmk2.prg
+ show warning and offer best practice when non-portable
".exe" extension is used in -o option
+ show warning and offer best practice when non-portable
"*.lib" library name is passed directly to hbmk2
* src/codepage/l_sv.c
+ NOTE with Klas's explanation of the extra chars
included over the Swedish alphabet
+ 4 new characters add to the Swedish
collation as per Klas's guidance:
https://groups.google.com/d/msg/harbour-devel/13ImOaYoq8o/B-mDY708EpcJ
(and its followup)
* utils/hbmk2/hbmk2.prg
! very minor fix where -hbc= options list value
items are now trimmed from spaces.
* config/aix/gcc.mk
* config/beos/gcc.mk
* config/bsd/clang.mk
* config/bsd/gcc.mk
* config/bsd/pcc.mk
* config/cygwin/gcc.mk
* config/darwin/clang.mk
* config/darwin/gcc.mk
* config/dos/djgpp.mk
* config/global.mk
* config/hpux/gcc.mk
* config/linux/clang.mk
* config/linux/gcc.mk
* config/linux/sunpro.mk
* config/minix/ack.mk
* config/minix/clang.mk
* config/minix/gcc.mk
* config/os2/gcc.mk
* config/qnx/gcc.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
* config/symbian/gcc.mk
* config/vxworks/gcc.mk
* config/vxworks/global.mk
* config/wce/mingwarm.mk
* config/win/clang.mk
* config/win/mingw.mk
* utils/hbmk2/hbmk2.prg
* README.txt
* envvar renamed HB_CCPOSTFIX -> HB_CCSUFFIX
INCOMPATIBLE. (I surmise few people need this,
hence no grace period)
* contrib/hbmemio/tests/test.prg
* minor cleanup
* utils/hbmk2/hbmk2.*.po
* utils/hbmk2/hbmk2.prg
+ help text added for .hbc directives
+ added -longhelp/--longhelp option which will include
envvars, .hbc directives and maybe future details
+ added -depfinish=, -harbourhelp, -ldflag+=, -dflag+=
to help text
+ -depfinish= will now show a warning if non-existing
name is passed to it as parameter.
+ all warnings will now go to stderr (some were going to
stdout before)
+ added -dflags=, -dflags+= .hbc directives in sync with
existing options
* utils/hbtest/hbtest.prg
+ will now recognize -help and --help options to
display help
- utils/hbmk2/hbmk2.1
- utils/hbtest/hbtest.1
* config/postinst.hb
- deleted platform specific "man"-files, which were
either outdated (hbmk2) or the exact same as regular
help output (hbtest). They are also extremely
inconvenient to edit with regular text editors, plus
keeping two similar docs in sync is very inefficient
so pbly it's better idea to create .md output from
the tools themselves and convert those to man
format using an automated tool like md2man.rb.
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
* updated one string in sync with hbmk2.prg
* utils/hbmk2/hbmk2.prg
* update in a comment
* utils/hbmk2/hbmk2.prg
+ help text added for envvars, disk files and macros
supported by hbmk2
+ HB_CCSUFFIX envvar support added. Works the same as
HB_CCPOSTFIX, only with a new name
* HB_CCPOSTFIX envvar deprecated with HB_LEGACY_LEVEL4
* hbmk[ "cCCPOSTFIX" ] hbmk2 plugin variable renamed to
hbmk[ "cCCSUFFIX" ]. INCOMPATIBLE. Update your plugin
source if you used this.
* bin/3rdpatch.hb
* bin/commit.hb
* contrib/hbblink/blinker.prg
* contrib/hbxpp/runshell.prg
* utils/hbmk2/hbmk2.prg
% replaced hb_GetEnv() calls with GetEnv() where the
Harbour extension parameter was not used
* src/rtl/gete.c
! synced comment with reality
* ChangeLog.txt
+ missed one fix from prev log entry
* doc/en/lang.txt
* include/hbapilng.h
* src/rtl/langapi.c
+ HB_LANGNAME() Harbour API extended to accept optional
language ID. See docs.
+ HB_LANGMESSAGE() Harbour API extended to accept 2nd parameter
as optional language ID. See docs.
+ added new C level API to retrieve a language string from
any language module (not just selected one):
const char * hb_langGetItem( const char * pszID, int iIndex );
+ extended hb_langName() C level API to be able to retrieve
name of any language modules, not just selected one:
char * hb_langName( const char * pszID );
[INCOMPATIBLE]
* hb_langDGetItem() C level API moved to 'compatibility' status
* uncrustified unattendedly
* src/codepage/l_fr.c
! fixed another typo which was result of local paste mistake
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ extended the wording of -comp=/-plat= options, default behavior indicated
* tests/langapi.prg
! updated to RTE at the end and to use non-legacy language IDs
* tests/langapi.prg
* contrib/hbnf/tests/datecnfg.prg
* utils/hbtest/hbtest.prg
* minor cleanup
* harbour/include/hbcdpreg.h
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
* added to hb_cdpRegisterNew() new parameter which informs CP engine
that passed strings with upper and lower letters are in UTF8 encoding.
* harbour/src/codepage/cpplmaz.c
* defined PLMAZ codepage using UTF8 encoding - just as an example.
* harbour/utils/Makefile
* compile hbtest before hbmk2 - it alows to build HVM test tool even if
HBMK2 cannot be compiled (i.e. some compilers does not accept
resource/icon files used by HBMK2)
* utils/hbmk2/hbmk2.prg
+ links to markdown and markdown to man-page converter tool
! minor cleanup to prev
* utils/hbmk2/hbmk2.1
* some updates
* ChangeLog.txt
! typos/updates in previous entry
* extras/hbdoc/*.prg
* src/rtl/memoedit.prg
* tests/clasinh.prg
* tests/classch.prg
* tests/inhprob.prg
! updated for new ::super: syntax
* src/rtl/itemseri.c
! fixed typo in latest modification:
'warning: use of unary operator that may be intended as compound assignment (+=)'
* contrib/hbgd/tests/test_out.prg
* contrib/hbhttpd/*
* contrib/hbtip/thtml.prg
* contrib/xhb/*.prg
* extras/httpsrv/*
* extras/guestbk/*
* website/faq/*.html
* website/samples/HowToBuildOnLinux.html
* website/third-party.html
* some steps to modernize old HTML
* extras/hbdoc/*.prg
* do not use [] as string delimiter
- tests/function.cfm
- website/samples/function.cfm.html
* .gitattributes
- obsolete file deleted
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/*.po
+ added '-warn=yes' option in sync with warn= .hbc directive
* cleaned help for -cpp and -cpp= options
* '-inc' option moved to short help page and clarified a little
- deprecated several hbmk2 options synonyms. After this
update, hbmk2 will issue a warning with the recommended
replacement switch (and exact location where it has
found it), and these will ultimately disappear with
HB_LEGACY_LEVEL4 (after next release, or earlier, depending
on how disrupting it is or how long the new release
will take):
-compiler= -> -comp=
-platform -> -plat=
-mwindows -> -gui
-mconsole -> -std
-nodebug -> -debug-
-nooptim -> -optim-
-nomap -> -map-
-noimplib -> -implib-
-nobeep -> -beep-
-nominipo -> -minipo-
-noinc -> -inc-
-noignore -> -ignore-
-nohbcppmm -> -hbcppmm-
-nostrip -> -strip-
-warn= (value omitted) -> -warn=yes
-nowarn -> -warn-
-compr= (value omitted) -> -compr=yes
-compr=def -> -compr=yes
-nocompr -> -compr-
-head= (value omitted) -> -head=full
-head -> -head=full
-head- -> -head=off
-nohead -> -head=off
-nocpp -> -cpp-
-norun -> -run-
-notrace -> -trace-
.hbc directives (no warning for these ones):
compr=def -> compr=yes
<*>=1 -> <*>=yes
<*>=0 -> <*>=no
Macros (no warning for these ones):
${hb_platform} -> ${hb_plat}
${hb_compiler} -> ${hb_comp}
; Update your .hbp/.hbm/.hbc files and hbmk2
command-line according to above and the new
warnings. Important to note, that _all_ of the
required modifications are _backward
compatible_ with Harbour 3.0.0 and 2.0.0.
* package/winuni/RELNOTES.txt
* use -plat= option in examples
* tests/testcom1.prg
+ made it compatible with unicode/script mode
* utils/hbmk2/hbmk2.prg
! FindInPath(): fixed for filenames with an empty
extension on *nix systems when opening hbrun scripts.
[slight chance of regression.]
! fixed to use ".\" also on non-*nix systems when using
-run option and the target doesn't have a directory.
Previously the wrong executable might have been executed
if another one with the same name existed in path.
+ detect another variant of "multiple definitions" linker option
+ detect "multiple definitions" linker message for another C compiler
+ tests/testcom1.prg
+ added com sample code posted by Przemek earlier
* contrib/hbsms/tests/send.prg
+ added Linux device name
* src/rtl/cdpdet.prg
* cleanup to local function name
* src/rtl/teditor.prg
! fixed current color being used instead of editor's own
colorspec when scrolling the editing area using
up/down/left/right keys
* utils/hbmk2/hbmk2.prg
! -env: option being wrongly listed as command-line only in help.
Regression after 2012-06-14 12:01 UTC+0200.
* comments
* ChangeLog.txt
! adjusted recommended replacement options in previous commit msg
* utils/hbmk2/hbmk2.prg
* code cleanup to ease adding linker message exceptions
* unused functions enclosed in '#if 0' guards
+ show warning for options that are only valid on command line
and ignored when used inside .hbp/.hbm files.
- deleted compatibility features:
- '-arch=' option (use '-platform=' instead)
Notice it will now be passed to Harbour compiler and possibly
interpreted as '-a' option, so it's better to update it _now_.
- '${hb_arch}' compatibility macro (use '${hb_platform}' instead)
- 'mt=mt' .hbc command (use 'mt=yes' instead)
* '-mwindows' and '-mconsole' legacy options will now issue
a warning with suggested replacement options (-gui/-std)
+ hbmk2 will now issue a warning if certain known low-level linker
options are used. Current list is: -Wl,--allow-multiple-definition,
-force:multiple, -w-dpl. These options are ideal if the goal
is to shoot yourself in the foot, otherwise they are not
recommended.
* contrib/hbnf/clrsel.prg
* contrib/hbnf/tests/clrsel.prg
! fixed obscure unicode issue
* utils/hbtest/rt_class.prg
* applied tests/fixcase.hb
% use new Harbour functions in Harbour-only code
* extras/httpsrv/uhttpd.prg
% use new Harbour function
* harbour/src/vm/classes.c
% small speed optimization for inline methods
+ added internal list of super classes bound with each class
% use super class list for scope checking
% use list of super classes for instance area casting
% use super class list in super destructor code - it should cause
noticeable speed improvement for releasing objects with destructors.
! few security fixes like possible GPF on wrong paramas.
* harbour/src/vm/macro.c
% use HB_P_DUPLICATE instrad of HB_P_PUSHUNREF in Field[W]Block()
functions
* harbour/src/rtl/gtwvt/gtwvt.c
! do not generate HB_K_RESIZE after SetMode() if there is no active
console window.
* harbour/include/hbstack.h
* cleaned declarations of some hb_stack*() functions - moved to internal
functions: hb_stackFree(), hb_stackInit(), hb_stackIncrease() and
hb_stackRemove()
exported: hb_stackPush(), hb_stackTopOffset() and hb_stackTotalItems()
* harbour/include/hbwmain.c
! fixed typo in argv list declaration
* harbour/utils/hbtest/rt_class.prg
+ added code to test non virtual hidden messages and super casting.
* harbour/contrib/hbmzip/mzip.c
* minor modifications in casting and parameter checking to make them
compatible with other similar core operations, i.e. FWRITE()
* src/rtl/hbfilehi.prg
! hb_PathRelativize() with a lForceRelative == .T. option
might have return wrong result if the base directory had symlinks.
As a workaround/hack, now the relative path will only be returned
if it actually exists. Otherwise the non-relative variant will
be returned.
; It should fix hbmk2 on OS X when f.e. building a plain .c source
in (default) non-incremental mode.
* utils/hbmk2/hbmk2.prg
! fixed to list missing symbols once even reported multiple
times in the linker output.
! fixed to not list symbols as missing if reported in certain
different error situations (f.e. as doubly defined symbol).
Extend exceptions as needed for other errors/compilers/language translations.
* utils/hbmk2/hbmk2.prg
+ display option source file/line in some output messages
! '-nooptim' option was not recognized after 2009-05-13 08:10 UTC+0200
(recommended format '-optim-' was working all along)
* utils/hbmk2/hbmk2.prg
+ show warning if user -I/-L parameters explicitly
specify the core header/lib dirs of Harbour. This
is wrong/unnecessary depending on context, and for
sure never does any good.
* utils/hbmk2/hbmk2.prg
! hbshell_DirBase()/hbshell_ProgName() fixed to
return proper non-ASCII chars (= if hbrun/hbmk2 resides
in a directory with non-ASCII chars) even if the .hb
script or a shell command had changed the default codepage.
* include/hbdefs.h
- deleted redundant type: 'HB_FUNC_PTR'
INCOMPATIBLE. If you used this, swap it for 'PHB_FUNC'
* ws formatting
* ChangeLog.txt
! typos
* tests/testdyn.prg
! fixed -w3 warnings on non-win
! fixed possible type in text output
* config/postinst.hb
* utils/hbmk2/hbmk2.prg
+ use hb_StrFormat() in few more places
+ added minor exception after .hbx 'do no edit'
* website/index.html
! unclosed tag
* config/darwin/clang.mk
+ use 'clang++' in C++ mode
* include/hbcomp.h
* include/hbmacro.h
* include/hbsetup.h
% deleted redundant and/or unnecessary C RTL headers
+ config/win/clang.mk
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.*.po
* README.txt
+ added very experimental clang support to the build
systems. Very lightly tested.
! fixed entry function detection not being enabled with clang
! fixed .res files not being added on os2/gcc[omf] from .hbc/sources= directive
+ added recently added new filter 'allbcc' to help text
! synced compiler list per platform in help/readme to reality
* ChangeLog.txt
+ updated 2012-12-16 00:17 UTC+0100 with the first DONE item.
* src/3rd/pcre/*
- reverted to 8.31 until all the breakage in configurability
is fixed either in pcre or by redesigning our way of
configuring it. Command-line configuration -DHAVE_*=0
doesn't seem to work anymore.
+ config/win/bcc64.mk
* config/global.mk
* config/postinst.hb
* config/win/bcc.mk
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* README.txt
* utils/hbmk2/hbmk2.prg
+ added rough cut support for bcc64 to the two make systems.
Untested. Autodetection and some 32-bit specific tricks
not implemented.
bcc64 is based on clang and it's only a bcc "emulation"
layer on top of it. At least it will be a good compiler
now, but it's important to see that it's internally
a clang compiler, so its behavior and raw options are
gcc-like.
Changes are based on xhb patches and bcc64 online docs:
http://docwiki.embarcadero.com/RADStudio/XE3/en/Command_Line_Utilities_Index
* utils/hbmk2/hbmk2.prg
+ use implibs (if available) as source of information
for updating .hbx files in -hbdyn mode. See in-code
comment for more.
* utils/hbmk2/pkg_dynl.hbm
+ enabled to rebuild .hbx files even in -hbdyn mode
(after above hbmk2 fix/improvement)
* extras/template/hbtpl.hbc
* extras/template/hbtpl.hbp
* minor tidying
* utils/hbmk2/pkg_dynl.hbm
* deleted no longer true reference to GNU Make
* contrib/rddads/adsfunc.c
* contrib/rddads/rddads.hbx
+ added AdsDDCreateRefIntegrity() and AdsDDRemoveRefIntegrity()
(former looks similar to xhb version, but incompatible due
to the several necessary fixes.)
* contrib/hbpost.hbm
* utils/hbmk2/pkg_dynl.hbm
* hack to avoid contrib/addon dynamic libs being used
automatically on *nix system when building executables.
Now they will be put in bin dir, just like on win.
* utils/hbmk2/hbmk2.prg
+ hbshell_include_list() API to list loaded core headers.
+ allow loading dynamic extensions on *nix even if built
against static HVM.
* display statically linked extensions in uppercase in
dot prompt UI and dynamic ones with original (lower) case.
(was normal case and postfixed with '*' respectively)
+ do not load dynamic extension if the .hbc file is not found
+ attempt to detect if dynamic extension loads fine on
a given platform and only try loading the dynamic lib
if it does.
+ added protection to not add duplicate compiler options
when compiling dot prompt entry.
* contrib/hbrun/hbrun.hbp
+ load default contrib libs dynamically on *nix, even if
hbrun is built against static HVM.
; these make work dynamic extensions on *nix systems.
* contrib/hbtip/sessid.prg
* extras/httpsrv/cgifunc.prg
* updated HTTP date format to use preferred format:
http://tools.ietf.org/html/rfc2616#section-3.3.1
% optimized code and eliminated unnecessary _SET_DATEFORMATs
; tip_DateToGMT() and its uhttpd_DateToGMT() derivative
* src/compiler/hbusage.c
* updated contributor list
* contrib/sddoci/tests/test1.prg
* contrib/sddodbc/tests/test1.prg
* contrib/sddodbc/tests/test2.prg
* contrib/sddsqlt3/tests/test1.prg
* use std way to configure date format
* contrib/hbrun/hbrun.hbp
* utils/hbmk2/hbmk2.prg
+ loading packages using ext.load, hbshell_ext_load(),
'hb_ext.ini'/'hb_extension' config files and HB_EXTENSION
envvar will now automatically load the packages'
standard headers and will properly set HBMK_HAS_* macros,
just like when running scripts or using .hbc files.
+ do not statically link contribs to hbrun when hbrun
is built dynamically. Instead, load default contribs
dynamically on startup (yes, performance will be worse.
If you don't like this, see 2012-12-03 15:17 UTC+0100).
This way these loaded packages will behave exactly the
same as any other dynamically loaded packages, f.e.
standard headers will be loaded and usable.
+ hbshell_include()/hbshell_uninclude() will now
load/unload core headers available in dot prompt.
+ 'hb.ch' core header is now loaded for scripts and dot
prompt by default. It means that K_ESC will now
return 27 and hb_gtInfo( HB_GTI_VERSION ) will work
as well, just like many other commonly used constants.
For a precise list, see the content of include/hb.ch.
If you don't like it, unload it from hbstart.hb using
hbshell_uninclude( "hb.ch" )
% use embedded headers when using the dot prompt.
* contrib/hbsms/sms.prg
* commented code cleanup
* utils/hbmk2/hbmk2.prg
+ automatically define HBMK_HAS_<packagename> macro
if a given package is linked or loaded when running
as script. F.e. HBMK_HAS_HBGD. The macro will have
the value zero if there is no version information
about the package and it will be 0x010203 if there
is, via .hbc version=x[.y[.z]] directive.
* extras/httpsrv/modules/showcounter.prg
* extras/httpsrv/modulesg.hbp
* extras/httpsrv/uhttpd.prg
* extras/httpsrv/uhttpdgd.hbp
+ use HBMK_HAS_* macro instead of manually rolled solution
* include/Makefile
- include/hbtest.ch
* src/rtl/Makefile
- src/rtl/hbtest.prg
* utils/hbmk2/hbmk2.prg
- deleted hbtest from core.
* contrib/hbct/tests/test.prg
* contrib/hbgt/tests/test.prg
* contrib/hbmisc/tests/tsstrfmt.prg
* modified regression tests to use hbtest contrib
instead of hbtest functionality in core RTL
; Thanks to Mindaugas and Przemek, now the contrib
tests will require users to manually add 'hbtest.hbc'
to their hbmk2 cmdline in case someone would like
to build exes from them. Which means that fewer
people will bother to build and run them. They still
run simply using 'hbrun <name>.prg' as scripts.
* src/rtl/hbtest.prg
! made another accidentally public function STATIC
% merged XToStr() and XToStrE()
% XToStr() modified to use hb_CStr() where it can
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_hvma.prg
* utils/hbtest/rt_math.prg
* utils/hbtest/rt_misc.prg
* utils/hbtest/rt_trans.prg
% synced in-string date format with src/rtl/hbtest.prg
* contrib/hbmisc/tests/tsstrfmt.prg
! fixed to not rely on current date
! fixed to set date format
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/*.po
+ accept .ch files as project input. These headers
will be used as standard ones using -u+ option.
F.e.:
--- test.prg
? K_ESC
---
$ hbmk2 inkey.ch test.prg
$ test -> 27
+ accept .ch files in sources= .hbc directive.
; TODO: consider deleting headers= directive
* include/hb.ch
* utils/hbmk2/hbmk2.prg
* minor sync between list of "essential" core headers
and the minimal list of core headers embedded into hbmk2.
(minimal list is not used in default builds)
* added missing hbstrict.ch to full list of included headers
* utils/hbmk2/hbmk2.prg
+ automatically load headers listed in .hbc file
when executing an .hb script
* contrib/hbodbc/tests/testodbc.prg
% #include "sql.ch" no longer needed either when
built to an executable or when executed as script
* contrib/hbodbc/hbodbc.hbc
+ added experimental headers= line
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
+ added support for new .hbc directive:
-headers=<.ch files>
wildcards accepted.
hbmk2 will automatically include the listed headers
for all source files. It will be more efficient than
including them to each file, as they are processed
only once (well, at least I hope this optimization
is done by Harbour PP/compiler). It also makes it
unnecessary to manually #include headers that belong
to a module/package.
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_array.prg
* utils/hbtest/rt_class.prg
* utils/hbtest/rt_date.prg
* utils/hbtest/rt_file.prg
* utils/hbtest/rt_hvm.prg
* utils/hbtest/rt_hvma.prg
* utils/hbtest/rt_main.ch
* utils/hbtest/rt_math.prg
* utils/hbtest/rt_misc.prg
* utils/hbtest/rt_mt.prg
* utils/hbtest/rt_str.prg
* utils/hbtest/rt_stra.prg
* utils/hbtest/rt_trans.prg
% use the same HBTEST command format for tests as
available for contribs and 3rd parties.
It made source easier to edit and code size
smaller by 111KB.