cmake_minimum_required(VERSION 3.0.0)

set(VERSION_MAJOR
    0
    CACHE STRING "Project major version number")
set(VERSION_MINOR
    "1"
    CACHE STRING "Project minor version number")
set(VERSION_PATCH
    "0"
    CACHE STRING "Project patch version number")
set(COSE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
mark_as_advanced(VERSION_MAJOR VERSION_MINOR VERSION_PATCH COSE_VERSION)

project("cose-c" VERSION "${COSE_VERSION}")

###############################################################################
# OPTIONS
###############################################################################

option(COSE_C_USE_CONTEXT "Use context pointer for COSE functions" ON)
option(COSE_C_VERBOSE "Produce COSE_C_VERBOSE makefile output" OFF)
option(COSE_C_OPTIMIZE "Optimize for size" OFF)
option(COSE_C_FATAL_WARNINGS "Treat build warnings as error" OFF)
option(COSE_C_COVERALLS "Generate coveralls data" ON)
option(COSE_C_COVERALLS_SEND "Send data to coveralls site" OFF)
option(COSE_C_BUILD_DOCS "Create docs using Doxygen" OFF)
option(COSE_C_RUN_CLANG_TIDY "Use Clang-Tidy for static analysis" OFF)
option(COSE_C_BUILD_TESTS "build tests" ON)
option(COSE_C_BUILD_DUMPER "build dumper" ON)
option(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
option(COSE_C_USE_MBEDTLS "Use MBedTLS for the Crypto Package" OFF)
option(COSE_C_USE_FIND_PACKAGE "Use cmake find_package instead of using cmake project_add" OFF)
option(COSE_C_INCLUDE_ENCRYPT "Include COSE_ENCRYPT" ON)
option(COSE_C_INCLUDE_ENCRYPT0 "Include COSE_ENCRYPT0" ON)
option(COSE_C_INCLUDE_MAC "Include COSE_MAC" ON)
option(COSE_C_INCLUDE_MAC0 "Include COSE_MAC0" ON)
option(COSE_C_INCLUDE_SIGN "Include COSE_SIGN" ON)
option(COSE_C_INCLUDE_SIGN0 "Include COSE_SIGN0" ON)
option(COSE_C_INCLUDE_SIGN1 "Include COSE_SIGN1" ON)

if(NOT COSE_C_INCLUDE_SIGN0)
  message("Use COSE_C_INCLUDE_SIGN1 rather than COSE_C_INCLUDE_SIGN0")
  set(COSE_C_INCLUDE_SIGN1 ${COSE_C_INCLUDE_SIGN0})
endif()

# Set the output of the libraries and executables.
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR})

set(dist_dir ${CMAKE_BINARY_DIR}/dist)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
set(includedir ${CMAKE_INSTALL_PREFIX}/include)

if(NOT CMAKE_BUILD_TYPE)
  if(COSE_C_OPTIMIZE)
    set(CMAKE_BUILD_TYPE MinSizeRel)
    set(COSE_C_COVERALLS OFF)
    set(COSE_C_COVERALLS_SEND OFF)
  else()
    set(CMAKE_BUILD_TYPE Debug)
  endif()
endif()

if(NOT COSE_C_INCLUDE_ENCRYPT)
  add_definitions(-DINCLUDE_ENCRYPT=0)
endif()
if(NOT COSE_C_INCLUDE_ENCRYPT0)
  add_definitions(-DINCLUDE_ENCRYPT0=0)
endif()
if(NOT COSE_C_INCLUDE_MAC)
  add_definitions(-DINCLUDE_MAC=0)
endif()
if(NOT COSE_C_INCLUDE_MAC0)
  add_definitions(-DINCLUDE_MAC0=0)
endif()
if(NOT COSE_C_INCLUDE_SIGN)
  add_definitions(-DINCLUDE_SIGN=0)
