107 lines
3.0 KiB
CMake
107 lines
3.0 KiB
CMake
###########################################
|
|
# macros to define options as there is numerous options in oai
|
|
################################################
|
|
macro(add_option name val helpstr)
|
|
if(DEFINED ${name})
|
|
set(value ${${name}})
|
|
else(DEFINED ${name})
|
|
set(value ${val})
|
|
endif()
|
|
set(${name} ${value} CACHE STRING "${helpstr}")
|
|
add_definitions("-D${name}=${value}")
|
|
endmacro(add_option)
|
|
|
|
macro(add_boolean_option name val helpstr)
|
|
if(DEFINED ${name})
|
|
set(value ${${name}})
|
|
else(DEFINED ${name})
|
|
set(value ${val})
|
|
endif()
|
|
set(${name} ${value} CACHE STRING "${helpstr}")
|
|
set_property(CACHE ${name} PROPERTY TYPE BOOL)
|
|
if (${value})
|
|
add_definitions("-D${name}")
|
|
endif (${value})
|
|
endmacro(add_boolean_option)
|
|
|
|
macro(add_integer_option name val helpstr)
|
|
if(DEFINED ${name})
|
|
set(value ${${name}})
|
|
else(DEFINED ${name})
|
|
set(value ${val})
|
|
endif()
|
|
set(${name} ${value} CACHE STRING "${helpstr}")
|
|
add_definitions("-D${name}=${value}")
|
|
endmacro(add_integer_option)
|
|
|
|
macro(add_list1_option name val helpstr)
|
|
if(DEFINED ${name})
|
|
set(value ${${name}})
|
|
else(DEFINED ${name})
|
|
set(value ${val})
|
|
endif()
|
|
set(${name} ${value} CACHE STRING "${helpstr}")
|
|
set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
|
|
if(NOT "${value}" STREQUAL "False")
|
|
add_definitions("-D${name}=${value}")
|
|
endif()
|
|
endmacro(add_list1_option)
|
|
|
|
macro(add_list2_option name val helpstr)
|
|
if(DEFINED ${name})
|
|
set(value ${${name}})
|
|
else(DEFINED ${name})
|
|
set(value ${val})
|
|
endif()
|
|
set(${name} ${value} CACHE STRING "${helpstr}")
|
|
set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
|
|
if(NOT "${value}" STREQUAL "False")
|
|
add_definitions("-D${value}=1")
|
|
endif()
|
|
endmacro(add_list2_option)
|
|
|
|
macro(add_list_string_option name val helpstr)
|
|
if(DEFINED ${name})
|
|
set(value ${${name}})
|
|
else(DEFINED ${name})
|
|
set(value ${val})
|
|
endif()
|
|
set(${name} ${value} CACHE STRING "${helpstr}")
|
|
set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
|
|
if(NOT "${value}" STREQUAL "False")
|
|
add_definitions("-D${name}=\"${value}\"")
|
|
endif()
|
|
endmacro(add_list_string_option)
|
|
|
|
# this function should produce the same value as the macro MAKE_VERSION defined in the C code (file types.h)
|
|
function(make_version VERSION_VALUE)
|
|
math(EXPR RESULT "0")
|
|
foreach (ARG ${ARGN})
|
|
math(EXPR RESULT "${RESULT} * 256 + ${ARG}")
|
|
endforeach()
|
|
set(${VERSION_VALUE} "${RESULT}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
macro(compile_asn1 asn1Source asn1cCmd ResultFlag)
|
|
# Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
|
|
execute_process(COMMAND ${asn1cCmd} ${asn1Source} RESULT_VARIABLE ret)
|
|
|
|
if (NOT ${ret} STREQUAL 0)
|
|
message(FATAL_ERROR "${ret}: error")
|
|
endif (NOT ${ret} STREQUAL 0)
|
|
|
|
add_custom_target (
|
|
${ResultFlag} ALL
|
|
${asn1cCmd} ${asn1Source}
|
|
DEPENDS ${asn1Source}
|
|
)
|
|
endmacro(compile_asn1)
|
|
|
|
macro(eval_boolean VARIABLE)
|
|
if(${ARGN})
|
|
set(${VARIABLE} ON)
|
|
else()
|
|
set(${VARIABLE} OFF)
|
|
endif()
|
|
endmacro()
|