Skip to content

Commit afd9fc8

Browse files
mgrzywacigcbot
authored andcommitted
Debug configuration in llvm prebuilds
Enabled usage of debug configuration with prebuild llvm on Windows.
1 parent a28d3a4 commit afd9fc8

File tree

5 files changed

+127
-48
lines changed

5 files changed

+127
-48
lines changed

IGC/cmake/igc_find_liblldELF.cmake

+41-12
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,65 @@
66
#
77
#============================ end_copyright_notice =============================
88

9-
# IGC_OPTION__LLDELF_LIB_DIR - Specify additional directories for searching lldELF library
9+
# IGC_OPTION__LLD_DIR - Specify additional directories for searching lld libraries and executables
1010
# IGC_OPTION__LLDELF_H_DIR - Specify additional directories for searching lldELF headers
11-
# IGC_OPTION__LLD_BIN_DIR - Specify additional directories for searching lld executable
1211

1312
function(add_lld_library LIB_NAME)
14-
find_library(${LIB_NAME}_PATH
13+
find_library(${LIB_NAME}_PATH_RELEASE
1514
${LIB_NAME}
16-
PATHS "${IGC_OPTION__LLDELF_LIB_DIR}"
15+
PATHS "${IGC_OPTION__LLD_DIR}/Release/lib"
1716
PATH_SUFFIXES "llvm-${LLVM_VERSION_MAJOR}/lib")
1817

19-
if(${LIB_NAME}_PATH-NOTFOUND)
18+
if("${${LIB_NAME}_PATH_RELEASE}" STREQUAL "${LIB_NAME}_PATH_RELEASE-NOTFOUND")
2019
message(FATAL_ERROR
21-
"Cannot find ${LIB_NAME} library, please install missing library or provide the path by IGC_OPTION__LLDELF_LIB_DIR")
20+
"Cannot find ${LIB_NAME} library in Release version in ${IGC_OPTION__LLD_DIR}")
2221
endif()
22+
23+
find_library(${LIB_NAME}_PATH_DEBUG
24+
${LIB_NAME}
25+
PATHS "${IGC_OPTION__LLD_DIR}/Debug/lib"
26+
PATH_SUFFIXES "llvm-${LLVM_VERSION_MAJOR}/lib")
27+
28+
if("${${LIB_NAME}_PATH_DEBUG}" STREQUAL "${LIB_NAME}_PATH_DEBUG-NOTFOUND")
29+
message(FATAL_ERROR
30+
"Cannot find ${LIB_NAME} library in Debug version in ${IGC_OPTION__LLD_DIR}")
31+
endif()
32+
2333
add_library(${LIB_NAME} UNKNOWN IMPORTED GLOBAL)
24-
set_target_properties(${LIB_NAME} PROPERTIES IMPORTED_LOCATION ${${LIB_NAME}_PATH})
34+
set_target_properties(${LIB_NAME} PROPERTIES
35+
IMPORTED_LOCATION_RELEASE "${${LIB_NAME}_PATH_RELEASE}"
36+
IMPORTED_LOCATION_RELEASEINTERNAL "${${LIB_NAME}_PATH_RELEASE}"
37+
IMPORTED_LOCATION_DEBUG "${${LIB_NAME}_PATH_DEBUG}"
38+
)
2539
endfunction()
2640