endif()
if(NOT COSE_C_INCLUDE_SIGN1)
  add_definitions(-DINCLUDE_SIGN1=0)
endif()
if(COSE_C_USE_CONTEXT)
  add_definitions(-DUSE_CBOR_CONTEXT)
endif()
if(MSVC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
  set(COSE_C_COVERALLS OFF)
endif()

add_definitions(-DUSE_ARRAY)
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
  message(STATUS "adding GCC/Clang options ")
  add_definitions(-std=gnu99 -Wall -Wextra -pedantic)
  if(COSE_C_FATAL_WARNINGS)
    add_definitions(-Werror)
  endif()
  if(COSE_C_OPTIMIZE)
    add_definitions(-Os)
  endif()
  add_definitions(-DNDEBUG)
elseif(MSVC)
  add_definitions(/W4)
  if(COSE_C_FATAL_WARNINGS)
    add_definitions(/WX)
  endif()
else()
  message(FATAL_ERROR "unhandled compiler id: ${CMAKE_C_COMPILER_ID}")
endif()

if(versbose)
  set(CMAKE_VERBOSE_MAKEFILE ON)
endif()

###############################################################################
# DOCS
###############################################################################

if(COSE_C_BUILD_DOCS)
  find_package(Doxygen)
  if(NOT DOXYGEN_FOUND)
    message(FATAL_ERROR "Doxygen is needed to build the documenation")
  endif()

  set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
  set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)

  configure_file(${doxyfile_in} ${doxyfile} @ONLY)

  add_custom_target(
    doc
    COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "Generating API documentation with Doxygen"
    VERBATIM)

  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
endif()

###############################################################################
# DEPENDENCIES
###############################################################################

if(COSE_C_RUN_CLANG_TIDY)
  find_program(
    CLANG_TIDY_EXE
    NAMES "clang-tidy"
    DOC "/usr/bin/clang-tidy")
  if(NOT CLANG_TIDY_EXE)
    message(WARNING "clang-tidy not found.")
  else()
    message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
    set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}")
  endif()
endif(COSE_C_RUN_CLANG_TIDY)


###############################################################################
# DEPENDENCIES
###############################################################################

if(COSE_C_USE_FIND_PACKAGE)
  find_package(cn-cbor)
else()
  include(ExternalProject)
  externalproject_add(
    project_cn-cbor
    GIT_REPOSITORY https://github.com/jimsch/cn-cbor
    GIT_TAG master
    CMAKE_ARGS -DCN_CBOR_OPTIMIZE=OFF
               -DCN_CBOR_USE_CONTEXT=${COSE_C_USE_CONTEXT}
               -DCN_CBOR_BUILD_DOCS=OFF
               -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
               -DCN_CBOR_COVERALLS=OFF
               -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
               -DCN_CBOR_FATAL_WARNINGS=OFF
    INSTALL_DIR "${dist_dir}"
    UPDATE_DISCONNECTED 1)

  externalproject_get_property(project_cn-cbor install_dir)
  include_directories("${install_dir}/include")

  add_library(cn-cbor STATIC IMPORTED GLOBAL)
  if(MSVC)
    set_property(TARGET cn-cbor PROPERTY IMPORTED_LOCATION
                                         "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor.lib")
  else()
    set_property(
      TARGET cn-cbor PROPERTY IMPORTED_LOCATION
                              "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor${CMAKE_SHARED_LIBRARY_SUFFIX}")
  endif()

  if(NOT TARGET cn-cbor::cn-cbor)
    add_library(cn-cbor::cn-cbor ALIAS cn-cbor)
  endif()

  add_dependencies(cn-cbor project_cn-cbor)
endif()

