cmake_minimum_required(VERSION 3.20)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(
  artichoke
  VERSION 0.1.0
  DESCRIPTION "artichoke programming language"
  LANGUAGES CXX
)

set(PROJECT_URL "lang.artichoke.dev")
set(PROJECT_AUTHOR "erick-alcachofa")
set(PROJECT_AUTHOR_GITHUB "@erick-alcachofa")

option(ENABLE_TESTING "Enable build of tests for library" OFF)

add_subdirectory(lib)
add_subdirectory(frontend)

install(
  TARGETS frontend
  RUNTIME  DESTINATION bin
)

get_target_property(
  EXECUTABLE_NAME frontend
  OUTPUT_NAME
)

install(
  CODE "execute_process(
    COMMAND ${CMAKE_COMMAND} -E create_symlink
      \${CMAKE_INSTALL_PREFIX}/bin/${EXECUTABLE_NAME}
      \${CMAKE_INSTALL_PREFIX}/bin/arti-c
  )"
)

install(
  TARGETS library library_static
  EXPORT  artichokeTargets
  FILE_SET HEADERS
  LIBRARY  DESTINATION lib
  ARCHIVE  DESTINATION lib
  RUNTIME  DESTINATION bin
  INCLUDES DESTINATION include
)

install(
  EXPORT artichokeTargets
  FILE artichokeTargets.cmake
  NAMESPACE artichoke::
  DESTINATION lib/cmake/artichoke
)

include (CMakePackageConfigHelpers)
write_basic_package_version_file(
  "artichokeConfigVersion.cmake"
  VERSION ${artichoke_VERSION}
  COMPATIBILITY AnyNewerVersion
)

install(
  FILES "cmake/artichokeConfig.cmake"
        "${CMAKE_CURRENT_BINARY_DIR}/artichokeConfigVersion.cmake"
  DESTINATION lib/cmake/artichoke
)

if(ENABLE_TESTING)
  add_subdirectory(tests)
endif()
