Commit 320f4227 authored by emerit's avatar emerit
Browse files

update cmake version

parent 9c35fdcb
Loading
Loading
Loading
Loading
+64 −41
Original line number Diff line number Diff line
@@ -30,11 +30,10 @@
#
# INCLUDE_SPLIT is not set by default. If split rendering is used, then add -D INCLUDE_SPLIT=1 to the build command

cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.6)

set(CMAKE_C_STANDARD 99)


# configuration options for UNIX
if(UNIX)
  set(TARGET_PLATFORM "" CACHE STRING "i686 / x86_64")
@@ -45,6 +44,7 @@ if(UNIX)
  if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "")
  endif()

  # TARGET_PLATFORM
  if("${TARGET_PLATFORM}" MATCHES "i386" OR
    "${TARGET_PLATFORM}" MATCHES "i586" OR
@@ -56,11 +56,13 @@ if(UNIX)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
  endif()

  # C compiler flags
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffp-contract=off") # disable floating point operation contraction
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter")

  # to be uncommented in CI
  # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")

@@ -68,6 +70,7 @@ if(UNIX)
  if(CLANG)
    find_program(clangBin NAMES /home/amm-archiv/soft/Linux/clang/current/bin/clang clang REQUIRED)
    set(CMAKE_C_COMPILER "${clangBin}" CACHE STRING "")

    if("${CLANG}" MATCHES "1" OR "${CLANG}" MATCHES "msan")
      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory")
      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory")
@@ -78,6 +81,7 @@ if(UNIX)
      # NOTE: keep in sync with list in Makefile
      set(USAN_CHECKS_ENABLE
        undefined # Default checks

        # Extra checks
        float-divide-by-zero
        implicit-conversion
@@ -91,11 +95,13 @@ if(UNIX)
      message(FATAL_ERROR "Unknown CLANG setting: ${CLANG}")
    endif()
  endif()

  # GCOV
  if(GCOV)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic")
  endif()

  # STRIP
  if(STRIP)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -ffunction-sections")
@@ -104,6 +110,7 @@ if(UNIX)

  message("CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
  message("CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")

  # write settings in CMake cache
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "")
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "")
@@ -115,8 +122,10 @@ elseif(WIN32)
    -D_CRT_SECURE_NO_WARNINGS
    /MP
  )

  if(NOT INCLUDE_SPLIT)
    add_compile_options("/W4")

    # to be uncommented in CI
    # add_compile_options("/WX")
  endif()
@@ -124,6 +133,7 @@ endif()

# configuration options for all platforms
set(WMOPS OFF CACHE BOOL "enable WMOPS")

if(WMOPS)
  add_definitions("-DWMOPS=1")
endif()
@@ -135,10 +145,13 @@ include(CTest)
file(GLOB libComSrcs "lib_com/*.c")
file(GLOB libComHeaders "lib_com/*.h")
add_library(lib_com ${libComSrcs} ${libComHeaders})

if(UNIX)
  target_link_libraries(lib_com PRIVATE m)
endif()

target_include_directories(lib_com PUBLIC lib_com PRIVATE lib_enc lib_dec lib_rend lib_debug)

if(INCLUDE_SPLIT)
  target_include_directories(lib_com PRIVATE lib_lc3plus)
endif()
@@ -154,6 +167,7 @@ file(GLOB libEncHeaders "lib_enc/*.h")
add_library(lib_enc ${libEncSrcs} ${libEncHeaders})
target_link_libraries(lib_enc lib_com lib_debug)
target_include_directories(lib_enc PUBLIC lib_enc PRIVATE lib_dec lib_rend)

if(INCLUDE_SPLIT)
  target_include_directories(lib_enc PRIVATE lib_lc3plus)
endif()
@@ -164,6 +178,7 @@ if(INCLUDE_SPLIT)
  add_library(lib_lc3plus ${libLC3plusSrcs} ${libLC3plusHeaders})
  target_include_directories(lib_lc3plus PUBLIC lib_lc3plus)
  target_link_libraries(lib_lc3plus lib_com) # For including options.h, which is needed for instrumentation to work correctly

  if(WMOPS)
    target_link_libraries(lib_lc3plus lib_debug)
  endif()
@@ -171,6 +186,7 @@ endif()

file(GLOB libRendSrcs "lib_rend/*.c")
file(GLOB libRendHeaders "lib_rend/*.h")

if(NOT INCLUDE_SPLIT)
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*lc3plus.*\.c$")
  list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_cldfb_codec.*\.c$")
@@ -189,11 +205,12 @@ endif()

add_library(lib_rend ${libRendSrcs} ${libRendHeaders})
target_link_libraries(lib_rend lib_dec lib_com lib_debug) # Todo refactor: This dependency on lib_dec should be removed.

if(INCLUDE_SPLIT)
  target_link_libraries(lib_rend lib_lc3plus)
endif()
target_include_directories(lib_rend PUBLIC lib_rend PRIVATE lib_enc)

target_include_directories(lib_rend PUBLIC lib_rend PRIVATE lib_enc)

file(GLOB libDecSrcs "lib_dec/*.c")
file(GLOB libDecHeaders "lib_dec/*.h")
@@ -203,11 +220,14 @@ target_include_directories(lib_dec PUBLIC lib_dec lib_rend PRIVATE lib_enc)

file(GLOB libUtilSrcs "lib_util/*.c")
file(GLOB libUtilHeaders "lib_util/*.h")

if(NOT INCLUDE_SPLIT)
  list(FILTER libUtilSrcs EXCLUDE REGEX ".*lib_util\/.*split_rend.*\.c$")
endif()

add_library(lib_util ${libUtilSrcs} ${libUtilHeaders})
target_include_directories(lib_util PUBLIC lib_util PRIVATE lib_com lib_enc lib_dec lib_rend lib_debug)

if(INCLUDE_SPLIT)
  target_include_directories(lib_util PRIVATE lib_lc3plus)
endif()
@@ -221,12 +241,14 @@ endif()

add_executable(IVAS_cod apps/encoder.c)
target_link_libraries(IVAS_cod lib_enc lib_util)

if(WIN32)
  target_link_libraries(IVAS_cod Ws2_32)
endif()

add_executable(IVAS_dec apps/decoder.c)
target_link_libraries(IVAS_dec lib_dec lib_util)

if(WIN32)
  target_link_libraries(IVAS_dec Ws2_32)
endif()
@@ -240,6 +262,7 @@ if(COPY_EXECUTABLES_FROM_BUILD_DIR)
  add_custom_command(TARGET IVAS_cod POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:IVAS_cod>" "${CMAKE_CURRENT_SOURCE_DIR}/")
  add_custom_command(TARGET IVAS_dec POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:IVAS_dec>" "${CMAKE_CURRENT_SOURCE_DIR}/")
  add_custom_command(TARGET IVAS_rend POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:IVAS_rend>" "${CMAKE_CURRENT_SOURCE_DIR}/")

  if(INCLUDE_SPLIT)
    if(NOT WMOPS)
      add_custom_command(TARGET ivas_lc3plus_unit_test POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$<TARGET_FILE:ivas_lc3plus_unit_test>" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/split_rendering/lc3plus")