##############################################################################
#
# \file   CMakeLists.txt
# \brief  Root CMake file of project ODVBA.
# \author Andreas Schuh
# \date   12/12/10
#
# $Revision: 175 $
# $Id: CMakeLists.txt 175 2011-02-15 22:03:08Z schuha@UPHS.PENNHEALTH.PRV $
#
# <b>Last changed</b>
# $Author: schuha@UPHS.PENNHEALTH.PRV $
# $Date: 2011-02-15 17:03:08 -0500 (Tue, 15 Feb 2011) $
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# For copyright information see Copyright section of project
# ReadMe.html in the project's root directory.
#
# Contact: sbia-software@uphs.upenn.edu
#
##############################################################################

# ============================================================================
# CMake version
# ============================================================================

# minimum required CMake version
cmake_minimum_required (VERSION 2.6)

# ============================================================================
# load common modules
# ============================================================================

# CMake module path
set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

include (SbiaMacros)
include (SbiaCommands)
include (SbiaProject)
include (SbiaDefaults)

# ============================================================================
# project attributes
# ============================================================================

# extract version numbers
string (REGEX MATCHALL "[0-9]+" PROJECT_VERSION_PARTS "${PROJECT_VERSION}")

list (GET PROJECT_VERSION_PARTS 0 PROJECT_VERSION_MAJOR)
list (GET PROJECT_VERSION_PARTS 1 PROJECT_VERSION_MINOR)
list (GET PROJECT_VERSION_PARTS 2 PROJECT_VERSION_PATCH)

set (PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")

# SVN revision (if applicable)
#
# note: The revision of the working copy is determined automatically using
#       'svn info' whenever the project is configured using CMake.

sbia_get_svn_revision (${PROJECT_SOURCE_DIR} PROJECT_REVISION)

if (PROJECT_REVISION)
  set (PROJECT_REVISION_VALID 1) # use 1 and not TRUE or anything else here
else ()
  set (PROJECT_REVISION_VALID 0) # use 0 and not FALSE or anything else here
endif ()

message (STATUS "Project ${PROJECT_NAME}")
message (STATUS "  Version:   ${PROJECT_VERSION}")
message (STATUS "  SoVersion: ${PROJECT_SOVERSION}")
message (STATUS "  Revision:  ${PROJECT_REVISION}")

# ============================================================================
# options
# ============================================================================

option (${PROJECT_NAME_UPPER}_BUILD_TEST "Whether to build the tests" ON)
option (${PROJECT_NAME_UPPER}_BUILD_DOC  "Whether to build the documentation (requires Doxygen)" ON)

# ============================================================================
# testing
# ============================================================================

# enable testing using CTest
enable_testing ()

# ============================================================================
# subdirectories
# ============================================================================

add_subdirectory (code)

if (${PROJECT_NAME}_BUILD_DOC)
  add_subdirectory (doc)
endif ()

# ============================================================================
# configure config and version file
# ============================================================================

set (PROJECT_CONFIG_TEMPLATE         "${CMAKE_MODULE_PATH}/SbiaProjectConfig.cmake.in")
set (PROJECT_CONFIG_FILE             "${PROJECT_BINARY_DIR}/Sbia${PROJECT_NAME}Config.cmake")
set (PROJECT_CONFIG_VERSION_TEMPLATE "${CMAKE_MODULE_PATH}/SbiaProjectConfigVersion.cmake.in")
set (PROJECT_CONFIG_VERSION_FILE     "${PROJECT_BINARY_DIR}/Sbia${PROJECT_NAME}ConfigVersion.cmake")

configure_file ("${PROJECT_CONFIG_TEMPLATE}"         "${PROJECT_CONFIG_FILE}"  @ONLY)
configure_file ("${PROJECT_CONFIG_VERSION_TEMPLATE}" "${PROJECT_CONFIG_VERSION_FILE}" @ONLY)
