cmake_minimum_required(VERSION 3.24)

project(libabcesop LANGUAGES CXX)

include_directories(${PROJECT_SOURCE_DIR})
file(GLOB ABC_SRC *.cpp)

# Surpress warnings in external library
if(UNIX)
  add_compile_options("-w")
elseif(MSVC)
  string(REPLACE "/W3" "/w" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
endif()

if(STATIC_LIBABC)
  add_library(libabcesop STATIC EXCLUDE_FROM_ALL ${ABC_SRC})
  set_property(TARGET libabcesop PROPERTY OUTPUT_NAME libabcesop)
else()
  add_library(libabcesop SHARED EXCLUDE_FROM_ALL ${ABC_SRC})
  set_property(TARGET libabcesop PROPERTY OUTPUT_NAME libabcesop)
  set_property(TARGET libabcesop PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
target_include_directories(libabcesop INTERFACE ${PROJECT_SOURCE_DIR})

if(UNIX)
  target_compile_definitions(libabcesop PUBLIC "LIN64" ABC_NO_USE_READLINE)
elseif(WIN32)
  target_compile_definitions(
    libabcesop PUBLIC ABC_USE_NO_READLINE NOMINMAX WIN32_NO_DLL
                      _CRT_SECURE_NO_WARNINGS)
endif()
