Browse Source

Merge topic 'linker-launcher'

d176a8c5ce Fortran: Add support for [CMAKE_]Fortran_LINKER_LAUNCHER

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10831
release
Brad King 2 months ago
committed by Kitware Robot
parent
commit
bc9785a12b
  1. 11
      Help/prop_tgt/LANG_LINKER_LAUNCHER.rst
  2. 7
      Help/release/dev/linker-launcher.rst
  3. 10
      Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst
  4. 5
      Modules/CMakeFortranInformation.cmake
  5. 2
      Source/cmTarget.cxx
  6. 1
      Tests/RunCMake/LinkerLauncher/Fortran-Build-stdout.txt
  7. 3
      Tests/RunCMake/LinkerLauncher/Fortran-common.cmake
  8. 1
      Tests/RunCMake/LinkerLauncher/Fortran-env-Build-stdout.txt
  9. 1
      Tests/RunCMake/LinkerLauncher/Fortran-env.cmake
  10. 1
      Tests/RunCMake/LinkerLauncher/Fortran-launch-Build-stdout.txt
  11. 1
      Tests/RunCMake/LinkerLauncher/Fortran-launch-env-Build-stdout.txt
  12. 3
      Tests/RunCMake/LinkerLauncher/Fortran-launch-env.cmake
  13. 3
      Tests/RunCMake/LinkerLauncher/Fortran-launch.cmake
  14. 2
      Tests/RunCMake/LinkerLauncher/Fortran.cmake
  15. 3
      Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake
  16. 4
      Tests/RunCMake/LinkerLauncher/main.f90

11
Help/prop_tgt/LANG_LINKER_LAUNCHER.rst

@ -3,8 +3,15 @@
.. versionadded:: 3.21
This property is implemented only when ``<LANG>`` is ``C``, ``CXX``,
``OBJC``, or ``OBJCXX``
This property is implemented only when ``<LANG>`` is one of:
* ``C``
* ``CXX``
* ``OBJC``
* ``OBJCXX``
* ``Fortran``
.. versionadded:: 4.1
Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a
command line for a linker launching tool. The :ref:`Makefile Generators` and the

7
Help/release/dev/linker-launcher.rst

@ -0,0 +1,7 @@
linker-launcher
---------------
* :ref:`Makefile Generators` and :ref:`Ninja Generators` gained support
for adding a linker launcher with ``Fortran``.
See the :variable:`CMAKE_<LANG>_LINKER_LAUNCHER` variable
and :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property for details.

10
Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst

@ -5,7 +5,15 @@ CMAKE_<LANG>_LINKER_LAUNCHER
Default value for :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property. This
variable is used to initialize the property on each target as it is created.
This is done only when ``<LANG>`` is ``C``, ``CXX``, ``OBJC``, or ``OBJCXX``.
This is done only when ``<LANG>`` is one of:
* ``C``
* ``CXX``
* ``OBJC``
* ``OBJCXX``
* ``Fortran``
.. versionadded:: 4.1
This variable is initialized to the :envvar:`CMAKE_<LANG>_LINKER_LAUNCHER`
environment variable if it is set.

5
Modules/CMakeFortranInformation.cmake

@ -78,6 +78,11 @@ if(NOT CMAKE_Fortran_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_Fortran_COMPILER_LA
CACHE STRING "Compiler launcher for Fortran.")
endif()
if(NOT CMAKE_Fortran_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_Fortran_LINKER_LAUNCHER})
set(CMAKE_Fortran_LINKER_LAUNCHER "$ENV{CMAKE_Fortran_LINKER_LAUNCHER}"
CACHE STRING "Linker launcher for Fortran.")
endif()
include(CMakeCommonLanguageInclude)
_cmake_common_language_platform_flags(Fortran)

2
Source/cmTarget.cxx

@ -457,6 +457,8 @@ TargetProperty const StaticTargetProperties[] = {
{ "OBJC_LINKER_LAUNCHER"_s, IC::CanCompileSources },
// ---- Objective C++
{ "OBJCXX_LINKER_LAUNCHER"_s, IC::CanCompileSources },
// ---- Fortran
{ "Fortran_LINKER_LAUNCHER"_s, IC::CanCompileSources },
// Static analysis
// -- C

1
Tests/RunCMake/LinkerLauncher/Fortran-Build-stdout.txt

@ -0,0 +1 @@
.*-E env USED_LAUNCHER=1.*

3
Tests/RunCMake/LinkerLauncher/Fortran-common.cmake

@ -0,0 +1,3 @@
enable_language(Fortran)
set(CMAKE_VERBOSE_MAKEFILE TRUE)
add_executable(main main.f90)

1
Tests/RunCMake/LinkerLauncher/Fortran-env-Build-stdout.txt

@ -0,0 +1 @@
.*-E env USED_LAUNCHER=1 TARGET_NAME=main LANGUAGE=Fortran.*

1
Tests/RunCMake/LinkerLauncher/Fortran-env.cmake

@ -0,0 +1 @@
include(Fortran-common.cmake)

1
Tests/RunCMake/LinkerLauncher/Fortran-launch-Build-stdout.txt

@ -0,0 +1 @@
.*-E env USED_LAUNCHER=1.*

1
Tests/RunCMake/LinkerLauncher/Fortran-launch-env-Build-stdout.txt

@ -0,0 +1 @@
.*-E env USED_LAUNCHER=1 TARGET_NAME=main LANGUAGE=Fortran.*

3
Tests/RunCMake/LinkerLauncher/Fortran-launch-env.cmake

@ -0,0 +1,3 @@
set(CTEST_USE_LAUNCHERS 1)
include(CTestUseLaunchers)
include(Fortran-env.cmake)

3
Tests/RunCMake/LinkerLauncher/Fortran-launch.cmake

@ -0,0 +1,3 @@
set(CTEST_USE_LAUNCHERS 1)
include(CTestUseLaunchers)
include(Fortran.cmake)

2
Tests/RunCMake/LinkerLauncher/Fortran.cmake

@ -0,0 +1,2 @@
set(CMAKE_Fortran_LINKER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1")
include(Fortran-common.cmake)

3
Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake

@ -24,6 +24,9 @@ function(run_linker_launcher_env lang)
endfunction()
set(langs C CXX)
if(CMake_TEST_Fortran)
list(APPEND langs Fortran)
endif()
if(CMake_TEST_OBJC)
list(APPEND langs OBJC OBJCXX)
endif()

4
Tests/RunCMake/LinkerLauncher/main.f90

@ -0,0 +1,4 @@
program main
implicit none
! Do nothing
end program main
Loading…
Cancel
Save