webperimental: killstack decides stack protects.
[freeciv.git] / m4 / qt5-darwin.m4
blob725fe4ab0e55adf72b2d1dc5afea929ad5b0a975
1 # Detect Qt5 headers and libraries and set flag variables for Mac OS X 10.10+
3 AC_DEFUN([FC_QT5_DARWIN],
5   AC_ARG_WITH([qt5_framework_bin],
6     AS_HELP_STRING([--with-qt5-framework-bin], [path to binares of Qt5 framework (MacOS X, autodetected if wasn't specified)]))
8   AC_CHECK_PROG([QTPATHS], [qtpaths], [qtpaths], [no])
10   if test "x$QTPATHS" != "xno" ; then
12     AC_MSG_CHECKING([Qt5 framework])
14     if test "x$qt5_framework_bin" = "x" ; then
15       qt5_framework_bin="$($QTPATHS --binaries-dir)"
16     fi
17     qt5_path="$($QTPATHS --install-prefix)"
19     if test "x$qt5_path" != "x" ; then
20       AC_LANG_PUSH([C++])
21       FC_QT5_DARWIN_COMPILETEST([$qt5_path])
22       if test "x$qt5_headers" = "xyes" ; then
23         FC_QT5_DARWIN_LINKTEST([$qt5_path])
24       else
25         fc_qt5_usable=false
26       fi
27       AC_LANG_POP([C++])
29       if test "x$qt5_libs" = "xyes" ; then
30         MOCCMD="$qt5_framework_bin/moc"
31         AS_IF([test -x $MOCCMD], [fc_qt5_usable=true], [fc_qt5_usable=false])
32       else
33         fc_qt5_usable=false
34       fi
35     fi
37     if test "x$fc_qt5_usable" = "xtrue" ; then
38       AC_MSG_RESULT([found])
39     else
40       AC_MSG_RESULT([not found])
41     fi
42   fi
45 dnl Test if Qt5 headers are found from given path
46 AC_DEFUN([FC_QT5_DARWIN_COMPILETEST],
48   CPPFADD=" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I$1/lib/QtWidgets.framework/Versions/5/Headers -I$1/lib/QtGui.framework/Versions/5/Headers -I$1/lib/QtCore.framework/Versions/5/Headers -I. -I$1/mkspecs/macx-clang -F$1/lib "
50   CPPFLAGS_SAVE="$CPPFLAGS"
51   CPPFLAGS="${CPPFLAGS}${CPPFADD}"
52   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QApplication>]],
53 [[int a; QApplication app(a, 0);]])],
54     [qt5_headers=yes
55      FC_QT5_CPPFLAGS="${FC_QT5_CPPFLAGS}${CPPFADD}"],
56     [CXXFLAGS_SAVE="${CXXFLAGS}"
57      CXXFLAGS="${CXXFLAGS} -fPIC"
58      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QApplication>]],
59 [[int a; QApplication app(a, 0);]])],
60       [qt5_headers=yes
61        FC_QT5_CPPFLAGS="${FC_QT5_CPPFLAGS}${CPPFADD}"
62        FC_QT5_CXXFLAGS="${FC_QT5_CXXFLAGS} -fPIC"])
63      CXXFLAGS="${CXXFLAGS_SAVE}"])
65   CPPFLAGS="$CPPFLAGS_SAVE"
68 dnl Test Qt application linking with current flags
69 AC_DEFUN([FC_QT5_DARWIN_LINKTEST],
71   LIBSADD=" -F$1/lib -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL"
73   CPPFLAGS_SAVE="$CPPFLAGS"
74   CPPFLAGS="$CPPFLAGS $FC_QT5_CPPFLAGS"
75   CXXFLAGS_SAVE="$CXXFLAGS"
76   CXXFLAGS="$CXXFLAGS $FC_QT5_CXXFLAGS"
77   LIBS_SAVE="$LIBS"
78   LIBS="${LIBS}${LIBSADD}"
79   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <QApplication>]],
80 [[int a; QApplication app(a, 0);]])],
81 [qt5_libs=yes
82  FC_QT5_LIBS="${FC_QT5_LIBS}${LIBSADD}"])
83  LIBS="$LIBS_SAVE"
84  CPPFLAGS="${CPPFLAGS_SAVE}"
85  CXXFLAGS="${CXXFLAGS_SAVE}"