1dnl Process with autoconf to generate configure script -*- sh -*- 2 3AC_INIT(LyX,2.3.4.2,[lyx-devel@lists.lyx.org],[lyx]) 4AC_PRESERVE_HELP_ORDER 5# Use ISO format only. The frontend needs to parse this 6AC_SUBST(LYX_DATE, ["2020-02-07"]) 7AC_PREREQ(2.65) 8AC_CONFIG_SRCDIR(src/main.cpp) 9AC_CONFIG_HEADERS([config.h]) 10 11AC_CONFIG_AUX_DIR(config) 12 13# First check the version 14LYX_CHECK_VERSION 15LYX_VERSION_SUFFIX 16LYX_CHECK_QT5 17# Check how the files should be packaged 18AC_CANONICAL_TARGET 19LYX_USE_PACKAGING 20# We need to define these variables here and the no-define option of 21# AM_INIT_AUTOMAKE above because we alter $PACKAGE in LYX_USE_PACKAGING. 22AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) 23 24dnl Default maintainer mode to true for development versions 25if test "${enable_maintainer_mode+set}" != set; then 26 enable_maintainer_mode=$lyx_devel_version 27fi 28AM_MAINTAINER_MODE 29AM_SILENT_RULES([yes]) 30# Automake is pulling the historical V7 format. This tar format supports 31# file names only up to 99 characters. tar-ustar selects the ustar format defined 32# by POSIX 1003.1-1988. This format is believed to be old enough to be portable. 33save_PACKAGE=$PACKAGE 34AM_INIT_AUTOMAKE([foreign dist-bzip2 no-define 1.8 tar-ustar subdir-objects]) 35PACKAGE=$save_PACKAGE 36 37# Allow to build some parts of the code as one big chunk 38m4_define([ALLPARTS],[boost,client,insets,mathed,core,tex2lyx,frontend_qt]) 39AC_ARG_ENABLE(monolithic-build, 40 AC_HELP_STRING([--enable-monolithic-build@<:@=LIST@:>@], 41 [Use monolithic build for modules in LIST (default: ALLPARTS)]), 42 [test "$enable_monolithic_build" = yes && enable_monolithic_build="ALLPARTS" 43 test "$enable_monolithic_build" = no && enable_monolithic_build= 44 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=" ," 45 for i in $enable_monolithic_build ; do 46 eval "enable_monolithic_$i=yes" 47 done 48 IFS="$ac_save_ifs"], 49 [enable_monolithic_build=]) 50 51AM_CONDITIONAL(MONOLITHIC_BOOST, test "x$enable_monolithic_boost" = "xyes") 52AM_CONDITIONAL(MONOLITHIC_CLIENT, test "x$enable_monolithic_client" = "xyes") 53AM_CONDITIONAL(MONOLITHIC_INSETS, test "x$enable_monolithic_insets" = "xyes") 54AM_CONDITIONAL(MONOLITHIC_MATHED, test "x$enable_monolithic_mathed" = "xyes") 55AM_CONDITIONAL(MONOLITHIC_CORE, test "x$enable_monolithic_core" = "xyes") 56AM_CONDITIONAL(MONOLITHIC_TEX2LYX, test "x$enable_monolithic_tex2lyx" = "xyes") 57AM_CONDITIONAL(MONOLITHIC_FRONTEND_QT, test "x$enable_monolithic_frontend_qt" = "xyes") 58 59### Set the execute permissions of the various scripts correctly 60for file in config/install-sh ; do 61 chmod 755 ${srcdir}/${file} 62done 63 64# Find a suitable python interpreter 65LYX_PATH_PYTHON23([2.7.0], [3.3.0]) 66# do the usual python setup stuff 67AM_PATH_PYTHON 68 69# Tools for creating libraries (note that we do not use libtool) 70AM_PROG_AR 71AC_PROG_RANLIB 72dnl Recent debian/ubuntu (at least) have built 'ar' so that deterministic mode is the default. 73dnl This means that it does not make sense to use the 'u' flag (default ARFLAGS is 'cru'). 74AC_SUBST([ARFLAGS], [cr]) 75 76### Check for a C++ compiler 77dnl We have to do weird tricks so that autoconf does not touch CXXFLAGS even 78dnl if it is not set. We do not use autoconf defaults. 79lyx_has_CXXFLAGS=${CXXFLAGS+yes} 80if ! test "$lyx_has_CXXFLAGS" = yes; then 81 dnl set to a dummy value so that AC_PROG_CXX does not try to set CXXFLAGS 82 CXXFLAGS=" " 83fi 84LYX_PROG_CXX 85if ! test "$lyx_has_CXXFLAGS" = yes; then 86 unset CXXFLAGS 87fi 88AC_LANG(C++) 89 90### Objective-C compiler 91AC_PROG_OBJC 92_AM_DEPENDENCIES([OBJC]) 93 94### Add extra directories to check for libraries. 95LYX_WITH_DIR([extra-lib],[extra library directory],extra_lib, NONE) 96LYX_LOOP_DIR($lyx_cv_extra_lib,LYX_ADD_LIB_DIR(lyx_ldflags,$dir)) 97test ! x"$lyx_ldflags" = x && LDFLAGS="$lyx_ldflags $LDFLAGS" 98 99### Add extra directories to check for include files. 100LYX_WITH_DIR([extra-inc],[extra include directory],extra_inc, NONE) 101LYX_LOOP_DIR($lyx_cv_extra_inc,LYX_ADD_INC_DIR(lyx_cppflags,$dir)) 102test ! x"$lyx_cppflags" = x && CPPFLAGS="$lyx_cppflags $CPPFLAGS" 103 104### Add both includes and libraries 105LYX_WITH_DIR([extra-prefix],[extra lib+include directory],extra_prefix, NONE, ${prefix}) 106LYX_LOOP_DIR($lyx_cv_extra_prefix,[ 107 LYX_ADD_INC_DIR(CPPFLAGS,$dir/include) 108 LYX_ADD_LIB_DIR(LDFLAGS,$dir/lib) 109]) 110 111### These are needed in windows 112AC_CHECK_LIB(shlwapi, main, [LIBSHLWAPI=-lshlwapi]) 113AC_SUBST(LIBSHLWAPI) 114AC_CHECK_LIB(psapi, main, [LIBPSAPI=-lpsapi]) 115AC_SUBST(LIBPSAPI) 116AC_CHECK_LIB(gdi32, main) 117AC_CHECK_LIB(ole32, main) 118 119LYX_USE_INCLUDED_BOOST 120 121### we need to know the byte order for unicode conversions 122AC_C_BIGENDIAN 123 124# Nice to have when an assertion triggers 125LYX_CHECK_CALLSTACK_PRINTING 126 127# C++14 only 128LYX_CHECK_DEF(make_unique, memory, [using std::make_unique;]) 129 130# Needed for our char_type 131AC_CHECK_SIZEOF(wchar_t) 132 133# Taken from gettext, needed for libiconv 134AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], 135 [AC_TRY_COMPILE([#include <stddef.h> 136 wchar_t foo = (wchar_t)'\0';], , 137 [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) 138if test $gt_cv_c_wchar_t = yes; then 139 AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) 140 HAVE_WCHAR_T=1 141else 142 HAVE_WCHAR_T=0 143fi 144AC_SUBST([HAVE_WCHAR_T]) 145 146# Needed for Mingw-w64 147AC_TYPE_LONG_LONG_INT 148if test "$ac_cv_type_long_long_int" = yes; then 149 AC_CHECK_SIZEOF(long) 150 AC_CHECK_SIZEOF(long long) 151fi 152 153### We need iconv for unicode support (Qt4 frontend requires it too) 154LYX_USE_INCLUDED_ICONV 155 156### check for compression support 157LYX_USE_INCLUDED_ZLIB 158 159### check for file magic support (currently optional) 160AC_CHECK_HEADERS(magic.h, 161 [AC_CHECK_LIB(magic, magic_open, [LIBS="$LIBS -lmagic"], 162 LYX_WARNING([cannot find libmagic. Please check that the libmagic library 163 is correctly installed on your system. 164 Falling back to builtin file format detection.]))], 165 [LYX_WARNING([cannot find magic.h. Please check that the libmagic library 166 is correctly installed on your system. 167 Falling back to builtin file format detection.])]) 168 169### setup the qt frontend. 170dnl The code below is not in a macro, because this would cause big 171dnl problems with the AC_REQUIRE contained in QT_DO_IT_ALL. 172QT_DO_IT_ALL([4.5.0]) 173AC_SUBST([FRONTENDS_SUBDIRS], [qt4]) 174FRONTEND_INFO="${FRONTEND_INFO}\ 175 Qt Frontend:\n\ 176 Qt version:\t ${QTLIB_VERSION}\n" 177 178# fix the value of the prefixes. 179test "x$prefix" = xNONE && prefix=$default_prefix 180test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' 181if echo $prefix |grep ' ' >/dev/null 2>/dev/null ; then 182 LYX_WARNING([the installation prefix \"${prefix}\" contains a space, which 183 causes problems with the Makefiles. The installation will be done in 184 directory \"`pwd`/installprefix\" instead. Please move its contents to 185 the right place after installation.]) 186 prefix=`pwd`/installprefix 187fi 188 189### Setup po directory 190AM_NLS 191if test $USE_NLS = "yes" ; then 192 AC_DEFINE(ENABLE_NLS, 1, 193 [Define to 1 if translation of program messages to the user's native language 194 is requested.])dnl' 195fi 196AM_PO_SUBDIRS 197 198# some standard header files 199AC_HEADER_MAJOR 200AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h locale.h utime.h sys/utime.h) 201 202# some standard types 203AC_CHECK_TYPE(mode_t,[AC_DEFINE(HAVE_MODE_T, 1, [Define this to 1 if your compiler supports the mode_t type.])]) 204AC_TYPE_OFF_T 205AC_TYPE_PID_T 206AC_TYPE_SIZE_T 207AC_TYPE_UID_T 208 209LYX_CHECK_DEF(PATH_MAX, limits.h, [int n = PATH_MAX;]) 210 211AC_CHECK_FUNCS(chmod close _close fork getpid _getpid lockf lstat mkfifo open _open pclose _pclose popen _popen readlink putenv setenv strerror unsetenv) 212# Check the form of mkdir() 213AC_FUNC_MKDIR 214AC_FUNC_SELECT_ARGTYPES 215 216LYX_CHECK_SPELL_ENGINES 217LYX_USE_INCLUDED_MYTHES 218 219lyx_client_subdir=true 220dnl AC_LANG_PUSH(C) 221dnl LIBS already contains some X extra libs that may interfere. 222save_LIBS="$LIBS" 223LIBS= 224AC_CHECK_FUNCS(fcntl, 225 [AC_SEARCH_LIBS([gethostbyname], [nsl]) 226 AC_SEARCH_LIBS([socket], [socket network], [], 227 [AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket -lnsl $LIBS"], 228 [], [-lnsl])])], 229 [lyx_client_subdir=false]) 230AC_SUBST(SOCKET_LIBS,$LIBS) 231LIBS="$save_LIBS" 232AM_CONDITIONAL(BUILD_CLIENT_SUBDIR, $lyx_client_subdir) 233dnl AC_LANG_POP(C) 234 235lyx_win_res=false; 236case ${host} in 237 *mingw*|*cygwin*) lyx_win_res=true;; 238 *freebsd*) AC_SEARCH_LIBS(backtrace_symbols, [execinfo]) 239esac 240if test "x$lyx_win_res" = "xtrue"; then 241 AC_CHECK_TOOL(RC, windres,) 242 if test -z "$RC"; then 243 AC_ERROR([Could not find a resource compiler]) 244 fi 245fi 246AM_CONDITIONAL(LYX_WIN_RESOURCE, $lyx_win_res) 247LYX_SET_VERSION_INFO 248 249 250### Some information on what just happened 251real_bindir=`eval "echo \`eval \"echo ${bindir}\"\`"` 252real_pkgdatadir=`eval "echo \`eval \"echo \\\`eval \\\"echo ${pkgdatadir}\\\"\\\`\"\`"` 253real_localedir=`eval "echo \`eval \"echo ${datadir}/locale\"\`"` 254test -z "${lyx_included_libs}" && lyx_included_libs="(none)" 255VERSION_INFO="Configuration\n\ 256 Host type: ${host}\n\ 257 Special build flags: ${lyx_flags}\n\ 258 Bundled libraries: ${lyx_included_libs}\n\ 259 C++ Compiler: ${CXX} ${CXX_VERSION}\n\ 260 C++ Compiler flags: ${AM_CPPFLAGS} ${AM_CXXFLAGS}\n\ 261 C++ Compiler user flags: ${CPPFLAGS} ${CXXFLAGS}\n\ 262 Linker flags: ${AM_LDFLAGS}\n\ 263 Linker user flags: ${LDFLAGS}\n\ 264${FRONTEND_INFO}\ 265 Packaging: ${lyx_use_packaging}\n\ 266 LyX binary dir: ${real_bindir}\n\ 267 LyX files dir: ${real_pkgdatadir}\n" 268 269AC_SUBST(VERSION_INFO) 270AC_SUBST(AM_CPPFLAGS) 271AC_SUBST(AM_CXXFLAGS) 272AC_SUBST(AM_LDFLAGS) 273AC_SUBST(real_pkgdatadir) 274 275## Some config.h stuff 276 277AH_TOP([ 278/* -*- C++ -*- */ 279/* 280 * \file config.h 281 * This file is part of LyX, the document processor. 282 * Licence details can be found in the file COPYING. 283 * 284 * This is the compilation configuration file for LyX. 285 * It was generated by autoconfs configure. 286 * You might want to change some of the defaults if something goes wrong 287 * during the compilation. 288 */ 289 290#ifndef _CONFIG_H 291#define _CONFIG_H 292]) 293 294AH_BOTTOM([ 295/************************************************************ 296 ** You should not need to change anything beyond this point */ 297 298#ifndef HAVE_STRERROR 299#if defined(__cplusplus) 300extern "C" 301#endif 302char * strerror(int n); 303#endif 304 305#define BOOST_USER_CONFIG <config.h> 306 307#if !defined(ENABLE_ASSERTIONS) 308# define BOOST_DISABLE_ASSERTS 1 309#endif 310#define BOOST_ENABLE_ASSERT_HANDLER 1 311 312#define BOOST_DISABLE_THREADS 1 313#define BOOST_NO_WREGEX 1 314#define BOOST_NO_WSTRING 1 315 316#ifdef __CYGWIN__ 317# define _DEFAULT_SOURCE 318# define NOMINMAX 319# define BOOST_POSIX 1 320# define BOOST_POSIX_API 1 321# define BOOST_POSIX_PATH 1 322#endif 323 324#ifdef __sparc__ 325# ifndef __BIG_ENDIAN__ 326# define __BIG_ENDIAN__ 1 327# endif 328#endif 329 330#if defined(HAVE_WCHAR_T) && SIZEOF_WCHAR_T == 4 331# define USE_WCHAR_T 332#endif 333 334#ifdef HAVE_LONG_LONG_INT 335#if SIZEOF_LONG_LONG > SIZEOF_LONG 336#define LYX_USE_LONG_LONG 337#endif 338#endif 339 340#endif 341]) 342 343MSYS_AC_CANONICAL_PATH(lyx_abs_top_srcdir, ${srcdir}) 344MSYS_AC_CANONICAL_PATH(lyx_abs_installed_localedir, ${real_localedir}) 345MSYS_AC_CANONICAL_PATH(lyx_abs_installed_datadir, ${real_pkgdatadir}) 346 347AC_DEFINE_UNQUOTED([LYX_ABS_TOP_SRCDIR], 348 "${lyx_abs_top_srcdir}", [Top source directory]) 349AC_DEFINE_UNQUOTED([LYX_ABS_INSTALLED_LOCALEDIR], 350 "${lyx_abs_installed_localedir}",[Hard coded locale directory]) 351AC_DEFINE_UNQUOTED([LYX_ABS_INSTALLED_DATADIR], 352 "${lyx_abs_installed_datadir}",[Hard system support directory]) 353AC_DEFINE_UNQUOTED([PROGRAM_SUFFIX], 354 "${version_suffix}",[Program version suffix]) 355 356AC_DEFINE_UNQUOTED([LYX_DATE],"$LYX_DATE",[Date of release]) 357AC_DEFINE_UNQUOTED([VERSION_INFO],"$VERSION_INFO",[Full version info]) 358AC_DEFINE_UNQUOTED([LYX_DIR_VER],"$lyx_dir_ver",[Versioned env var for system dir]) 359AC_DEFINE_UNQUOTED([LYX_USERDIR_VER],"$lyx_userdir_ver",[Versioned env var for user dir]) 360AC_DEFINE_UNQUOTED([LYX_MAJOR_VERSION],$lyx_major,[Major version number]) 361AC_DEFINE_UNQUOTED([LYX_MINOR_VERSION],$lyx_minor,[Minor version number]) 362AC_DEFINE_UNQUOTED([LYX_RELEASE_LEVEL],$lyx_release,[Release version number]) 363AC_DEFINE_UNQUOTED([LYX_RELEASE_PATCH],$lyx_patch,[Patch version number]) 364 365AC_CONFIG_FILES([Makefile \ 366 lyx.1:lyx.1in \ 367 $ICONV_ICONV_H_IN \ 368 autotests/Makefile \ 369 config/Makefile \ 370 lib/lyx.desktop-temp:lib/lyx.desktop.in 371 lib/Makefile \ 372 lib/doc/Makefile \ 373 lib/lyx2lyx/lyx2lyx_version.py \ 374 lib/lyx2lyx/Makefile \ 375 m4/Makefile \ 376 po/Makefile.in \ 377 sourcedoc/Doxyfile \ 378 sourcedoc/Makefile \ 379 src/client/Makefile \ 380 src/client/lyxclient.1:src/client/lyxclient.1in \ 381 src/Makefile \ 382 src/tex2lyx/Makefile \ 383 src/tex2lyx/tex2lyx.1:src/tex2lyx/tex2lyx.1in \ 384 src/convert/Makefile \ 385 src/support/Makefile \ 386 src/frontends/Makefile \ 387 src/frontends/qt4/Makefile 388]) 389 390 391AC_OUTPUT 392 393# show version information 394echo 395printf "$VERSION_INFO" 396echo 397 398# Display a final warning if there has been a LYX_WARNING 399LYX_CHECK_WARNINGS 400 401cat <<EOF 402Configuration of LyX was successful. 403Type 'make' to compile the program, 404and then 'make install' to install it. 405EOF 406