initial release for packaging
This commit is contained in:
		
							
								
								
									
										256
									
								
								scripts/ax_check_qt.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								scripts/ax_check_qt.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,256 @@ | ||||
| # SYNOPSIS | ||||
| # | ||||
| #   Check if a module exists: | ||||
| #     AX_CHECK_QT([qt_prefix], [list-of-qt-modules], [optional-modules] [flags]) | ||||
| # | ||||
| #   Abort if a module does not exist: | ||||
| #     AX_REQUIRE_QT([qt_prefix], [list-of-qt-modules], [optional-modules] [flags]) | ||||
| # | ||||
| # DESCRIPTIONS | ||||
| # | ||||
| #    qt_prefix | ||||
| # | ||||
| #      Each call to AX_CHECK_QT should have a different prefix | ||||
| #      value (with a few exceptions discussed later on). This value, | ||||
| #      usually provided in uppercase, is used as prefix to the | ||||
| #      variables holding the compiler flags and libraries reported by | ||||
| #      pkg-config. | ||||
| # | ||||
| #      For instance, if your prefix was to be FOO you'll be provided | ||||
| #      two variables FOO_CFLAGS and FOO_LIBS. | ||||
| # | ||||
| #      This will also be used as message during the configure checks: | ||||
| #      checking for FOO.... | ||||
| # | ||||
| #    list-of-modules | ||||
| # | ||||
| #      A single call to the macro can check for the presence of one or | ||||
| #      more qt modules; you'll see later how to make good use of this | ||||
| #      feature. Each entry in the list can have a version comparison | ||||
| #      specifier, with the same syntax as the Requires keyword in the | ||||
| #      data files themselves. | ||||
| # | ||||
| #    optional-modules | ||||
| # | ||||
| #      Optional list of more, optional modules, e.g. modules that | ||||
| #      exist only in Qt5, but not in Qt4, such as QtWidgets or | ||||
| #      QtWebKitWidgets | ||||
| # | ||||
| #    flags | ||||
| # | ||||
| #      Optional flages, space separated from this list: | ||||
| # | ||||
| #          manualflags | ||||
| # | ||||
| #            CXXFLAGS, CPPFLAGS and LIBS variables are not | ||||
| #            automatically expanded, but you need to add the | ||||
| #            qt_prefix_CXXFLAGS, qt_prefix_CPPFLAGS and qt_prefix_LIBS | ||||
| #            variables manually where you need them. This is useful, | ||||
| #            if some build targets need a feature and some don't. | ||||
|  | ||||
|  | ||||
| AC_DEFUN([AX_CXX_QT_TOOL], [ | ||||
|   PKG_PROG_PKG_CONFIG | ||||
|   if test -z "$HAVE_$1"; then | ||||
|     HAVE_$1=1 | ||||
|     AC_MSG_CHECKING([for $2]) | ||||
|     AC_ARG_VAR([$1], [path to Qt tool $2]) | ||||
|     $1=${$1:-$(${PKG_CONFIG} --variable=$2_location Qt5Core)} | ||||
|     $1=${$1:-$(${PKG_CONFIG} --variable=host_bins Qt5Core)/$2-qt5} | ||||
|     $1=${$1:-$(${PKG_CONFIG} --variable=host_bins Qt5Core)/$2} | ||||
|     $1=${$1:-$(${PKG_CONFIG} --variable=$2_location QtCore)} | ||||
|     $1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2} | ||||
|     $1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2-qt4} | ||||
|     if ! which "${$1%% *}" > /dev/null; then | ||||
|       if which "$2-qt5" > /dev/null; then | ||||
|         $1=$2-qt5 | ||||
|       elif which "$2" > /dev/null; then | ||||
|         $1=$2 | ||||
|       elif which "$2-qt4" > /dev/null; then | ||||
|         $1=$2-qt4 | ||||
|       else | ||||
|         HAVE_$1=0 | ||||
|         $1="" | ||||
|       fi | ||||
|     fi | ||||
|     AC_SUBST($1) | ||||
|     AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) | ||||
|     if test $HAVE_$1 -eq 1; then | ||||
|       AC_MSG_RESULT([$$1]) | ||||
|     else | ||||
|       AC_MSG_RESULT([not found]) | ||||
|     fi | ||||
|   fi | ||||
| ]) | ||||
|  | ||||
| AC_DEFUN([AX_CXX_QT_TOOLS], [ | ||||
|   AX_CXX_QT_TOOL(QMAKE, qmake) | ||||
|   AX_CXX_QT_TOOL(MOC, moc) | ||||
|   AX_CXX_QT_TOOL(UIC, uic) | ||||
|   AX_CXX_QT_TOOL(RCC, rcc) | ||||
|   AX_CXX_QT_TOOL(LUPDATE, lupdate) | ||||
|   AX_CXX_QT_TOOL(LRELEASE, lrelease) | ||||
| ]) | ||||
|  | ||||
| AC_DEFUN([AX_CHECK_QT], [ | ||||
|   qt_modules="$2" | ||||
|   qt_modules_optional="$3" | ||||
|   qt_flags="$4" | ||||
|   AX_CXX_QT_TOOLS | ||||
|   HAVE_$1=0 | ||||
|   PKG_PROG_PKG_CONFIG | ||||
|   PKG_CHECK_MODULES([$1]5, [${qt_modules//Qt/Qt5}], [ | ||||
|     HAVE_$1=1 | ||||
|     AC_DEFINE([HAVE_$1]) | ||||
|     QTDIR=$(${PKG_CONFIG} --variable=prefix Qt5Core) | ||||
|     qt_host_bins=$(${PKG_CONFIG} --variable=host_bins Qt5Core) | ||||
|     if test -d "${qt_host_bins}"; then | ||||
|       QT_PLUGIN_PATH=${qt_host_bins}/../plugins | ||||
|     else | ||||
|       QT_PLUGIN_PATH=${QTDIR}/share/qt5/plugins | ||||
|     fi | ||||
|     MOC_FLAGS+=" -DHAVE_$1=1 ${[$1]5_CFLAGS}" | ||||
|     [$1]_CPPFLAGS="${[$1]5_CFLAGS}" | ||||
|     [$1]_CXXFLAGS="${[$1]5_CFLAGS}" | ||||
|     [$1]_LIBS="${[$1]5_LIBS}" | ||||
|     AC_SUBST([$1]_CPPFLAGS) | ||||
|     AC_SUBST([$1]_CXXFLAGS) | ||||
|     if test "${qt_flags/manualflags/}" = "${qt_flags}"; then | ||||
|       CPPFLAGS+=" ${[$1]_CPPFLAGS}" | ||||
|       CXXFLAGS+=" ${[$1]_CXXFLAGS}" | ||||
|       LIBS+=" ${[$1]_LIBS}" | ||||
|       AC_MSG_NOTICE([Adding flags for $1]) | ||||
|     else | ||||
|       AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) | ||||
|     fi | ||||
|     PKG_REQUIREMENTS+=" ${qt_modules//Qt/Qt5}" | ||||
|     if test -n "${qt_modules_optional}"; then | ||||
|       PKG_CHECK_MODULES([$1]5_OPTIONAL, [${qt_modules_optional//Qt/Qt5}], [ | ||||
|         MOC_FLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" | ||||
|         [$1]_CPPFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" | ||||
|         [$1]_CXXFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" | ||||
|         [$1]_LIBS+=" ${[$1]5_OPTIONAL_LIBS}" | ||||
|         AC_SUBST([$1]_CPPFLAGS) | ||||
|         AC_SUBST([$1]_CXXFLAGS) | ||||
|         if test "${qt_flags/manualflags/}" = "${qt_flags}"; then | ||||
|           CPPFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" | ||||
|           CXXFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" | ||||
|           LIBS+=" ${[$1]5_OPTIONAL_LIBS}" | ||||
|           AC_MSG_NOTICE([Adding flags for $1]) | ||||
|         else | ||||
|           AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) | ||||
|         fi | ||||
|         PKG_REQUIREMENTS+=" ${qt_modules_optional//Qt/Qt5}" | ||||
|       ], [ | ||||
|         AC_MSG_NOTICE([Not found: ${qt_modules_optional//Qt/Qt5}]) | ||||
|       ]) | ||||
|     fi | ||||
|   ], [ | ||||
|     PKG_CHECK_MODULES([$1], [${qt_modules}], [ | ||||
|       HAVE_$1=1 | ||||
|       AC_DEFINE([HAVE_$1]) | ||||
|       QTDIR=$(${PKG_CONFIG} --variable=prefix QtCore) | ||||
|       qt_host_bins=$(${PKG_CONFIG} --variable=host_bins QtCore) | ||||
|       if test -d "${qt_host_bins}"; then | ||||
|         QT_PLUGIN_PATH=${qt_host_bins}/../plugins | ||||
|       else | ||||
|         QT_PLUGIN_PATH=${QTDIR}/share/qt/plugins | ||||
|       fi | ||||
|       MOC_FLAGS+=" -DHAVE_$1=1 ${$1_CFLAGS}" | ||||
|       [$1]_CPPFLAGS="${[$1]_CFLAGS}" | ||||
|       [$1]_CXXFLAGS="${[$1]_CFLAGS}" | ||||
|       AC_SUBST([$1]_CPPFLAGS) | ||||
|       AC_SUBST([$1]_CXXFLAGS) | ||||
|       if test "${qt_flags/manualflags/}" = "${qt_flags}"; then | ||||
|         CPPFLAGS+=" ${[$1]_CPPFLAGS}" | ||||
|         CXXFLAGS+=" ${[$1]_CXXFLAGS}" | ||||
|         LIBS+=" ${[$1]_LIBS}" | ||||
|           AC_MSG_NOTICE([Adding flags for $1]) | ||||
|         else | ||||
|           AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) | ||||
|       fi | ||||
|       PKG_REQUIREMENTS+=" ${qt_modules}" | ||||
|       if test -n "$3"; then | ||||
|         PKG_CHECK_MODULES($1_OPTIONAL, [${qt_modules_optional}], [ | ||||
|           MOC_FLAGS+="${$1_OPTIONAL_CFLAGS}" | ||||
|           [$1]_CPPFLAGS+=" ${$1_OPTIONAL_CFLAGS}" | ||||
|           [$1]_CXXFLAGS+=" ${$1_OPTIONAL_CFLAGS}" | ||||
|           [$1]_LIBS+=" ${$1_OPTIONAL_LIBS}" | ||||
|           AC_SUBST([$1]_CPPFLAGS) | ||||
|           AC_SUBST([$1]_CXXFLAGS) | ||||
|           if test "${qt_flags/manualflags/}" = "${qt_flags}"; then | ||||
|             CPPFLAGS+=" ${$1_OPTIONAL_CFLAGS}" | ||||
|             CXXFLAGS+=" ${$1_OPTIONAL_CFLAGS}" | ||||
|             LIBS+=" ${$1_OPTIONAL_LIBS}" | ||||
|             AC_MSG_NOTICE([Adding flags for $1]) | ||||
|           else | ||||
|             AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) | ||||
|           fi | ||||
|           PKG_REQUIREMENTS+=" ${qt_modules_optional}" | ||||
|         ], [ | ||||
|           AC_MSG_NOTICE([Not found: ${qt_modules_optional}]) | ||||
|         ]) | ||||
|       fi | ||||
|     ], [HAVE_$1=0]) | ||||
|   ]) | ||||
|   AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) | ||||
|   AX_CHECK_VALID_CXX_FLAG([-fPIC -fPIE], [position independent code flag]) | ||||
|   if test -n "${MINGW}"; then | ||||
|     AX_CHECK_VALID_CXX_FLAG([-Wl,-subsystem,windows], [windows console flag]) | ||||
|   fi | ||||
|   test "x$prefix" = xNONE && prefix=$ac_default_prefix | ||||
|   if test "${QT_PLUGIN_PATH}" = "${QT_PLUGIN_PATH#${prefix}}"; then | ||||
|     QT_PLUGIN_PATH=${prefix}${QT_PLUGIN_PATH#/usr} | ||||
|   fi | ||||
|   AC_ARG_WITH([qt-plugin-path], | ||||
|               [AS_HELP_STRING([--with-qt-plugin-path=PATH], | ||||
|                               [define a different qt plugin path, current @<:@default=check@:>@])], | ||||
|               [QT_PLUGIN_PATH=$with_qt_plugin_path], | ||||
|               []) | ||||
|   AC_MSG_NOTICE([Qt Plugins are installed to ${QT_PLUGIN_PATH}]) | ||||
|   AC_SUBST(QTDIR) | ||||
|   AC_SUBST(QT_PLUGIN_PATH) | ||||
|   AC_SUBST(CPPFLAGS) | ||||
|   AC_SUBST(MOC_FLAGS) | ||||
|   AC_SUBST(CXXFLAGS) | ||||
|   AC_SUBST(PKG_REQUIREMENTS) | ||||
|   AX_ADDITIONAL_QT_RULES_HACK=' | ||||
|  | ||||
| LANGUAGE_FILE_BASE ?= translations | ||||
|  | ||||
| ui_%.hxx: %.ui | ||||
| 	$(UIC) -o [$][@] $< | ||||
|  | ||||
| moc_%.cxx: %.hxx | ||||
| 	$(MOC) $(MOC_FLAGS) -o [$][@] $< | ||||
|  | ||||
| qrc_%.cxx: %.qrc | ||||
| 	$(RCC) -o [$][@] -name ${<:%.qrc=%} $< | ||||
|   AC_SUBST(AX_ADDITIONAL_QT_RULES_HACK) | ||||
|  | ||||
| #%.qrc: % | ||||
| #	cwd=$$(pwd) && cd $< && $(RCC) -project -o $${cwd}/[$][@] | ||||
|  | ||||
| %.qm: %.ts | ||||
| 	${LRELEASE} $< -qm [$][@] | ||||
|  | ||||
| %.ts: ${LANGUAGE_FILES:%=%} | ||||
| 	${LUPDATE} -no-obsolete \ | ||||
| 	           -target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \ | ||||
| 	           -ts [$][@] $< | ||||
|  | ||||
| ']) | ||||
|  | ||||
| AC_DEFUN([AX_REQUIRE_QT], [ | ||||
|   AX_CHECK_QT([$1], [$2], [$3], [$4]) | ||||
|   if ! test "$HAVE_$1" -eq 1; then | ||||
|      AC_MSG_ERROR([Required Qt modules not found: $2]) | ||||
|   fi | ||||
| ]) | ||||
|  | ||||
|  | ||||
| #   Omit Qt Keywords | ||||
| #     AX_QT_NO_KEYWORDS | ||||
| AC_DEFUN([AX_QT_NO_KEYWORDS], [ | ||||
|   CPPFLAGS+=" -DQT_NO_KEYWORDS" | ||||
| ]) | ||||
							
								
								
									
										133
									
								
								scripts/ax_cxx_compile_stdcxx_11.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								scripts/ax_cxx_compile_stdcxx_11.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | ||||
| # ============================================================================ | ||||
| #  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html | ||||
| # ============================================================================ | ||||
| # | ||||
| # SYNOPSIS | ||||
| # | ||||
| #   AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) | ||||
| # | ||||
| # DESCRIPTION | ||||
| # | ||||
| #   Check for baseline language coverage in the compiler for the C++11 | ||||
| #   standard; if necessary, add switches to CXXFLAGS to enable support. | ||||
| # | ||||
| #   The first argument, if specified, indicates whether you insist on an | ||||
| #   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. | ||||
| #   -std=c++11).  If neither is specified, you get whatever works, with | ||||
| #   preference for an extended mode. | ||||
| # | ||||
| #   The second argument, if specified 'mandatory' or if left unspecified, | ||||
| #   indicates that baseline C++11 support is required and that the macro | ||||
| #   should error out if no mode with that support is found.  If specified | ||||
| #   'optional', then configuration proceeds regardless, after defining | ||||
| #   HAVE_CXX11 if and only if a supporting mode is found. | ||||
| # | ||||
| # LICENSE | ||||
| # | ||||
| #   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> | ||||
| #   Copyright (c) 2012 Zack Weinberg <zackw@panix.com> | ||||
| #   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu> | ||||
| # | ||||
| #   Copying and distribution of this file, with or without modification, are | ||||
| #   permitted in any medium without royalty provided the copyright notice | ||||
| #   and this notice are preserved. This file is offered as-is, without any | ||||
| #   warranty. | ||||
|  | ||||
| #serial 3 | ||||
|  | ||||
| m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [ | ||||
|   template <typename T> | ||||
|     struct check | ||||
|     { | ||||
|       static_assert(sizeof(int) <= sizeof(T), "not big enough"); | ||||
|     }; | ||||
|  | ||||
|     typedef check<check<bool>> right_angle_brackets; | ||||
|  | ||||
|     int a; | ||||
|     decltype(a) b; | ||||
|  | ||||
|     typedef check<int> check_type; | ||||
|     check_type c; | ||||
|     check_type&& cr = static_cast<check_type&&>(c); | ||||
|  | ||||
|     auto d = a; | ||||
| ]) | ||||
|  | ||||
| AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl | ||||
|   m4_if([$1], [], [], | ||||
|         [$1], [ext], [], | ||||
|         [$1], [noext], [], | ||||
|         [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl | ||||
|   m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], | ||||
|         [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], | ||||
|         [$2], [optional], [ax_cxx_compile_cxx11_required=false], | ||||
|         [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])dnl | ||||
|   AC_LANG_PUSH([C++])dnl | ||||
|   ac_success=no | ||||
|   AC_CACHE_CHECK(whether $CXX supports C++11 features by default, | ||||
|   ax_cv_cxx_compile_cxx11, | ||||
|   [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], | ||||
|     [ax_cv_cxx_compile_cxx11=yes], | ||||
|     [ax_cv_cxx_compile_cxx11=no])]) | ||||
|   if test x$ax_cv_cxx_compile_cxx11 = xyes; then | ||||
|     ac_success=yes | ||||
|   fi | ||||
|  | ||||
|   m4_if([$1], [noext], [], [dnl | ||||
|   if test x$ac_success = xno; then | ||||
|     for switch in -std=gnu++11 -std=gnu++0x; do | ||||
|       cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) | ||||
|       AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, | ||||
|                      $cachevar, | ||||
|         [ac_save_CXXFLAGS="$CXXFLAGS" | ||||
|          CXXFLAGS="$CXXFLAGS $switch" | ||||
|          AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], | ||||
|           [eval $cachevar=yes], | ||||
|           [eval $cachevar=no]) | ||||
|          CXXFLAGS="$ac_save_CXXFLAGS"]) | ||||
|       if eval test x\$$cachevar = xyes; then | ||||
|         CXXFLAGS="$CXXFLAGS $switch" | ||||
|         ac_success=yes | ||||
|         break | ||||
|       fi | ||||
|     done | ||||
|   fi]) | ||||
|  | ||||
|   m4_if([$1], [ext], [], [dnl | ||||
|   if test x$ac_success = xno; then | ||||
|     for switch in -std=c++11 -std=c++0x; do | ||||
|       cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) | ||||
|       AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, | ||||
|                      $cachevar, | ||||
|         [ac_save_CXXFLAGS="$CXXFLAGS" | ||||
|          CXXFLAGS="$CXXFLAGS $switch" | ||||
|          AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], | ||||
|           [eval $cachevar=yes], | ||||
|           [eval $cachevar=no]) | ||||
|          CXXFLAGS="$ac_save_CXXFLAGS"]) | ||||
|       if eval test x\$$cachevar = xyes; then | ||||
|         CXXFLAGS="$CXXFLAGS $switch" | ||||
|         ac_success=yes | ||||
|         break | ||||
|       fi | ||||
|     done | ||||
|   fi]) | ||||
|   AC_LANG_POP([C++]) | ||||
|   if test x$ax_cxx_compile_cxx11_required = xtrue; then | ||||
|     if test x$ac_success = xno; then | ||||
|       AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) | ||||
|     fi | ||||
|   else | ||||
|     if test x$ac_success = xno; then | ||||
|       HAVE_CXX11=0 | ||||
|       AC_MSG_NOTICE([No compiler with C++11 support was found]) | ||||
|     else | ||||
|       HAVE_CXX11=1 | ||||
|       AC_DEFINE(HAVE_CXX11,1, | ||||
|                 [define if the compiler supports basic C++11 syntax]) | ||||
|     fi | ||||
|  | ||||
|     AC_SUBST(HAVE_CXX11) | ||||
|   fi | ||||
| ]) | ||||
							
								
								
									
										710
									
								
								scripts/ax_init_standard_project.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										710
									
								
								scripts/ax_init_standard_project.m4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,710 @@ | ||||
