[PATCH] D116709: [CMake][WinMsvc] Fix user passed compiler/linker flags
Shoaib Meenai via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 7 05:53:24 PST 2022
smeenai added inline comments.
================
Comment at: llvm/cmake/platforms/WinMsvc.cmake:253-257
+list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_C_FLAGS=\"\"")
+list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_CXX_FLAGS=\"\"")
+list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_EXE_LINKER_FLAGS=\"\"")
+list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_MODULE_LINKER_FLAGS=\"\"")
+list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_SHARED_LINKER_FLAGS=\"\"")
----------------
I'm not a fan of this. A pattern I like to follow is to pass a `CMAKE_TOOLCHAIN_FILE` to `CROSS_TOOLCHAIN_FLAGS_NATIVE`, so that the native build flags get configured via a toolchain file instead of ad-hoc variable setting. Pre-set cached copies of these variables will interfere with that toolchain file's ability to set flags, and in particular, it'll break the toolchain file's use of the *_INIT variables, which is kinda ironic given the purpose of this diff :)
Would unsetting the env vars in the toolchain file instead accomplish the same goal?
================
Comment at: llvm/cmake/platforms/WinMsvc.cmake:292-293
# afterward.
-set(_CMAKE_C_FLAGS_INITIAL "${CMAKE_C_FLAGS}" CACHE STRING "")
-set(CMAKE_C_FLAGS "${_CMAKE_C_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)
+set(_CMAKE_C_FLAGS_INITIAL "${CMAKE_C_FLAGS_INIT}" CACHE STRING "")
+set(CMAKE_C_FLAGS_INIT "${_CMAKE_C_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)
----------------
I think we can avoid having the two separate variables, and just do a direct setting, if we make sure this toolchain file is only evaluated once per CMake invocation. Now that we've raised our minimum CMake version, just adding
```
include_guard(GLOBAL)
```
at the top ought to do the trick.
It's fine to leave that for a follow-up change (or not do it at all).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D116709/new/
https://reviews.llvm.org/D116709
More information about the llvm-commits
mailing list