Skip to content

Commit 5aaa0c2

Browse files
authored
Merge pull request KhronosGroup#2327 from ben-clayton/fix-pch
Use CMake's builtin functionality for pre-compiled headers
2 parents 29c9135 + 31cad22 commit 5aaa0c2

File tree

7 files changed

+15
-121
lines changed

7 files changed

+15
-121
lines changed

BUILD.bazel

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ cc_library(
7272
"glslang/MachineIndependent/preprocessor/*.cpp",
7373
],
7474
exclude = [
75-
"glslang/HLSL/pch.cpp",
7675
"glslang/HLSL/pch.h",
77-
"glslang/MachineIndependent/pch.cpp",
7876
"glslang/MachineIndependent/pch.h",
7977
],
8078
) + [

CMakeLists.txt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,6 @@ if(USE_CCACHE)
107107
endif(CCACHE_FOUND)
108108
endif()
109109

110-
# Precompiled header macro. Parameters are source file list and filename for pch cpp file.
111-
macro(glslang_pch SRCS PCHCPP)
112-
if(MSVC AND CMAKE_GENERATOR MATCHES "^Visual Studio" AND NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND ENABLE_PCH)
113-
set(PCH_NAME "$(IntDir)\\pch.pch")
114-
# make source files use/depend on PCH_NAME
115-
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/Yupch.h /FIpch.h /Fp${PCH_NAME} /Zm300" OBJECT_DEPENDS "${PCH_NAME}")
116-
# make PCHCPP file compile and generate PCH_NAME
117-
set_source_files_properties(${PCHCPP} PROPERTIES COMPILE_FLAGS "/Ycpch.h /Fp${PCH_NAME} /Zm300" OBJECT_OUTPUTS "${PCH_NAME}")
118-
list(APPEND ${SRCS} "${PCHCPP}")
119-
endif()
120-
endmacro(glslang_pch)
121-
122110
project(glslang)
123111

124112
if(ENABLE_CTEST)
@@ -255,6 +243,19 @@ function(glslang_only_export_explicit_symbols target)
255243
endif()
256244
endfunction()
257245

246+
# glslang_pch() adds precompiled header rules to <target> for the pre-compiled
247+
# header file <pch>. As target_precompile_headers() was added in CMake 3.16,
248+
# this is a no-op if called on earlier versions of CMake.
249+
if(NOT CMAKE_VERSION VERSION_LESS "3.16")
250+
function(glslang_pch target pch)
251+
target_precompile_headers(${target} PRIVATE ${pch})
252+
endfunction()
253+
else()
254+
function(glslang_pch target pch)
255+
endfunction()
256+
message(NOTICE "Your CMake version is ${CMAKE_VERSION}. Update to at least 3.16 to enable precompiled headers to speed up incremental builds")
257+
endif()
258+
258259
if(NOT TARGET SPIRV-Tools-opt)
259260
set(ENABLE_OPT OFF)
260261
endif()

glslang/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ endif(ENABLE_HLSL)
133133
add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS})
134134
set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON)
135135
set_property(TARGET MachineIndependent PROPERTY FOLDER glslang)
136-
glslang_pch(SOURCES MachineIndependent/pch.cpp)
136+
glslang_pch(MachineIndependent MachineIndependent/pch.h)
137137

138138
target_link_libraries(MachineIndependent PRIVATE OGLCompiler OSDependent GenericCodeGen)
139139

glslang/HLSL/pch.cpp

Lines changed: 0 additions & 35 deletions
This file was deleted.

glslang/MachineIndependent/pch.cpp

Lines changed: 0 additions & 35 deletions
This file was deleted.

gtests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ if(BUILD_TESTING)
6060
${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp)
6161
endif()
6262

63-
glslang_pch(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp)
6463

6564
add_executable(glslangtests ${TEST_SOURCES})
65+
glslang_pch(glslangtests ${CMAKE_CURRENT_SOURCE_DIR}/pch.h)
6666
set_property(TARGET glslangtests PROPERTY FOLDER tests)
6767
glslang_set_link_args(glslangtests)
6868
if(ENABLE_GLSLANG_INSTALL)

gtests/pch.cpp

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)