1# -*- Autoconf -*- 2# Process this file with autoconf to produce a configure script. 3 4dnl AC_PREREQ([2.63]) 5AC_INIT([qmidiarp], [0.6.5], [qmidiarp-devel@lists.sourceforge.net]) 6AC_CONFIG_SRCDIR([src/main.cpp]) 7AC_CONFIG_HEADERS(src/config.h) 8AC_CONFIG_MACRO_DIR([m4]) 9AM_INIT_AUTOMAKE([dist-bzip2]) 10AC_DEFINE(APP_NAME, "QMidiArp", [application name]) 11 12# Initialize doxygen 13DX_HTML_FEATURE(ON) 14DX_CHM_FEATURE(OFF) 15DX_CHI_FEATURE(OFF) 16DX_MAN_FEATURE(OFF) 17DX_RTF_FEATURE(OFF) 18DX_XML_FEATURE(OFF) 19DX_PDF_FEATURE(OFF) 20DX_PS_FEATURE(OFF) 21DX_INIT_DOXYGEN($PACKAGE_NAME, Doxyfile) 22 23# Checks for programs. 24AC_PROG_CXX 25AC_PROG_CC 26AC_PROG_INSTALL 27AC_PROG_LN_S 28 29AC_ENABLE_SHARED 30AC_DISABLE_STATIC 31LT_INIT([dlopen]) 32 33 34# Checks for libraries 35AC_CHECK_LIB([m], [roundf], , AC_MSG_ERROR([required libm missing])) 36 37AC_ARG_ENABLE(alsa, 38 AC_HELP_STRING([--enable-alsa], [provide ALSA backend option (default=yes)]), 39 [ac_alsa="$enableval"], 40 [ac_alsa="yes"]) 41alsalib_found="yes" 42 43# Build LV2 plugins 44AC_ARG_ENABLE(lv2plugins, 45 AC_HELP_STRING([--enable-lv2plugins], [build LV2 plugins (default=yes)]), 46 [ac_lv2plugins="$enableval"], 47 [ac_lv2plugins="yes"]) 48 49AM_CONDITIONAL([BUILD_LV2], [test "x$ac_lv2plugins" = "xyes"]) 50ac_lv2willbuild=no 51 52AM_COND_IF([BUILD_LV2],[ 53dnl check for lv2atom 54AC_CHECK_HEADER( lv2/lv2plug.in/ns/ext/atom/atom.h, lv2include_found="yes", lv2include_found="no" ) 55PKG_CHECK_MODULES(LV2, lv2 >= 1.10, lv2Works="yes", lv2Works="no") 56CFLAGSsave=$CFLAGS 57CFLAGS=$LV2_CFLAGS 58AC_SUBST(LV2_CFLAGS) 59CFLAGS="$CFLAGS $CFLAGSsave" 60 61if test $lv2include_found = "no" -o $lv2Works = "no"; then 62 AC_MSG_NOTICE( 63 [cannot find an lv2 component for building. Will not build LV2 plugins.]) 64 AM_CONDITIONAL([BUILD_LV2], false) 65 AM_CONDITIONAL([BUILD_LV2_UI], false) 66else 67 ac_lv2willbuild=yes 68fi 69 70], [AC_MSG_NOTICE([LV2 plugins will not be built])]) 71 72# Build LV2 plugin Qt UIs ? 73AC_ARG_ENABLE(lv2pluginuis, 74 AC_HELP_STRING([--enable-lv2pluginuis], [build LV2 plugin UIs (default=yes)]), 75 [ac_lv2pluginuis="$enableval"], 76 [ac_lv2pluginuis="yes"]) 77 78AM_CONDITIONAL([BUILD_LV2_UI], [test "x$ac_lv2pluginuis" = "xyes" -a "x$ac_lv2willbuild" = "xyes"]) 79 80# Build QMidiArp standalone application ? 81AC_ARG_ENABLE(buildapp, 82 AC_HELP_STRING([--enable-buildapp], [build standalone application (default=yes)]), 83 [ac_buildapp="$enableval"], 84 [ac_buildapp="yes"]) 85 86AM_CONDITIONAL([BUILD_APP], [test "x$ac_buildapp" = "xyes"]) 87 88AC_ARG_ENABLE(qt4, AC_HELP_STRING([--enable-qt4], 89 [force Qt4 instead of Qt5 library (default=no)]),, 90 enable_qt4=no) 91 92if test "x$ac_buildapp" = "xyes" -o ["x$ac_lv2pluginuis" = "xyes" -a "x$ac_lv2willbuild" = "xyes"]; then 93 AC_MSG_NOTICE([QT stuff required for standalone app or LV2 UIs]) 94 dnl Check for Qt stuff only if we require GUI building 95 AS_IF([test x$enable_qt4 = xyes], 96 dnl Check for Qt4 library files 97 [ 98 PKG_CHECK_MODULES(Qt4, QtCore QtGui >= 4.2.0, HAVE_QT4="yes", HAVE_QT4="no") 99 if test "x$HAVE_QT4" = "xyes"; then 100 dnl Check needed because in some cases the QtGui includedir 101 dnl does not contain the subsystem dir. 102 QT_INCLUDE_DIR=`$PKG_CONFIG --variable=includedir QtGui` 103 QT_CXXFLAGS=`$PKG_CONFIG --cflags QtCore QtGui` 104 EXTRA_QT_INCLUDE_DIR="$QT_INCLUDE_DIR/Qt" 105 AC_CHECK_FILE([$QT_INCLUDE_DIR/QWidget], 106 AC_MSG_NOTICE([No extra QT_INCLUDE_DIR needed]), 107 AC_CHECK_FILE([$EXTRA_QT_INCLUDE_DIR/QWidget], 108 QT_CPPFLAGS="$QT_CPPFLAGS -I$EXTRA_QT_INCLUDE_DIR", 109 AC_MSG_WARN([QWidget not found]))) 110 111 AC_MSG_NOTICE([Set QT_CXXFLAGS... $QT_CXXFLAGS]) 112 AC_SUBST(QT_CXXFLAGS) 113 AC_SUBST(Qt4_LIBS) 114 else 115 AC_MSG_NOTICE([cannot find Qt4 library >= 4.2]) 116 AM_CONDITIONAL([BUILD_APP], false) 117 AM_CONDITIONAL([BUILD_LV2_UI], false) 118 fi 119 ac_qtversion=qt4], 120 dnl ... or use Qt5 121 [ 122 PKG_CHECK_MODULES(Qt5, Qt5Core Qt5Gui Qt5Widgets >= 5.0, 123 HAVE_QT5="yes", HAVE_QT5="no") 124 if test "x$HAVE_QT5" = "xyes"; then 125 dnl Check needed because in some cases the QtGui includedir 126 dnl doesnt contain the subsystem dir. 127 QT_INCLUDE_DIR=`$PKG_CONFIG --variable=includedir Qt5Gui` 128 QT_CXXFLAGS=`$PKG_CONFIG --cflags Qt5Core Qt5Gui Qt5Widgets` 129 QT_CXXFLAGS="$QT_CXXFLAGS -fPIC" 130 EXTRA_QT_INCLUDE_DIR="$QT_INCLUDE_DIR/Qt" 131 AC_CHECK_FILE([$QT_INCLUDE_DIR/QtWidgets/QWidget], 132 AC_MSG_NOTICE([No extra QT_INCLUDE_DIR needed]), 133 AC_CHECK_FILE([$EXTRA_QT_INCLUDE_DIR/QtWidgets/QWidget], 134 QT_CPPFLAGS="$QT_CPPFLAGS -I$EXTRA_QT_INCLUDE_DIR", 135 AC_MSG_WARN([QWidget not found]))) 136 137 AC_SUBST(QT_CXXFLAGS) 138 AC_SUBST(Qt5_LIBS) 139 AC_DEFINE([HAVE_QT5], [1],[Define to 1 if you have Qt5.]) 140 141 else 142 AC_MSG_NOTICE([cannot find Qt5 library >= 5.0]) 143 AM_CONDITIONAL([BUILD_APP], false) 144 AM_CONDITIONAL([BUILD_LV2_UI], false) 145 fi 146 ac_qtversion=qt5 147 ]) 148 dnl endo of qt version test 149 150 dnl check for moc 151 AC_PATH_PROGS(MOC, moc-$ac_qtversion moc, no, [$PATH:$QTDIR/bin]) 152 if test "x$MOC" = "xno" ; then 153 AC_MSG_ERROR( 154 [cannot find 'moc', please install the Qt development tools package.]) 155 fi 156 157 # Enable translations. 158 AC_ARG_ENABLE(translations, 159 AC_HELP_STRING([--enable-translations], [enable translation file generation (default=no)]), 160 [ac_translations="$enableval"], 161 [ac_translations="no"]) 162 163 AM_CONDITIONAL([ENABLE_TRANSLATIONS], [test "x$ac_translations" = "xyes"]) 164 165 AM_COND_IF([ENABLE_TRANSLATIONS],[ 166 dnl check for lupdate 167 AC_PATH_PROGS(LUPDATE, lupdate-$ac_qtversion lupdate, no, [$PATH:$QTDIR/bin]) 168 if test "x$LUPDATE" = "xno" ; then 169 AC_MSG_ERROR( 170 [cannot find 'lupdate', please install the Qt development tools package.]) 171 fi 172 173 dnl check for lrelease 174 AC_PATH_PROGS(LRELEASE, lrelease-$ac_qtversion lrelease, no, [$PATH:$QTDIR/bin]) 175 if test "x$LRELEASE" = "xno" ; then 176 AC_MSG_ERROR( 177 [cannot find 'lrelease', please install the Qt development tools package.]) 178 fi 179 ], [AC_MSG_NOTICE([translations are disabled])]) 180 181 # Modify the entries in the LV2 ttl files according to Qt version 182 183 if test "x$ac_qtversion" = "xqt5"; then 184 sed -i "s/Qt4UI/Qt5UI/g" qmidiarp_arp.lv2/qmidiarp_arp_ui.ttl 185 sed -i "s/Qt4UI/Qt5UI/g" qmidiarp_lfo.lv2/qmidiarp_lfo_ui.ttl 186 sed -i "s/Qt4UI/Qt5UI/g" qmidiarp_seq.lv2/qmidiarp_seq_ui.ttl 187 fi 188 if test "x$ac_qtversion" = "xqt4"; then 189 sed -i "s/Qt5UI/Qt4UI/g" qmidiarp_arp.lv2/qmidiarp_arp_ui.ttl 190 sed -i "s/Qt5UI/Qt4UI/g" qmidiarp_lfo.lv2/qmidiarp_lfo_ui.ttl 191 sed -i "s/Qt5UI/Qt4UI/g" qmidiarp_seq.lv2/qmidiarp_seq_ui.ttl 192 fi 193else 194 AM_CONDITIONAL([ENABLE_TRANSLATIONS], false) 195 AM_CONDITIONAL([NEED_MOC], false) 196fi 197 198AM_CONDITIONAL([NEED_MOC], [test "x$ac_buildapp" = "xyes" -o "x$ac_lv2pluginuis" = "xyes"]) 199 200if test "x$ac_buildapp" = "xyes" ; then 201 AC_MSG_NOTICE([Application build enabled.]) 202 203 # Checks done if the standalone app is required 204 # Checks for libraries 205 if test "x$ac_alsa" = "xyes" ; then 206 AC_CHECK_LIB([asound], [snd_pcm_open], , alsalib_found="no") 207 fi 208 AC_CHECK_LIB([jack], [jack_client_open], , 209 [AC_MSG_ERROR(JACK library (jack) is required)]) 210 # Enable NSM support 211 AC_ARG_ENABLE(nsm, 212 AC_HELP_STRING([--enable-nsm], [enable NSM support generation (default=yes)]), 213 [ac_nsm="$enableval"], 214 [ac_nsm="yes"]) 215 216 AM_CONDITIONAL([ENABLE_NSM], [test "x$ac_nsm" = "xyes"]) 217 218 AM_COND_IF([ENABLE_NSM],[ 219 dnl check for liblo 220 AC_CHECK_HEADER( lo/lo.h, loinclude_found="yes", loinclude_found="no" ) 221 # OSC support 222 PKG_CHECK_MODULES(LIBLO, liblo >= 0.26, libloWorks="yes", libloWorks="no") 223 LIBSsave=$LIBS 224 CFLAGSsave=$CFLAGS 225 CFLAGS=$LIBLO_CFLAGS 226 LIBS=$LIBLO_LIBS 227 228 AC_SUBST(LIBLO_CFLAGS) 229 AC_SUBST(LIBLO_LIBS) 230 LIBS="$LIBS $LIBSsave" 231 CFLAGS="$CFLAGS $CFLAGSsave" 232 233 if test "$loinclude_found" = "no" -o "libloWorks" = "no"; then 234 AC_MSG_NOTICE( 235 [cannot find a liblo component for building. Will build without nsm support.]) 236 else 237 AC_DEFINE(NSM, 1, [Define to enable NSM session manager support]) 238 fi 239 ], [AC_MSG_NOTICE([NSM support is disabled])]) 240 241 # JACK session support 242 243 AC_CHECK_HEADER(jack/session.h, jack_session_found="yes", jack_session_found="no") 244 if test "$jack_session_found" = "yes"; then 245 AC_DEFINE(JACK_SESSION, 1, [Define to enable jack session support]) 246 fi 247else 248 AM_CONDITIONAL([ENABLE_NSM], false) 249 AC_DEFINE(JACK_SESSION, 0) 250fi 251 252if test "x$alsalib_found" = "xyes" -a "x$ac_alsa" = "xyes" ; then 253 AC_DEFINE(HAVE_ALSA, 1, [Define to enable ALSA backend availabilty]) 254fi 255# Remove the following generated file during configure to avoid need for make clean 256rm -f src/mainwindow_moc.cpp 257 258# Checks for header files. 259AC_HEADER_STDC 260 261# Checks for typedefs, structures, and compiler characteristics. 262AC_HEADER_STDBOOL 263AC_C_CONST 264AC_C_INLINE 265AC_TYPE_SSIZE_T 266AC_STRUCT_TM 267 268# Checks for library functions. 269AC_FUNC_STAT 270AC_CHECK_FUNCS([floor ftruncate getcwd memset malloc mkdir pow rint sqrt]) 271 272 273# Checks for typedefs, structures, and compiler characteristics. 274 275# Checks for library functions. 276AC_CHECK_FUNCS([strdup]) 277 278AC_CONFIG_FILES([Makefile] [examples/Makefile] [src/Makefile]) 279AC_CONFIG_FILES([src/pixmaps/Makefile] [man/Makefile] [man/fr/Makefile]) 280AC_CONFIG_FILES([man/de/Makefile]) 281AC_OUTPUT 282 283if test "x$ac_buildapp" = "xyes" -o "x$ac_lv2pluginuis" = "xyes" ; then 284 285 echo 286 echo "Will use the following QT libs:" $Qt4_LIBS $Qt5_LIBS 287 288 echo 289 if test "x$ac_translations" = "xno" ; then 290 echo "Translation file generation disabled." 291 echo "Use ./configure --enable-translations=yes to enable." 292 else 293 echo "Translation file generation enabled." 294 fi 295echo 296else 297 echo 298 echo "Will not use any QT libs" 299 300 echo 301fi 302 303if test "x$alsalib_found" = "xno" -o "x$ac_alsa" = "xno" ; then 304 echo "Will build without ALSA backend." 305 echo 306fi 307echo 308