mirror of
https://github.com/nasa/trick.git
synced 2024-12-24 07:16:41 +00:00
a48b39bfc1
Made a couple of changes in ICG source code to handle clang API differences. Encapsulated differences in ifdefs. Added libclangSupport to ICG link line.
296 lines
10 KiB
Plaintext
296 lines
10 KiB
Plaintext
dnl To generate a new top level configure script from this autoconf directory
|
|
dnl 1. aclocal
|
|
dnl 2. autoconf -o ../configure
|
|
|
|
AC_INIT([Trick],[17+])
|
|
AC_LANG(C++)
|
|
|
|
AC_CONFIG_AUX_DIR([autoconf])
|
|
AC_CONFIG_MACRO_DIRS([m4])
|
|
|
|
dnl get the host and build.
|
|
AC_CANONICAL_HOST
|
|
AC_CANONICAL_BUILD
|
|
|
|
dnl check if we are on a mac
|
|
TR_MAC_DARWIN()
|
|
dnl add x11 libs to environment
|
|
TR_X11()
|
|
|
|
dnl look for X windows libraries and headers we need to compile
|
|
dnl these checks must be done before we force 32bit mode.
|
|
TR_XWINDOWS()
|
|
|
|
dnl TODO Need to check 64bit only!
|
|
AC_CHECK_LIB(xml2, main,
|
|
[LIBXML=-lxml2
|
|
AC_SUBST([LIBXML])]
|
|
)
|
|
AC_CHECK_HEADER([libxml/tree.h],[],AC_MSG_ERROR([could not find libxml development headers]))
|
|
|
|
# If 32bit is specified, set some compilation flags.
|
|
AC_ARG_ENABLE([32bit],
|
|
AS_HELP_STRING([--enable-32bit], [Force Trick and sims to compile 32bit]),
|
|
AS_IF([test "x$enable_32bit" = xyes],
|
|
[
|
|
TRICK_FORCE_32BIT=1
|
|
CFLAGS="${CFLAGS} -m32"
|
|
CXXFLAGS="${CXXFLAGS} -m32"
|
|
LDFLAGS="${LDFLAGS} -m32"
|
|
ARCH="i686"
|
|
], [TRICK_FORCE_32BIT=0]),
|
|
[TRICK_FORCE_32BIT=0]
|
|
)
|
|
AC_SUBST([TRICK_FORCE_32BIT])
|
|
|
|
# If offline is specified, set some compilation flags
|
|
AC_ARG_ENABLE([offline],
|
|
AS_HELP_STRING([--enable-offline], [Compile Trick in offline mode. Un-tar the trick-offline directory in TRICK_HOME to use this feature]),
|
|
AS_IF([test "x$enable_offline" = xyes],
|
|
[
|
|
[TRICK_OFFLINE="1"]
|
|
AC_CHECK_FILE([trick-offline], [], AC_MSG_ERROR([Offline mode requires an uncompressed directory named "trick-offline" in TRICK_HOME]))
|
|
],
|
|
[TRICK_OFFLINE="0"]
|
|
),
|
|
[TRICK_OFFLINE="0"]
|
|
)
|
|
AC_SUBST([TRICK_OFFLINE])
|
|
|
|
# If offline is specified, set some compilation flags
|
|
AC_ARG_ENABLE([offline],
|
|
AS_HELP_STRING([--enable-offline], [Compile Trick in offline mode. Un-tar the trick-offline directory in TRICK_HOME to use this feature]),
|
|
AS_IF([test "x$enable_offline" = xyes],
|
|
[TRICK_OFFLINE="1"],
|
|
[TRICK_OFFLINE="0"]
|
|
),
|
|
[TRICK_OFFLINE="0"]
|
|
)
|
|
AC_SUBST([TRICK_OFFLINE])
|
|
|
|
# AC_ARG_ENABLE([civet],
|
|
# AS_HELP_STRING([--enable-civet], [Compile Trick with webserver capabilites.]),
|
|
# AS_IF([test "x$enable_civet" = xyes],
|
|
# [
|
|
# TRICK_DISABLE_CIVET="0"
|
|
# ],
|
|
# [TRICK_DISABLE_CIVET="1"]
|
|
# ),
|
|
# [TRICK_DISABLE_CIVET="0"]
|
|
# )
|
|
# AC_SUBST([TRICK_DISABLE_CIVET])
|
|
|
|
# If offline is specified, set some compilation flags
|
|
# AC_ARG_ENABLE([offline],
|
|
# AS_HELP_STRING([--enable-offline], [Compile Trick in offline mode. Un-tar the trick-offline directory in TRICK_HOME to use this feature]),
|
|
# AS_IF([test "x$enable_offline" = xyes],
|
|
# [TRICK_DISABLE_CIVET="1"],
|
|
# ),
|
|
# )
|
|
# AC_SUBST([TRICK_OFFLINE])
|
|
|
|
dnl look for programs we need to compile and run
|
|
AC_PROG_AWK
|
|
AC_PROG_CC
|
|
AC_PROG_CXX
|
|
|
|
dnl do not test gcc version on mac. clang as gcc will return version and it's not >= 4.8
|
|
AS_IF([test "$ON_MAC" = "no"],[TR_GCC_VERSION],[])
|
|
dnl if the compiler is gcc, test for gcc >= 4.8
|
|
AS_IF([test "x$GCC_VERSION" = "x"],[],
|
|
[AC_MSG_CHECKING([gcc version >= 4.8])
|
|
AX_COMPARE_VERSION([$GCC_VERSION],[ge],[4.8], [AC_MSG_RESULT([yes])],
|
|
[AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([Trick requires gcc version >= 4.8])
|
|
])
|
|
])
|
|
dnl Save the full path of the compiler
|
|
CC=`which $CC`
|
|
CXX=`which $CXX`
|
|
|
|
AC_PATH_PROG(TEE, tee, notee)
|
|
AS_IF([test "$ac_cv_path_TEE" = "notee"],AC_MSG_ERROR([could not find tee]),[])
|
|
AC_PATH_PROG(LD, ld, nold)
|
|
AS_IF([test "$ac_cv_path_LD" = "nold"],AC_MSG_ERROR([could not find ld]),[])
|
|
AC_PROG_LEX([noyywrap])
|
|
AS_IF([test "x$LEX" = "x:"],AC_MSG_ERROR([could not find flex]),[])
|
|
AC_PATH_PROG(BISON, bison, nobison)
|
|
AS_IF([test "$ac_cv_path_BISON" = "nobison"],AC_MSG_ERROR([could not find bison]),[])
|
|
AC_PATH_PROG(CURL, curl, nocurl)
|
|
AS_IF([test "$ac_cv_path_CURL" = "nocurl"],AC_MSG_ERROR([could not find curl]),[])
|
|
AC_PATH_PROG(PERL, perl)
|
|
AX_PROG_PERL_VERSION([5.14.0], [], [AC_MSG_ERROR([Trick requires perl version >= 5.14.0])])
|
|
AC_PATH_PROG(ZIP, zip, nozip)
|
|
AS_IF([test "$ac_cv_path_ZIP" = "nozip"],AC_MSG_ERROR([Trick now requires zip but it could not be found. Please install zip. We recommend you use your OS package manager]),[])
|
|
|
|
|
|
dnl add PYTHON_VERSION to influential env variables
|
|
AC_ARG_VAR([PYTHON_VERSION],[Adds suffix to python search e.g. PYTHON_VERSION=3 will look for python3])
|
|
|
|
dnl find python
|
|
AC_ARG_WITH(
|
|
[python],
|
|
AS_HELP_STRING(
|
|
[--with-python@<:@=DIR@:>@],
|
|
[python root directory],
|
|
),
|
|
[
|
|
PYTHON_HOME="$withval"
|
|
AC_PATH_PROGS(PYTHON, python${PYTHON_VERSION} python python3, nopython, "$PYTHON_HOME")
|
|
AS_IF(
|
|
[test "$ac_cv_path_PYTHON" = "" || test "$ac_cv_path_PYTHON" = "nopython"],
|
|
AC_MSG_ERROR([could not find python<version> python or python3 in the specefied path. Please install the python development package]),
|
|
[]
|
|
)
|
|
PYTHON_MAJORMINOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[[0]])+"."+str(sys.version_info[[1]]))'`
|
|
PYTHON_MAJOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[[0]]))'`
|
|
AC_PATH_PROGS(PYTHON_CONFIG, python${PYTHON_MAJORMINOR}-config python${PYTHON_MAJOR}-config python${PYTHON_VERSION}-config python-config, nopython-config, "$PYTHON_HOME")
|
|
AS_IF(
|
|
[test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config"],
|
|
AC_MSG_ERROR([could not find python<major>-config python<major.minor>-config or python-config in the specified path. Please install the python development package]),
|
|
[]
|
|
)
|
|
],
|
|
[
|
|
AC_PATH_PROGS(PYTHON, python${PYTHON_VERSION} python python3, nopython)
|
|
AS_IF(
|
|
[test {"$ac_cv_path_PYTHON" = "" || test "${ac_cv_path_PYTHON}" = "nopython"}],
|
|
AC_MSG_ERROR([could not find python<version> python or python3. Please install the python development package]),
|
|
[]
|
|
)
|
|
PYTHON_MAJORMINOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[[0]])+"."+str(sys.version_info[[1]]))'`
|
|
PYTHON_MAJOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[[0]]))'`
|
|
AC_PATH_PROGS(PYTHON_CONFIG, python${PYTHON_MAJORMINOR}-config python${PYTHON_MAJOR}-config python${PYTHON_VERSION}-config python-config, nopython-config)
|
|
AS_IF(
|
|
[test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config"],
|
|
AC_MSG_ERROR([could not find python<major>-config python<major.minor>-config or python-config. Please install the python development package]),
|
|
[]
|
|
)
|
|
]
|
|
)
|
|
|
|
PYTHON_LIBS_COMMAND="${PYTHON_CONFIG} --ldflags --libs"
|
|
|
|
AX_COMPARE_VERSION(
|
|
[${PYTHON_MAJORMINOR}],
|
|
[ge],
|
|
[3.8],
|
|
[PYTHON_LIBS_COMMAND="${PYTHON_LIBS_COMMAND} --embed"]
|
|
)
|
|
|
|
PYTHON_CPPFLAGS=`${PYTHON_CONFIG} --includes | sed 's/-I/-isystem/g'`
|
|
PYTHON_LIBS=`${PYTHON_LIBS_COMMAND} | tr '\r\n' ' '`
|
|
|
|
|
|
AC_SUBST([PYTHON_CPPFLAGS])
|
|
AC_SUBST([PYTHON_LIBS])
|
|
AC_SUBST([PYTHON_EXTRA_LIBS])
|
|
TR_PREPEND_PATH()
|
|
AC_PATH_PROG(GNUPLOT, gnuplot, nognuplot)
|
|
AS_IF([test "$ac_cv_path_GNUPLOT" = "nognuplot"],AC_MSG_NOTICE([could not find gnuplot]),[])
|
|
TR_SWIG_BIN([2.0])
|
|
TR_JAVA
|
|
|
|
AX_PTHREAD()
|
|
AX_PROG_PERL_MODULES( Text::Balanced ,[],AC_MSG_ERROR([could not find perl modules Text::Balanced]))
|
|
AX_PROG_PERL_MODULES( Digest::MD5,[],AC_MSG_ERROR([could not find perl module Digest::MD5]))
|
|
|
|
dnl process the optional --with-llvm command line arguments
|
|
TR_LLVM_HOME([])
|
|
LLVM_LIB_DIR=`$LLVM_CONFIG --libdir`
|
|
LLVM_BIN_DIR=`$LLVM_CONFIG --bindir`
|
|
LLVM_INCLUDE_DIR=`$LLVM_CONFIG --includedir`
|
|
AC_CHECK_FILE([$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h],[],AC_MSG_ERROR([could not find clang development headers]))
|
|
AC_CHECK_FILE([$LLVM_LIB_DIR/libLLVMSupport.a],
|
|
[],
|
|
AC_MSG_ERROR([could not find clang library files in $LLVM_LIB_DIR])
|
|
)
|
|
AC_PATH_PROG(CLANG, clang, noclang, "$LLVM_BIN_DIR:/bin:/usr/bin:/usr/local/bin:/sw/bin")
|
|
AS_IF([test "$ac_cv_path_CLANG" = "noclang"],AC_MSG_ERROR([could not find clang]),[])
|
|
AC_SUBST([LLVM_HOME])
|
|
|
|
OLD_CLANG_LIBS="-lclangFrontend -lclangDriver -lclangSerialization -lclangParse -lclangSema -lclangAnalysis -lclangEdit -lclangAST -lclangLex -lclangBasic"
|
|
NEW_CLANG_LIBS="-lclang-cpp"
|
|
AC_CHECK_FILE([$LLVM_LIB_DIR/libclangFrontend.a],
|
|
[
|
|
ICG_CLANGLIBS="$OLD_CLANG_LIBS"
|
|
],
|
|
AC_CHECK_FILE([$LLVM_LIB_DIR/libclangFrontend.so],
|
|
[
|
|
ICG_CLANGLIBS="$OLD_CLANG_LIBS"
|
|
],
|
|
AC_CHECK_FILE([$LLVM_LIB_DIR/libclang-cpp.a],
|
|
[
|
|
ICG_CLANGLIBS="$NEW_CLANG_LIBS"
|
|
],
|
|
AC_CHECK_FILE([$LLVM_LIB_DIR/libclang-cpp.so],
|
|
[
|
|
ICG_CLANGLIBS="$NEW_CLANG_LIBS"
|
|
],
|
|
AC_MSG_ERROR([could not find clang libs in LLVM library: "$LLVM_LIB_DIR"])
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
AC_CHECK_FILE([$LLVM_LIB_DIR/libclangSupport.a],[ICG_CLANGLIBS="$ICG_CLANGLIBS -lclangSupport"],[])
|
|
|
|
AC_SUBST([ICG_CLANGLIBS])
|
|
|
|
TR_CLANG_VERSION
|
|
dnl if llvm/clang, test for version >= 3.4.2
|
|
AS_IF([test "x$CLANG_VERSION" = "x"],[],
|
|
[AC_MSG_CHECKING([clang version >= 3.4.2])
|
|
AX_COMPARE_VERSION([$CLANG_VERSION],[ge],[3.4.2], [AC_MSG_RESULT([yes])],
|
|
[AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([Trick requires llvm/clang version >= 3.4.2])
|
|
])
|
|
])
|
|
|
|
AX_CHECK_ZLIB([],AC_MSG_ERROR([could not find zlib]))
|
|
|
|
dnl look for udunits in /usr/include and /usr/include/udunits2
|
|
TR_UDUNITS_HOME([])
|
|
AS_IF([test "$UDUNITS_HOME" = ""],
|
|
[
|
|
AC_CHECK_HEADER([udunits2.h],
|
|
[UDUNITS_INCLUDES=],
|
|
[AC_CHECK_HEADER([udunits2/udunits2.h],[UDUNITS_INCLUDES=-I/usr/include/udunits2],AC_MSG_ERROR([could not find udunits development headers]))]
|
|
)
|
|
UDUNITS_LDFLAGS=-ludunits2
|
|
],
|
|
[
|
|
UDUNITS_EXCLUDE=$UDUNITS_HOME
|
|
AC_CHECK_FILE([$UDUNITS_HOME/include/udunits2.h],
|
|
[UDUNITS_INCLUDES=-I$UDUNITS_HOME/include
|
|
UDUNITS_LDFLAGS="-Wl,-rpath,$UDUNITS_HOME/lib -L$UDUNITS_HOME/lib -ludunits2"
|
|
],
|
|
[AC_CHECK_FILE([$UDUNITS_HOME/lib/udunits2.h],
|
|
[UDUNITS_INCLUDES=-I$UDUNITS_HOME/lib
|
|
UDUNITS_LDFLAGS="-Wl,-rpath,$UDUNITS_HOME/lib -L$UDUNITS_HOME/lib -ludunits2"
|
|
],
|
|
AC_MSG_ERROR([could not find udunits2]))
|
|
]
|
|
)
|
|
CFLAGS="${CFLAGS} ${UDUNITS_INCLUDES}"
|
|
LDFLAGS="${LDFLAGS} ${UDUNITS_LDFLAGS}"
|
|
]
|
|
)
|
|
AC_CHECK_LIB(udunits2, main, [],AC_MSG_ERROR([could not find libudunits]))
|
|
AC_SUBST([UDUNITS_INCLUDES])
|
|
AC_SUBST([UDUNITS_LDFLAGS])
|
|
AC_SUBST([UDUNITS_EXCLUDE])
|
|
|
|
dnl process the other optional command line arguments
|
|
TR_HDF5_HOME([])
|
|
TR_GSL_HOME([])
|
|
TR_GTEST_HOME([])
|
|
TR_CIVETWEB_HOME([])
|
|
TR_ER7_UTILS([])
|
|
|
|
AC_CONFIG_FILES([share/trick/makefiles/config_user.mk])
|
|
AC_OUTPUT
|
|
|
|
printf "\033@<:@32mconfigure script successfully completed\033@<:@0m\n"
|
|
|