Merge topic 'FindBISON-OPTIONS-keyword' 211cec0f20 FindBISON: Add new keyword OPTIONS Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !10129
diff --git a/Help/release/dev/FindFLEX.rst b/Help/release/dev/FindFLEX.rst new file mode 100644 index 0000000..6faec23 --- /dev/null +++ b/Help/release/dev/FindFLEX.rst
@@ -0,0 +1,6 @@ +FindFLEX +-------- + +* The :module:`FindFLEX` module :command:`flex_target` command has a new + ``OPTIONS`` option to add Flex command-line options as a + :ref:`semicolon-separated list <CMake Language Lists>`.
diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index aed1854..39ddfbe 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake
@@ -1396,7 +1396,7 @@ set(_Boost_TIMER_DEPENDENCIES chrono) set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono atomic) set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - else() + elseif(Boost_VERSION_STRING VERSION_LESS 1.87.0) set(_Boost_CONTRACT_DEPENDENCIES thread chrono) set(_Boost_COROUTINE_DEPENDENCIES context) set(_Boost_FIBER_DEPENDENCIES context) @@ -1410,7 +1410,21 @@ set(_Boost_THREAD_DEPENDENCIES chrono atomic) set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono atomic) set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.87.0 AND NOT Boost_NO_WARN_NEW_VERSIONS) + else() + set(_Boost_CONTRACT_DEPENDENCIES thread chrono) + set(_Boost_COROUTINE_DEPENDENCIES context) + set(_Boost_FIBER_DEPENDENCIES context) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_JSON_DEPENDENCIES container) + set(_Boost_LOG_DEPENDENCIES log_setup filesystem thread regex atomic) + set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) + set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) + set(_Boost_THREAD_DEPENDENCIES chrono atomic) + set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.88.0 AND NOT Boost_NO_WARN_NEW_VERSIONS) message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets") endif() endif() @@ -1685,7 +1699,7 @@ # _Boost_COMPONENT_HEADERS. See the instructions at the top of # _Boost_COMPONENT_DEPENDENCIES. set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS} - "1.86.0" "1.86" "1.85.0" "1.85" "1.84.0" "1.84" + "1.87.0" "1.87" "1.86.0" "1.86" "1.85.0" "1.85" "1.84.0" "1.84" "1.83.0" "1.83" "1.82.0" "1.82" "1.81.0" "1.81" "1.80.0" "1.80" "1.79.0" "1.79" "1.78.0" "1.78" "1.77.0" "1.77" "1.76.0" "1.76" "1.75.0" "1.75" "1.74.0" "1.74" "1.73.0" "1.73" "1.72.0" "1.72" "1.71.0" "1.71" "1.70.0" "1.70" "1.69.0" "1.69"
diff --git a/Modules/FindFLEX.cmake b/Modules/FindFLEX.cmake index 009e6b0..d9d0afa 100644 --- a/Modules/FindFLEX.cmake +++ b/Modules/FindFLEX.cmake
@@ -35,6 +35,7 @@ .. code-block:: cmake flex_target(<Name> <FlexInput> <FlexOutput> + [OPTIONS <options>...] [COMPILE_FLAGS <string>] [DEFINES_FILE <string>] ) @@ -45,9 +46,18 @@ The options are: +``OPTIONS <options>...`` + .. versionadded:: 3.32 + + A :ref:`semicolon-separated list <CMake Language Lists>` of flex options added + to the ``flex`` command line. + ``COMPILE_FLAGS <string>`` + .. deprecated:: 3.32 + Space-separated flex options added to the ``flex`` command line. A :ref:`;-list <CMake Language Lists>` will not work. + This option is deprecated in favor of ``OPTIONS <options>...``. ``DEFINES_FILE <string>`` .. versionadded:: 3.5 @@ -73,6 +83,11 @@ ``FLEX_<Name>_OUTPUT_HEADER`` The header flex output, if any. +``FLEX_<Name>_OPTIONS`` + .. versionadded:: 3.32 + + Options used in the ``flex`` command line. + Flex scanners often use tokens defined by Bison: the code generated by Flex depends of the header generated by Bison. This module also defines a macro: @@ -106,6 +121,29 @@ ${FLEX_MyScanner_OUTPUTS} ) target_link_libraries(Foo ${FLEX_LIBRARIES}) + +Adding additional command-line options to the ``flex`` executable can be passed +as a list. For example, adding the ``--warn`` option to report warnings, and the +``--noline`` (``-L``) to not generate ``#line`` directives. + +.. code-block:: cmake + + find_package(FLEX) + + if(FLEX_FOUND) + flex_target(MyScanner lexer.l lexer.cpp OPTIONS --warn --noline) + endif() + +Generator expressions can be used in ``OPTIONS <options...``. For example, to +add the ``--debug`` (``-d``) option only for the ``Debug`` build type: + +.. code-block:: cmake + + find_package(FLEX) + + if(FLEX_FOUND) + flex_target(MyScanner lexer.l lexer.cpp OPTIONS $<$<CONFIG:Debug>:--debug>) + endif() #]=======================================================================] find_program(FLEX_EXECUTABLE NAMES flex win-flex win_flex DOC "path to the flex executable") @@ -157,20 +195,35 @@ COMPILE_FLAGS DEFINES_FILE ) - set(FLEX_TARGET_PARAM_MULTI_VALUE_KEYWORDS) + set(FLEX_TARGET_PARAM_MULTI_VALUE_KEYWORDS OPTIONS) cmake_parse_arguments( FLEX_TARGET_ARG "${FLEX_TARGET_PARAM_OPTIONS}" "${FLEX_TARGET_PARAM_ONE_VALUE_KEYWORDS}" - "${FLEX_TARGET_MULTI_VALUE_KEYWORDS}" + "${FLEX_TARGET_PARAM_MULTI_VALUE_KEYWORDS}" ${ARGN} ) - set(FLEX_TARGET_usage "FLEX_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS <string>] [DEFINES_FILE <string>]") + string( + JOIN "\n" FLEX_TARGET_usage + "Usage:" + " flex_target(" + " <Name>" + " <Input>" + " <Output>" + " [OPTIONS <options>...]" + " [COMPILE_FLAGS <string>]" + " [DEFINES_FILE <string>]" + " )" + ) if(NOT "${FLEX_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "") - message(SEND_ERROR ${FLEX_TARGET_usage}) + message( + SEND_ERROR + "Unrecognized arguments: ${FLEX_TARGET_ARG_UNPARSED_ARGUMENTS}\n" + "${FLEX_TARGET_usage}" + ) else() cmake_policy(GET CMP0098 _flex_CMP0098 @@ -199,6 +252,10 @@ separate_arguments(_flex_EXE_OPTS) endif() + if(FLEX_TARGET_ARG_OPTIONS) + list(APPEND _flex_EXE_OPTS ${FLEX_TARGET_ARG_OPTIONS}) + endif() + set(_flex_OUTPUT_HEADER "") if(NOT "${FLEX_TARGET_ARG_DEFINES_FILE}" STREQUAL "") set(_flex_OUTPUT_HEADER "${FLEX_TARGET_ARG_DEFINES_FILE}") @@ -217,11 +274,13 @@ VERBATIM DEPENDS ${_flex_INPUT} COMMENT "[FLEX][${Name}] Building scanner with ${_flex_EXE_NAME_WE} ${FLEX_VERSION}" - WORKING_DIRECTORY ${_flex_WORKING_DIR}) + WORKING_DIRECTORY ${_flex_WORKING_DIR} + COMMAND_EXPAND_LISTS) set(FLEX_${Name}_DEFINED TRUE) set(FLEX_${Name}_OUTPUTS ${_flex_TARGET_OUTPUTS}) set(FLEX_${Name}_INPUT ${_flex_INPUT}) + set(FLEX_${Name}_OPTIONS ${_flex_EXE_OPTS}) set(FLEX_${Name}_COMPILE_FLAGS ${_flex_EXE_OPTS}) set(FLEX_${Name}_OUTPUT_HEADER ${_flex_OUTPUT_HEADER})
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index c5fb6d1..8b818b4 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake
@@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 31) -set(CMake_VERSION_PATCH 20250106) +set(CMake_VERSION_PATCH 20250108) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 32c2a20..671dae2 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -951,6 +951,9 @@ if (!this->GlobalSettingIsOn("CMAKE_SUPPRESS_REGENERATION")) { lg->AppendEcho(commands, "... depend"); } + if (this->CheckCMP0171()) { + lg->AppendEcho(commands, "... codegen"); + } // Keep track of targets already listed. std::set<std::string> emittedTargets;