C++ Library containing a lot of needful things: Stack Trace, Command Line Parser, Resource Handling, Configuration Files, Unix Command Execution, Directories, Regular Expressions, Tokenizer, Function Trace, Standard Extensions.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
6.5 KiB
227 lines
6.5 KiB
# SYNOPSIS |
|
# |
|
# Check if a module exists: |
|
# AX_CXX_CHECK_QT([qt_prefix], [list-of-qt-modules], [optional-modules]) |
|
# |
|
# Abort if a module does not exist: |
|
# AX_CXX_REQUIRE_QT([qt_prefix], [list-of-qt-modules], [optional-modules]) |
|
# |
|
# DESCRIPTIONS |
|
# |
|
# qt_prefix |
|
# |
|
# Each call to AX_CXX_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 |
|
|
|
|
|
AC_DEFUN([AX_CXX_QT_TOOL], [ |
|
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} |
|
$1=${$1:-$(${PKG_CONFIG} --variable=$2_location QtCore)} |
|
$1=${$1:-$(${PKG_CONFIG} --variable=host_bins QtCore)/$2} |
|
if ! which "${$1%% *}" > /dev/null; then |
|
if which "$2" > /dev/null; then |
|
$1=$2 |
|
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_VALID_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]) |
|
]) |
|
|
|
AC_DEFUN([AX_CHECK_QT], [ |
|
qt_modules="$2" |
|
qt_modules_optional="$3" |
|
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_PLUGIN_PATH=${QTDIR}/share/qt5/plugins |
|
CPPFLAGS+=" ${[$1]5_CFLAGS}" |
|
MOC_FLAGS+=" -DHAVE_$1=1 ${[$1]5_CFLAGS}" |
|
CXXFLAGS+=" ${[$1]5_CFLAGS}" |
|
LIBS+=" ${[$1]5_LIBS}" |
|
PKG_REQUIREMENTS+=" ${qt_modules//Qt/Qt5}" |
|
if test -n "${qt_modules_optional}"; then |
|
PKG_CHECK_MODULES([$1]5_OPTIONAL, [${qt_modules_optional//Qt/Qt5}], [ |
|
CPPFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" |
|
MOC_FLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" |
|
CXXFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" |
|
LIBS+=" ${[$1]5_OPTIONAL_LIBS}" |
|
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_PLUGIN_PATH=${QTDIR}/share/qt/plugins |
|
CPPFLAGS+=" ${$1_CFLAGS}" |
|
MOC_FLAGS+=" -DHAVE_$1=1 ${$1_CFLAGS}" |
|
CXXFLAGS+=" ${$1_CFLAGS}" |
|
LIBS+=" ${$1_LIBS}" |
|
PKG_REQUIREMENTS+=" ${qt_modules}" |
|
if test -n "$3"; then |
|
PKG_CHECK_MODULES($1_OPTIONAL, [${qt_modules_optional}], [ |
|
CPPFLAGS+=" ${$1_OPTIONAL_CFLAGS}" |
|
MOC_FLAGS+=" ${$1_OPTIONAL_CFLAGS}" |
|
CXXFLAGS+=" ${$1_OPTIONAL_CFLAGS}" |
|
LIBS+=" ${$1_OPTIONAL_LIBS}" |
|
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_FLAG([-fPIC -fPIE], [position independent code flag]) |
|
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 [$][@] $< |
|
|
|
']) |
|
|
|
# SYNOPSIS |
|
# |
|
# AX_CXX_CHECK_QT([qt_prefix], [list-of-qt-modules], [optional-modules]) |
|
# |
|
# DESCRIPTIONS |
|
# |
|
# qt_prefix |
|
# |
|
# Each call to AX_CXX_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 |
|
|
|
AC_DEFUN([AX_REQUIRE_QT], [ |
|
AX_CHECK_QT([$1], [$2], [$3]) |
|
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" |
|
])
|
|
|