[flang-commits] [flang] 04adfb6 - [flang][cmake] Enable the new driver by default
Andrzej Warzynski via flang-commits
flang-commits at lists.llvm.org
Tue May 11 02:17:46 PDT 2021
Author: Andrzej Warzynski
Date: 2021-05-11T09:16:29Z
New Revision: 04adfb660987072ad31756e0d04803f96c3c39f7
URL: https://github.com/llvm/llvm-project/commit/04adfb660987072ad31756e0d04803f96c3c39f7
DIFF: https://github.com/llvm/llvm-project/commit/04adfb660987072ad31756e0d04803f96c3c39f7.diff
LOG: [flang][cmake] Enable the new driver by default
With this patch, `FLANG_BUILD_NEW_DRIVER` is set to `On` by default
(i.e. the new driver is enabled). Note that the new driver depends on
Clang and hence with this change you will need to add `clang` to
`LLVM_ENABLE_PROJECTS`.
If you don't want to build the new driver, set `FLANG_BUILD_NEW_DRIVER`
to `Off`. This way you won't be required to include `clang` in
`LLVM_ENABLE_PROJECTS`.
Differential Revision: https://reviews.llvm.org/D101842
Added:
Modified:
flang/CMakeLists.txt
flang/README.md
llvm/CMakeLists.txt
Removed:
################################################################################
diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt
index 2ef299349be7..28b712e6a00a 100644
--- a/flang/CMakeLists.txt
+++ b/flang/CMakeLists.txt
@@ -2,8 +2,6 @@ cmake_minimum_required(VERSION 3.13.4)
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
-option(FLANG_BUILD_NEW_DRIVER "Build the flang compiler driver" OFF)
-
# Flang requires C++17.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
diff --git a/flang/README.md b/flang/README.md
index 7e5352b2387c..326505eb1ee3 100644
--- a/flang/README.md
+++ b/flang/README.md
@@ -69,16 +69,17 @@ of LLVM, follow those instructions and add flang to `LLVM_ENABLE_PROJECTS`.
We highly recommend using the same compiler to compile both llvm and flang.
The flang CMakeList.txt file uses
-the variable `LLVM_DIR` to find the installed LLVM components
-and
-the variable `MLIR_DIR` to find the installed MLIR components.
+* `LLVM_DIR` to find the installed LLVM components
+* `MLIR_DIR` to find the installed MLIR components
+* `CLANG_DIR` to find the installed Clang components
-To get the correct LLVM and MLIR libraries included in your flang build,
-define LLVM_DIR and MLIR_DIR on the cmake command line.
+To get the correct LLVM, MLIR and Clang libraries included in your flang build,
+define `LLVM_DIR`, `MLIR_DIR` and `CLANG_DIR` on the cmake command line.
```
LLVM=<LLVM_BUILD_DIR>/lib/cmake/llvm \
MLIR=<LLVM_BUILD_DIR>/lib/cmake/mlir \
-cmake -DLLVM_DIR=$LLVM -DMLIR_DIR=$MLIR ...
+CLANG=<LLVM_BUILD_DIR>/lib/cmake/clang \
+cmake -DLLVM_DIR=$LLVM -DMLIR_DIR=$MLIR -DCLANG_DIR=$CLANG ...
```
where `LLVM_BUILD_DIR` is
the top-level directory where LLVM was built.
@@ -140,23 +141,17 @@ Release builds execute quickly.
### Build Flang out of tree
```
cd ~/flang/build
-cmake -DLLVM_DIR=$LLVM -DMLIR_DIR=$MLIR ~/flang/src
+cmake -DLLVM_DIR=$LLVM -DMLIR_DIR=$MLIR -DCLANG_DIR=$CLANG ~/flang/src
make
```
-### Build The New Flang Driver
-The new Flang driver, `flang-new`, is currently under active development and
-should be considered as an experimental feature. For this reason it is disabled
-by default. This will change once the new driver replaces the _throwaway_
-driver, `flang`.
-
-In order to build the new driver, add `-DFLANG_BUILD_NEW_DRIVER=ON` to your
-CMake invocation line. Additionally, when building out-of-tree, use `CLANG_DIR`
-(similarly to `LLVM_DIR` and `MLIR_DIR`) to find the installed Clang
-components.
-
-**Note:** `CLANG_DIR` is only required when building the new Flang driver,
-which currently depends on Clang.
+### Disable The New Flang Driver
+The new Flang compiler driver, `flang-new`, is implemented in terms of
+`clangDriver` and hence it introduces a dependency on Clang. This dependency is
+otherwise not required. If you do not require the new driver, you can disable
+it by adding `-DFLANG_BUILD_NEW_DRIVER=OFF` to your CMake invocation. With the
+new driver disabled, you no longer need to add `clang` to
+`LLVM_ENABLE_PROJECTS` (or to specify `CLANG_DIR` when building out-of-tree).
# How to Run Tests
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index f6bf9456f66f..e5febba8043c 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -74,9 +74,17 @@ set(LLVM_ENABLE_PROJECTS "" CACHE STRING
if( LLVM_ENABLE_PROJECTS STREQUAL "all" )
set( LLVM_ENABLE_PROJECTS ${LLVM_ALL_PROJECTS})
endif()
-if ("flang" IN_LIST LLVM_ENABLE_PROJECTS AND NOT "mlir" IN_LIST LLVM_ENABLE_PROJECTS)
- message(STATUS "Enabling MLIR as a dependency to flang")
- list(APPEND LLVM_ENABLE_PROJECTS "mlir")
+
+if ("flang" IN_LIST LLVM_ENABLE_PROJECTS)
+ if (NOT "mlir" IN_LIST LLVM_ENABLE_PROJECTS)
+ message(STATUS "Enabling MLIR as a dependency to flang")
+ list(APPEND LLVM_ENABLE_PROJECTS "mlir")
+ endif()
+
+ option(FLANG_BUILD_NEW_DRIVER "Build the flang compiler driver" ON)
+ if (FLANG_BUILD_NEW_DRIVER AND NOT "clang" IN_LIST LLVM_ENABLE_PROJECTS)
+ message(FATAL_ERROR "Clang is not enabled, but it's required by the new Flang driver")
+ endif()
endif()
# LLVM_ENABLE_PROJECTS_USED is `ON` if the user has ever used the
More information about the flang-commits
mailing list