# Manyo library

# $ cd manyo
# $ mkdir build; cd build
# $ rm -rf *; cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install [-DMULTH=<n>[, -DNEXUS_PATH=/path/to/nexul, -DMANYO_INSTTYPE=(N/O)]]
# $ VERBOSE=1 make -j install

cmake_minimum_required(VERSION 3.13)
project(Manyo
    VERSION 0.4
    LANGUAGES CXX
)

#
# ========= Arguments =========
#

# Installation type
# MANYO_LIB_PATH is the relative path to libManyo and other manyo libraries from CMAKE_INSTALL_PREFIX
# as "lib/python3.11/dist-packages"
# Therefor MANYO_PATH is ${CMAKE_INSTALL_PREFIX}/${MANYO_LIB_PATH}
if ((DEFINED MANYO_INSTTYPE) AND (${MANYO_INSTTYPE} MATCHES "O"))
    message("MANYO_INSTTYPE = Old")
    set(MANYO_LIB_PATH manyo/lib)
    set(MANYO_PATH ${CMAKE_INSTALL_PREFIX}/manyo)
    set(MANYO_ROOT_PATH ${CMAKE_INSTALL_PREFIX}/manyo)
else()
    message("MANYO_INSTTYPE = Default 0.4")
    set(MANYO_LIB_PATH lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages)
    set(MANYO_PATH ${CMAKE_INSTALL_PREFIX}/${MANYO_LIB_PATH})
    set(MANYO_ROOT_PATH ${CMAKE_INSTALL_PREFIX})
endif()
message("MANYO_PATH = " ${MANYO_PATH})

# Set MANYO_MULTH : If MULTH is given by cmake argument,
if (DEFINED MULTH)
    set(MANYO_MULTH ${MULTH})
else (DEFINED MULTH)
    set(MANYO_MULTH 8)
endif (DEFINED MULTH)

# Set MANYO_NEXUS_PATH
if (DEFINED NEXUS_PATH)
    set(MANYO_NEXUS_PATH ${NEXUS_PATH})
else ()
    set(MANYO_NEXUS_PATH ${MANYO_ROOT_PATH})
endif ()
message("MANYO_NEXUS_PATH=" ${MANYO_NEXUS_PATH})

#
# ========= Dependencies =========
#

# Find Python
find_package(Python
    COMPONENTS
        Interpreter
        Development
)

# Find OpenMP
find_package(OpenMP)

# Find GSL
find_package(GSL REQUIRED)

# Find LibBoost
if (POLICY CMP0167)
    cmake_policy (SET CMP0167 NEW)
endif ()
find_package(Boost 1.66.0 REQUIRED
    COMPONENTS
        filesystem
        program_options
        serialization
)

#
# ========= SWIG =========
#

CMAKE_POLICY(SET CMP0086 NEW)
find_package(SWIG REQUIRED)
include(UseSWIG)

#
# ========= Subdirectories =========
#

add_subdirectory(core)
add_subdirectory(MLF)

message("Boost_VERSION_STRING = " ${Boost_VERSION_STRING})
if (${Boost_VERSION_STRING} STRLESS "1.87.0")
    add_subdirectory(SerialPySrv)
endif()
