diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -430,11 +430,9 @@ 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) diff --git a/flang/cmake/modules/AddFlang.cmake b/flang/cmake/modules/AddFlang.cmake --- a/flang/cmake/modules/AddFlang.cmake +++ b/flang/cmake/modules/AddFlang.cmake @@ -127,4 +127,3 @@ # Always generate install targets llvm_install_symlink(FLANG ${name} ${dest} ALWAYS_GENERATE) endmacro() - diff --git a/flang/docs/FlangDriver.md b/flang/docs/FlangDriver.md --- a/flang/docs/FlangDriver.md +++ b/flang/docs/FlangDriver.md @@ -485,7 +485,7 @@ 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` diff --git a/flang/examples/CMakeLists.txt b/flang/examples/CMakeLists.txt --- a/flang/examples/CMakeLists.txt +++ b/flang/examples/CMakeLists.txt @@ -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) diff --git a/flang/examples/ExternalHelloWorld/CMakeLists.txt b/flang/examples/ExternalHelloWorld/CMakeLists.txt --- a/flang/examples/ExternalHelloWorld/CMakeLists.txt +++ b/flang/examples/ExternalHelloWorld/CMakeLists.txt @@ -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 -) diff --git a/flang/examples/FlangOmpReport/CMakeLists.txt b/flang/examples/FlangOmpReport/CMakeLists.txt --- a/flang/examples/FlangOmpReport/CMakeLists.txt +++ b/flang/examples/FlangOmpReport/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(flangOmpReport +add_llvm_example_library(flangOmpReport MODULE FlangOmpReport.cpp FlangOmpReportVisitor.cpp diff --git a/flang/examples/PrintFlangFunctionNames/CMakeLists.txt b/flang/examples/PrintFlangFunctionNames/CMakeLists.txt --- a/flang/examples/PrintFlangFunctionNames/CMakeLists.txt +++ b/flang/examples/PrintFlangFunctionNames/CMakeLists.txt @@ -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 diff --git a/flang/test/CMakeLists.txt b/flang/test/CMakeLists.txt --- a/flang/test/CMakeLists.txt +++ b/flang/test/CMakeLists.txt @@ -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 @@ endif() endif() -if (FLANG_BUILD_EXAMPLES) +if (LLVM_BUILD_EXAMPLES) list(APPEND FLANG_TEST_DEPENDS flangPrintFunctionNames flangOmpReport diff --git a/flang/test/Examples/print-fns-calls.f90 b/flang/test/Examples/print-fns-calls.f90 --- a/flang/test/Examples/print-fns-calls.f90 +++ b/flang/test/Examples/print-fns-calls.f90 @@ -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 diff --git a/flang/test/Examples/print-fns-definitions.f90 b/flang/test/Examples/print-fns-definitions.f90 --- a/flang/test/Examples/print-fns-definitions.f90 +++ b/flang/test/Examples/print-fns-definitions.f90 @@ -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 diff --git a/flang/test/Examples/print-fns-interfaces.f90 b/flang/test/Examples/print-fns-interfaces.f90 --- a/flang/test/Examples/print-fns-interfaces.f90 +++ b/flang/test/Examples/print-fns-interfaces.f90 @@ -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 diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in --- a/flang/test/lit.site.cfg.py.in +++ b/flang/test/lit.site.cfg.py.in @@ -16,7 +16,7 @@ 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@