2741
function(add_lld_executable EXE_NAME)
28-
find_program(${EXE_NAME}_PATH
42+
find_program(${EXE_NAME}_PATH_RELEASE
2943
${EXE_NAME}
30-
PATHS "${IGC_OPTION__LLD_BIN_DIR}"
44+
PATHS "${IGC_OPTION__LLD_DIR}/Release/bin"
3145
PATH_SUFFIXES "llvm-${LLVM_VERSION_MAJOR}/bin")
3246

33-
if(${EXE_NAME}_PATH-NOTFOUND)
47+
if("${${EXE_NAME}_PATH_RELEASE}" STREQUAL "${EXE_NAME}_PATH_RELEASE-NOTFOUND")
3448
message(FATAL_ERROR
35-
"Cannot find ${EXE_NAME} executable, please install missing executable or provide the path by IGC_OPTION__LLD_BIN_DIR")
49+
"Cannot find ${EXE_NAME} executable in Release version in ${IGC_OPTION__LLD_DIR}")
3650
endif()
51+
52+
find_program(${EXE_NAME}_PATH_DEBUG
53+
${EXE_NAME}
54+
PATHS "${IGC_OPTION__LLD_DIR}/Debug/bin"
55+
PATH_SUFFIXES "llvm-${LLVM_VERSION_MAJOR}/bin")
56+
57+
if("${${EXE_NAME}_PATH_DEBUG}" STREQUAL "${EXE_NAME}_PATH_DEBUG-NOTFOUND")
58+
message(FATAL_ERROR
59+
"Cannot find ${EXE_NAME} executable in Debug version in ${IGC_OPTION__LLD_DIR}")
60+
endif()
61+
3762
add_executable(${EXE_NAME} IMPORTED GLOBAL)
38-
set_target_properties(${EXE_NAME} PROPERTIES IMPORTED_LOCATION ${${EXE_NAME}_PATH})
63+
set_target_properties(${EXE_NAME} PROPERTIES
64+
IMPORTED_LOCATION_RELEASE "${${EXE_NAME}_PATH_RELEASE}"
65+
IMPORTED_LOCATION_RELEASEINTERNAL "${${EXE_NAME}_PATH_RELEASE}"
66+
IMPORTED_LOCATION_DEBUG "${${EXE_NAME}_PATH_DEBUG}"
67+
)
3968
endfunction()
4069

4170
if(IGC_BUILD__LLVM_SOURCES)

IGC/cmake/igc_llvm.cmake

+9-10
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ if(NOT IGC_BUILD__LLVM_SOURCES)
1515
message(STATUS "[IGC] Found LLVM: ${LLVM_DIR}")
1616

1717
set(LLVM_DIR "${LLVM_DIR}" PARENT_SCOPE)
18-
set(LLVM_LIB_DIR "${LLVM_DIR}/lib")
19-
set(LLVM_LIB_DIR "${LLVM_LIB_DIR}" PARENT_SCOPE)
20-
set(LLVM_BIN_DIR "${LLVM_DIR}/bin")
18+
19+
set(LLVM_DIR_CONFIGURATION_ADJUSTED "${LLVM_DIR}/$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:ReleaseInternal>:Release>")
20+
set(LLVM_BIN_DIR_CONFIGURATION_ADJUSTED "${LLVM_DIR_CONFIGURATION_ADJUSTED}/bin")
2121

