###########################################################
#  Dawg's Project Configuration
#

CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
SET(CMAKE_BUILD_TYPE_INIT "RelWithDebInfo")
SET(CMAKE_VERBOSE_MAKEFILE OFF)
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Modules")

PROJECT(Dawg)

SET(PROJ_NAME "dawg")
SET(PROJ_NAME_PRO "Dawg")
SET(PROJ_EMAIL "reed@scit.us")
SET(PROJ_VERSION_BRANCH release)
SET(PROJ_VERSION_MAJOR 1)
SET(PROJ_VERSION_MINOR 2)
#SET(PROJ_VERSION_PATCH 0)
#SET(PROJ_VERSION_REV 0)

IF(NOT PROJ_VERSION_REV)
  # Test for Working copy
  IF(EXISTS "${PROJECT_SOURCE_DIR}/.svn")
    FIND_PACKAGE(Subversion)
    IF(Subversion_FOUND)
      Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJ)
      SET(PROJ_VERSION_REV "${PROJ_WC_LAST_CHANGED_REV}")
    ENDIF(Subversion_FOUND)
  ELSE(EXISTS "${PROJECT_SOURCE_DIR}/.svn")
	# extract revision from source dir
	STRING(REGEX REPLACE ".*-r([0-9]+)$" "\\1"  PROJ_VERSION_REV ${PROJECT_SOURCE_DIR})
  ENDIF(EXISTS "${PROJECT_SOURCE_DIR}/.svn")
ENDIF(NOT PROJ_VERSION_REV)

SET(PROJ_VERSION "${PROJ_VERSION_MAJOR}")
IF(PROJ_VERSION_MINOR)
  SET(PROJ_VERSION "${PROJ_VERSION}.${PROJ_VERSION_MINOR}")
ENDIF(PROJ_VERSION_MINOR)
IF(PROJ_VERSION_PATCH)
  SET(PROJ_VERSION "${PROJ_VERSION}.${PROJ_VERSION_PATCH}")
ENDIF(PROJ_VERSION_PATCH)
IF(DEFINED PROJ_VERSION_BRANCH)
	SET(PROJ_VERSION "${PROJ_VERSION}-${PROJ_VERSION_BRANCH}")
ENDIF(DEFINED PROJ_VERSION_BRANCH)
IF(PROJ_VERSION_REV)
  IF(NOT PROJ_VERSION_BRANCH MATCHES release)
    SET(PROJ_VERSION "${PROJ_VERSION}-r${PROJ_VERSION_REV}")
  ENDIF(NOT PROJ_VERSION_BRANCH MATCHES release)
ENDIF(PROJ_VERSION_REV)

IF(APPLE)
  IF(NOT DEFINED APPLE_BUNDLE)
	SET(APPLE_BUNDLE ON)
  ENDIF(NOT DEFINED APPLE_BUNDLE)
  IF(NOT DEFINED APPLE_BUNDLE_APP)
    SET(APPLE_BUNDLE_APP OFF)
  ENDIF(NOT DEFINED APPLE_BUNDLE_APP)
ELSE(APPLE)
  SET(APPLE_BUNDLE OFF)
  SET(APPLE_BUNDLE_APP OFF)
ENDIF(APPLE)

IF(APPLE_BUNDLE)
  # Create 32-bit Universal Binary
  # SET(CMAKE_OSX_ARCHITECTURES "ppc;i386")
  # SET(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-universal")
  IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    SET(CMAKE_INSTALL_PREFIX "/Applications")
  ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
ENDIF(APPLE_BUNDLE)

IF(WIN32 AND NOT UNIX)
  SET(PROJ_DIR)
ELSEIF(APPLE_BUNDLE)
  SET(PROJ_DIR)
ELSE(WIN32 AND NOT UNIX)
  SET(PROJ_DIR "/${PROJ_NAME}-${PROJ_VERSION}")
ENDIF(WIN32 AND NOT UNIX)

SET(CMAKE_DATA_DIR "share${PROJ_DIR}" CACHE STRING
  "Install location for data (relative to prefix).")
SET(CMAKE_DOC_DIR "doc${PROJ_DIR}" CACHE STRING
  "Install location for documentation (relative to prefix).")
SET(CMAKE_MAN_DIR "man" CACHE STRING
  "Install location for man pages (relative to prefix).")
MARK_AS_ADVANCED(CMAKE_DATA_DIR CMAKE_DOC_DIR CMAKE_MAN_DIR)

SET(CPACK_SOURCE_IGNORE_FILES
  "/CVS/" "/\\\\.svn/"  "\\\\.swp$"  "\\\\.#"  "/#"  ".*~$"
  "/CMakeFiles/"  "CMakeCache\\\\.txt"
  "CPack.*Config\\\\.cmake"  "cmake_install\\\\.cmake"
  "install_manifest\\\\.txt$"
  "_CPACK_PACKAGES"  "_CPack_Packages"
  "\\\\.vcproj"  "\\\\.dir"  "\\\\.ncb$"  "\\\\.sln$"  "\\\\.suo$"
  "Makefile$" "\\\\.ilk"  "\\\\.pdb"
  "/releng/"
  "${PROJ_NAME}[-]${PROJ_VERSION_MAJOR}" "${PROJ_NAME}$" "${PROJ_NAME}\\\\.exe"
)

SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Sequence Evolution Simulator")
SET(CPACK_PACKAGE_VENDOR "Reed A. Cartwright")
SET(CPACK_PACKAGE_EXECUTABLES "dawg" "Dawg")
SET(CPACK_CREATE_DESKTOP_LINKS "dawg")

SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJ_NAME_PRO})
SET(CPACK_PACKAGE_NAME ${PROJ_NAME_PRO})
SET(CPACK_PACKAGE_NAME_FILE ${PROJ_NAME})
SET(CPACK_PACKAGE_VERSION ${PROJ_VERSION})
SET(CPACK_PACKAGE_VERSION_MAJOR ${PROJ_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${PROJ_VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${PROJ_VERSION_PATCH})
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/readme.txt")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/copying.txt")

SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME_FILE}-${CPACK_PACKAGE_VERSION}")

IF(NOT DEFINED CPACK_SYSTEM_NAME)
# make sure package is not Cygwin-unknown, for Cygwin just
# cygwin is good for the system name
  IF("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
    SET(CPACK_SYSTEM_NAME Cygwin)
  ELSE("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
    SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
  ENDIF("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
ENDIF(NOT DEFINED CPACK_SYSTEM_NAME)
IF(${CPACK_SYSTEM_NAME} MATCHES Windows)
  IF(CMAKE_CL_64)
    SET(CPACK_SYSTEM_NAME win64-${CMAKE_SYSTEM_PROCESSOR})
  ELSE(CMAKE_CL_64)
    SET(CPACK_SYSTEM_NAME win32-${CMAKE_SYSTEM_PROCESSOR})
  ENDIF(CMAKE_CL_64)
ENDIF(${CPACK_SYSTEM_NAME} MATCHES Windows)

IF(NOT DEFINED CPACK_PACKAGE_FILE_NAME)
# if the CPACK_PACKAGE_FILE_NAME is not defined by the cache
# default to source package - system, on cygwin system is not 
# needed
  IF(CYGWIN)
    SET(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
  ELSE(CYGWIN)
    SET(CPACK_PACKAGE_FILE_NAME 
      "${CPACK_SOURCE_PACKAGE_FILE_NAME}-${CPACK_SYSTEM_NAME}")
  ENDIF(CYGWIN)
ENDIF(NOT DEFINED CPACK_PACKAGE_FILE_NAME)

IF(WIN32 AND NOT UNIX)
  # There is a bug in NSI that does not handle full unix paths properly. Make
  # sure there is at least one set of four (4) backlasshes.
  #SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
  SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\dawg.exe")
  SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\scit.us\\\\projects\\\\dawg\\\\")
  SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\scit.us\\\\projects\\\\dawg\\\\")
  SET(CPACK_NSIS_CONTACT "reed@scit.us")
  SET(CPACK_NSIS_DISPLAY_NAME "${PROJ_NAME_PRO} ${PROJ_VERSION}")
  SET(CPACK_NSIS_MODIFY_PATH ON)
ELSEIF(APPLE)
  SET(CPACK_GENERATOR "PackageMaker")
  SET(CPACK_SOURCE_GENERATOR "TGZ") 
  IF(APPLE_BUNDLE)
    # make sure CMAKE_INSTALL_PREFIX ends in /
    STRING(LENGTH "${CMAKE_INSTALL_PREFIX}" LEN)
    MATH(EXPR LEN "${LEN} -1" )
    STRING(SUBSTRING "${CMAKE_INSTALL_PREFIX}" ${LEN} 1 ENDCH)
    IF(NOT "${ENDCH}" STREQUAL "/")
      SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/")
    ENDIF(NOT "${ENDCH}" STREQUAL "/")
    SET(CPACK_PACKAGE_DEFAULT_LOCATION ${CMAKE_INSTALL_PREFIX})
    SET(PROJ_BUNDLE_NAME "${PROJ_NAME} ${PROJ_VERSION}")
	IF(APPLE_BUNDLE_APP)
	  SET(PROJ_BUNDLE_LOCATION "../..")
      SET(CPACK_PACKAGING_INSTALL_PREFIX "/${PROJ_BUNDLE_NAME}.app/Contents")
      SET(CMAKE_INSTALL_PREFIX 
        "${CMAKE_INSTALL_PREFIX}${CMAKE_BUNDLE_NAME}.app/Contents")
	ELSE(APPLE_BUNDLE_APP)
	  SET(CPACK_PACKAGING_INSTALL_PREFIX "/${PROJ_BUNDLE_NAME}")
      SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}${CMAKE_BUNDLE_NAME}")
    ENDIF(APPLE_BUNDLE_APP)
    #CONFIGURE_FILE("postflight.sh.in" "postflight.sh")	  
    #SET(CPACK_POSTFLIGHT_SCRIPT "postflight.sh")
	ELSE(APPLE_BUNDLE)
  ENDIF(APPLE_BUNDLE)
ELSE(WIN32 AND NOT UNIX)
  SET(CPACK_GENERATOR "TGZ")
  SET(CPACK_SOURCE_GENERATOR "TGZ") 
  SET(CPACK_STRIP_FILES "bin/spagedi")
ENDIF(WIN32 AND NOT UNIX)

INCLUDE(CPack)

INSTALL(FILES copying.txt readme.txt changelog.txt DESTINATION ${CMAKE_DOC_DIR})
INSTALL(FILES lambda.pl outsplit.pl nexus2fasta.pl varrep.pl DESTINATION ${CMAKE_DATA_DIR})

ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(examples)
ADD_SUBDIRECTORY(doc)
ADD_SUBDIRECTORY(tests)

#INCLUDE(InstallRequiredSystemLibraries)

