diff --git a/doxygen-doc.changes b/doxygen-doc.changes index 103a2da..94e4c07 100644 --- a/doxygen-doc.changes +++ b/doxygen-doc.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Aug 21 10:01:07 UTC 2015 - tchvatal@suse.com + +- Set proper minimal cmake version required +- Use system stack for cmake params and obey cflags +- Add patch to build required static libs: + * doxygen-no-shared-libs.patch +- Refresh patch: + * doxygen-no-lowercase-man-names.patch +- Add patch to avoid no-return-in-nonvoid function error: + * vhdlparser-no-return.patch + ------------------------------------------------------------------- Wed Aug 19 08:00:39 UTC 2015 - pgajdos@suse.com diff --git a/doxygen-doc.spec b/doxygen-doc.spec index 74cc3ce..63be4a3 100644 --- a/doxygen-doc.spec +++ b/doxygen-doc.spec @@ -24,8 +24,13 @@ License: GPL-2.0+ Group: Development/Tools/Doc Generators Url: http://www.stack.nl/~dimitri/doxygen/ Source0: http://ftp.stack.nl/pub/users/dimitri/doxygen-%{version}.src.tar.gz +# PATCH-FIX-UPSTREAM: declare static library where we don't want to provide +# shared one +Patch2: doxygen-no-shared-libs.patch +# PATCH-FIX-UPSTREAM: add missing returns to non-void functions +Patch3: vhdlparser-no-return.patch BuildRequires: bison -BuildRequires: cmake +BuildRequires: cmake >= 2.8.12 BuildRequires: fdupes BuildRequires: flex BuildRequires: gcc-c++ @@ -64,35 +69,37 @@ generate an online class browser (in HTML) and an offline reference manual (in LaTeX) from a set of documented source files. The documentation is extracted directly from the sources. Doxygen is developed on a Linux platform, but it runs on most other UNIX flavors -as well. An executable for Windows 95/NT is also available. +as well. This package contains only documentation %prep %setup -q -n doxygen-%{version} +%patch2 -p1 +%patch3 -p1 %build -mkdir build -pushd build -cmake -G "Unix Makefiles" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=%{buildroot}/usr \ - -Dbuild_doc=ON \ - -DDOC_INSTALL_DIR=share/doc/packages/%{name}-doc \ - .. +export CFLAGS="%{optflags} -fPIC" +export CXXFLAGS="%{optflags} -fPIC" +%cmake \ + -DDOC_INSTALL_DIR=share/doc/packages/%{name} \ + -Dbuild_doc=ON \ + -Dbuild_xmlparser=OFF \ + -Dbuild_search=OFF \ + -Dbuild_wizard=OFF \ + -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" \ + -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" \ + -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" make docs %{?_smp_mflags} -popd %install -pushd build -make install docs %{?_smp_mflags} -popd +%cmake_install docs rm %{buildroot}%{_bindir}/doxygen rm -r %{buildroot}/usr/man/man1/ %fdupes -s %{buildroot}%{_docdir}/%{name}-doc %files %defattr(-,root,root) -%doc %{_docdir}/%{name}-doc +%doc %{_docdir}/%{name} %changelog diff --git a/doxygen-no-lowercase-man-names.patch b/doxygen-no-lowercase-man-names.patch index 7b9d593..3150e62 100644 --- a/doxygen-no-lowercase-man-names.patch +++ b/doxygen-no-lowercase-man-names.patch @@ -1,8 +1,8 @@ -Index: doxygen-1.8.1/src/fortranscanner.l +Index: doxygen-1.8.10/src/fortranscanner.l =================================================================== ---- doxygen-1.8.1.orig/src/fortranscanner.l -+++ doxygen-1.8.1/src/fortranscanner.l -@@ -1892,7 +1891,6 @@ static void initEntry() +--- doxygen-1.8.10.orig/src/fortranscanner.l ++++ doxygen-1.8.10/src/fortranscanner.l +@@ -2090,7 +2090,6 @@ static void initEntry() */ static void addCurrentEntry(int case_insens) { diff --git a/doxygen-no-shared-libs.patch b/doxygen-no-shared-libs.patch new file mode 100644 index 0000000..f78f54a --- /dev/null +++ b/doxygen-no-shared-libs.patch @@ -0,0 +1,54 @@ +Index: doxygen-1.8.10/libmd5/CMakeLists.txt +=================================================================== +--- doxygen-1.8.10.orig/libmd5/CMakeLists.txt ++++ doxygen-1.8.10/libmd5/CMakeLists.txt +@@ -1,3 +1,3 @@ +-add_library(md5 ++add_library(md5 STATIC + md5.c + ) +Index: doxygen-1.8.10/qtools/CMakeLists.txt +=================================================================== +--- doxygen-1.8.10.orig/qtools/CMakeLists.txt ++++ doxygen-1.8.10/qtools/CMakeLists.txt +@@ -52,6 +52,6 @@ qwaitcondition_win32.cpp + ) + endif() + +-add_library(qtools ++add_library(qtools STATIC + ${qtools_src} + ) +Index: doxygen-1.8.10/src/CMakeLists.txt +=================================================================== +--- doxygen-1.8.10.orig/src/CMakeLists.txt ++++ doxygen-1.8.10/src/CMakeLists.txt +@@ -106,7 +106,7 @@ FLEX_TARGET(config config.l + BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "-l -p vhdlscannerYY") + BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "-l -p constexpYY") + +-add_library(doxycfg ++add_library(doxycfg STATIC + ${GENERATED_SRC}/lang_cfg.h + ${GENERATED_SRC}/config.cpp + ${GENERATED_SRC}/configoptions.cpp +@@ -114,7 +114,7 @@ add_library(doxycfg + portable_c.c + ) + +-add_library(_doxygen ++add_library(_doxygen STATIC + # custom generated files + ${GENERATED_SRC}/lang_cfg.h + ${GENERATED_SRC}/settings.h +Index: doxygen-1.8.10/vhdlparser/CMakeLists.txt +=================================================================== +--- doxygen-1.8.10.orig/vhdlparser/CMakeLists.txt ++++ doxygen-1.8.10/vhdlparser/CMakeLists.txt +@@ -1,5 +1,5 @@ + include_directories(${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/qtools) +-add_library(vhdlparser ++add_library(vhdlparser STATIC + CharStream.cc + ParseException.cc + Token.cc diff --git a/doxygen.changes b/doxygen.changes index 8da8ef7..3b41e8c 100644 --- a/doxygen.changes +++ b/doxygen.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Aug 21 09:41:39 UTC 2015 - tchvatal@suse.com + +- Set proper minimal cmake version required +- Use system stack for cmake params and obey cflags +- Add patch to build required static libs: + * doxygen-no-shared-libs.patch +- Refresh patch: + * doxygen-no-lowercase-man-names.patch +- Add patch to avoid no-return-in-nonvoid function error: + * vhdlparser-no-return.patch + ------------------------------------------------------------------- Mon Aug 17 14:52:48 UTC 2015 - pgajdos@suse.com diff --git a/doxygen.spec b/doxygen.spec index 15bbe89..a06173b 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -28,19 +28,23 @@ Source0: http://ftp.stack.nl/pub/users/dimitri/doxygen-%{version}.src.tar Patch0: %{name}-modify_footer.patch # suse specific Patch1: %{name}-no-lowercase-man-names.patch +# PATCH-FIX-UPSTREAM: declare static library where we don't want to provide +# shared one +Patch2: doxygen-no-shared-libs.patch +# PATCH-FIX-UPSTREAM: add missing returns to non-void functions +Patch3: vhdlparser-no-return.patch BuildRequires: bison -BuildRequires: cmake +BuildRequires: cmake >= 2.8.12 BuildRequires: flex BuildRequires: gcc-c++ BuildRequires: python-base BuildRequires: python-xml - +BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} > 1230 && 0%{?suse_version} != 1315 # for make tests BuildRequires: libxml2-tools BuildRequires: texlive-bibtex %endif -BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Doxygen is a documentation system for C, C++, Java, and IDL. It can @@ -51,24 +55,27 @@ developed on a Linux platform, but it runs on most other UNIX flavors as well. %prep -%setup -q +%setup -q %patch0 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build -mkdir build -pushd build -cmake -G "Unix Makefiles" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=%{buildroot}/usr \ - .. -make %{?_smp_mflags} -popd +export CFLAGS="%{optflags} -fPIC" +export CXXFLAGS="%{optflags} -fPIC" +%cmake \ + -Dbuild_doc=OFF \ + -Dbuild_xmlparser=ON \ + -Dbuild_search=OFF \ + -Dbuild_wizard=OFF \ + -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" \ + -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" \ + -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" +make %{?_smp_mflags} %install -pushd build -make install %{?_smp_mflags} -popd +%cmake_install mkdir -p %{buildroot}%{_mandir}/man1/ install -m 644 doc/doxygen.1 %{buildroot}%{_mandir}/man1/ @@ -82,7 +89,7 @@ popd %files %defattr(-,root,root) %doc LICENSE -%attr(444,root,root) %doc %{_mandir}/man1/doxygen.1.gz +%attr(444,root,root) %{_mandir}/man1/doxygen.1.gz %attr(755,root,root) %{_bindir}/* %changelog diff --git a/doxywizard.changes b/doxywizard.changes index f5e2ce5..6db72cc 100644 --- a/doxywizard.changes +++ b/doxywizard.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Aug 21 09:42:05 UTC 2015 - tchvatal@suse.com + +- Set proper minimal cmake version required +- Use system stack for cmake params and obey cflags +- Add patch to build required static libs: + * doxygen-no-shared-libs.patch +- Refresh patch: + * doxygen-no-lowercase-man-names.patch +- Add patch to avoid no-return-in-nonvoid function error: + * vhdlparser-no-return.patch + ------------------------------------------------------------------- Mon Aug 17 16:07:31 UTC 2015 - pgajdos@suse.com diff --git a/doxywizard.spec b/doxywizard.spec index caf1668..683a153 100644 --- a/doxywizard.spec +++ b/doxywizard.spec @@ -25,15 +25,20 @@ Group: Development/Tools/Doc Generators Url: http://www.stack.nl/~dimitri/doxygen/ Source: http://ftp.stack.nl/pub/users/dimitri/doxygen-%{version}.src.tar.gz Source1: doxywizard.desktop +# PATCH-FIX-UPSTREAM: declare static library where we don't want to provide +# shared one +Patch2: doxygen-no-shared-libs.patch +# PATCH-FIX-UPSTREAM: add missing returns to non-void functions +Patch3: vhdlparser-no-return.patch BuildRequires: bison -BuildRequires: cmake +BuildRequires: cmake >= 2.8.12 BuildRequires: flex BuildRequires: gcc-c++ BuildRequires: libjpeg-devel -Requires: doxygen = %{version} -BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: libqt4-devel >= 4.3 BuildRequires: update-desktop-files +Requires: doxygen = %{version} +BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Doxywizard is a graphical front-end to read/edit/write doxygen @@ -41,22 +46,21 @@ configuration files. %prep %setup -q -n doxygen-%{version} +%patch2 -p1 +%patch3 -p1 %build -mkdir build -pushd build -cmake -G "Unix Makefiles" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=%{buildroot}/usr \ - -Dbuild_wizard=ON \ - .. +export CFLAGS="%{optflags} -fPIC" +export CXXFLAGS="%{optflags} -fPIC" +%cmake \ + -Dbuild_wizard=ON \ + -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" \ + -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" \ + -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -pie -Wl,-z,relro,-z,now" make %{?_smp_mflags} -popd %install -pushd build -make install %{?_smp_mflags} -popd +%cmake_install rm %{buildroot}%{_bindir}/doxygen mkdir -p %{buildroot}%{_mandir}/man1/ install -m 644 doc/doxywizard.1 %{buildroot}%{_mandir}/man1/ diff --git a/vhdlparser-no-return.patch b/vhdlparser-no-return.patch new file mode 100644 index 0000000..70eb359 --- /dev/null +++ b/vhdlparser-no-return.patch @@ -0,0 +1,476 @@ +Index: doxygen-1.8.10/vhdlparser/VhdlParser.cc +=================================================================== +--- doxygen-1.8.10.orig/vhdlparser/VhdlParser.cc ++++ doxygen-1.8.10/vhdlparser/VhdlParser.cc +@@ -62,6 +62,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -118,6 +119,7 @@ return str; + } + } + assert(false); ++return QCString(); + } + + +@@ -187,6 +189,7 @@ s+="(";s+=s1+")";return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -231,6 +234,7 @@ return "&"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -403,6 +407,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -634,6 +639,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -847,6 +853,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -1718,6 +1725,7 @@ return " others "; + } + } + assert(false); ++return QCString(); + } + + +@@ -2009,6 +2017,7 @@ return s+"#"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -2621,6 +2630,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -2712,6 +2722,7 @@ return s+" inertial "; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -2813,6 +2824,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -2846,6 +2858,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -2913,6 +2926,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -3043,6 +3057,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -3241,6 +3256,7 @@ return "file"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -3728,6 +3744,7 @@ return "all"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -3844,6 +3861,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -3878,6 +3896,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -4116,6 +4135,7 @@ return "or" ; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -4212,6 +4232,7 @@ s1="not ";return s1+s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -4363,6 +4384,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -4683,6 +4705,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -4844,6 +4867,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -5130,6 +5154,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -5248,6 +5273,7 @@ s1="configuration ";return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -5293,6 +5319,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -5401,6 +5428,7 @@ if (parse_sec==GEN_SEC) + } + } + assert(false); ++return QCString(); + } + + +@@ -5666,6 +5694,7 @@ QCString q=lab+" for "+s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -5743,6 +5772,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -5805,6 +5835,7 @@ return "null"; + } + } + assert(false); ++return QCString(); + } + + +@@ -5950,6 +5981,7 @@ return "not"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -6016,6 +6048,7 @@ return "linkage"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -6071,6 +6104,7 @@ return tok->image.c_str(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -6511,6 +6545,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -6592,6 +6627,7 @@ return "type"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -7402,6 +7438,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -7674,6 +7711,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -8033,6 +8071,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -8212,6 +8251,7 @@ return "/="; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -8384,6 +8424,7 @@ return s+" "+s1+"%"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -8745,6 +8786,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_ + } + } + assert(false); ++return QCString(); + } + + +@@ -8856,6 +8898,7 @@ return "ror"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -8889,6 +8932,7 @@ return "-"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -8983,6 +9027,7 @@ return s+s1+"<="+s2+s3+";"; + } + } + assert(false); ++return QCString(); + } + + +@@ -9087,6 +9132,7 @@ return "bus"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -9157,6 +9203,7 @@ return "all"; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -9630,6 +9677,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -10045,6 +10093,7 @@ return " all "; + } + } + assert(false); ++return QCString(); + } + + +@@ -10081,6 +10130,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -10183,6 +10233,7 @@ return s; + } + } + assert(false); ++return QCString(); + } + + +@@ -10267,6 +10318,7 @@ return ""; + } + } + assert(false); ++return QCString(); + } + + +@@ -10458,6 +10510,7 @@ return ""; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -10692,6 +10745,7 @@ return " unaffected "; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -11176,6 +11230,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -11666,6 +11721,7 @@ return t->image.data(); + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -11710,6 +11766,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + + +@@ -11755,6 +11812,7 @@ return "."+s; + } + } + assert(false); ++return QCString(); + } + + +@@ -12557,6 +12615,7 @@ return s; + errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true; + } + assert(false); ++return QCString(); + } + +