cmake_minimum_required(VERSION 3.5)

# project details

include("cmake/package.cmake")

package(libstrong
    FULL_VERSION "1.1.1"
    BUGREPORT "https://gitlab.office.nic.cz/fred/libstrong/")

set(LibStrong_INSTALL_INCLUDEDIR "include" CACHE STRING "Installation directory for headers")
set(LibStrong_INSTALL_CMAKEDIR "lib/cmake/${PACKAGE_NAME}" CACHE STRING "Installation directory for cmake config files")

cmake_policy(SET CMP0048 NEW)
project(LibStrong
    VERSION "${PACKAGE_VERSION}"
    LANGUAGES CXX)

# Options
option(LibStrong_BUILD_TESTS "Build tests" OFF)

#find_package(Boost 1.35.0 REQUIRED)

get_directory_property(HAS_PARENT PARENT_DIRECTORY)
if(HAS_PARENT)
    set(LIBSTRONG_VERSION ${LibStrong_VERSION} PARENT_SCOPE)
endif()

find_package(Boost 1.35.0 REQUIRED)

##############################################
# Create target and set properties
add_library(strong INTERFACE)

#Add an alias so that library can be used inside the build tree, e.g. when testing
add_library(LibStrong::library ALIAS strong)

#Set target properties
target_include_directories(strong
    INTERFACE
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>
)

target_compile_features(strong INTERFACE cxx_decltype_auto)

add_library(strong-static-asserts src/type.cc)
target_compile_options(strong-static-asserts PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall -Wextra -ggdb -grecord-gcc-switches>)
set_target_properties(strong-static-asserts PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
target_link_libraries(strong-static-asserts PRIVATE LibStrong::library)

if(LibStrong_BUILD_TESTS)
    add_subdirectory(test)
endif()

include("cmake/package_dist.cmake")
package_dist(PACKAGE_NAME "${PACKAGE_NAME}"
             PACKAGE_PREFIX "${LIBSTRONG_PREFIX}"
             PACKAGE_TARNAME "${PACKAGE_TARNAME}")
