123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- set(CERES_CONFIG_IN_FILE "${CMAKE_CURRENT_LIST_DIR}/config.h.in")
- function(CREATE_CERES_CONFIG CURRENT_CERES_COMPILE_OPTIONS CERES_CONFIG_OUTPUT_DIRECTORY)
-
- if (NOT EXISTS "${CERES_CONFIG_OUTPUT_DIRECTORY}")
- message(STATUS "Creating configured Ceres config.h output directory: "
- "${CERES_CONFIG_OUTPUT_DIRECTORY}")
- file(MAKE_DIRECTORY "${CERES_CONFIG_OUTPUT_DIRECTORY}")
- endif()
- if (EXISTS "${CERES_CONFIG_OUTPUT_DIRECTORY}" AND
- NOT IS_DIRECTORY "${CERES_CONFIG_OUTPUT_DIRECTORY}")
- message(FATAL_ERROR "Ceres Bug: Specified CERES_CONFIG_OUTPUT_DIRECTORY: "
- "${CERES_CONFIG_OUTPUT_DIRECTORY} exists, but is not a directory.")
- endif()
-
-
- file(READ ${CERES_CONFIG_IN_FILE} CERES_CONFIG_IN_CONTENTS)
- string(REGEX MATCHALL "@[^@ $]+@"
- ALL_CONFIGURABLE_CERES_OPTIONS "${CERES_CONFIG_IN_CONTENTS}")
-
- string(REPLACE "@" ""
- ALL_CONFIGURABLE_CERES_OPTIONS "${ALL_CONFIGURABLE_CERES_OPTIONS}")
-
- list(REMOVE_DUPLICATES CURRENT_CERES_COMPILE_OPTIONS)
- foreach (CERES_OPTION ${ALL_CONFIGURABLE_CERES_OPTIONS})
-
-
- list(FIND CURRENT_CERES_COMPILE_OPTIONS ${CERES_OPTION} OPTION_ENABLED)
-
-
-
- if (OPTION_ENABLED GREATER -1)
- message(STATUS "Enabling ${CERES_OPTION} in Ceres config.h")
- set(${CERES_OPTION} "#define ${CERES_OPTION}")
-
-
-
- list(REMOVE_ITEM CURRENT_CERES_COMPILE_OPTIONS ${CERES_OPTION})
- else()
- set(${CERES_OPTION} "// #define ${CERES_OPTION}")
- endif()
- endforeach()
-
-
-
- if (CURRENT_CERES_COMPILE_OPTIONS)
- message(FATAL_ERROR "Ceres Bug: CURRENT_CERES_COMPILE_OPTIONS contained "
- "the following options which were not present in config.h.in: "
- "${CURRENT_CERES_COMPILE_OPTIONS}")
- endif()
- configure_file(${CERES_CONFIG_IN_FILE}
- "${CERES_CONFIG_OUTPUT_DIRECTORY}/config.h" @ONLY)
- endfunction()
|