#!/bin/bash ################################################################################ ## ## Copyright (c) 2007-2011 Illumina, Inc. ## ## This software is covered by the "Illumina Genome Analyzer Software ## License Agreement" and the "Illumina Source Code License Agreement", ## and certain third party copyright/licenses, and any user of this ## source file is bound by the terms therein (see accompanying files ## Illumina_Genome_Analyzer_Software_License_Agreement.pdf and ## Illumina_Source_Code_License_Agreement.pdf and third party ## copyright/license notices). ## ## This file is part of the Consensus Assessment of Sequence And VAriation ## (CASAVA) software package. ## ## file configure ## ## Top level configuration file ## ## author Come Raczy ## ################################################################################ # Display CASAVA configure usage casava_usage() { cat < if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CMAKE_OPTIONS CMake command line options Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. EOF exit 10 } # Version number extraction function. casava_version_component() { cat "${casava_source_dir}/CMakeLists.txt" | sed -n " /^set(CASAVA_VERSION_${1}/ {s/set(CASAVA_VERSION_${1} *\([0-9]*\))/\1/;p;} " } # Helper function to fix windows paths. casava_fix_slashes () { echo "$1" | sed 's/\\/\//g' } # Detect system and directory information. casava_system="`uname`" casava_processor="`uname -p`" casava_source_dir="`echo $0 | sed -n '/\//{s/\/[^\/]*$//;p;}'`" casava_source_dir="`(cd "${casava_source_dir}";pwd)`" casava_redist_dir="${casava_source_dir}/../redist" casava_bootstrap_dir="${casava_source_dir}/cmake/bootstrap" casava_build_dir="`pwd`" casava_version_major="`casava_version_component MAJOR`" casava_version_minor="`casava_version_component MINOR`" casava_version_patch="`casava_version_component PATCH`" casava_version="${casava_version_major}.${casava_version_minor}" casava_version_full="${casava_version_major}.${casava_version_minor}.${casava_version_patch}" # Determine whether this is a MinGW environment. if echo "${casava_system}" | grep MINGW >/dev/null 2>&1; then casava_system_mingw=true else casava_system_mingw=false fi # Determine whether this is OS X if echo "${casava_system}" | grep Darwin >/dev/null 2>&1; then casava_system_darwin=true else casava_system_darwin=false fi # Choose the default install prefix. if ${casava_system_mingw}; then if [ "x${PROGRAMFILES}" != "x" ]; then casava_default_prefix=`casava_fix_slashes "${PROGRAMFILES}/CMake"` elif [ "x${ProgramFiles}" != "x" ]; then casava_default_prefix=`casava_fix_slashes "${ProgramFiles}/CMake"` elif [ "x${SYSTEMDRIVE}" != "x" ]; then casava_default_prefix=`casava_fix_slashes "${SYSTEMDRIVE}/Program Files/CMake"` elif [ "x${SystemDrive}" != "x" ]; then casava_default_prefix=`casava_fix_slashes "${SystemDrive}/Program Files/CMake"` else casava_default_prefix="c:/Program Files/CMake" fi else casava_default_prefix="/usr/local" fi # Parse arguments casava_build_type=RelWithDebInfo casava_cmake_generator="Unix Makefiles" casava_verbose= for a in "$@"; do if echo $a | grep "^--prefix=" > /dev/null 2> /dev/null; then casava_prefix_dir=`echo $a | sed "s/^--prefix=//"` casava_prefix_dir=`casava_fix_slashes "${casava_prefix_dir}"` fi if echo $a | grep "^--exec-prefix=" > /dev/null 2> /dev/null; then casava_exec_prefix_dir=`echo $a | sed "s/^--exec-prefix=//"` casava_exec_prefix_dir=`casava_fix_slashes "${casava_exec_prefix_dir}"` fi if echo $a | grep "^--bindir=" > /dev/null 2> /dev/null; then casava_bin_dir=`echo $a | sed "s/^--bindir=//"` casava_bin_dir=`casava_fix_slashes "${casava_bin_dir}"` fi if echo $a | grep "^--libdir=" > /dev/null 2> /dev/null; then casava_lib_dir=`echo $a | sed "s/^--libdir=//"` casava_lib_dir=`casava_fix_slashes "${casava_lib_dir}"` fi if echo $a | grep "^--libexecdir=" > /dev/null 2> /dev/null; then casava_libexec_dir=`echo $a | sed "s/^--libexecdir=//"` casava_libexec_dir=`casava_fix_slashes "${casava_libexec_dir}"` fi if echo $a | grep "^--includedir=" > /dev/null 2> /dev/null; then casava_include_dir=`echo $a | sed "s/^--includedir=//"` casava_include_dir=`casava_fix_slashes "${casava_include_dir}"` fi if echo $a | grep "^--datadir=" > /dev/null 2> /dev/null; then casava_data_dir=`echo $a | sed "s/^--datadir=//"` casava_data_dir=`casava_fix_slashes "${casava_data_dir}"` fi if echo $a | grep "^--docdir=" > /dev/null 2> /dev/null; then casava_doc_dir=`echo $a | sed "s/^--docdir=//"` casava_doc_dir=`casava_fix_slashes "${casava_doc_dir}"` fi if echo $a | grep "^--mandir=" > /dev/null 2> /dev/null; then casava_man_dir=`echo $a | sed "s/^--mandir=//"` casava_man_dir=`casava_fix_slashes "${casava_man_dir}"` fi if echo $a | grep "^--builddir=" > /dev/null 2> /dev/null; then casava_build_dir=`echo $a | sed "s/^--builddir=//"` casava_build_dir=`casava_fix_slashes "${casava_build_dir}"` fi if echo $a | grep "^--help" > /dev/null 2> /dev/null; then casava_usage fi if echo $a | grep "^--version" > /dev/null 2> /dev/null; then echo "Consensus Assessment of Sequence And VAriation (CASAVA) ${casava_version_full}, Copyright (c) 2007-2010 Illumina, Inc" exit 2 fi if echo $a | grep "^--with-cmake" > /dev/null 2> /dev/null; then casava_cmake=`echo $a | sed "s/^--with-cmake=//"` casava_cmake=`casava_fix_slashes "${casava_cmake}"` fi if echo $a | grep "^--build-type" > /dev/null 2> /dev/null; then casava_build_type=`echo $a | sed "s/^--build-type=//"` casava_build_type=`casava_fix_slashes "${casava_build_type}"` fi if echo $a | grep "^--with-eclipse" > /dev/null 2> /dev/null; then casava_cmake_generator="Eclipse CDT4 - Unix Makefiles" fi if echo $a | grep "^--with-version-control" > /dev/null 2> /dev/null; then CMAKE_OPTIONS="$CMAKE_OPTIONS -DECLIPSE_CDT4_GENERATE_SOURCE_PROJECT=TRUE" fi if echo $a | grep "^--with-unit-tests" > /dev/null 2> /dev/null; then CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_UNIT_TESTS=TRUE" fi if echo $a | grep "^--verbose" > /dev/null 2> /dev/null; then casava_verbose=TRUE fi if echo $a | grep "^--static" > /dev/null 2> /dev/null; then casava_static=TRUE fi if echo $a | grep "^--rpm" > /dev/null 2> /dev/null; then casava_rpm=TRUE fi done casava_cmake_install_dir="${casava_build_dir}/bootstrap" if [ "x${casava_cmake}" == "x" ] ; then ${casava_bootstrap_dir}/installCmake.sh ${casava_redist_dir} ${casava_cmake_install_dir} cmake_install_exit_code="$?" if [ $cmake_install_exit_code == "1" ]; then casava_cmake=cmake echo "Using existing `which cmake`" elif [ $cmake_install_exit_code == "0" ]; then casava_cmake="${casava_cmake_install_dir}/bin/cmake" echo "Using installed ${casava_cmake}" else echo "Failed to verify or install cmake" exit 3 fi fi # Set the build and install paths #if [ "x${casava_prefix_dir}" == "x" ] ; then casava_prefix_dir="${casava_default_prefix}" ; fi #if [ "x${casava_exec_prefix_dir}" == "x" ] ; then casava_exec_prefix_dir="." ; fi #if [ "x${casava_bin_dir}" == "x" ] ; then casava_bin_dir="${casava_exec_prefix_dir}/bin" ; fi #if [ "x${casava_lib_dir}" == "x" ] ; then casava_lib_dir="${casava_exec_prefix_dir}/lib/CASAVA-${casava_version_full}" ; fi #if [ "x${casava_libexec_dir}" == "x" ] ; then casava_libexec_dir="${casava_exec_prefix_dir}/libexec/CASAVA-${casava_version_full}" ; fi #if [ "x${casava_include_dir}" == "x" ] ; then casava_include_dir="include/CASAVA-${casava_version_full}" ; fi #if [ "x${casava_data_dir}" == "x" ] ; then casava_data_dir="share/CASAVA-${casava_version_full}" ; fi #if [ "x${casava_doc_dir}" == "x" ] ; then casava_doc_dir="doc" ; fi #if [ "x${casava_man_dir}" == "x" ] ; then casava_man_dir="man" ; fi #if [ "x${casava_build_dir}" == "x" ] ; then casava_build_dir="`pwd`" ; fi # display information if required if [ -n "${casava_verbose}" ]; then echo "Source directory: ${casava_source_dir}" echo "Prefix directory: ${casava_prefix_dir}" echo "Exec directory: ${casava_exec_prefix_dir}" echo "Binary directory: ${casava_bin_dir}" echo "Lib directory: ${casava_lib_dir}" echo "Libexec directory: ${casava_libexec_dir}" echo "Include directory: ${casava_include_dir}" echo "Data directory: ${casava_data_dir}" echo "Doc directory: ${casava_doc_dir}" echo "Man directory: ${casava_man_dir}" echo "Build directory: ${casava_build_dir}" echo "Cmake executable: ${casava_cmake}" echo "" fi # create the build directory if necessary if [[ ! -d "${casava_build_dir}" ]]; then mkdir "${casava_build_dir}" if [ "$?" != 0 ]; then echo "Couldn't create the build directory: ${casava_build_dir}" exit 4 fi fi # invoke cmake CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_PREFIX:PATH=${casava_prefix_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_EXEC_PREFIX:PATH=${casava_exec_prefix_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_INSTALL_PREFIX:PATH=${casava_prefix_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_BINDIR:PATH=${casava_bin_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_LIBDIR:PATH=${casava_lib_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_LIBEXECDIR:PATH=${casava_libexec_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_INCLUDEDIR:PATH=${casava_include_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_DATADIR:PATH=${casava_data_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_DOCDIR:PATH=${casava_doc_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_MANDIR:PATH=${casava_man_dir}" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_BUILD_TYPE:STRING=${casava_build_type}" if [ -n "${casava_static}" ]; then CMAKE_OPTIONS="$CMAKE_OPTIONS -DCASAVA_FORCE_STATIC_LINK:BOOL=ON" CMAKE_OPTIONS="$CMAKE_OPTIONS -DLINK_SEARCH_END_STATIC:BOOL=ON" fi if [ -n "${casava_verbose}" ]; then CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DBoost_DEBUG:BOOL=ON" echo "Running on: `uname -a`" echo "Configuring the build directory with:" echo " "${casava_cmake} -H\"${casava_source_dir}\" -B\"${casava_build_dir}\" -G\"${casava_cmake_generator}\" ${CMAKE_OPTIONS} echo "" fi if [ -n "${casava_rpm}" ]; then CMAKE_OPTIONS="$CMAKE_OPTIONS -DCPACK_GENERATOR:STRING=RPM -DCPACK_SYSTEM_NAME:STRING=${casava_system}-${casava_processor}" echo "Running on: `uname -a`" echo "Configuring the build directory with:" echo " "${casava_cmake} -H\"${casava_source_dir}\" -B\"${casava_build_dir}\" -G\"${casava_cmake_generator}\" ${CMAKE_OPTIONS} echo "" fi ${casava_cmake} -H"${casava_source_dir}" -B"${casava_build_dir}" -G"${casava_cmake_generator}" ${CMAKE_OPTIONS} if [ "$?" != 0 ]; then echo "Couldn't configure the project:" echo "" echo "${casava_cmake} -H\"${casava_source_dir}\" -B\"${casava_build_dir}\" -G\"${casava_cmake_generator}\" ${CMAKE_OPTIONS}" echo "" echo "Moving CMakeCache.txt to CMakeCache.txt.removed" echo "" rm -f ${casava_build_dir}/CMakeCache.txt.removed && mv ${casava_build_dir}/CMakeCache.txt ${casava_build_dir}/CMakeCache.txt.removed echo "" exit 5 fi if [ "${casava_build_dir}" == "${casava_source_dir}" ]; then echo "" echo "Warning: it is recommended to build CASAVA outside of the source directory:" echo " mkdir ../CASAVA-build" echo " cd ../CASAVA-build" echo " ../$(basename $(pwd))/configure --prefix=/path/to/install/dir" echo " make" echo " make install" echo "" fi echo "The build directory ${casava_build_dir} was configured successfully" echo "" echo Type "make" at the top level of the root directory to build CASAVA echo ""