| ## @id $Id: ax_init_standard_project.m4 31 2015-05-05 15:06:08Z marc $ | ||||
|  | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| # m4_esyscmd_s does not exist on centos 5 and 6 | ||||
| m4_define([mrw_esyscmd_s], [m4_normalize(m4_esyscmd([$1]))]) | ||||
|  | ||||
| # define least version number from subversion's revision number: | ||||
| # it is taken modulo 256 due to a bug on Apple's MacOSX | ||||
| m4_define(x_least, m4_ifdef([x_least_diff], mrw_esyscmd_s([ | ||||
|   SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout" | ||||
|   for path in . .. ../..; do | ||||
|     if svn info $path 2>&1 > /dev/null; then | ||||
|       SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       break; | ||||
|     fi | ||||
|   done | ||||
|   echo $ECHO_N $(($SVN_REVISION)) | ||||
| ]),  mrw_esyscmd_s([ | ||||
|   SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout" | ||||
|   for path in . .. ../..; do | ||||
|     if svn info $path 2>&1 > /dev/null; then | ||||
|       SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       break; | ||||
|     fi | ||||
|   done | ||||
|   # Mac does not support LEAST > 255 | ||||
|   echo $ECHO_N $(($SVN_REVISION%256)) | ||||
| ]))) | ||||
| # define version number from subversion's revision number: | ||||
| # it is taken modulo 256 due to a bug on Apple's MacOSX | ||||
| # add to x_minor if revision number is > 256 | ||||
| m4_define(x_minor_diff, mrw_esyscmd_s([ | ||||
|   SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout" | ||||
|   for path in . .. ../..; do | ||||
|     if svn info $path 2>&1 > /dev/null; then | ||||
|       SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       break; | ||||
|     fi; | ||||
|   done | ||||
|   # Mac does not support LEAST > 255 | ||||
|   echo $ECHO_N $(($SVN_REVISION/256)) | ||||
| ])) | ||||
| # setup version number | ||||
| m4_define(x_version, [x_major.m4_ifdef([x_least_diff], x_minor, m4_eval(x_minor+x_minor_diff)).m4_eval(m4_ifdef([x_least_diff], [x_least-x_least_diff], [x_least]))]) | ||||
|  | ||||
| ## bugreport mail address is taken from <user@host> in first line of AUTHORS | ||||
| m4_define(x_bugreport, mrw_esyscmd_s([ | ||||
|   head -1 AUTHORS | \ | ||||
|     sed -n 's,.*<\([-_.a-z0-9A-Z]*@[-_.a-z0-9A-Z]*\)>.*,\1,gp' | ||||
| ])) | ||||
|  | ||||
| m4_include(ax_check_qt.m4) | ||||
|  | ||||
| AC_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR]) | ||||
| AC_DEFUN([AX_DEFINE_DIR], [ | ||||
|   prefix_NONE= | ||||
|   exec_prefix_NONE= | ||||
|   test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix | ||||
|   test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix | ||||
| dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn | ||||
| dnl refers to ${prefix}.  Thus we have to use `eval' twice. | ||||
|   eval ax_define_dir="\"[$]$2\"" | ||||
|   eval ax_define_dir="\"$ax_define_dir\"" | ||||
|   AC_SUBST($1, "$ax_define_dir") | ||||
|   AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3]) | ||||
|   test "$prefix_NONE" && prefix=NONE | ||||
|   test "$exec_prefix_NONE" && exec_prefix=NONE | ||||
| ]) | ||||
|  | ||||
| # add target dependencies to an existing makefile.in | ||||
| #  - parameters: | ||||
| #     $1 = existing target | ||||
| #     $2 = new dependency for that target | ||||
| #     $3 = filename of makefile.in | ||||
| AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [ | ||||
|   sh_add_makefile_target_dep() { | ||||
|     sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'${1}':.*$/& '${2}'/' "${srcdir}/${3}" | ||||
|     if ! egrep -q "${1}:.* ${2}" "${srcdir}/${3}"; then | ||||
|         echo "${1}: ${2}" >> "${srcdir}/${3}" | ||||
|     fi | ||||
|   } | ||||
|   sh_add_makefile_target_dep "$1" "$2" "$3" | ||||
|   if test "$1" != ".PHONY"; then | ||||
|       sh_add_makefile_target_dep ".PHONY" "$2" "$3" | ||||
|   fi | ||||
| ]) | ||||
|  | ||||
| # Same as AC_SUBST, but adds -Dname="value" option to CPPFLAGS | ||||
| #  - parameters: | ||||
| #     $1 = variable name | ||||
| AC_DEFUN([AX_SUBST], [ | ||||
|   AC_SUBST([$1]) | ||||
|   tmp_var=$(echo "${$1}" | awk 1 ORS='\\n' | sed 's,\\n$,,') | ||||
|   tmp_var=${tmp_var//\"/\\\"} | ||||
|   tmp_var=${tmp_var//\'/\'\"\'\"\'} | ||||
|   tmp_var=${tmp_var//#/\\#} | ||||
|   AM_CPPFLAGS+=" '-D$1=\"${tmp_var}\"'" | ||||
|   AC_SUBST(AM_CPPFLAGS) | ||||
| ]) | ||||
|  | ||||
| # must be called on the right position in configure.ac | ||||
| # | ||||
| # configure.ac must start with: | ||||
| # | ||||
| # m4_define(x_package_name, YOUR_PACKAGE_NAME) # project's name | ||||
| # m4_define(x_major, MAJOR_NUMBER) # project's major version | ||||
| # m4_define(x_minor, MINOR_NUMBER) # project's minor version | ||||
| # m4_include(ax_init_standard_project.m4) | ||||
| # AC_INIT(x_package_name, x_version, x_bugreport, x_package_name) | ||||
| # AM_INIT_AUTOMAKE([1.9 tar-pax]) | ||||
| # AX_INIT_STANDARD_PROJECT | ||||
| # | ||||
| # you change nothing but: YOUR_PACKAGE_NAME, MAJOR_NUMBER, MINOR_NUMBER | ||||
| # | ||||
| # configures the basic environment | ||||
| AC_DEFUN([AX_INIT_STANDARD_PROJECT], [ | ||||
|   AC_MSG_CHECKING([target platfrom]) | ||||
|   UNIX=1 | ||||
|   MINGW= | ||||
|   MACOSX= | ||||
|   for h in ${target} ${target_os} ${host} ${host_os} \ | ||||
|            ${build} ${build_os} $(uname -s 2> /dev/null); do | ||||
|     p="$h is generic Unix" | ||||
|     case "$h" in | ||||
|       (*mingw*) | ||||
|         UNIX=; MINGW=1; p="MinGW"; break;; | ||||
|       (*Darwin*|*darwin*|*rhapsody*|*macosx*) | ||||
|         UNIX=; MACOSX=1; p="MacOSX"; break;; | ||||
|     esac | ||||
|   done | ||||
|   AC_MSG_RESULT($p) | ||||
|   AM_CONDITIONAL(UNIX, test "$UNIX" = "1") | ||||
|   AM_CONDITIONAL(MINGW, test "$MINGW" = "1") | ||||
|   AM_CONDITIONAL(MACOSX, test "$MACOSX" = "1") | ||||
|   AX_SUBST(UNIX) | ||||
|   AX_SUBST(MINGW) | ||||
|   AX_SUBST(MACOSX) | ||||
|   AM_CPPFLAGS+=" '-DMAKE_STRING(X)=\#X' '-DNAMESPACE=${PACKAGE_TARNAME//[^a-zA-Z0-9]/_}'" | ||||
|   AX_SUBST(NUMBERS) | ||||
|   AX_SUBST(HOME) | ||||
|   README=$(tail -n +3 README) | ||||
|   AX_SUBST(README) | ||||
|   _AM_SUBST_NOTMAKE([README]) | ||||
|   DESCRIPTION=$(head -1 README) | ||||
|   AX_SUBST(DESCRIPTION) | ||||
|   _AM_SUBST_NOTMAKE([DESCRIPTION]) | ||||
|   AUTHOR=$(head -1 AUTHORS) | ||||
|   AX_SUBST(AUTHOR) | ||||
|   _AM_SUBST_NOTMAKE([AUTHOR]) | ||||
|   DISTRO=$(lsb_release -sc 2>/dev/null || uname -s 2>/dev/null) | ||||
|   AX_SUBST(DISTRO) | ||||
|   DISTRIBUTOR=$(lsb_release -si 2>/dev/null || uname -s 2>/dev/null) | ||||
|   case "${DISTRIBUTOR// /-}" in | ||||
|     (Ubuntu) UBUNTU=1; AX_SUBST(UBUNTU);; | ||||
|     (Debian) DEBIAN=1; AX_SUBST(DEBIAN);; | ||||
|     (SUSE-LINUX) SUSE=1; AX_SUBST(SUSE);; | ||||
|     (Fedora) FEDORA=1; AX_SUBST(FEDORA);; | ||||
|     (Centos) CENTOS=1; AX_SUBST(CENTOS);; | ||||
|   esac | ||||
|   AX_SUBST(DISTRIBUTOR) | ||||
|   BUILD_NUMBER=${BUILD_NUMBER:-1} | ||||
|   AX_SUBST(BUILD_NUMBER) | ||||
|   BUILD_DATE=$(LANG= date +"%a, %d %b %Y %H:%M:%S %z") | ||||
|   AX_SUBST(BUILD_DATE) | ||||
|   if test -f "${PROJECT_NAME}-logo.png"; then | ||||
|      PROJECT_LOGO="${PROJECT_NAME}-logo.png" | ||||
|   fi | ||||
|   AX_SUBST(PROJECT_LOGO) | ||||
|   if test -f "${PROJECT_NAME}-icon.png"; then | ||||
|      PROJECT_ICON="${PROJECT_NAME}-icon.png" | ||||
|   fi | ||||
|   AX_SUBST(PROJECT_ICON) | ||||
|  | ||||
|   AC_ARG_ENABLE(pedantic, | ||||
|     [AS_HELP_STRING([--enable-pedantic], | ||||
|                     [enable all warnings and checks, abort on warnings])], | ||||
|     [have_pedantic="$enableval"; test "$enableval" = "yes" &&  \ | ||||
|        AM_CXXFLAGS="${AM_CXXFLAGS:-} -pedantic-errors -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-format-attribute -Wno-multichar -Wpacked -Wredundant-decls -Werror -Wshadow -Wcast-qual -Wno-ctor-dtor-privacy"]) | ||||
|   dnl problem in libs: -Wshadow -Wcast-qual | ||||
|   dnl auto.hpp: -Wno-ctor-dtor-privacy (removed) | ||||
|   AM_CONDITIONAL(PEDANTIC, test "$enableval" = "yes") | ||||
|   if test "$have_pedantic" == "yes"; then | ||||
|     AC_MSG_NOTICE([Pedantic compile mode enabled! | ||||
|      - all warnings for GNU g++ are enabled | ||||
|      - all warnings result in an error | ||||
|      - doxygen warnings are treated as error too]); fi | ||||
|  | ||||
|   AC_ARG_ENABLE(debug, | ||||
|     [AS_HELP_STRING([--enable-debug], | ||||
|                     [compile for debugger])], | ||||
|     [have_debug="$enableval"], [have_debug="no"]) | ||||
|   AM_CONDITIONAL(DEBUG, test "$enableval" = "yes") | ||||
|   if test "$have_debug" == "yes"; then | ||||
|     AC_MSG_NOTICE([Debug compile mode enabled]); | ||||
|     AM_CPPFLAGS="${AM_CPPFLAGS} -DDEBUG" | ||||
|     AM_CXXFLAGS="${AM_CXXFLAGS:-} -ggdb3 -O0" | ||||
|     AM_LDFLAGS="${AM_LDFLAGS} -ggdb3 -O0" | ||||
|   else | ||||
|     AM_CPPFLAGS="${AM_CPPFLAGS} -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG" | ||||
|   fi | ||||
|  | ||||
|   AC_CONFIG_FILES([makefile]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-standard-project-targets], [makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-standard-project-targets], [makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-standard-project-targets], [makefile.in]) | ||||
|   test -f makefile.in && cat >> makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| EXTRA_DIST += bootstrap.sh ax_init_standard_project.m4 ax_cxx_compile_stdcxx_11.m4 \ | ||||
|               ax_check_qt.m4 resolve-debbuilddeps.sh resolve-rpmbuilddeps.sh \ | ||||
|               build-resource-file.sh mac-create-app-bundle.sh | ||||
|  | ||||
| clean-standard-project-targets: | ||||
| 	-rm -rf \${PACKAGE_NAME}-\${PACKAGE_VERSION} | ||||
| 	-rm \${PACKAGE_TARNAME}-\${PACKAGE_VERSION}.tar.gz | ||||
| distclean-standard-project-targets: | ||||
| 	-rm -r autom4te.cache | ||||
| 	-rm aclocal.m4 config.guess config.sub configure depcomp compile install-sh ltmain.sh makefile missing mkinstalldirs test-driver | ||||
| maintainer-clean-standard-project-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support C++ | ||||
| AC_DEFUN([AX_USE_CXX], [ | ||||
|   m4_include(ax_cxx_compile_stdcxx_11.m4) | ||||
|   AC_LANG(C++) | ||||
|   AX_CXX_COMPILE_STDCXX_11(noext, optional) | ||||
|   AC_PROG_CXX | ||||
|   AC_PROG_CPP | ||||
|  | ||||
|   AC_CONFIG_FILES([src/makefile]) | ||||
|    | ||||
|   AM_CPPFLAGS+=' -I ${top_srcdir}/src -I ${top_builddir}/src -I ${srcdir} -I ${builddir}' | ||||
|   AM_LDFLAGS+=' -L ${top_srcdir}/src -L ${top_builddir}/src' | ||||
|  | ||||
|   # Get rid of those stupid -g -O2 options! | ||||
|   CXXFLAGS="${CXXFLAGS//-g -O2/}" | ||||
|   CFLAGS="${CFLAGS//-g -O2/}" | ||||
|  | ||||
| # pass compile flags to make distcheck | ||||
|   AM_DISTCHECK_CONFIGURE_FLAGS="CXXFLAGS='${CXXFLAGS}' CPPFLAGS='${CPPFLAGS}' CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'" | ||||
|   AC_SUBST(AM_DISTCHECK_CONFIGURE_FLAGS) | ||||
|  | ||||
|   AC_SUBST(AM_CXXFLAGS) | ||||
|   AC_SUBST(AM_CPPFLAGS) | ||||
|   AC_SUBST(AM_LDFLAGS) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-cxx-targets], [src/makefile.in]) | ||||
|   test -f src/makefile.in && cat >> src/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| %.app: % | ||||
| 	-rm -r [\$][@] | ||||
| 	\$(MAKE) DESTDIR=[\$][\$](pwd)/[\$][@]/tmp install | ||||
| 	QTDIR="\${QTDIR}" \ | ||||
| 	QT_PLUGINS="\${QT_PLUGINS}" \ | ||||
| 	QT_PLUGIN_PATH="\${QT_PLUGIN_PATH}" \ | ||||
| 	  \${top_builddir}/mac-create-app-bundle.sh \ | ||||
| 	    [\$][@] [\$][<] [\$][\$](pwd)/[\$][@]/tmp\${prefix} | ||||
|  | ||||
| maintainer-clean-cxx-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support CppUnit for C++ unit tests | ||||
| AC_DEFUN([AX_USE_CPPUNIT], [ | ||||
|   AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"]) | ||||
|   # infos and warnings | ||||
|   if test "$have_cppunit" = "no"; then | ||||
|     AC_MSG_WARN([Missing cppunit development library! | ||||
|      - you cannot check the library using "make check" | ||||
|      - everything else works perfectly]); fi | ||||
|   AC_CONFIG_FILES([test/makefile]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-test-targets], [test/makefile.in]) | ||||
|   test -f test/makefile.in && cat >> test/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| maintainer-clean-test-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support C++ examples | ||||
| AC_DEFUN([AX_BUILD_EXAMPLES], [ | ||||
|   AC_CONFIG_FILES([examples/makefile]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-example-targets], [examples/makefile.in]) | ||||
|   test -f examples/makefile.in && cat >> examples/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| maintainer-clean-example-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support HTML data for webservers | ||||
| AC_DEFUN([AX_BUILD_HTML], [ | ||||
|   AC_CONFIG_FILES([html/makefile]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-html-targets], [html/makefile.in]) | ||||
|   test -f html/makefile.in && cat >> html/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| maintainer-clean-html-targets: | ||||
| 	-rm makefile.in | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support C++ libraries | ||||
| AC_DEFUN([AX_USE_LIBTOOL], [ | ||||
|   # libtool versioning | ||||
|   LIB_MAJOR=m4_eval(x_major+x_minor+x_minor_diff) | ||||
|   LIB_MINOR=x_least | ||||
|   LIB_LEAST=m4_eval(x_minor+x_minor_diff) | ||||
|   LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}" | ||||
|   AM_LDFLAGS="-version-info ${LIB_VERSION}" | ||||
|   AC_SUBST(AM_LDFLAGS) | ||||
|   AC_SUBST(LIB_VERSION) | ||||
|   AC_PROG_LIBTOOL | ||||
|   AC_CONFIG_FILES([src/${PACKAGE_NAME}.pc]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-libtool-pkg], [src/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-data-am], [src/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([uninstall-data-am], [uninstall-data-libtool-pkg], [src/makefile.in]) | ||||
|   test -f src/makefile.in && cat >> src/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| install-data-libtool-pkg: | ||||
| 	test -d \$(DESTDIR)\${libdir}/pkgconfig || mkdir -p \$(DESTDIR)\${libdir}/pkgconfig | ||||
| 	chmod -R u+w \$(DESTDIR)\${libdir}/pkgconfig | ||||
| 	cp \${PACKAGE_NAME}.pc \$(DESTDIR)\${libdir}/pkgconfig/ | ||||
| uninstall-data-libtool-pkg: | ||||
| 	-chmod -R u+w \$(DESTDIR)\${libdir}/pkgconfig | ||||
| 	-rm -f \$(DESTDIR)\${libdir}/pkgconfig/\${PACKAGE_NAME}.pc | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support debian packages | ||||
| AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [ | ||||
|   README_DEB=$(tail -n +3 README | sed -e 's/^$/./g' -e 's/^/ /g') | ||||
|   AC_SUBST(README_DEB) | ||||
|   _AM_SUBST_NOTMAKE([README_DEB]) | ||||
|   AC_CONFIG_FILES([debian/changelog debian/control]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-debian-targets], [makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-debian-targets], [makefile.in]) | ||||
|   test -f makefile.in && cat >> makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| EXTRA_DIST += debian | ||||
| clean-debian-targets: | ||||
| 	-rm -rf \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}.{dsc,tar.gz} \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}*.changes \$\$(sed -n 's,Package: \(.*\),\1_${PACKAGE_VERSION}~${DISTRO}.${BUILD_NUMBER}*.deb,p;' debian/control) | ||||
| deb: distdir | ||||
| 	cd \${PACKAGE_NAME}-\${PACKAGE_VERSION} && ( export CFLAGS="\${CFLAGS}"; export CPPFLAGS="\${CPPFLAGS}"; export  CXXFLAGS="\${CXXFLAGS}"; export LDFLAGS="\${LDFLAGS}"; export DEB_CFLAGS_APPEND="\${CFLAGS}"; export DEB_CPPFLAGS_APPEND="\${CPPFLAGS}"; export  DEB_CXXFLAGS_APPEND="\${CXXFLAGS}"; export  DEB_LDFLAGS_APPEND="\${LDFLAGS}"; dpkg-buildpackage ) | ||||
| distclean-debian-targets: | ||||
| 	-rm debian/changelog debian/control | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support RPM packages | ||||
| AC_DEFUN([AX_USE_RPM_PACKAGING], [ | ||||
|   AC_CONFIG_FILES([${PACKAGE_NAME}.spec]) | ||||
|   #AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-rpm-targets], [makefile.in]) | ||||
|   test -f makefile.in && cat >> makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| EXTRA_DIST += \${PACKAGE_NAME}.spec.in | ||||
| rpm: dist | ||||
| 	rpmbuild -ba --define "_topdir \$\$(pwd)" --define "_sourcedir \$\$(pwd)" \${PACKAGE_NAME}.spec | ||||
| distclean-rpm-targets: | ||||
| 	-rm \${PACKAGE_NAME}.spec | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support scripts, e.g. bash scripts | ||||
| AC_DEFUN([AX_USE_SCRIPTS], [ | ||||
|   AC_CONFIG_FILES([scripts/makefile]) | ||||
| ]) | ||||
|  | ||||
| # use this in configure.ac to support Doxygen documentation generation | ||||
| AC_DEFUN([AX_USE_DOXYGEN], [ | ||||
|   AC_CHECK_PROG(have_doxygen, doxygen, yes, no) | ||||
|   AC_CHECK_PROG(have_dot, dot, yes, no) | ||||
|   AC_CHECK_PROG(have_mscgen, mscgen, yes, no) | ||||
|   PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf | ||||
|   AC_SUBST(PDF_DOC) | ||||
|   if test "$have_doxygen" = "no"; then | ||||
|     AC_MSG_WARN([Missing program doxygen! | ||||
|      - you cannot rebuild the documentation | ||||
|      - there are precompiled derived files in the distribution]); fi | ||||
|   if test "$have_dot" = "no"; then | ||||
|     AC_MSG_WARN([Missing program dot! | ||||
|      - when you rebild documentation, there are no generated images | ||||
|      - there are precompiled derived files in the distribution]); fi | ||||
|   if test "$have_mscgen" = "no"; then | ||||
|     AC_MSG_WARN([Missing program mscgen! | ||||
|      - when you rebild documentation, there are no message state charts | ||||
|      - there are precompiled derived files in the distribution]); fi | ||||
|   AC_CONFIG_FILES([doc/makefile doc/doxyfile]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-documentation], [doc/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-documentation], [doc/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-documentation], [doc/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-documentation], [doc/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-documentation], [doc/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([all], [doc], [doc/makefile.in]) | ||||
|   AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [pdf], [doc/makefile.in]) | ||||
|   test -f doc/makefile.in && cat >> doc/makefile.in <<EOF | ||||
| #### Begin: Appended by $0 | ||||
| doc: doxyfile | ||||
| 	doxygen doxyfile | ||||
| @PEDANTIC_TRUE@	test \! -s doxygen.errors | ||||
|  | ||||
| clean-documentation: | ||||
| 	-rm doxygen.errors @PDF_DOC@ | ||||
| distclean-documentation: | ||||
| 	-rm -r html | ||||
| 	-rm  @PACKAGE_NAME@.doxytag | ||||
| maintainer-clean-documentation: | ||||
| 	-rm makefile.in | ||||
| install-data-documentation: | ||||
| 	test -d \$(DESTDIR)\${docdir} || mkdir -p \$(DESTDIR)\${docdir} | ||||
| 	chmod -R u+w \$(DESTDIR)\${docdir} | ||||
| 	cp -r html \$(DESTDIR)\${docdir}/ | ||||
| uninstall-documentation: | ||||
| 	-chmod -R u+w \$(DESTDIR)\${docdir} | ||||
| 	-rm -rf \$(DESTDIR)\${docdir}/html | ||||
| #### End: $0 | ||||
| EOF | ||||
| ]) | ||||
|  | ||||
| # require a specific package, with fallback: test for a header | ||||
| #  - parameter: | ||||
| #     $1 = unique id (no special characters) | ||||
| #     $2 = module name (optional, if different from id) | ||||
| #     $3 = a header file to find (optional) | ||||
| #     $4 = alternative module names (space separated, optional) | ||||
| #     $5 = optional flags: | ||||
| #            manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged | ||||
| # | ||||
| # uses PKG_CHECK_MODULES to test for a module | ||||
| # then, if given, looks for the header file | ||||
| # if header file is not found, searches in alternative modules | ||||
| # sets all flags, so that the module can be used everywhere | ||||
| # fails if not found | ||||
| AC_DEFUN([AX_PKG_REQUIRE], [ | ||||
|   PKG_PROG_PKG_CONFIG | ||||
|   optional_flags="$5" | ||||
|   $1_found=no | ||||
|   secondpar="m4_default([$2], [$1])" | ||||
|   PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [ | ||||
|     $1_found=$secondpar | ||||
|     PKG_REQUIREMENTS+=" $secondpar" | ||||
|   ], [ | ||||
|     if test -n "$4"; then | ||||
|       AC_MSG_WARN([Recommended package $secondpar for feature $1 not installed, trying $4]) | ||||
|       for pkg in $4; do | ||||
|         PKG_CHECK_MODULES([$1], [$pkg], [ | ||||
|           PKG_REQUIREMENTS+=" $pkg" | ||||
|           $1_found=$pkg | ||||
|           break; | ||||
|         ], [ | ||||
|           AC_MSG_WARN([Recommended package $pkg for feature $1 not installed]) | ||||
|         ]) | ||||
|       done | ||||
|     fi | ||||
|   ]) | ||||
|   AC_SUBST(CPPFLAGS) | ||||
|   AC_SUBST(CXXFLAGS) | ||||
|   AC_SUBST(PKG_REQUIREMENTS) | ||||
|   if test -n "$3"; then | ||||
|     if test "${$1_found}" = "no"; then | ||||
|       tmp_package="yes" | ||||
|     else | ||||
|       tmp_package=${$1_found} | ||||
|     fi | ||||
|     $1_found=no | ||||
|     old_CPPFLAGS=${CPPFLAGS} | ||||
|     CPPFLAGS=" ${$1_CFLAGS} ${CPPFLAGS}" | ||||
|     AC_CHECK_HEADER([$3], [ | ||||
|       $1_found=${tmp_package} | ||||
|     ], [ | ||||
|       for x in ${$1_CFLAGS}; do | ||||
|         AC_MSG_NOTICE([search for $3 in ${x[#]-I}]) | ||||
|         for f in $(find ${x[#]-I} -name "$3" 2> /dev/null); do | ||||
|           if test -f "$f"; then | ||||
|             $1_found=${tmp_package} | ||||
|             $1_CFLAGS+=" -I${f%/*}" | ||||
|             AC_MSG_NOTICE([added path ${f%/*}]) | ||||
|             break; | ||||
|           fi | ||||
|         done | ||||
|         if test "${$1_found}" != "no"; then | ||||
|           break; | ||||
|         fi | ||||
|       done | ||||
|       if test "${$1_found}" = "no"; then | ||||
|         tmp_includedir=$(${PKG_CONFIG} --variable=includedir $tmp_package) | ||||
|         for x in ${tmp_includedir}; do | ||||
|           AC_MSG_NOTICE([search for $3 in $x]) | ||||
|           for f in $(find ${x} -name "$3" 2> /dev/null); do | ||||
|             if test -f "$f"; then | ||||
|               $1_found=${tmp_package} | ||||
|               $1_CFLAGS+=" -I${f%/*}" | ||||
|               AC_MSG_NOTICE([added path ${f%/*}]) | ||||
|               break; | ||||
|             fi | ||||
|           done | ||||
|           if test "${$1_found}" != "no"; then | ||||
|             break; | ||||
|           fi | ||||
|         done | ||||
|       fi | ||||
|     ]) | ||||
|     CPPFLAGS=${old_CPPFLAGS} | ||||
|   fi | ||||
|   if test "${$1_found}" = "no"; then | ||||
|     if test -n "$3"; then | ||||
|       if test -n "$4"; then | ||||
|         AC_MSG_ERROR([Feature $1 not found, need header $3 in modules $secondpar or $4]) | ||||
|       else | ||||
|         AC_MSG_ERROR([Feature $1 not found, need header $3 in module $secondpar]) | ||||
|       fi | ||||
|     else | ||||
|       AC_MSG_ERROR([Feature $1 not found please install module $secondpar]) | ||||
|     fi | ||||
|   fi | ||||
|   [$1]_CPPFLAGS="${$1_CFLAGS}" | ||||
|   [$1]_CXXFLAGS="${$1_CFLAGS}" | ||||
|   AC_SUBST([$1]_CPPFLAGS) | ||||
|   AC_SUBST([$1]_CXXFLAGS) | ||||
|   if test "${optional_flags/manualflags/}" = "${optional_flags}"; then | ||||
|     CPPFLAGS+=" ${$1_CPPFLAGS}" | ||||
|     CXXFLAGS+=" ${$1_CXXFLAGS}" | ||||
|     LIBS+=" ${$1_LIBS}" | ||||
|     AC_MSG_NOTICE([Adding flags for $1]) | ||||
|   else | ||||
|     AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) | ||||
|   fi | ||||
| ]) | ||||
|  | ||||
| # check if a specific package exists | ||||
| #  - parameter: | ||||
| #     $1 = unique id (no special characters) | ||||
| #     $2 = module name (optional, if different from id) | ||||
| #     $3 = optional flags: | ||||
| #          manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged | ||||
| # | ||||
| # uses PKG_CHECK_MODULES to test for a module | ||||
| # sets automake conditional HAVE_$1 to 0 (not found) or 1 (found) | ||||
| # sets all flags, so that the module can be used everywhere | ||||
| AC_DEFUN([AX_PKG_CHECK], [ | ||||
|   optional_flags="$3" | ||||
|   PKG_PROG_PKG_CONFIG | ||||
|   PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [ | ||||
|     HAVE_$1=1 | ||||
|     [$1]_CPPFLAGS="${$1_CFLAGS}" | ||||
|     [$1]_CXXFLAGS="${$1_CFLAGS}" | ||||
|     AC_SUBST([$1]_CPPFLAGS) | ||||
|     AC_SUBST([$1]_CXXFLAGS) | ||||
|     if test "${optional_flags/manualflags/}" = "${optional_flags}"; then | ||||
|       CPPFLAGS+=" ${$1_CPPFLAGS}" | ||||
|       CXXFLAGS+=" ${$1_CXXFLAGS}" | ||||
|       LIBS+=" ${$1_LIBS}" | ||||
|       AC_MSG_NOTICE([Adding flags for $1]) | ||||
|     else | ||||
|       AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS]) | ||||
|     fi | ||||
|     if test -z "$PKG_REQUIREMENTS"; then | ||||
|       PKG_REQUIREMENTS="m4_default([$2], [$1])" | ||||
|     else | ||||
|       PKG_REQUIREMENTS="${PKG_REQUIREMENTS}, m4_default([$2], [$1])" | ||||
|     fi | ||||
|   ], [ | ||||
|     HAVE_$1=0 | ||||
|   ]) | ||||
|   AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1) | ||||
|   AC_SUBST(HAVE_$1) | ||||
|   AC_SUBST(CPPFLAGS) | ||||
|   AC_SUBST(CXXFLAGS) | ||||
|   AC_SUBST(PKG_REQUIREMENTS) | ||||
| ]) | ||||
|  | ||||
| # make sure, a specific header exists | ||||
| # - parameter: | ||||
| #    $1 = header name | ||||
| AC_DEFUN([AX_REQUIRE_HEADER], [ | ||||
|   AC_CHECK_HEADER($1, [], [ | ||||
|     if test -n "$2"; then | ||||
|       found=0 | ||||
|       for d in $2; do | ||||
|         if test -f "${d}/$1"; then | ||||
|           AC_MSG_NOTICE([found file ${d}/$1]) | ||||
|           CPPFLAGS+=" -I${d}" | ||||
|           found=1 | ||||
|           break; | ||||
|         else | ||||
|           AC_MSG_NOTICE([not found file ${d}/$1]) | ||||
|         fi | ||||
|       done | ||||
|     fi | ||||
|     if test $found -eq 0; then | ||||
|       AC_MSG_ERROR([Header $1 not found]) | ||||
|     fi | ||||
|     ], []) | ||||
|   ], []) | ||||
| ]) | ||||
|  | ||||
| # Check within a list of CPP-Flags for the first that is usable and | ||||
| # configure it | ||||
| #  - parameter: | ||||
| #     $1 = white-space separated list of alternative flags | ||||
| #     $2 = module name (optional, if different from id) | ||||
| AC_DEFUN([AX_CHECK_VALID_CPP_FLAG], [ | ||||
|   AC_MSG_CHECKING([m4_default([$2], [for valid flag in "$1"])]) | ||||
|   save_cppflags="$CPPFLAGS" | ||||
|   newflag="no" | ||||
|   for test_flag in $1; do | ||||
|     CPPFLAGS+=" ${test_flag}" | ||||
|     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ | ||||
|       newflag="$test_flag" | ||||
|       CPPFLAGS="$save_cppflags" | ||||
|       CPPFLAGS+=" ${test_flag}" | ||||
|       break; | ||||
|     ]) | ||||
|     CPPFLAGS="$save_cppflags" | ||||
|   done | ||||
|   AC_SUBST(CPPFLAGS) | ||||
|   AC_MSG_RESULT([$newflag in $CPPFLAGS]) | ||||
| ]) | ||||
|  | ||||
| # Check within a list of CXX-Flags for the first that is usable and | ||||
| # configure it | ||||
| #  - parameter: | ||||
| #     $1 = white-space separated list of alternative flags | ||||
| #     $2 = module name (optional, if different from id) | ||||
| AC_DEFUN([AX_CHECK_VALID_CXX_FLAG], [ | ||||
|   AC_MSG_CHECKING([m4_default([$2], [for valid flag in "$1"])]) | ||||
|   save_cxxflags="$CXXFLAGS" | ||||
|   newflag="no" | ||||
|   for test_flag in $1; do | ||||
|     CXXFLAGS+=" ${test_flag}" | ||||
|     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ | ||||
|       newflag="$test_flag" | ||||
|       CXXFLAGS="$save_cxxflags" | ||||
|       CXXFLAGS+=" ${test_flag}" | ||||
|       break; | ||||
|     ]) | ||||
|     CXXFLAGS="$save_cxxflags" | ||||
|   done | ||||
|   AC_SUBST(CXXFLAGS) | ||||
|   AC_MSG_RESULT([$newflag in $CXXFLAGS]) | ||||
| ]) | ||||
|  | ||||
| # Check within a list of C-Flags for the first that is usable and | ||||
| # configure it | ||||
| #  - parameter: | ||||
| #     $1 = white-space separated list of alternative flags | ||||
| #     $2 = module name (optional, if different from id) | ||||
| AC_DEFUN([AX_CHECK_VALID_C_FLAG], [ | ||||
|   AC_MSG_CHECKING([m4_default([$2], [for valid flag in "$1"])]) | ||||
|   save_cflags="$CFLAGS" | ||||
|   newflag="no" | ||||
|   for test_flag in $1; do | ||||
|     CFLAGS+=" ${test_flag}" | ||||
|     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ | ||||
|       newflag="$test_flag" | ||||
|       CFLAGS="$save_cflags" | ||||
|       CFLAGS+=" ${test_flag}" | ||||
|       break; | ||||
|     ]) | ||||
|     CFLAGS="$save_cflags" | ||||
|   done | ||||
|   AC_SUBST(CFLAGS) | ||||
|   AC_MSG_RESULT([$newflag in $CFLAGS]) | ||||
| ]) | ||||
|  | ||||
| # Check within a list of LD-Flags for the first that is usable and | ||||
| # configure it | ||||
| #  - parameter: | ||||
| #     $1 = white-space separated list of alternative flags | ||||
| #     $2 = module name (optional, if different from id) | ||||
| AC_DEFUN([AX_CHECK_VALID_LD_FLAG], [ | ||||
|   AC_MSG_CHECKING([m4_default([$2], [for valid flag in "$1"])]) | ||||
|   save_ldflags="$LDFLAGS" | ||||
|   newflag="no" | ||||
|   for test_flag in $1; do | ||||
|     LDFLAGS+=" ${test_flag}" | ||||
|     AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ | ||||
|       newflag="$test_flag" | ||||
|       LDFLAGS="$save_ldflags" | ||||
|       LDFLAGS+=" ${test_flag}" | ||||
|       break; | ||||
|     ]) | ||||
|     LDFLAGS="$save_ldflags" | ||||
|   done | ||||
|   AC_SUBST(LDFLAGS) | ||||
|   AC_MSG_RESULT([$newflag in $LDFLAGS]) | ||||
| ]) | ||||
|  | ||||
| # Check if a package exists in the current distribution, if yes, require it | ||||
| # in debian/control.in append @DEB_DEPEND_IFEXISTS@ to Build-Depends | ||||
| #  - parameter: | ||||
| #     $1 = package name | ||||
| AC_DEFUN([AX_DEB_DEPEND_IFEXISTS], [ | ||||
|   pkg=$1 | ||||
|   if test -n "$(apt-cache policy -q ${pkg} 2> /dev/null)"; then | ||||
|      DEB_DEPEND_IFEXISTS+=", ${pkg}" | ||||
|   fi | ||||
|   AC_SUBST(DEB_DEPEND_IFEXISTS) | ||||
| ]) | ||||
							
								
								
									
										1014
									
								
								scripts/bootstrap.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1014
									
								
								scripts/bootstrap.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,1014 @@ | ||||
| #! /bin/bash | ||||
| ## @file | ||||
| ## | ||||
| ## $Id: bootstrap.sh 26 2015-09-19 08:42:48Z marc $ | ||||
| ## | ||||
| ## $Date: 2004/08/31 15:57:19 $ | ||||
| ## $Author: marc $ | ||||
| ## | ||||
| ## @copy © Marc Wäckerlin | ||||
| ## @license LGPL, see file <a href="license.html">COPYING</a> | ||||
| ## | ||||
| ## $Log: bootstrap.sh,v $ | ||||
| ## Revision 1.3  2004/08/31 15:57:19  marc | ||||
| ## added file header | ||||
| ## | ||||
|  | ||||
| MY_NAME=${0##*/} | ||||
| PROJECT_PATH=$(pwd) | ||||
| DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/} | ||||
| configure=0 | ||||
| build=0 | ||||
| buildtarget="distcheck" | ||||
| overwrite=0 | ||||
| rebuild=0 | ||||
| rebuildfiles=() | ||||
| while test $# -gt 0; do | ||||
|     case "$1" in | ||||
|         (--configure|-c) configure=1;; | ||||
|         (--build|-b) configure=1; build=1;; | ||||
|         (--target|-t) shift; configure=1; build=1; buildtarget="$1";; | ||||
|         (--overwrite|-o) overwrite=1;; | ||||
|         (--rebuild|-r) rebuild=1;; | ||||
|         (--rebuild-file|-f) shift; rebuildfiles+=("$1");; | ||||
|         (--version|-v) | ||||
|             echo "$Id: bootstrap.sh 26 2015-09-19 08:42:48Z marc $"; | ||||
|             exit;; | ||||
|         (--help|-h) less <<EOF | ||||
| SYNOPSIS | ||||
|  | ||||
|   ${MY_NAME} [--help|-h] [OPTIOS] | ||||
|  | ||||
| OPTIONS | ||||
|  | ||||
|   --configure, -c            call ./configure after initialization | ||||
|   --build, -b                build, also call ./configure && make distcheck | ||||
|   --target, -t <target>      same as -b, but specify target instead of distcheck | ||||
|   --overwrite, -o            overwrite all basic files (bootstrap.sh, m4-macros) | ||||
|   --rebuild, -r              force rebuild of generated files, even if modified | ||||
|   --rebuild-file, -f <file>  rebild specific file (can be added multiple times) | ||||
|   --help, -h                 show this help | ||||
|   --version, -v              show version and date of this file | ||||
|  | ||||
| DESCRIPTION | ||||
|  | ||||
|   Initializes your build environment, as far as neccessary. Reads your | ||||
|   used features from configure.ac, if that file exists, or creates a | ||||
|   configure.ac. Automatically copies or creates all required template | ||||
|   files. | ||||
|  | ||||
|   From your new and empty project's subversion path, call $0 to | ||||
|   initialize your build environment. | ||||
|  | ||||
|   Before you call ${MY_NAME} the very first time, edit ${0#/*}/AUTHORS | ||||
|   and replace it with your name (or the authors of your project, one | ||||
|   name each line, main developper and copyright holder on the first | ||||
|   line). | ||||
|  | ||||
|   The first call to ${MY_NAME} should be something like | ||||
|   ../bootstrap-build-environment/${MY_NAME} and not | ||||
|   ./${MY_NAME}. Actually, you called $0. | ||||
|  | ||||
|   In the way you called ${MY_NAME}, it has detected | ||||
|   ${DEFAULT_PROJECT_NAME} as the project name for your project in | ||||
|   ${PROJECT_PATH}. In the first run, you should call ${MY_NAME} from a | ||||
|   checked out the bootstrap-build-environment from | ||||
|   https://dev.marc.waeckerlin.org/, and the path from where you call | ||||
|   ${MY_NAME} (which is actually ${PROJECT_PATH}) should be the path to | ||||
|   your newly created project. Please note that your project must be a | ||||
|   checked out subversion repository, since this build environment | ||||
|   relies on subversion. | ||||
|  | ||||
|   Example for an initial run, where your new projet is stored in | ||||
|   subversion on svn:/path/to/your/new-project: | ||||
|  | ||||
|     cd ~/svn | ||||
|     svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\ | ||||
|            bootstrap-build-environment | ||||
|     svn co svn:/path/to/your/new-project/trunk new-project | ||||
|     cd new-project | ||||
|     ../bootstrap-build-environment/bootstrap.sh | ||||
|  | ||||
| RUNNING | ||||
|  | ||||
|   If you run ${MY_NAME}, it first generates the necessary files (see | ||||
|   below), then first runs make distclean if a makefile exists. After | ||||
|   this it calles aclocal, libtoolize, automake, autoconf and | ||||
|   optionally ./configure. | ||||
|  | ||||
| GENERATED FILES | ||||
|  | ||||
|   This script copies the following files into your project environment: | ||||
|     * ${MY_NAME} | ||||
|     * ax_init_standard_project.m4 - auxiliary macro definition file | ||||
|     * ax_cxx_compile_stdcxx_11.m4 - auxiliary macro definition file | ||||
|     * ax_check_qt.m4 - auxiliary macro definition file | ||||
|     * resolve-debbuilddeps.sh - script to install debian package dependencies | ||||
|     * resolve-rpmbuilddeps.sh - script to install RPM package dependencies | ||||
|     * build-resource-file.sh - build resource.qrc file from a resource directory | ||||
|     * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle | ||||
|     * AUTHORS - replace your name in AUTHORS before first run | ||||
|     * NEWS - empty file add your project's news | ||||
|     * README - add project description (first line is header, followed by an empty line) | ||||
|     * configure.ac - global configuration file template | ||||
|     * makefile.am - global makefile template | ||||
|     * src/makefile.am - if you enabled AX_USE_CXX | ||||
|     * src/version.hxx - if you enabled AX_USE_CXX | ||||
|     * src/version.cxx - if you enabled AX_USE_CXX | ||||
|     * html/makefile.am - if you enabled AX_BUILD_HTML | ||||
|     * scripts/makefile.in - if you enabled AX_USE_SCRIPTS | ||||
|     * doc/makefile.am - if you enabled AX_USE_DOXYGEN | ||||
|     * doc/doxyfile.in - if you enabled AX_USE_DOXYGEN | ||||
|     * test/makefile.am - if you enabled AX_USE_CPPUNIT | ||||
|     * examples/makefile.am - if you enabled AX_BUILD_EXAMPLES | ||||
|     * debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/control.in - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/docs - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/${DEFAULT_PROJECT_NAME}.install - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/${DEFAULT_PROJECT_NAME}.dirs - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/${DEFAULT_PROJECT_NAME}-dev.install - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/${DEFAULT_PROJECT_NAME}-dev.dirs - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/rules - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * debian/compat - if you enabled AX_USE_DEBIAN_PACKAGING | ||||
|     * ${DEFAULT_PROJECT_NAME}.spec.in - if you enable AX_USE_RPM_PACKAGING | ||||
|     * src/${DEFAULT_PROJECT_NAME}.pc.in - if you enabled AX_USE_LIBTOOL | ||||
|  | ||||
| REBUILDING FILES | ||||
|  | ||||
|   To rebuild all these files, just run "${MY_NAME} -r". | ||||
|  | ||||
|   To copy only the files provided by this package, that means those | ||||
|   files you must never change, that means to update the build system | ||||
|   to the latest release, run "${MY_NAME} -o" | ||||
|  | ||||
|   You can also rebuild a list of singleany list of specific file files | ||||
|   by adding option "${MY_NAME} -f <file>" to rebuild file | ||||
|   "<file>". You can add option "-f" more than once. | ||||
|  | ||||
| FILES TO EDIT | ||||
|  | ||||
|   After creation of the files, you can edit them according to your | ||||
|   needs. Please don't forget to redo your edits after rebuilding a | ||||
|   file. Most files don't even need to be edited, they work out of the | ||||
|   box. | ||||
|  | ||||
|   The following files normally require editing: | ||||
|     * AUTHORS | ||||
|     * NEWS | ||||
|     * README | ||||
|     * configure.ac | ||||
|     * src/makefile.am | ||||
|     * html/makefile.am | ||||
|     * test/makefile.am | ||||
|     * examples/makefile.am | ||||
|  | ||||
| FILE DEPENDENCIES | ||||
|  | ||||
|   You should rebuild (see above) the files, whenever you change the | ||||
|   configuration a dependent, i.e.: | ||||
|  | ||||
|     * test/makefile.am depends on AX_USE_LIBTOOL | ||||
|     * html/makefile.am depends on AX_BUILD_HTML | ||||
|     * doc/doxyfile.in depends on AX_BUILD_EXAMPLES | ||||
|     * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT, | ||||
|       AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL | ||||
|     * debian/${DEFAULT_PROJECT_NAME}.install depends on AX_USE_LIBTOOL | ||||
|     * debian/${DEFAULT_PROJECT_NAME}.dirs depends on AX_USE_LIBTOOL | ||||
|     * debian/${DEFAULT_PROJECT_NAME}-dev.install depends on AX_USE_LIBTOOL | ||||
|     * debian/${DEFAULT_PROJECT_NAME}-dev.dirs depends on AX_USE_LIBTOOL | ||||
|     * ${DEFAULT_PROJECT_NAME}.spec.in depends on AX_USE_RPM_PACKAGING, | ||||
|       AX_USE_LIBTOOL, AX_CHECK_QT, AX_REQUIRE_QT, AX_CXX_QT, AX_USE_CPPUNIT | ||||
|  | ||||
| FILES | ||||
|  | ||||
|   * AUTHORS:      First line is the main author and used in Debian and RPM | ||||
|                   packaging, so there must be a GPG key that matches | ||||
|                   to this line. | ||||
|   * NEWS:         File to add project news. | ||||
|   * README:       First line is a short description of your project, then an | ||||
|                   empty line must follow. All remaining lines are a | ||||
|                   long description of your project. this information | ||||
|                   is copied, e.g. in Debian or RPM packages. In C++ | ||||
|                   <ou can access the readme by calling | ||||
|                   ${DEFAULT_PROJECT_NAME}::description(). | ||||
|   * ChangeLog:    Your changelog is automatically maintained from | ||||
|                   subversion history, using svn2cl. You don't need to | ||||
|                   care about. | ||||
|   * configure.ac: This file becomes very short and simple. You provide | ||||
|                   the project name, the major and minor version. The | ||||
|                   least version number is automatically taken from | ||||
|                   subversion's revision, so every checkin | ||||
|                   automatically increments the least version | ||||
|                   number. The following macros are supported: | ||||
|       * Enable C++: AX_USE_CXX | ||||
|       * Enable LibTool library creation: AX_USE_LIBTOOL | ||||
|       * Enable Scripts: AX_USE_SCRIPTS | ||||
|       * Enable Doxygen documentation generation: AX_USE_DOXYGEN | ||||
|       * Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING | ||||
|       * Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING | ||||
|       * Enable C++ testing using CppUnit: AX_USE_CPPUNIT | ||||
|       * Enable C++ examples, i.e. for libraries: AX_BUILD_EXAMPLES | ||||
|       * Check for C++11 support: AX_CXX_COMPILE_STDCXX_11 (see ax_cxx_compile_stdcxx_11.m4) | ||||
|       * Require a QT module: AX_REQUIRE_QT (see ax_check_qt.m4) | ||||
|       * Optionally use a QT module: AX_CHECK_QT  (see ax_check_qt.m4) | ||||
|       * Require a module: AX_PKG_REQUIRE (see ax_init_standard_project.m4) | ||||
|       * Check for an optional module: AX_PKG_CHECK (see ax_init_standard_project.m4) | ||||
|  | ||||
| EXAMPLES: src/makefile.am in a QT project | ||||
|  | ||||
|   In this example, you wrote the following files: | ||||
|     * ${DEFAULT_PROJECT_NAME}.hxx - Qt Header file, passed to moc | ||||
|     * ${DEFAULT_PROJECT_NAME}.cxx - C++ file containing main() | ||||
|     * ${DEFAULT_PROJECT_NAME}.ui - UI file | ||||
|  | ||||
|   All rules are implicitely added, all you need to do is to add the | ||||
|   following definitions, most lines are generic: | ||||
|  | ||||
| bin_PROGRAMS = ${DEFAULT_PROJECT_NAME} | ||||
| ${DEFAULT_PROJECT_NAME}_MOCFILES = moc_${DEFAULT_PROJECT_NAME}.cxx | ||||
| ${DEFAULT_PROJECT_NAME}_UIFILES = ui_${DEFAULT_PROJECT_NAME}.hxx | ||||
| ${DEFAULT_PROJECT_NAME}_SOURCES = version.cxx version.hxx ${DEFAULT_PROJECT_NAME}.cxx ${DEFAULT_PROJECT_NAME}_MOCFILES ${DEFAULT_PROJECT_NAME}_UIFILES | ||||
| BUILT_SOURCES = \${${DEFAULT_PROJECT_NAME}_MOCFILES} \${${DEFAULT_PROJECT_NAME}_UIFILES} | ||||
| EXTRA_DIST = \${${DEFAULT_PROJECT_NAME}_MOCFILES:moc_%.cxx=%.hxx} \${${DEFAULT_PROJECT_NAME}_UIFILES:ui_%.hxx=%.ui} | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
|             exit;; | ||||
|         (*) break;; | ||||
|     esac | ||||
|     shift; | ||||
| done | ||||
|  | ||||
|  | ||||
| HEADER='## @id '"\$Id\$"' | ||||
| ## | ||||
| ## This file has been added: | ||||
| ##  - by '${MY_NAME}' | ||||
| ##  -  on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' | ||||
| ## Feel free to change it or even remove and rebuild it, up to your needs | ||||
| ## | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| ' | ||||
|  | ||||
| CHEADER='/** @id '"\$Id\$"' | ||||
|  | ||||
|    This file has been added: | ||||
|      - by '${MY_NAME}' | ||||
|      - on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' | ||||
|  | ||||
| */ | ||||
| //       1         2         3         4         5         6         7         8 | ||||
| // 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| ' | ||||
|  | ||||
| notice() { | ||||
|     echo -e "\e[1;33m$*\e[0m" | ||||
| } | ||||
|  | ||||
| run() { | ||||
|     check=1 | ||||
|     while test $# -gt 0; do | ||||
|         case "$1" in | ||||
|             (--no-check) check=0;; | ||||
|             (*) break;; | ||||
|         esac | ||||
|         shift; | ||||
|     done | ||||
|     echo -en "\e[1m-> running:\e[0m $* ..." | ||||
|     result=$($* 2>&1) | ||||
|     res=$? | ||||
|     if test $res -ne 0; then | ||||
|         if test $check -eq 1; then | ||||
|             echo -e " \e[31merror\e[0m" | ||||
|             echo -e "\e[1m*** Failed with return code: $res\e[0m" | ||||
|             if test -n "$result"; then | ||||
|                 echo "$result" | ||||
|             fi | ||||
|             exit 1 | ||||
|         else | ||||
|             echo -e " \e[33mignored\e[0m" | ||||
|         fi | ||||
|     else | ||||
|         echo -e " \e[32msuccess\e[0m" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| testtag() { | ||||
|     local IFS="|" | ||||
|     egrep -q '^ *'"($*)" configure.ac | ||||
| } | ||||
|  | ||||
| contains() { | ||||
|     local e | ||||
|     for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done | ||||
|     return 1 | ||||
| } | ||||
|  | ||||
| checkdir() { | ||||
|     if ! test -d "$1"; then # create path | ||||
|         run mkdir -p "$1" | ||||
|         run svn add "$1" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| checkfile() { | ||||
|     exists=0 | ||||
|     if test -f "$1"; then | ||||
|         exists=1 | ||||
|     fi | ||||
|     test $exists -eq 1 | ||||
| } | ||||
|  | ||||
| to() { | ||||
|     while test $# -gt 0; do | ||||
|         mode="u=rw,g=rw,o=r" | ||||
|         case "$1" in | ||||
|             (--condition) shift # test for a tag, abort if not set | ||||
|                 if ! testtag "$1"; then | ||||
|                     return | ||||
|                 fi;; | ||||
|             (--mode) shift # test for a tag, abort if not set | ||||
|                 mode="$1";; | ||||
|             (*) break;; | ||||
|         esac | ||||
|         shift; | ||||
|     done | ||||
|     if checkfile "$1" && test $rebuild -eq 0 -o "$1" = "configure.ac" \ | ||||
|         && ! contains "$1" "${rebuildfiles[@]}"; then | ||||
|         # file already exists and must not be rebuilt | ||||
|         return 1 | ||||
|     fi | ||||
|     checkdir "$(dirname ${1})" | ||||
|     echo -en "\e[1m-> generating:\e[0m $1 ..." | ||||
|     result=$(cat > "$1" 2>&1) | ||||
|     res=$? | ||||
|     if test $res -ne 0; then | ||||
|         echo -e " \e[31merror\e[0m" | ||||
|         echo -e "\e[1m*** Failed with return code: $res\e[0m" | ||||
|         if test -n "$result"; then | ||||
|             echo "$result" | ||||
|         fi | ||||
|         exit 1 | ||||
|     else | ||||
|         echo -e " \e[32msuccess\e[0m" | ||||
|     fi | ||||
|     chmod $mode $1 | ||||
|     if test $exists -eq 0; then | ||||
|         run svn add "$1" | ||||
|         run svn propset svn:keywords "Id" "$1" | ||||
|     fi | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
| copy() { | ||||
|     if  checkfile "$1" && test $overwrite -eq 0 \ | ||||
|         && ! contains "$1" "${rebuildfiles[@]}"; then | ||||
|         # file already exists and must not be rebuilt | ||||
|         return | ||||
|     fi | ||||
|     run cp "${0%/*}/$1" "$1" | ||||
|     if test $exists -eq 0; then | ||||
|         run svn add "$1" | ||||
|         run svn propset svn:keywords "Id" "$1" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| doxyreplace() { | ||||
|     echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..." | ||||
|     if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then | ||||
|         echo -e " \e[32msuccess\e[0m" | ||||
|     else | ||||
|         echo -e " \e[31merror\e[0m" | ||||
|         echo -e "\e[1m**** command: $0 $*\e[0m" | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| doxyadd() { | ||||
|     echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..." | ||||
|     if sed -i '/^'"$1"' *=/a'"$1"' += '"$2" doc/doxyfile.in; then | ||||
|         echo -e " \e[32msuccess\e[0m" | ||||
|     else | ||||
|         echo -e " \e[31merror\e[0m" | ||||
|         echo -e "\e[1m**** command: $0 $*\e[0m" | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| # Initialize the environment: | ||||
| copy ${MY_NAME} | ||||
| copy ax_init_standard_project.m4 | ||||
| copy ax_cxx_compile_stdcxx_11.m4 | ||||
| copy ax_check_qt.m4 | ||||
| copy resolve-debbuilddeps.sh | ||||
| copy resolve-rpmbuilddeps.sh | ||||
| copy build-resource-file.sh | ||||
| copy mac-create-app-bundle.sh | ||||
| AUTHOR=$(gpg -K  | sed -n 's,uid *,,p' | sort | head -1) | ||||
| if test -z "${AUTHOR}"; then | ||||
|     AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>" | ||||
| fi | ||||
| to AUTHORS <<EOF && notice "please edit AUTHORS" | ||||
| $AUTHOR | ||||
| EOF | ||||
| to NEWS <<EOF && notice "please edit NEWS" | ||||
| $(date) created ${DEFAULT_PROJECT_NAME} | ||||
| EOF | ||||
| to README <<EOF && notice "please edit README" | ||||
| ${DEFAULT_PROJECT_NAME} | ||||
|  | ||||
| add description for ${DEFAULT_PROJECT_NAME} | ||||
| EOF | ||||
| to configure.ac <<EOF && \ | ||||
|     ( notice "please edit configure.ac, then rerun $0"; exit 0 ) | ||||
| ${HEADER}m4_define(x_package_name, ${DEFAULT_PROJECT_NAME}) # project's name | ||||
| m4_define(x_major, 0) # project's major version | ||||
| m4_define(x_minor, 0) # project's minor version | ||||
| m4_include(ax_init_standard_project.m4) | ||||
| AC_INIT(x_package_name, x_version, x_bugreport, x_package_name) | ||||
| AM_INIT_AUTOMAKE([1.9 tar-pax]) | ||||
| AX_INIT_STANDARD_PROJECT | ||||
|  | ||||
| # requirements, uncomment, what you need: | ||||
| #AX_USE_CXX | ||||
| #AX_USE_LIBTOOL | ||||
| #AX_USE_SCRIPTS | ||||
| #AX_USE_DOXYGEN | ||||
| #AX_USE_DEBIAN_PACKAGING | ||||
| #AX_USE_RPM_PACKAGING | ||||
| #AX_USE_CPPUNIT | ||||
| #AX_BUILD_EXAMPLES | ||||
| #AX_BUILD_HTML | ||||
|  | ||||
| # qt features, uncomment, what you need: | ||||
| #AX_CHECK_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) | ||||
| #AX_REQUIRE_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) | ||||
| #AX_QT_NO_KEYWORDS | ||||
|  | ||||
| # create output | ||||
| AC_OUTPUT | ||||
| EOF | ||||
|  | ||||
| PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac) | ||||
| SAVEIFS="$IFS" | ||||
| IFS="-" PackageName=( $PACKAGE_NAME ) | ||||
| IFS="$SAVEIFS" | ||||
| PackageName=${PackageName[*]^} | ||||
| PackageName=${PackageName// /} | ||||
|  | ||||
| if ! testtag "AX_CHECK_QT" configure.ac && \ | ||||
|    ! testtag "AX_REQUIRE_QT" configure.ac; then | ||||
|     echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \ | ||||
|         to --condition AX_USE_CXX src/makefile.am | ||||
| elif ! test -e src/makefile.am; then | ||||
|     to --condition AX_USE_CXX src/makefile.am <<EOF | ||||
| ${HEADER}bin_PROGRAMS = ${PACKAGE_NAME} | ||||
|  | ||||
| ## required to enable the translation feature | ||||
| LANGUAGE_FILE_BASE = ${PACKAGE_NAME} | ||||
|  | ||||
| ## list here the Qt plugins your project depends on | ||||
| ## required to build Mac OS-X app-bundle | ||||
| QT_PLUGINS = iconengines imageformats platforms | ||||
|  | ||||
| #### enable if you deliver a KDE/Gnome desktop file | ||||
| #applicationsdir = ${datarootdir}/applications | ||||
| #dist_applications_DATA = ${PACKAGE_NAME}.desktop | ||||
|  | ||||
| #### enable (ev. instead of bin_PROGRAMS) if you build a library | ||||
| #lib_LTLIBRARIES = ${PACKAGE_NAME}.la | ||||
| #${PACKAGE_NAME}_la_SOURCES = libmain.cxx version.cxx | ||||
| ## noop to prevent: | ||||
| ## «src/makefile.am: error: object 'version.\$(OBJEXT)' created both with | ||||
| ## libtool and without» | ||||
| #${PACKAGE_NAME}_la_CXXFLAGS = \$(AM_CXXFLAGS) | ||||
|  | ||||
| ## list headers that are required for build, but that are not installed | ||||
| noinst_HEADERS = version.hxx | ||||
|  | ||||
| ## list all %.hxx files with Q_OBJECT as moc_%.cxx | ||||
| ${PACKAGE_NAME//-/_}_MOCFILES = moc_${PACKAGE_NAME}.cxx | ||||
|  | ||||
| ## list all %.ui files as ui_%.hxx | ||||
| ${PACKAGE_NAME//-/_}_UIFILES = ui_${PACKAGE_NAME}.hxx | ||||
|  | ||||
| ## list all %.qrc resource files as qrc_%.cxx | ||||
| ## note: if there exists a directory %, the file %.qrc is generated from that | ||||
| ${PACKAGE_NAME//-/_}_RESOURCES =  qrc_languages.cxx # qrc_resources.cxx | ||||
|  | ||||
| ## list all final translation files, list all supported languages here | ||||
| ${PACKAGE_NAME//-/_}_TRANSLATIONS = \${LANGUAGE_FILE_BASE}_en.qm	\\ | ||||
|      \${LANGUAGE_FILE_BASE}_de.qm \\ | ||||
|      \${LANGUAGE_FILE_BASE}_fr.qm \\ | ||||
|      \${LANGUAGE_FILE_BASE}_it.qm | ||||
|  | ||||
| ## list all C++ files that need translation | ||||
| ${PACKAGE_NAME//-/_}_TR_FILES = main.cxx version.cxx | ||||
|  | ||||
| ## automatic assembly, no need to change | ||||
| ${PACKAGE_NAME//-/_}_SOURCES = \${${PACKAGE_NAME//-/_}_TR_FILES} \${BUILT_SOURCES} | ||||
|  | ||||
| ## automatic assembly, no need to change | ||||
| BUILT_SOURCES = \${${PACKAGE_NAME//-/_}_MOCFILES} \ | ||||
|                 \${${PACKAGE_NAME//-/_}_UIFILES} \ | ||||
|                 \${${PACKAGE_NAME//-/_}_TRANSLATIONS} \ | ||||
|                 \${${PACKAGE_NAME//-/_}_RESOURCES} | ||||
|  | ||||
| ## automatic assembly, no need to change | ||||
| EXTRA_DIST_TR = \${${PACKAGE_NAME//-/_}_MOCFILES:moc_%.cxx=%.hxx} \ | ||||
|                 \${${PACKAGE_NAME//-/_}_UIFILES:ui_%.hxx=%.ui} | ||||
|  | ||||
| ## automatic assembly, no need to change | ||||
| ## except: adapt the pre-delivered qt_%.qm list (language files you copy from qt | ||||
| EXTRA_DIST = \${EXTRA_DIST_TR} \ | ||||
|              \${${PACKAGE_NAME//-/_}_RESOURCES:qrc_%.cxx:%.qrc} \ | ||||
|              \${${PACKAGE_NAME//-/_}_TRANSLATIONS:%.qm=%.ts} \ | ||||
|              qt_de.qm qt_fr.qm | ||||
|  | ||||
| ## automatic assembly, no need to change | ||||
| LANGUAGE_FILES = \${EXTRA_DIST_TR} \${${PACKAGE_NAME//-/_}_TR_FILES} | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
|     to --condition AX_USE_CXX src/main.cxx <<EOF | ||||
| ${CHEADER}#include <${PACKAGE_NAME}.hxx> | ||||
| #include <QApplication> | ||||
| #include <QCommandLineParser> | ||||
| #include <iostream> | ||||
|  | ||||
| int main(int argc, char *argv[]) try { | ||||
|   QApplication a(argc, argv); | ||||
|   QCommandLineParser parser; | ||||
|   parser.addHelpOption(); | ||||
|   parser.process(a); | ||||
|   QStringList scripts(parser.positionalArguments()); | ||||
|   ${PackageName} w; | ||||
|   w.show(); | ||||
|   return a.exec(); | ||||
|  } catch (std::exception &x) { | ||||
|   std::cerr<<"**** error: "<<x.what()<<std::endl; | ||||
|   return 1; | ||||
|  } | ||||
| EOF | ||||
|     to --condition AX_USE_CXX src/${PACKAGE_NAME}.hxx <<EOF | ||||
| ${CHEADER}#ifndef ${PackageName^^}_HXX | ||||
| #define ${PackageName^^}_HXX | ||||
|  | ||||
| #include <QMainWindow> | ||||
| #include <ui_${PACKAGE_NAME}.hxx> | ||||
|  | ||||
| /// Main Window | ||||
| /** Main window for ${PACKAGE_NAME} */ | ||||
| class ${PackageName}: public QMainWindow, protected Ui::${PackageName} { | ||||
|     Q_OBJECT; | ||||
|   public: | ||||
|     explicit ${PackageName}(QWidget *parent = 0): QMainWindow(parent) { | ||||
|       setupUi(this); | ||||
|     } | ||||
|     virtual ~${PackageName}() {} | ||||
| }; | ||||
|  | ||||
| #endif | ||||
| EOF | ||||
|     to --condition AX_USE_CXX src/${PACKAGE_NAME}.ui <<EOF | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | ||||
|  <class>${PackageName}</class> | ||||
|  <widget class="QMainWindow" name="${PackageName}"> | ||||
|   <property name="geometry"> | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
|     <y>0</y> | ||||
|     <width>800</width> | ||||
|     <height>600</height> | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>${PackageName}</string> | ||||
|   </property> | ||||
|   <widget class="QWidget" name="centralwidget"/> | ||||
|   <widget class="QMenuBar" name="menubar"> | ||||
|    <property name="geometry"> | ||||
|     <rect> | ||||
|      <x>0</x> | ||||
|      <y>0</y> | ||||
|      <width>800</width> | ||||
|      <height>22</height> | ||||
|     </rect> | ||||
|    </property> | ||||
|   </widget> | ||||
|   <widget class="QStatusBar" name="statusbar"/> | ||||
|  </widget> | ||||
|  <resources/> | ||||
|  <connections/> | ||||
| </ui> | ||||
| EOF | ||||
|     to --condition AX_USE_CXX src/languages.qrc <<EOF | ||||
| <RCC> | ||||
|     <qresource prefix="/language"> | ||||
|         <file>${PACKAGE_NAME}_de.qm</file> | ||||
|         <file>${PACKAGE_NAME}_fr.qm</file> | ||||
|         <file>${PACKAGE_NAME}_it.qm</file> | ||||
|         <file>${PACKAGE_NAME}_en.qm</file> | ||||
|     </qresource> | ||||
| </RCC> | ||||
| EOF | ||||
| fi | ||||
| to --condition AX_USE_CXX src/version.hxx <<EOF | ||||
| /*! @file | ||||
|  | ||||
|     @id \$Id\$ | ||||
| */ | ||||
| //       1         2         3         4         5         6         7         8 | ||||
| // 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| namespace NAMESPACE { | ||||
|   /// get package string which consists of package name and package version | ||||
|   std::string package_string(); | ||||
|   /// get package name | ||||
|   std::string package_name(); | ||||
|   /// get package version | ||||
|   std::string version(); | ||||
|   /// get code build date | ||||
|   std::string build_date(); | ||||
|   /// get author, i.e. copyright holder | ||||
|   std::string author(); | ||||
|   /// get short package description (1st line of README) | ||||
|   std::string description(); | ||||
|   /// get long package description (starting at 3rd line in README) | ||||
|   std::string readme(); | ||||
|   /// get package logo file name | ||||
|   std::string logo(); | ||||
|   /// get package icon file name | ||||
|   std::string icon(); | ||||
|   /// used for <code>what filename</code> | ||||
|   extern const std::string WHAT; | ||||
|   /// used for <code>ident filename</code> | ||||
|   extern const std::string IDENT; | ||||
| } | ||||
| EOF | ||||
| to --condition AX_USE_CXX src/version.cxx <<EOF | ||||
| /*! @file | ||||
|  | ||||
|     @id $Id\$ | ||||
| */ | ||||
| //       1         2         3         4         5         6         7         8 | ||||
| // 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| namespace NAMESPACE { | ||||
|   std::string package_string() { | ||||
|     return PACKAGE_STRING; | ||||
|   } | ||||
|   std::string package_name() { | ||||
|     return PACKAGE_NAME; | ||||
|   } | ||||
|   std::string version() { | ||||
|     return PACKAGE_VERSION; | ||||
|   } | ||||
|   std::string build_date() { | ||||
|     return BUILD_DATE; | ||||
|   } | ||||
|   std::string author() { | ||||
|     return AUTHOR; | ||||
|   } | ||||
|   std::string description() { | ||||
|     return DESCRIPTION; | ||||
|   } | ||||
|   std::string readme() { | ||||
|     return README; | ||||
|   } | ||||
|   std::string logo() { | ||||
|     return PROJECT_LOGO; | ||||
|   } | ||||
|   std::string icon() { | ||||
|     return PROJECT_ICON; | ||||
|   } | ||||
|   const std::string WHAT("#(@) " PACKAGE_STRING); | ||||
|   const std::string IDENT("\$Id: " PACKAGE_STRING); | ||||
| } | ||||
| EOF | ||||
| echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_SCRIPTS scripts/makefile.am | ||||
| echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_DOXYGEN doc/makefile.am | ||||
| to --condition AX_USE_CPPUNIT test/makefile.am <<EOF | ||||
| ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src | ||||
| AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs | ||||
| LDADD = -l${PACKAGE_NAME#lib} | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| to --condition AX_BUILD_EXAMPLES examples/makefile.am <<EOF | ||||
| ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src | ||||
| AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs | ||||
| LDADD = -l${PACKAGE_NAME#lib} | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| to --condition AX_BUILD_HTML html/makefile.am <<EOF | ||||
| ${HEADER}EXTRA_DIST = \${www_DATA} | ||||
|  | ||||
| wwwdir = \${pkgdatadir}/html | ||||
| www_DATA =  | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| if testtag AX_USE_DOXYGEN; then | ||||
|     if ! checkfile doc/doxyfile.in || \ | ||||
|         contains doc/doxyfile.in "${rebuildfiles[@]}"; then | ||||
|         run doxygen -g doc/doxyfile.in | ||||
|         if test $exists -eq 0; then | ||||
|             run svn add doc/doxyfile.in | ||||
|             run svn propset svn:keywords "Id" doc/doxyfile.in | ||||
|         fi | ||||
|         doxyreplace PROJECT_NAME "@PACKAGE_NAME@" | ||||
|         doxyreplace PROJECT_NUMBER "@PACKAGE_VERSION@" | ||||
|         doxyreplace PROJECT_BRIEF "@DESCRIPTION@" | ||||
|         doxyreplace PROJECT_LOGO "@PROJECT_LOGO@" | ||||
|         doxyreplace INLINE_INHERITED_MEMB YES | ||||
|         doxyreplace MULTILINE_CPP_IS_BRIEF YES | ||||
|         doxyreplace TAB_SIZE 2 | ||||
|         doxyreplace ALIASES '"id=\\par File-ID\\n"' | ||||
|         doxyadd ALIASES '"copy=\\par Copyright\\n"' | ||||
|         doxyadd ALIASES '"license=\\par License\\n"' | ||||
|         doxyadd ALIASES '"classmutex=\\par Reentrant:\\nAccess is locked with class static mutex @c "' | ||||
|         doxyadd ALIASES '"instancemutex=\\par Reentrant:\\nAccess is locked with per instance mutex @c "' | ||||
|         doxyadd ALIASES '"mutex=\\par Reentrant:\\nAccess is locked with mutex @c "' | ||||
|         doxyreplace ENABLE_PREPROCESSING YES | ||||
|         doxyreplace MACRO_EXPANSION YES | ||||
|         doxyadd PREDEFINED '"NAMESPACE=@PACKAGE_NAME@"' | ||||
|         doxyreplace BUILTIN_STL_SUPPORT YES | ||||
|         doxyreplace DISTRIBUTE_GROUP_DOC YES | ||||
|         doxyreplace EXTRACT_ALL YES | ||||
|         doxyreplace EXTRACT_PACKAGE YES | ||||
|         doxyreplace EXTRACT_PRIVATE YES | ||||
|         doxyreplace EXTRACT_STATIC YES | ||||
|         doxyreplace EXTRACT_LOCAL_CLASSES YES | ||||
|         doxyreplace EXTRACT_LOCAL_METHODS YES | ||||
|         doxyreplace EXTRACT_ANON_NSPACES YES | ||||
|         doxyreplace SHOW_GROUPED_MEMB_INC YES | ||||
|         doxyreplace SORT_MEMBERS_CTORS_1ST YES | ||||
|         doxyreplace WARN_IF_UNDOCUMENTED NO | ||||
|         doxyreplace WARN_LOGFILE doxygen.errors | ||||
|         doxyreplace INPUT "@top_srcdir@/src" | ||||
|         if testtag AX_USE_SCRIPTS; then | ||||
|             doxyadd INPUT "@top_srcdir@/scripts" | ||||
|         fi | ||||
|         if testtag AX_BUILD_HTML; then | ||||
|             doxyadd INPUT "@top_srcdir@/html" | ||||
|         fi | ||||
|         if testtag AX_USE_CPPUNIT; then | ||||
|             doxyadd INPUT "@top_srcdir@/test" | ||||
|         fi | ||||
|         doxyreplace FILE_PATTERNS '*.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.idl *.ddl *.odl *.h *.hh *.hxx *.hpp *.h++ *.cs *.d *.php *.php4 *.php5 *.phtml *.inc *.m *.markdown *.md *.mm *.dox *.py *.f90 *.f *.for *.tcl *.vhd *.vhdl *.ucf *.qsf *.as *.js *.wt' | ||||
|         doxyreplace RECURSIVE YES | ||||
|         doxyreplace EXCLUDE_PATTERNS "moc_* uic_* qrc_*" | ||||
|         if testtag AX_BUILD_EXAMPLES; then | ||||
|             doxyreplace EXAMPLE_PATH @top_srcdir@/examples | ||||
|         fi | ||||
|         doxyreplace EXAMPLE_RECURSIVE YES | ||||
|         doxyreplace FILTER_PATTERNS '*.wt=doxygen-webtester.sed' | ||||
|         doxyreplace SOURCE_BROWSER YES | ||||
|         doxyreplace INLINE_SOURCES YES | ||||
|         doxyreplace GENERATE_TESTLIST YES | ||||
|         doxyreplace GENERATE_TREEVIEW NO | ||||
|         doxyreplace SEARCHENGINE NO | ||||
|         doxyreplace GENERATE_HTML YES | ||||
|         doxyreplace GENERATE_LATEX NO | ||||
|         doxyreplace LATEX_BATCHMODE YES | ||||
|         doxyreplace LATEX_HIDE_INDICES YES | ||||
|         doxyreplace COMPACT_RTF YES | ||||
|         doxyreplace RTF_HYPERLINKS YES | ||||
|         doxyreplace GENERATE_TAGFILE "@PACKAGE_NAME@.doxytag" | ||||
|         doxyreplace HIDE_UNDOC_RELATIONS NO | ||||
|         doxyreplace HAVE_DOT YES | ||||
|         doxyreplace CLASS_GRAPH YES | ||||
|         doxyreplace TEMPLATE_RELATIONS YES | ||||
|         doxyreplace DOT_IMAGE_FORMAT svg | ||||
|         doxyreplace INTERACTIVE_SVG YES | ||||
|         doxyreplace DOT_TRANSPARENT YES | ||||
|     fi | ||||
| fi | ||||
| if testtag AX_USE_DEBIAN_PACKAGING; then | ||||
|     checkdir debian | ||||
|     to debian/changelog.in <<EOF | ||||
| @PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low | ||||
|  | ||||
|   * Please see ChangeLog of @PACKAGE@ | ||||
|  | ||||
|  -- @AUTHOR@  @BUILD_DATE@ | ||||
| EOF | ||||
|     BUILD_DEPENDS="debhelper, subversion, pkg-config, automake, libtool, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | qt4-default | qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)" | ||||
|     to debian/control.in <<EOF | ||||
| Source: @PACKAGE_NAME@ | ||||
| Priority: extra | ||||
| Maintainer: @AUTHOR@ | ||||
| Build-Depends: ${BUILD_DEPENDS} | ||||
|  | ||||
| Package: @PACKAGE_NAME@ | ||||
| Section: $(if testtag AX_USE_LIBTOOL; then echo  "libs"; fi) | ||||
| Architecture: any | ||||
| Depends: \${shlibs:Depends}, \${misc:Depends} | ||||
| Description: @DESCRIPTION@ | ||||
| @README_DEB@ | ||||
| $(      if testtag AX_USE_LIBTOOL; then | ||||
|             cat <<EOF2 | ||||
|  | ||||
| Package: @PACKAGE_NAME@-dev | ||||
| Section: libdevel | ||||
| Architecture: any | ||||
| Depends: @PACKAGE_NAME@ (= \${binary:Version}), ${BUILD_DEPENDS} | ||||
| Description: @DESCRIPTION@ - Development Package | ||||
| @README_DEB@ | ||||
| EOF2 | ||||
|           fi) | ||||
| EOF | ||||
|     to debian/docs <<EOF | ||||
| NEWS | ||||
| README | ||||
| EOF | ||||
|     to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF | ||||
| usr/lib/lib*.so.* | ||||
| EOF | ||||
|     to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}-dev.install <<EOF | ||||
| usr/include/* | ||||
| usr/lib/lib*.a | ||||
| usr/lib/lib*.so | ||||
| usr/lib/pkgconfig/* | ||||
| usr/lib/*.la | ||||
| usr/share/${PACKAGE_NAME} | ||||
| usr/share/doc/${PACKAGE_NAME}/html | ||||
| EOF | ||||
|     to --mode "u=rwx,g=rwx,o=rx" debian/rules <<EOF | ||||
| ${HEADER}%: | ||||
| 	dh \$@ | ||||
| EOF | ||||
|     echo 7 | to debian/compat | ||||
| fi | ||||
| to --condition AX_USE_RPM_PACKAGING ${PACKAGE_NAME}.spec.in <<EOF | ||||
| Summary: @DESCRIPTION@ | ||||
| Name: @PACKAGE_NAME@ | ||||
| Version: @VERSION@ | ||||
| Release: @BUILD_NUMBER@%{?dist} | ||||
| License: LGPL | ||||
| Group: $(if testtag AX_USE_LIBTOOL; then | ||||
|   echo Development/Libraries/C++; | ||||
| else | ||||
|   echo Applications/...; | ||||
| fi) | ||||
| Source0: %{name}-%{version}.tar.gz | ||||
| BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root | ||||
| BuildRequires: gnupg, subversion, automake, autoconf$( | ||||
|     if testtag AX_USE_DOXYGEN; then | ||||
|       echo -n ", doxygen"; | ||||
|     fi) | ||||
| %if 0%{?fedora} != 20 | ||||
| $(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: graphviz"; fi) | ||||
| %endif | ||||
| %if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} | ||||
| BuildRequires: pkgconfig, redhat-lsb$( | ||||
|     if testtag AX_USE_CPPUNIT; then | ||||
|       echo -n ", cppunit-devel"; | ||||
|     fi) | ||||
| %if ! ( 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} ) | ||||
| $(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: mscgen"; fi) | ||||
| $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt5-qtbase-devel, qt5-qttools, qt5-qtwebkit-devel"; fi) | ||||
| %else | ||||
| $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt-devel"; fi) | ||||
| %endif | ||||
| %else%if 0%{?suse_version} || 0%{?sles_version} | ||||
| BuildRequires: pkg-config, lsb-release$( | ||||
|     if testtag AX_USE_CPPUNIT; then | ||||
|       echo -n ", libcppunit-devel"; | ||||
|     fi) | ||||
| %if 0%{?suse_version} < 1200 ||  0%{?sles_version} < 1200 | ||||
| $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: libqt4-devel, qt4-x11-tools, libQtWebKit-devel"; fi) | ||||
| %else | ||||
| $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: libqt5-qtbase-devel, libqt5-qttools, libQt5WebKit5-devel"; fi) | ||||
| %endif | ||||
| %endif%endif | ||||
|  | ||||
| %description | ||||
| @README@ | ||||
| $(if testtag AX_USE_LIBTOOL; then | ||||
| echo | ||||
| echo This package contains only the shared libraries required at runtime. | ||||
| fi) | ||||
|  | ||||
|  | ||||
| %prep | ||||
| %setup -q | ||||
| ./configure --prefix=/usr \\ | ||||
|             --sysconfdir=/etc \\ | ||||
|             --docdir=/usr/share/doc/packages/@PACKAGE_NAME@ \\ | ||||
|             --libdir=/usr/%_lib | ||||
|  | ||||
| %build | ||||
| make | ||||
|  | ||||
| %install | ||||
| DESTDIR=\$RPM_BUILD_ROOT make install | ||||
|  | ||||
| %clean | ||||
| rm -rf \$RPM_BUILD_ROOT | ||||
|  | ||||
| %files | ||||
| %defattr(-,root,root,-) | ||||
| $(if testtag AX_USE_LIBTOOL; then | ||||
| echo '/usr/%_lib/@PACKAGE_NAME@.so.*' | ||||
| else | ||||
| echo '/usr/bin/*' | ||||
| fi) | ||||
| %doc | ||||
| $(if testtag AX_USE_LIBTOOL; then | ||||
|   cat <<EOF2 | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/AUTHORS | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/COPYING | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/ChangeLog | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/INSTALL | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/NEWS | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/README | ||||
| EOF2 | ||||
| else | ||||
|   echo '/usr/share/*' | ||||
| fi) | ||||
|  | ||||
| $(if testtag AX_USE_LIBTOOL; then | ||||
| cat <<EOF2 | ||||
| %package devel | ||||
| Summary: @DESCRIPTION@ | ||||
| Group: Development/Libraries/C++ | ||||
| Requires: @PACKAGE_NAME@ = @VERSION@ | ||||
|  | ||||
| %description devel | ||||
| @README@ | ||||
|  | ||||
| This Package contains all files required for developement. | ||||
|  | ||||
| %files devel | ||||
| %defattr(-,root,root,-) | ||||
| /usr/%_lib/@PACKAGE_NAME@.so | ||||
| /usr/%_lib/@PACKAGE_NAME@.a | ||||
| /usr/%_lib/@PACKAGE_NAME@.la | ||||
| /usr/%_lib/pkgconfig | ||||
| /usr/include/* | ||||
| %doc | ||||
| /usr/share/@PACKAGE_NAME@ | ||||
| /usr/share/doc/packages/@PACKAGE_NAME@/html | ||||
| EOF2 | ||||
| fi) | ||||
|  | ||||
| %changelog | ||||
|  | ||||
| EOF | ||||
| SUBDIRS="" | ||||
| for d in src test scripts doc examples html; do | ||||
|     test -d $d && SUBDIRS="${SUBDIRS} $d" | ||||
| done | ||||
| to makefile.am<<EOF | ||||
| ${HEADER}SUBDIRS =${SUBDIRS} | ||||
|  | ||||
| doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
| EOF | ||||
| to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF | ||||
| ${HEADER}prefix=@prefix@ | ||||
| exec_prefix=@exec_prefix@ | ||||
| libdir=\${exec_prefix}/lib | ||||
| includedir=\${prefix}/include | ||||
| translationsdir=@datadir@/@PACKAGE_NAME@/translations | ||||
|  | ||||
| Name: @PACKAGE_NAME@ | ||||
| Description: @DESCRIPTION@ | ||||
| Version: @VERSION@ | ||||
| Libs: -L\${libdir} -l${PACKAGE_NAME#lib} @LDFLAGS@ | ||||
| Cflags: -I\${includedir} @CPPFLAGS@ | ||||
| Requires: @PKG_REQUIREMENTS@ | ||||
| EOF | ||||
|  | ||||
| #### Cleanup If Makefile Exists #### | ||||
| if test -f makefile; then | ||||
|     run --no-check make distclean | ||||
| fi | ||||
|  | ||||
| #### Bootstrap Before Configure #### | ||||
| run --no-check svn2cl | ||||
| run aclocal | ||||
| if testtag AX_USE_LIBTOOL; then run libtoolize --force; fi | ||||
| run automake -a | ||||
| run autoconf | ||||
|  | ||||
| #### Run Configure If User Requires #### | ||||
| if test "$configure" -eq 1; then | ||||
|     ./configure $* | ||||
| fi | ||||
|  | ||||
| #### Run Make If User Requires #### | ||||
| if test "$build" -eq 1; then | ||||
|     make $buildtarget | ||||
| fi | ||||
							
								
								
									
										31
									
								
								scripts/build-resource-file.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								scripts/build-resource-file.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| #! /bin/bash -ex | ||||
|  | ||||
| ## @id $Id$ | ||||
|  | ||||
| ## build resource.qrc file from a resource directory | ||||
| ## | ||||
| ## Argument: $1: resource path (default: resources) | ||||
| ## Result: file named <resource-path>.qrc (default: resources.qrc) | ||||
| ## | ||||
| ## Call: | ||||
| ## | ||||
| ##   cd src | ||||
| ##   ../build-resource-file.sh | ||||
|  | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| RESOURCES=${1:-resources} | ||||
| TARGET=${RESOURCES}.qrc | ||||
|  | ||||
| test -d ${RESOURCES} | ||||
|  | ||||
| echo "<RCC>" > ${TARGET} | ||||
| for d in $(find resources -mindepth 1 -type d); do | ||||
|     echo "  <qresource prefix=\"${d#${RESOURCES}/}\">" >> ${TARGET} | ||||
|     for f in $(find $d -mindepth 1 -maxdepth 1 -type f); do | ||||
|         echo "    <file alias=\"${f##*/}\">$f</file>" >> ${TARGET} | ||||
|     done | ||||
|     echo "  </qresource>" >> ${TARGET} | ||||
| done | ||||
| echo "</RCC>" >> ${TARGET} | ||||
							
								
								
									
										103
									
								
								scripts/mac-create-app-bundle.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										103
									
								
								scripts/mac-create-app-bundle.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,103 @@ | ||||
| #!/bin/bash -ex | ||||
|  | ||||
| ## @id $Id$ | ||||
| ## | ||||
| ## Create Mac OS-X App Bundle from built file | ||||
| ## | ||||
| ## Parameters: | ||||
| ##  $1: name of the app-target | ||||
| ##  $2: name of the project | ||||
| ##  $3: installation source | ||||
| ## | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| if test "$(uname -s)" != "Darwin"; then | ||||
|     echo "**** ERROR: run on Mac OS-X: $0" | ||||
|     exit 1 | ||||
| fi | ||||
| test -n "$1" | ||||
| test -n "$2" | ||||
| test -d "$3" | ||||
| target="$(pwd)/${1}/Contents/MacOS" | ||||
|  | ||||
| # Step 1: create and fill app directory structure | ||||
| mkdir -p ${1}/Contents/{Resources,MacOS} | ||||
| ! test -d ${3}/bin || \ | ||||
|      find ${3}/bin -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/MacOS/ \; | ||||
| executablefile=$(ls -1 ${1}/Contents/MacOS/ | head -1) | ||||
| ! test -d ${3}/lib || \ | ||||
|     find ${3}/lib -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/MacOS/ \; | ||||
| ! test -d ${3}/share/${2} || \ | ||||
|     find ${3}/share/${2} -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/Resources/ \; | ||||
| ! test -d ${3}/share/${2} || rmdir ${3}/share/${2} | ||||
| ! test -d ${3}/share || \ | ||||
|     find ${3}/share -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/Resources/ \; | ||||
| ! test -d ${3}/bin || rmdir ${3}/bin | ||||
| ! test -d ${3}/lib || rmdir ${3}/lib | ||||
| ! test -d ${3}/share || rmdir ${3}/share | ||||
| ! test -d ${3} || \ | ||||
|     find ${3} -mindepth 1 -maxdepth 1 -exec mv {} ${1}/Contents/Resources/ \; | ||||
| ! test -d ${3} || rmdir ${3} | ||||
| ! test -d ${1}/tmp || rm -r ${1}/tmp | ||||
|  | ||||
| # Step 2: copy qt plugins, if necessary | ||||
| for f in ${QT_PLUGINS}; do | ||||
|     test -d ${target}/${f} \ | ||||
|         || cp -r ${QT_PLUGIN_PATH}/${f} ${target}/${f} \ | ||||
|         || exit 1 | ||||
| done | ||||
|  | ||||
| # Step 3: resolve all library dependencies | ||||
| found=1 | ||||
| oldpath="$(pwd)" | ||||
| while [ $found -ne 0 ]; do | ||||
|     found=0 | ||||
|     cd "${target}" | ||||
|     for file in $(find . -type f); do | ||||
|         for lib in $(otool -L ${file} | tail -n +2 \ | ||||
|             | egrep '/opt/local/|'"${HOME}" \ | ||||
|             | grep -v $file | awk '{print $1}'); do | ||||
|             found=1 | ||||
|             test -f ${lib##*/} \ | ||||
|                 || ( \ | ||||
|                 cp ${lib} . \ | ||||
|                 && chmod u+w ${lib##*/} \ | ||||
|                 ) \ | ||||
|                 || exit 1 | ||||
|             install_name_tool -change ${lib} \ | ||||
|                 @executable_path/${lib##*/} ${file} \ | ||||
|                 || exit 1 | ||||
|         done | ||||
|     done | ||||
| done | ||||
| cd ${oldpath} | ||||
|  | ||||
| # Step 4: if necessary, install qt_menu.nib | ||||
| if test -n "${QTDIR}"; then | ||||
|     MENU_NIB=$(find ${QTDIR} -name .svn -prune -o -name qt_menu.nib -print \ | ||||
|                | head -1) | ||||
|     if test -e "${MENU_NIB}"; then | ||||
|         rsync -r "${MENU_NIB}" ${1}/Contents/Resources/ | ||||
|         test -d ${1}/Contents/Resources/qt_menu.nib | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # Step 5: copy or create info.plist | ||||
| infoplist=$(find ${1}/Contents/Resources -name Info.plist) | ||||
| if test -f "${infoplist}"; then | ||||
|     mv "${infoplist}" ${1}/Contents/Info.plist | ||||
| else | ||||
|     cat > ${1}/Contents/Info.plist <<EOF | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|   <dict> | ||||
|     <key>CFBundleIdentifier</key> | ||||
|     <string>${2}</string> | ||||
|     <key>CFBundleExecutable</key> | ||||
|     <string>${executablefile##/}</string> | ||||
|   </dict> | ||||
| </plist> | ||||
| EOF | ||||
| fi | ||||
							
								
								
									
										18
									
								
								scripts/makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								scripts/makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| ## @id $Id$ | ||||
| ## | ||||
| ## This file has been added: | ||||
| ##  - by bootstrap.sh | ||||
| ##  -  on Tue, 03 November 2015 16:20:19 +0100 | ||||
| ## Feel free to change it or even remove and rebuild it, up to your needs | ||||
| ## | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| dist_pkgdata_DATA = ax_check_qt.m4 bootstrap.sh				\ | ||||
|                     resolve-rpmbuilddeps.sh				\ | ||||
|                     ax_cxx_compile_stdcxx_11.m4				\ | ||||
|                     build-resource-file.sh				\ | ||||
|                     ax_init_standard_project.m4				\ | ||||
|                     mac-create-app-bundle.sh resolve-debbuilddeps.sh | ||||
|  | ||||
| MAINTAINERCLEANFILES = makefile.in | ||||
							
								
								
									
										73
									
								
								scripts/resolve-debbuilddeps.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										73
									
								
								scripts/resolve-debbuilddeps.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| #! /bin/bash -ex | ||||
|  | ||||
| ## @id $Id$ | ||||
|  | ||||
| ## Resolve Debian Build Dependencies | ||||
| ## Installs all the required packages | ||||
| ## Call: ./resolve-debbuilddeps 'name of build schroot' | ||||
| ## e.g. call: ./resolve-debbuilddeps trusty_amd64 | ||||
|  | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| SCHROOTNAME="$1" | ||||
|  | ||||
| function install() { | ||||
|     if test -n "${SCHROOTNAME}"; then | ||||
|         if schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install $*; then | ||||
|             return 0 | ||||
|         fi | ||||
|     else | ||||
|         if apt-get -y install $*; then | ||||
|             return 0 | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
|  | ||||
| TO_INSTALL= | ||||
|  | ||||
| if test -e debian/control.in -a ! -e debian/control; then | ||||
|     for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do | ||||
|         if test -n "$(apt-cache policy -q ${f})" && ! dpkg -l "${f}"; then | ||||
|             TO_INSTALL+=" ${f}" | ||||
|         fi | ||||
|     done | ||||
|     trap "rm debian/control" INT TERM EXIT | ||||
|     sed 's,@DEB_DEPEND_IFEXISTS@,,g' debian/control.in | \ | ||||
|         sed 's,@[^@]*@, dummytext,g' > debian/control | ||||
| fi | ||||
|  | ||||
| if test -n "${SCHROOTNAME}"; then | ||||
|   schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install dpkg-dev | ||||
|   DEPS=$(schroot -c "${SCHROOTNAME}" -- dpkg-checkbuilddeps 2>&1 || true) | ||||
| else | ||||
|   apt-get -y install dpkg-dev | ||||
|   DEPS=$(dpkg-checkbuilddeps 2>&1 || true) | ||||
| fi | ||||
| DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}') | ||||
|  | ||||
| for pa in ${DEPS}; do | ||||
|     if test ${pa//|/} = ${pa}; then | ||||
|         TO_INSTALL+=" ${pa}" | ||||
|         continue; | ||||
|     fi | ||||
|     success=0 | ||||
|     for p in ${pa//|/ }; do | ||||
|         if install ${TO_INSTALL} ${p}; then | ||||
|             TO_INSTALL+=" ${p}" | ||||
|             success=1 | ||||
|             break | ||||
|         fi | ||||
|     done | ||||
|     if test ${success} -eq 0; then | ||||
|         echo "**** Error: Installation Failed: ${pa}" | ||||
|         exit 1 | ||||
|     fi | ||||
| done | ||||
|  | ||||
| if test -n "${TO_INSTALL}" && ! install ${TO_INSTALL}; then | ||||
|     echo "**** Error: Installation Failed: ${TO_INSTALL}" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| echo "**** Success: All Dependencies Resolved" | ||||
							
								
								
									
										34
									
								
								scripts/resolve-rpmbuilddeps.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								scripts/resolve-rpmbuilddeps.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| #! /bin/bash -ex | ||||
|  | ||||
| ## @id $Id$ | ||||
|  | ||||
| ## Resolve RPM Build Dependencies | ||||
| ## Installs all the required packages | ||||
| ## Call: ./resolve-rpmbuilddeps 'name of build schroot' | ||||
| ## e.g. call: ./resolve-rpmbuilddeps opensuse-13.2_x86_64 | ||||
|  | ||||
| ##       1         2         3         4         5         6         7         8 | ||||
| ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
| SCHROOTNAME="$1" | ||||
| PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac) | ||||
|  | ||||
| if test -n "${SCHROOTNAME}"; then | ||||
|     schroot -c ${SCHROOTNAME} -- ./bootstrap.sh -t dist | ||||
|     FILES=$(LANG= schroot -c ${SCHROOTNAME} -- rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec  2>&1 | sed -n 's, is needed by.*,,p') | ||||
|     if test -n "${FILES}"; then | ||||
|         schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FILES} || \ | ||||
|             schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FILES} || \ | ||||
|         schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FILES} | ||||
|     fi | ||||
| else | ||||
|     ./bootstrap.sh -t dist | ||||
|     FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p') | ||||
|     if test -n "${FILES}"; then | ||||
|         yum install -y ${FILES} || \ | ||||
|             zypper install -y ${FILES} || \ | ||||
|             dnf install -y ${FILES} | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| echo "**** Success: All Dependencies Resolved" | ||||
		Reference in New Issue
	
	Block a user