cmake_minimum_required(VERSION 3.8.2)

project(marisa C CXX)

set(MARISA_INCLUDE_DIRS
    ${CMAKE_CURRENT_SOURCE_DIR}/lib
    ${CMAKE_CURRENT_SOURCE_DIR}/include
)

set(MARISA_SRC
    lib/marisa/grimoire/io/reader.cc
    lib/marisa/grimoire/io/mapper.cc
    lib/marisa/grimoire/io/writer.cc
    lib/marisa/grimoire/trie/tail.cc
    lib/marisa/grimoire/trie/louds-trie.cc
    lib/marisa/grimoire/vector/bit-vector.cc
    lib/marisa/trie.cc
    lib/marisa/agent.cc
    lib/marisa/keyset.cc
)

include_directories(${MARISA_INCLUDE_DIRS})

add_library(marisa ${MARISA_SRC})

# Glob public headers
file(GLOB marisa_headers ${CMAKE_CURRENT_SOURCE_DIR}/include/marisa/*.h)
file(COPY ${marisa_headers}
    DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/marisa/)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/include/marisa.h
    DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

if(NOT SKIP_INSTALL_ALL)
    set(VERSION "0.2.6")
    include(GNUInstallDirs)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/marisa.h
        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT development)
    install(FILES ${marisa_headers}
        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/marisa COMPONENT development)
    install(TARGETS	marisa EXPORT marisaTargets
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT development
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT development
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime)
    set(prefix      "${CMAKE_INSTALL_PREFIX}")
    set(includedir  "${CMAKE_INSTALL_INCLUDEDIR}/marisa")
    set(libdir      "${CMAKE_INSTALL_LIBDIR}")
    configure_file(marisa.pc.in marisa.pc @ONLY)
    install (FILES ${CMAKE_CURRENT_BINARY_DIR}/marisa.pc
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
    configure_file(marisa-config.cmake.in marisa-config.cmake @ONLY)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/marisa-config.cmake
        DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/marisa")
endif()

