]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
CMake: Disable unity builds project-wide
authorDexter Castor Döpping <dexter.c.dopping@gmail.com>
Sun, 22 Dec 2024 12:44:03 +0000 (13:44 +0100)
committerLasse Collin <lasse.collin@tukaani.org>
Sun, 22 Dec 2024 18:10:41 +0000 (20:10 +0200)
liblzma and xz can't be compiled as a unity/jumbo build because of
redeclarations and type name reuse. The CMake documentation recommends
setting UNITY_BUILD to false in this case.

This is especially important if we're compiled as a subproject and the
consumer wants to use CMAKE_UNITY_BUILD=ON for the rest of their code
base.

Closes: https://github.com/tukaani-project/xz/pull/158
(cherry picked from commit bf6da9a573a780cd1a7fb1728ef55d09e58dad11)

CMakeLists.txt

index 664c881aa88bd417ce0c34fda63c20df3f3c69e8..e08635739f9a4c3b510d0d75e2cc66ec2be4f862 100644 (file)
@@ -175,6 +175,12 @@ endif()
 # On Apple OSes, don't build executables as bundles:
 set(CMAKE_MACOSX_BUNDLE OFF)
 
+# The targets defined here don't support compiling as a unity build. Encoder
+# and decoder source files define different types with the same name, and some
+# internal header files don't have header guards leading to redeclaration
+# errors.
+set(CMAKE_UNITY_BUILD OFF)
+
 # Set CMAKE_INSTALL_LIBDIR and friends. This needs to be done before
 # the LOCALEDIR_DEFINITION workaround below.
 include(GNUInstallDirs)