cmake_minimum_required(VERSION 3.4)
project(cspice VERSION 1.0.0 LANGUAGES C)

if (CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(ISA_BITS 64)
else()
    set(ISA_BITS 32)
endif()
message(STATUS "Generate code for a ${ISA_BITS}-bit environment (-m${ISA_BITS})")

file(GLOB SPICE_SOURCE ${PROJECT_SOURCE_DIR}/src/cspice/*.c)
set(INCLUDE_PATH "${PROJECT_SOURCE_DIR}/include")

add_library(cSpiceObj OBJECT ${SPICE_SOURCE})
set_property(TARGET cSpiceObj PROPERTY POSITION_INDEPENDENT_CODE 1)

target_include_directories(cSpiceObj PUBLIC "${INCLUDE_PATH}")

target_compile_definitions(cSpiceObj PUBLIC "NON_ANSI_STDIO")
target_compile_options(cSpiceObj PUBLIC -m${ISA_BITS} -ansi -fPIC)
target_compile_options(cSpiceObj PRIVATE "-w")

add_library(cspice SHARED $<TARGET_OBJECTS:cSpiceObj>)
if (BUILD_STATIC_LIBS)
    add_library(cspice_a STATIC $<TARGET_OBJECTS:cSpiceObj>)
endif()
target_link_libraries(cspice m)

set_target_properties(cspice PROPERTIES
    CLEAN_DIRECT_OUTPUT 1
    VERSION ${PROJECT_VERSION}
    SOVERSION ${PROJECT_VERSION_MAJOR}
)
if (BUILD_STATIC_LIBS)
    set_target_properties(cspice_a PROPERTIES
        OUTPUT_NAME cspice
        CLEAN_DIRECT_OUTPUT 1
    )
endif()

install(
    TARGETS cspice
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
if (BUILD_STATIC_LIBS)
    install(
        TARGETS cspice_a
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    )
endif()
install(DIRECTORY include/ DESTINATION ${INCLUDE_INSTALL_DIR}/cspice)
