2525
2626cmake_minimum_required (VERSION 3.21 )
2727
28- project (VKGC LANGUAGES C CXX )
28+ project (LLPCrepo LANGUAGES C CXX )
2929
3030### Standalone LLPC build handling
3131if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
3232 include (cmake/CompilerStandalone.cmake )
3333 set (LLPC_IS_STANDALONE ON )
3434endif ()
3535
36+ ### Find LLVM (needed by llpc_version.cmake).
37+ include ("cmake/findllvm.cmake" )
38+
3639### Version info ###
3740include (cmake/llpc_version.cmake )
38- if (NOT ICD_BUILD_LLPC)
39- set (DISABLE_LLPC_VERSION_USES_LLVM ON )
40- endif ()
4141
4242add_llpc_version_projects ()
4343
44- ### Top-level VKGC Interface ###
45- add_library (vkgc INTERFACE )
46-
47- ### VKGC header-only library ###
48- add_library (vkgc_headers INTERFACE )
49-
50- target_link_libraries (vkgc_headers INTERFACE llpc_version )
51-
5244### Cached Project Options #############################################################################################
5345option (LLPC_BUILD_TOOLS "LLPC build all tools" OFF )
54- ### Options that affect the headers ####################################################################################
55- #if VKI_BUILD_GFX11
56- if (LLPC_BUILD_GFX11)
57- target_compile_definitions (vkgc_headers INTERFACE VKI_BUILD_GFX11 )
58- endif ()
59- #endif
60-
61- if (VKI_RAY_TRACING)
62- if (NOT LLPC_IS_STANDALONE)
63- target_compile_definitions (vkgc_headers INTERFACE HAVE_GPURT_SHIM )
64- endif ()
65-
66- target_compile_definitions (vkgc_headers INTERFACE VKI_RAY_TRACING )
67- target_compile_definitions (vkgc_headers INTERFACE GPURT_CLIENT_INTERFACE_MAJOR_VERSION=${GPURT_CLIENT_INTERFACE_MAJOR_VERSION} )
68- endif ()
6946
70- target_link_libraries (vkgc INTERFACE vkgc_headers )
47+ #if LLPC_RAY_TRACING
48+ option (LLPC_RAY_TRACING "Enable raytracing" OFF )
49+ #endif
50+ #if LLPC_AMD_YUV_IMAGE
51+ option (LLPC_AMD_YUV_IMAGE "Build with AMD_YUV_IMAGE" OFF )
52+ #endif
53+ #if LLPC_AMD_LVR_INTEROP
54+ option (LLPC_AMD_LVR_INTEROP "Build with AMD_LVR_INTEROP" OFF )
55+ #endif
7156
72- ### Expose header files ############################# ###################################################################
73- target_include_directories ( vkgc_headers
74- INTERFACE
75- ${PROJECT_SOURCE_DIR} /include
57+ ### VKGC aspects ###################################################################
58+ # For drivers that use VKGC, as the interface to the LLPC front-end
59+ if ( FALSE
60+ OR ICD_BUILD_LLPC
7661)
77-
78- ### external SPIRV headers #########################################################
79- if (NOT SPIRV_HEADERS_PATH)
80- if (EXISTS ${PROJECT_SOURCE_DIR} /../SPIRV-Headers)
81- set (SPIRV_HEADERS_PATH ${PROJECT_SOURCE_DIR} /../SPIRV-Headers CACHE PATH "The path of SPIRV headers." )
82- elseif (EXISTS ${PROJECT_SOURCE_DIR} /../../../../SPIRV-Headers)
83- set (SPIRV_HEADERS_PATH ${PROJECT_SOURCE_DIR} /../../../../SPIRV-Headers CACHE PATH "The path of SPIRV headers." )
84- endif ()
62+ include ("cmake/vkgc.cmake" )
8563endif ()
8664
87- ### Interface Target ###################################################################################################
88- ### SPIRV Interface ###
89- add_library (khronos_spirv_interface INTERFACE )
90-
91- if (EXISTS ${SPIRV_HEADERS_PATH} )
92- target_include_directories (khronos_spirv_interface
93- INTERFACE
94- ${SPIRV_HEADERS_PATH} /include
95- ${PROJECT_SOURCE_DIR} /include/khronos
96- )
97- if (NOT SPIRV_HEADERS_PATH_INTERNAL)
98- target_compile_definitions (khronos_spirv_interface
99- INTERFACE
100- EXTERNAL_SPIRV_HEADERS=1
101- )
102- endif ()
103- else ()
104- target_include_directories (khronos_spirv_interface
105- INTERFACE
106- ${PROJECT_SOURCE_DIR} /include/khronos
107- )
108- endif ()
109-
110- if (LLPC_BUILD_TOOLS)
111- # SPVGEN
112- if (EXISTS ${PROJECT_SOURCE_DIR} /../spvgen)
113- set (XGL_SPVGEN_PATH ${PROJECT_SOURCE_DIR} /../spvgen CACHE PATH "Specify the path to SPVGEN." )
114- elseif (EXISTS ${PROJECT_SOURCE_DIR} /../xgl/tools/spvgen)
115- set (XGL_SPVGEN_PATH ${PROJECT_SOURCE_DIR} /../xgl/tools/spvgen CACHE PATH "Specify the path to SPVGEN." )
116- else ()
117- set (XGL_SPVGEN_PATH ${PROJECT_SOURCE_DIR} /../../../tools/spvgen CACHE PATH "Specify the path to SPVGEN." )
65+ ### LGC for LLPC ###################################################################
66+ if (ICD_BUILD_LLPC)
67+ # Add LGC and its dependencies as LLVM external projects for LLPC to use.
68+ include ("cmake/lgc.cmake" )
69+ add_lgc_projects ()
11870endif ()
11971
120- if (EXISTS ${XGL_SPVGEN_PATH} )
121- set (XGL_SPVGEN_BUILD_PATH ${CMAKE_BINARY_DIR} /spvgen)
122- add_subdirectory (${XGL_SPVGEN_PATH} ${XGL_SPVGEN_BUILD_PATH} EXCLUDE_FROM_ALL )
123- endif ()
124-
125- endif (LLPC_BUILD_TOOLS )
126-
127- if (ICD_BUILD_LLPC)
128- # Generate Strings for LLPC standalone tool and vkgc_gpurtshim
129- add_subdirectory (util ${PROJECT_BINARY_DIR} /util )
130- add_subdirectory (gfxruntime ${PROJECT_BINARY_DIR} /gfxruntime )
72+ ### LLVM ###########################################################################
73+ if (LLVM_EXTERNAL_PROJECTS)
74+ if (ICD_BUILD_LLPC AND LLPC_BUILD_TESTS)
75+ set (LLVM_INCLUDE_TESTS ON CACHE BOOL "Force enable LLVM_INCLUDE_TESTS to include gmock" FORCE )
76+ endif ()
77+ # Build LLVM.
78+ include ("cmake/llvm.cmake" )
13179endif ()
13280
133- ### VKGC build LLPC ################################################################
81+ ### Build LLPC ##### ################################################################
13482if (ICD_BUILD_LLPC)
13583 include ("cmake/compilerutils.cmake" )
13684 add_compilerutils_projects ()
@@ -144,7 +92,6 @@ if(ICD_BUILD_LLPC)
14492 add_subdirectory (llpc ${PROJECT_BINARY_DIR} /llpc )
14593
14694 if (LLPC_BUILD_TESTS)
147- set (LLVM_INCLUDE_TESTS ON CACHE BOOL "Force enable LLVM_INCLUDE_TESTS to include gmock" FORCE )
14895 add_subdirectory (test )
14996 endif ()
15097
@@ -179,9 +126,11 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
179126 if (ICD_BUILD_LLPC)
180127 set_property (TARGET llpc PROPERTY FOLDER Compiler )
181128 set_property (TARGET llpcinternal PROPERTY FOLDER Compiler )
182- if (VKI_RAY_TRACING AND NOT LLPC_IS_STANDALONE)
129+ #if LLPC_RAY_TRACING
130+ if (LLPC_RAY_TRACING AND NOT LLPC_IS_STANDALONE)
183131 set_property (TARGET vkgc_gpurtshim PROPERTY FOLDER Compiler )
184132 endif ()
133+ #endif
185134 set_property (TARGET vkgc_util PROPERTY FOLDER Compiler )
186135 if (LLPC_BUILD_TOOLS)
187136 set_property (TARGET amdllpc PROPERTY FOLDER Compiler )
0 commit comments