if(COSE_C_USE_MBEDTLS)
  add_definitions(-DUSE_MBED_TLS)

  if(COSE_C_USE_FIND_PACKAGE)
    find_package(MbedTLS)
  else()
    externalproject_add(
      project_mbedtls
      GIT_REPOSITORY https://github.com/ARMmbed/mbedtls
      CMAKE_ARGS -DENABLED_PROGRAMS=OFF
                 -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
                 -DUSE_SHARED_MBEDTLS_LIBRARY=${BUILD_SHARED_LIBS}
                 -DENABLE_TESTING=OFF
                 -DLIB_INSTALL_DIR=${install_dir}/lib
                 INTALL_DIR
                 "${dist_dir}"
      UPDATE_DISCONNECTED 1)

    externalproject_get_property(project_mbedtls install_dir)
    include_directories("${install_dir}/include")
    add_library(mbedtls STATIC IMPORTED)
    if(MSVC)
      set_property(TARGET mbedtls PROPERTY IMPORTED_LOCATION
                                           "${dist_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}mbedcrypto.lib")
    else()
      set_property(
        TARGET mbedtls PROPERTY IMPORTED_LOCATION
                                "${dist_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}mbedcrypto${CMAKE_SHARED_LIBRARY_SUFFIX}")
    endif()
    add_dependencies(mbedtls project_mbedtls)
  endif()

else()
  find_package(OpenSSL REQUIRED)
endif()

###############################################################################
# ADD LIBRARY
###############################################################################

add_subdirectory(src)

###############################################################################
# ADD DUMPER
###############################################################################

if(COSE_C_BUILD_DUMPER)
  add_subdirectory(dumper)
endif()

###############################################################################
# ADD TESTS
###############################################################################

if(COSE_C_BUILD_TESTS)
  enable_testing()
  include(CTest)
  add_subdirectory(test)
endif()

###############################################################################
# PRINT CONFIG
###############################################################################

message(STATUS "COSE_C_INCLUDE_ENCRYPT:..........${COSE_C_INCLUDE_ENCRYPT}")
message(STATUS "COSE_C_INCLUDE_ENCRYPT0:.........${COSE_C_INCLUDE_ENCRYPT0}")
message(STATUS "COSE_C_INCLUDE_MAC:..............${COSE_C_INCLUDE_MAC}")
message(STATUS "COSE_C_INCLUDE_MAC0:.............${COSE_C_INCLUDE_MAC0}")
message(STATUS "COSE_C_INCLUDE_SIGN:.............${COSE_C_INCLUDE_SIGN}")
message(STATUS "COSE_C_INCLUDE_SIGN0:............${COSE_C_INCLUDE_SIGN0}")
message(STATUS "COSE_C_INCLUDE_SIGN1:............${COSE_C_INCLUDE_SIGN1}")
message(STATUS "COSE_C_USE_CONTEXT:..............${COSE_C_USE_CONTEXT}")
message(STATUS "COSE_C_FATAL_WARNINGS:...........${COSE_C_FATAL_WARNINGS}")
message(STATUS "COSE_C_BUILD_TESTS:..............${COSE_C_BUILD_TESTS}")
message(STATUS "COSE_C_BUILD_DOCS:...............${COSE_C_BUILD_DOCS}")
message(STATUS "COSE_C_USE_MBEDTLS:..............${COSE_C_USE_MBEDTLS}")
message(STATUS "COSE_C_USE_FIND_PACKAGE:.........${COSE_C_USE_FIND_PACKAGE}")
message(STATUS "COSE_C_BUILD_DUMPER:.............${COSE_C_BUILD_DUMPER}")
message(STATUS "CMAKE_BUILD_TYPE:................${CMAKE_BUILD_TYPE}")
message(STATUS "BUILD_SHARED_LIBS:...............${BUILD_SHARED_LIBS}")
message(STATUS "COSE_VERSION:....................${COSE_VERSION}")
message(STATUS "CMAKE_C_COMPILER:................${CMAKE_C_COMPILER}")
message(STATUS "CMAKE_CXX_COMPILER:..............${CMAKE_CXX_COMPILER}")
message(STATUS "DO_CLANG_TIDY:...................${DO_CLANG_TIDY}")
