Implements map and ref for both static & dynamic mode
See merge request oss/rotgen!12
This commit is contained in:
parent
aacae1cbb1
commit
6c2b260229
58 changed files with 4121 additions and 1205 deletions
|
|
@ -20,21 +20,24 @@ function(check_force_dynamic_and_sizes FORCE_DYNAMIC_VAR MAX_SIZE_VAR)
|
|||
endif()
|
||||
endfunction()
|
||||
|
||||
function(infer_force_dynamic FORCE_DYNAMIC_VAR MAX_SIZE_VAR OUT_FORCE_DYNAMIC_INFERRED)
|
||||
function(infer_force_dynamic FORCE_DYNAMIC_VAR MAX_SIZE_VAR ET_VAR OUT_FORCE_DYNAMIC_INFERRED)
|
||||
set(${OUT_FORCE_DYNAMIC_INFERRED} OFF PARENT_SCOPE)
|
||||
|
||||
if(${FORCE_DYNAMIC_VAR})
|
||||
if(NOT ${MAX_SIZE_VAR} STREQUAL "")
|
||||
message(FATAL_ERROR "ROTGEN_FORCE_DYNAMIC cannot be used together with MAX_SIZE.")
|
||||
message(FATAL_ERROR "ROTGEN_FORCE_DYNAMIC cannot be used together with ROTGEN_MAX_SIZE.")
|
||||
endif()
|
||||
elseif(${MAX_SIZE_VAR} STREQUAL "")
|
||||
if(NOT ${ET_VAR} STREQUAL "")
|
||||
message(FATAL_ERROR "ROTGEN_FORCE_DYNAMIC cannot be used together with ROTGEN_ENABLE_EXPRESSION_TEMPLATES.")
|
||||
endif()
|
||||
elseif(NOT ${MAX_SIZE_VAR} AND NOT ${ET_VAR})
|
||||
# None set, enable force_dynamic
|
||||
set(${OUT_FORCE_DYNAMIC_INFERRED} ON PARENT_SCOPE)
|
||||
set(${FORCE_DYNAMIC_VAR} ON PARENT_SCOPE) # update caller variable!
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(build_compile_definitions FORCE_DYNAMIC_VAR MAX_SIZE_VAR OUT_DEFS)
|
||||
function(build_compile_definitions FORCE_DYNAMIC_VAR MAX_SIZE_VAR ENABLE_ET OUT_DEFS)
|
||||
set(defs "")
|
||||
if(${FORCE_DYNAMIC_VAR})
|
||||
list(APPEND defs "ROTGEN_FORCE_DYNAMIC")
|
||||
|
|
@ -42,6 +45,9 @@ function(build_compile_definitions FORCE_DYNAMIC_VAR MAX_SIZE_VAR OUT_DEFS)
|
|||
if(NOT ${MAX_SIZE_VAR} STREQUAL "")
|
||||
list(APPEND defs "ROTGEN_MAX_SIZE=${${MAX_SIZE_VAR}}")
|
||||
endif()
|
||||
if(${ENABLE_ET})
|
||||
list(APPEND defs "ROTGEN_ENABLE_EXPRESSION_TEMPLATES")
|
||||
endif()
|
||||
endif()
|
||||
set(${OUT_DEFS} "${defs}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
@ -49,15 +55,14 @@ endfunction()
|
|||
function(print_configuration_summary FORCE_DYNAMIC_VAR FORCE_CONFIG_REASON MAX_SIZE_VAR COMPILE_DEFS)
|
||||
message(STATUS "==================== Rotgen Configuration Summary ====================")
|
||||
|
||||
if(DEFINED ROTGEN_DISABLE_EXPRESSION_TEMPLATES AND ROTGEN_DISABLE_EXPRESSION_TEMPLATES)
|
||||
message(STATUS " Configuration mode: DISABLE_EXPRESSION_TEMPLATES (overrides other settings)")
|
||||
elseif(${FORCE_DYNAMIC_VAR})
|
||||
message(STATUS " Configuration mode: DYNAMIC")
|
||||
if(${FORCE_CONFIG_REASON})
|
||||
message(STATUS " Reason : No static size options were provided")
|
||||
endif()
|
||||
if(${FORCE_DYNAMIC_VAR})
|
||||
message(STATUS " Configuration mode: DYNAMIC")
|
||||
if(${FORCE_CONFIG_REASON})
|
||||
message(STATUS " Reason : No static size options were provided")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS " Configuration mode: STATIC")
|
||||
message(STATUS " Configuration mode: STATIC")
|
||||
message(STATUS " Expression Templates: ${ROTGEN_ENABLE_EXPRESSION_TEMPLATES}")
|
||||
endif()
|
||||
|
||||
set(PREPROCESSOR_FLAGS "")
|
||||
|
|
@ -70,20 +75,9 @@ endfunction()
|
|||
|
||||
function(handle_option OUT_DEFS)
|
||||
# Early-out if disabling expression templates
|
||||
if(NOT DEFINED ROTGEN_DISABLE_EXPRESSION_TEMPLATES)
|
||||
if(NOT DEFINED ROTGEN_ENABLE_EXPRESSION_TEMPLATES)
|
||||
set(ROTGEN_DISABLE_EXPRESSION_TEMPLATES OFF)
|
||||
endif()
|
||||
if(ROTGEN_DISABLE_EXPRESSION_TEMPLATES)
|
||||
# Pass only the disable flag
|
||||
set(${OUT_DEFS} "ROTGEN_DISABLE_EXPRESSION_TEMPLATES" PARENT_SCOPE)
|
||||
message(STATUS "==================== Rotgen Configuration Summary ====================")
|
||||
message(STATUS " Configuration mode: DISABLE_EXPRESSION_TEMPLATES (overrides other settings)")
|
||||
message(STATUS " Preprocessor flags: -DROTGEN_DISABLE_EXPRESSION_TEMPLATES")
|
||||
message(STATUS "======================================================================")
|
||||
# Propagate to parent
|
||||
set(ROTGEN_DISABLE_EXPRESSION_TEMPLATES ${ROTGEN_DISABLE_EXPRESSION_TEMPLATES} PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Defaults for other options
|
||||
if(NOT DEFINED ROTGEN_FORCE_DYNAMIC)
|
||||
|
|
@ -95,12 +89,16 @@ function(handle_option OUT_DEFS)
|
|||
|
||||
assert_integer("ROTGEN_MAX_SIZE")
|
||||
check_force_dynamic_and_sizes("ROTGEN_FORCE_DYNAMIC" "ROTGEN_MAX_SIZE")
|
||||
infer_force_dynamic("ROTGEN_FORCE_DYNAMIC" "ROTGEN_MAX_SIZE" _force_dynamic_inferred)
|
||||
infer_force_dynamic ( "ROTGEN_FORCE_DYNAMIC" "ROTGEN_MAX_SIZE"
|
||||
"ROTGEN_ENABLE_EXPRESSION_TEMPLATES" _force_dynamic_inferred
|
||||
)
|
||||
|
||||
build_compile_definitions("ROTGEN_FORCE_DYNAMIC" "ROTGEN_MAX_SIZE" defs)
|
||||
build_compile_definitions("ROTGEN_FORCE_DYNAMIC" "ROTGEN_MAX_SIZE" "ROTGEN_ENABLE_EXPRESSION_TEMPLATES" defs)
|
||||
print_configuration_summary("ROTGEN_FORCE_DYNAMIC" "_force_dynamic_inferred" "ROTGEN_MAX_SIZE" "${defs}")
|
||||
|
||||
set(${OUT_DEFS} "${defs}" PARENT_SCOPE)
|
||||
set(ROTGEN_FORCE_DYNAMIC ${ROTGEN_FORCE_DYNAMIC} PARENT_SCOPE)
|
||||
set(ROTGEN_MAX_SIZE ${ROTGEN_MAX_SIZE} PARENT_SCOPE)
|
||||
set(ROTGEN_ENABLE_EXPRESSION_TEMPLATES ${ROTGEN_ENABLE_EXPRESSION_TEMPLATES} PARENT_SCOPE)
|
||||
|
||||
endfunction()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue