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