[flang] Handle Flang examples consistently with LLVM.
Without this change the problem is that flangOmpReport and
flangPrintFunctionNames libraries are not built under 'all',
but they are imported targets via LLVMExports.cmake so that
any out-of-tree build that configures upon LLVM+Flang package
will get this CMake error:
```
The imported target "flangPrintFunctionNames" references the file
".../lib/flangPrintFunctionNames.so"
but this file does not exist.
```
flang-aarch64-out-of-tree buildbot (https://lab.llvm.org/buildbot/#/builders/175)
does not catch this issue, because it does not enable Flang on the first stage.
This change gets rid of FLANG_BUILD_EXAMPLES in favor of LLVM_BUILD_EXAMPLES
and uses available LLVM CMake macros to add example executables/libraries.
Differential Revision: https://reviews.llvm.org/D145992
This commit is contained in:
parent
207ea5f2e4
commit
1c5d121440
12 changed files with 16 additions and 23 deletions
|
|
@ -430,11 +430,9 @@ if (FLANG_BUILD_TOOLS)
|
|||
endif()
|
||||
add_subdirectory(runtime)
|
||||
|
||||
option(FLANG_BUILD_EXAMPLES "Build Flang example programs by default." OFF)
|
||||
if (FLANG_BUILD_EXAMPLES AND FLANG_STANDALONE_BUILD)
|
||||
message(FATAL_ERROR "Examples are not supported in out-of-tree builds.")
|
||||
if (LLVM_INCLUDE_EXAMPLES)
|
||||
add_subdirectory(examples)
|
||||
endif()
|
||||
add_subdirectory(examples)
|
||||
|
||||
if (FLANG_INCLUDE_TESTS)
|
||||
add_subdirectory(test)
|
||||
|
|
|
|||
|
|
@ -127,4 +127,3 @@ macro(add_flang_symlink name dest)
|
|||
# Always generate install targets
|
||||
llvm_install_symlink(FLANG ${name} ${dest} ALWAYS_GENERATE)
|
||||
endmacro()
|
||||
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ reports an error diagnostic and returns `nullptr`.
|
|||
For in-tree plugins, there is the CMake flag `FLANG_PLUGIN_SUPPORT`, enabled by
|
||||
default, that controls the exporting of executable symbols from `flang-new`,
|
||||
which plugins need access to. Additionally, there is the CMake flag
|
||||
`FLANG_BUILD_EXAMPLES`, turned off by default, that is used to control if the
|
||||
`LLVM_BUILD_EXAMPLES`, turned off by default, that is used to control if the
|
||||
example programs are built. This includes plugins that are in the
|
||||
`flang/example` directory and added as a `sub_directory` to the
|
||||
`flang/examples/CMakeLists.txt`, for example, the `PrintFlangFunctionNames`
|
||||
|
|
|
|||
|
|
@ -1,7 +1,3 @@
|
|||
if(NOT FLANG_BUILD_EXAMPLES)
|
||||
set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL ON)
|
||||
endif()
|
||||
|
||||
add_subdirectory(ExternalHelloWorld)
|
||||
add_subdirectory(PrintFlangFunctionNames)
|
||||
add_subdirectory(FlangOmpReport)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
set(LLVM_LINK_COMPONENTS
|
||||
FortranRuntime
|
||||
)
|
||||
|
||||
# This test is not run by default as it requires input.
|
||||
add_executable(external-hello-world
|
||||
add_llvm_example(external-hello-world
|
||||
external-hello.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(external-hello-world
|
||||
FortranRuntime
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
add_llvm_library(flangOmpReport
|
||||
add_llvm_example_library(flangOmpReport
|
||||
MODULE
|
||||
FlangOmpReport.cpp
|
||||
FlangOmpReportVisitor.cpp
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# TODO: Note that this is currently only available on Linux.
|
||||
# On Windows, we would also have to specify e.g. `PLUGIN_TOOL`.
|
||||
add_llvm_library(flangPrintFunctionNames
|
||||
add_llvm_example_library(flangPrintFunctionNames
|
||||
MODULE
|
||||
PrintFlangFunctionNames.cpp
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
add_subdirectory(lib)
|
||||
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
FLANG_BUILD_EXAMPLES
|
||||
FLANG_STANDALONE_BUILD
|
||||
LLVM_BUILD_EXAMPLES
|
||||
LLVM_BYE_LINK_INTO_TOOLS
|
||||
LLVM_ENABLE_PLUGINS
|
||||
)
|
||||
|
|
@ -74,7 +74,7 @@ if (FLANG_INCLUDE_TESTS)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if (FLANG_BUILD_EXAMPLES)
|
||||
if (LLVM_BUILD_EXAMPLES)
|
||||
list(APPEND FLANG_TEST_DEPENDS
|
||||
flangPrintFunctionNames
|
||||
flangOmpReport
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
! Check the Flang Print Function Names example plugin doesn't count/print function/subroutine calls (should only count definitions)
|
||||
! This requires that the examples are built (FLANG_BUILD_EXAMPLES=ON) to access flangPrintFunctionNames.so
|
||||
! This requires that the examples are built (LLVM_BUILD_EXAMPLES=ON) to access flangPrintFunctionNames.so
|
||||
|
||||
! REQUIRES: plugins, examples, shell
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
! Check the Flang Print Function Names example plugin prints and counts function/subroutine definitions
|
||||
! This includes internal and external Function/Subroutines, but not Statement Functions
|
||||
! This requires that the examples are built (FLANG_BUILD_EXAMPLES=ON) to access flangPrintFunctionNames.so
|
||||
! This requires that the examples are built (LLVM_BUILD_EXAMPLES=ON) to access flangPrintFunctionNames.so
|
||||
|
||||
! REQUIRES: plugins, examples, shell
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
! Check the Flang Print Function Names example plugin doesn't count/print Functions/Subroutines in interfaces
|
||||
! (It should only count definitions, which will appear elsewhere for interfaced functions/subroutines)
|
||||
! This requires that the examples are built (FLANG_BUILD_EXAMPLES=ON) to access flangPrintFunctionNames.so
|
||||
! This requires that the examples are built (LLVM_BUILD_EXAMPLES=ON) to access flangPrintFunctionNames.so
|
||||
|
||||
! REQUIRES: plugins, examples, shell
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ config.flang_intrinsic_modules_dir = "@FLANG_INTRINSIC_MODULES_DIR@"
|
|||
config.flang_llvm_tools_dir = "@CMAKE_BINARY_DIR@/bin"
|
||||
config.flang_lib_dir = "@CMAKE_BINARY_DIR@/lib"
|
||||
config.flang_test_triple = "@FLANG_TEST_TARGET_TRIPLE@"
|
||||
config.flang_examples = @FLANG_BUILD_EXAMPLES@
|
||||
config.flang_examples = @LLVM_BUILD_EXAMPLES@
|
||||
config.python_executable = "@PYTHON_EXECUTABLE@"
|
||||
config.flang_standalone_build = @FLANG_STANDALONE_BUILD@
|
||||
config.has_plugins = @LLVM_ENABLE_PLUGINS@
|
||||
|
|
|
|||
Loading…
Reference in a new issue