2222
# Tell the build that we are using prebuilds.
2323
set(IGC_BUILD__LLVM_PREBUILDS ON)
@@ -32,16 +32,15 @@ set(CMAKE_MODULE_PATH
3232
if(IGC_OPTION__LLVM_MODE STREQUAL PREBUILDS_MODE_NAME AND WIN32)
3333
set(IGC_OPTION__LLVM_MODE "${IGC_OPTION__LLVM_MODE}" CACHE STRING "")
3434

35-
set(IGC_OPTION__LLDELF_LIB_DIR "${LLVM_LIB_DIR}")
36-
set(IGC_OPTION__LLD_BIN_DIR "${LLVM_BIN_DIR}")
35+
set(IGC_OPTION__LLD_DIR "${LLVM_DIR}")
3736
set(IGC_OPTION__LLDELF_H_DIR "${DEFAULT_IGC_LLVM_SOURCES_DIR}/lld")
3837

39-
set(LLVM_LINK_EXE "${LLVM_BIN_DIR}/llvm-link" CACHE STRING "")
40-
set(LLVM_AS_EXE "${LLVM_BIN_DIR}/llvm-as.exe" CACHE STRING "")
41-
set(LLVM_OPT_EXE "${LLVM_BIN_DIR}/opt.exe" CACHE STRING "")
42-
set(LLVM_TABLEGEN_EXE "${LLVM_BIN_DIR}/llvm-tblgen.exe")
38+
set(LLVM_LINK_EXE "${LLVM_BIN_DIR_CONFIGURATION_ADJUSTED}/llvm-link.exe" CACHE STRING "")
39+
set(LLVM_AS_EXE "${LLVM_BIN_DIR_CONFIGURATION_ADJUSTED}/llvm-as.exe" CACHE STRING "")
40+
set(LLVM_OPT_EXE "${LLVM_BIN_DIR_CONFIGURATION_ADJUSTED}/opt.exe" CACHE STRING "")
41+
set(LLVM_TABLEGEN_EXE "${LLVM_BIN_DIR_CONFIGURATION_ADJUSTED}/llvm-tblgen.exe" CACHE STRING "")
4342

44-
set(LLVM_INCLUDE_DIRS "${LLVM_DIR}/include;${DEFAULT_IGC_LLVM_SOURCES_DIR}/llvm/include")
43+
set(LLVM_INCLUDE_DIRS "${LLVM_DIR_CONFIGURATION_ADJUSTED}/include;${DEFAULT_IGC_LLVM_SOURCES_DIR}/llvm/include")
4544
set(LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS}" PARENT_SCOPE)
4645
else()
4746
set(LLVM_LINK_EXE "llvm-link" CACHE STRING "")

IGC/cmake/igc_llvm_utils.cmake

+24-5
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,31 @@ function(igc_get_llvm_targets RET)
4040
set(PRE_BUILT_TARGETS)
4141
foreach(tmp_name ${TARGETS})
4242
unset(found_name CACHE)
43-
find_library(found_name ${tmp_name} PATHS "${LLVM_LIB_DIR}")
44-
if(EXISTS ${found_name})
45-
list(APPEND PRE_BUILT_TARGETS ${found_name})
46-
else()
47-
message(FATAL_ERROR "File not found for: ${tmp_name}")
43+
44+
find_library(found_name_release ${tmp_name} PATHS "${LLVM_DIR}/Release/lib")
45+
46+
if("${found_name_release}" STREQUAL "${found_name_release}-NOTFOUND")
47+
message(FATAL_ERROR
48+
"Cannot find ${tmp_name} in Release version in ${LLVM_DIR}")
49+
endif()
50+
51+
find_library(found_name_debug ${tmp_name} PATHS "${LLVM_DIR}/Debug/lib")
52+
53+
if("${found_name_debug}" STREQUAL "${found_name_debug}-NOTFOUND")
54+
message(FATAL_ERROR
55+
"Cannot find ${tmp_name} in Debug version in ${LLVM_DIR}")
56+
endif()
57+
58+
# Add lib as imported target if not already added
59+
if (NOT TARGET ${tmp_name})
60+
add_library(${tmp_name} UNKNOWN IMPORTED)
61+
set_target_properties(${tmp_name} PROPERTIES
62+
IMPORTED_LOCATION_RELEASE "${found_name_release}"
63+
IMPORTED_LOCATION_RELEASEINTERNAL "${found_name_release}"
64+
IMPORTED_LOCATION_DEBUG "${found_name_debug}"
65+
)
4866
endif()
67+
list(APPEND PRE_BUILT_TARGETS ${tmp_name})
4968
endforeach()
5069

5170
set(TARGETS ${PRE_BUILT_TARGETS})

IGC/cmake/modules/FindSPIRVLLVMTranslator.cmake

+52-20
Original file line numberDiff line numberDiff line change
@@ -15,63 +15,93 @@
1515
# Optionally, llvm-spirv tool will be checked and LLVMSPIRVTranslator_Tool_FOUND
1616
# will be set to true and llvm-spirv executable target will be defined.
1717

18-
find_library(SPIRVLLVMTranslator_Library LLVMSPIRVLib PATHS ${LLVM_LIB_DIR})
18+
find_library(SPIRVLLVMTranslator_Library_Release LLVMSPIRVLib PATHS "${LLVM_DIR}/Release/lib")
19+
find_library(SPIRVLLVMTranslator_Library_Debug LLVMSPIRVLib PATHS "${LLVM_DIR}/Debug/lib")
20+
1921
find_path(SPIRVLLVMTranslator_INCLUDE_DIR "LLVMSPIRVLib.h"
2022
PATH_SUFFIXES LLVMSPIRVLib
2123
PATHS "${IGC_OPTION__SPIRV_TRANSLATOR_SOURCE_DIR}/include"
2224
)
2325

2426
# Try to find version and llvm-spirv.
25-
if(SPIRVLLVMTranslator_Library)
27+
if(SPIRVLLVMTranslator_Library_Release AND SPIRVLLVMTranslator_Library_Debug)
2628
set(SPIRVLLVMTranslator_Library_FOUND YES)
2729

28-
get_filename_component(_libdir ${SPIRVLLVMTranslator_Library} DIRECTORY)
30+
get_filename_component(_libdir_Release ${SPIRVLLVMTranslator_Library_Release} DIRECTORY)
31+
get_filename_component(_libdir_Debug ${SPIRVLLVMTranslator_Library_Debug} DIRECTORY)
2932

3033
# Get library version. Manual parsing is used because it is quite easy and
3134
# will work for both linux and windows (which is lacking pkg-config).
32-
file(STRINGS "${_libdir}/pkgconfig/LLVMSPIRVLib.pc" _version_file
35+
file(STRINGS "${_libdir_Release}/pkgconfig/LLVMSPIRVLib.pc" _version_file_release
36+
REGEX "Version: .*")
37+
file(STRINGS "${_libdir_Debug}/pkgconfig/LLVMSPIRVLib.pc" _version_file_debug
3338
REGEX "Version: .*")
34-
if(NOT _version_file)
39+
40+
if(NOT _version_file_release OR NOT _version_file_debug)
3541
message(AUTHOR_WARNING "LLVMSPIRVLib is found, but LLVMSPIRVLib.pc is missing!")
3642
endif()
37-
string(REPLACE "Version: " "" SPIRVLLVMTranslator_VERSION "${_version_file}")
38-
set(SPIRVLLVMTranslator_VERSION ${SPIRVLLVMTranslator_VERSION} CACHE STRING "SPIRVLLVMTranslator version")
43+
string(REPLACE "Version: " "" SPIRVLLVMTranslator_VERSION_Release "${_version_file_release}")
44+
string(REPLACE "Version: " "" SPIRVLLVMTranslator_VERSION_Debug "${_version_file_debug}")
45+
set(SPIRVLLVMTranslator_VERSION_Release ${SPIRVLLVMTranslator_VERSION_Release} CACHE STRING "SPIRVLLVMTranslator release version")
46+
set(SPIRVLLVMTranslator_VERSION_Debug ${SPIRVLLVMTranslator_VERSION_Debug} CACHE STRING "SPIRVLLVMTranslator debug version")
3947

4048
# Try to find llvm-spirv.
41-
find_program(SPIRVLLVMTranslator_Tool llvm-spirv
42-
PATHS ${_libdir}/../bin
49+
find_program(SPIRVLLVMTranslator_Tool_Release llvm-spirv
50+
PATHS ${_libdir_Release}/../bin
4351
NO_DEFAULT_PATH
4452
)
45-
if(SPIRVLLVMTranslator_Tool)
53+
find_program(SPIRVLLVMTranslator_Tool_Debug llvm-spirv
54+
PATHS ${_libdir_Debug}/../bin
55+
NO_DEFAULT_PATH
56+
)
57+
58+
if(SPIRVLLVMTranslator_Tool_Release AND SPIRVLLVMTranslator_Tool_Debug)
4659
set(SPIRVLLVMTranslator_Tool_FOUND YES)
4760
endif()
4861

4962
unset(_libdir)
5063
endif()
5164

5265
include(FindPackageHandleStandardArgs)
53-
find_package_handle_standard_args(SPIRVLLVMTranslator
54-
REQUIRED_VARS SPIRVLLVMTranslator_Library SPIRVLLVMTranslator_INCLUDE_DIR
55-
VERSION_VAR SPIRVLLVMTranslator_VERSION
66+
find_package_handle_standard_args(SPIRVLLVMTranslator_Release
67+
REQUIRED_VARS SPIRVLLVMTranslator_Library_Release SPIRVLLVMTranslator_INCLUDE_DIR
68+
VERSION_VAR SPIRVLLVMTranslator_VERSION_Release
69+
HANDLE_COMPONENTS
70+
)
71+
find_package_handle_standard_args(SPIRVLLVMTranslator_Debug
72+
REQUIRED_VARS SPIRVLLVMTranslator_Library_Debug SPIRVLLVMTranslator_INCLUDE_DIR
73+
VERSION_VAR SPIRVLLVMTranslator_VERSION_Debug
5674
HANDLE_COMPONENTS
5775
)
5876

5977
# Mark all cached variables as advanced.
60-
if(SPIRVLLVMTranslator_FOUND)
61-
mark_as_advanced(SPIRVLLVMTranslator_Library)
78+
if(SPIRVLLVMTranslator_Release_FOUND)
79+
mark_as_advanced(SPIRVLLVMTranslator_Library_Release)
80+
mark_as_advanced(SPIRVLLVMTranslator_INCLUDE_DIR)
81+
mark_as_advanced(SPIRVLLVMTranslator_VERSION_Release)
82+
endif()
83+
84+
if(SPIRVLLVMTranslator_Debug_FOUND)
85+
mark_as_advanced(SPIRVLLVMTranslator_Library_Debug)
6286
mark_as_advanced(SPIRVLLVMTranslator_INCLUDE_DIR)
63-
mark_as_advanced(SPIRVLLVMTranslator_VERSION)
87+
mark_as_advanced(SPIRVLLVMTranslator_VERSION_Debug)
88+
endif()
89+
90+
if(SPIRVLLVMTranslator_Tool_Release_FOUND)
91+
mark_as_advanced(SPIRVLLVMTranslator_Tool_Release)
6492
endif()
6593

66-
if(SPIRVLLVMTranslator_Tool_FOUND)
67-
mark_as_advanced(SPIRVLLVMTranslator_Tool)
94+
if(SPIRVLLVMTranslator_Tool_Debug_FOUND)
95+
mark_as_advanced(SPIRVLLVMTranslator_Tool_Debug)
6896
endif()
6997

7098
# Add interface target for library.
7199
if(SPIRVLLVMTranslator_FOUND AND NOT TARGET LLVMSPIRVLib)
72100
add_library(LLVMSPIRVLib IMPORTED UNKNOWN)
73101
set_target_properties(LLVMSPIRVLib PROPERTIES
74-
IMPORTED_LOCATION ${SPIRVLLVMTranslator_Library}
102+
IMPORTED_LOCATION_RELEASE "${SPIRVLLVMTranslator_Library_Release}"
103+
IMPORTED_LOCATION_RELEASEINTERNAL "${SPIRVLLVMTranslator_Library_Release}"
104+
IMPORTED_LOCATION_DEBUG "${SPIRVLLVMTranslator_Library_Debug}"
75105
INTERFACE_INCLUDE_DIRECTORIES ${SPIRVLLVMTranslator_INCLUDE_DIR}
76106
)
77107
endif()
@@ -86,6 +116,8 @@ endif()
86116
if(SPIRVLLVMTranslator_Tool_FOUND AND NOT TARGET llvm-spirv)
87117
add_executable(llvm-spirv IMPORTED)
88118
set_target_properties(llvm-spirv PROPERTIES
89-
IMPORTED_LOCATION ${SPIRVLLVMTranslator_Tool}
119+
IMPORTED_LOCATION_RELEASE "${SPIRVLLVMTranslator_Tool_Release}"
120+
IMPORTED_LOCATION_RELEASEINTERNAL "${SPIRVLLVMTranslator_Tool_Release}"
121+
IMPORTED_LOCATION_DEBUG "${SPIRVLLVMTranslator_Tool_Debug}"
90122
)
91123
endif()

external/llvm/llvm_prebuilt_path.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ if(DEFINED BUILD_TYPE)
1616
endif()
1717
endif()
1818

19-
list(APPEND DEFAULT_IGC_LLVM_PREBUILDS_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/../../prebuild-llvm/${LLVM_BUILD_TYPE}")
19+
list(APPEND DEFAULT_IGC_LLVM_PREBUILDS_DIRS "${BS_DIR_EXTERNAL_COMPONENTS}/prebuild-llvm")
2020
list(APPEND DEFAULT_IGC_LLVM_PREBUILDS_DIRS "/opt/intel-llvm-static-${IGC_OPTION__LLVM_PREFERRED_VERSION}")

0 commit comments

Comments
 (0)