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_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)

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( -DCOSE_C_INCLUDE_SIGN=0 )
endif ()
if (NOT COSE_C_INCLUDE_SIGN1)
   add_definitions( -DCOSE_C_INCLUDE_SIGN1=0 )
endif ()

if ( MSVC OR CMAKE_C_COMPILER_ID MATCHES "Clang" )
   set (COSE_C_COVERALLS OFF)
endif ()

message ( "Build type: ${CMAKE_BUILD_TYPE}" )

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 ()

set (LIB_TYPE STATIC)
if (BUILD_SHARED_LIBS)
   set (LIB_TYPE SHARED)
endif (BUILD_SHARED_LIBS)

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_USE_FIND_PACKAGE)
   find_package(cn-cbor REQUIRED)
else()
   include(ExternalProject)
   ExternalProject_Add(
   project_cn-cbor
   GIT_REPOSITORY https://github.com/jimsch/cn-cbor
   GIT_TAG master
   CMAKE_ARGS -Doptimize=OFF -Duse_context=${COSE_C_USE_CONTEXT} -Dbuild_docs=OFF -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCOSE_C_COVERALLS=OFF -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -Dfatal_warnings=OFF
   INSTALL_DIR "${dist_dir}"
   UPDATE_DISCONNECTED 1
   )

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

   if (MSVC)
      add_library (cn-cbor STATIC IMPORTED)
      set_property (TARGET cn-cbor PROPERTY IMPORTED_LOCATION "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor.lib")
   else ()
      add_library (cn-cbor STATIC IMPORTED)
      set_property (TARGET cn-cbor PROPERTY IMPORTED_LOCATION "${install_dir}/lib/${CMAKE_SHARED_MODULE_PREFIX}cn-cbor${CMAKE_SHARED_LIBRARY_SUFFIX}")
   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 REQUIRED)
   else()
      ExternalProject_Add(
         project_mbedtls
         GIT_REPOSITORY https://github.com/ARMmbed/mbedtls
         CMAKE_ARGS -DENABLED_PROGRAMS=OFF -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCOSE_C_COVERALLS=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=${BUILD_SHARED_LIBS} -Dfatal_warnings=OFF -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)
   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}")


