Skip to content

Commit 743bd15

Browse files
authored
Update CMakeLists.txt (#398)
* Update CMakeLists.txt 1. Add additional link dependencies for NVPTX and AMDGPU 2. Create stripped pdbs for Windows 3. Remove windows_resource_file in windows * Apply suggestions
1 parent 436ed25 commit 743bd15

File tree

4 files changed

+90
-151
lines changed

4 files changed

+90
-151
lines changed

CMakeLists.txt

Lines changed: 75 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ if (NOT WIN32)
8585
endif()
8686

8787
use_rtti(FALSE)
88+
use_eh(TRUE)
8889

8990
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
9091
set(ADDR 32)
@@ -284,51 +285,15 @@ else()
284285
)
285286
endif()
286287

287-
add_llvm_library(${TARGET_NAME} SHARED
288-
${TARGET_INCLUDE_FILES}
289-
${TARGET_SOURCE_FILES}
290-
$<TARGET_OBJECTS:cl_headers>
288+
add_library(${TARGET_NAME} SHARED
289+
${TARGET_INCLUDE_FILES}
290+
${TARGET_SOURCE_FILES}
291+
$<TARGET_OBJECTS:cl_headers>
292+
)
291293

292-
DEPENDS CClangCompileOptions
293-
LINK_COMPONENTS
294-
all
295-
LINK_LIBS
296-
${OPENCL_CLANG_LINK_LIBS}
297-
)
294+
add_dependencies(${TARGET_NAME} CClangCompileOptions)
298295

299-
# Configure resource file on Windows
300296
if (WIN32)
301-
# windows_resource_file should be defined by llvm_add_library and should
302-
# contain full patch to a .rc file
303-
# It also might not be defined if this library is built out-of-tree:
304-
# let's use our copy of .rc file from LLVM source tree in that case
305-
if (NOT DEFINED windows_resource_file)
306-
set(windows_resource_file windows_resource_file.rc)
307-
endif(NOT DEFINED windows_resource_file)
308-
309-
set(RC_CHAR_TM "\\231")
310-
set(RC_CHAR_C "\\251")
311-
set(RC_CHAR_R "\\256")
312-
313-
set(RC_FILE_VERSION "${PRODUCT_VER_MAJOR}.${PRODUCT_VER_MINOR}.${LLVM_VER_MAJOR}.${LLVM_VER_MINOR}")
314-
set(RC_PRODUCT_NAME "Intel${RC_CHAR_R} Front-end Library for OpenCL${RC_CHAR_TM} software")
315-
316-
# Adjust content of the resource file by specifying compile definitions
317-
set_property(SOURCE ${windows_resource_file}
318-
PROPERTY COMPILE_DEFINITIONS
319-
"RC_VERSION_FIELD_1=${PRODUCT_VER_MAJOR}"
320-
"RC_VERSION_FIELD_2=${PRODUCT_VER_MINOR}"
321-
"RC_VERSION_FIELD_3=${LLVM_VER_MAJOR}"
322-
"RC_VERSION_FIELD_4=${LLVM_VER_MINOR}"
323-
"RC_COMPANY_NAME=\"Intel Corporation\""
324-
"RC_FILE_DESCRIPTION=\"${RC_PRODUCT_NAME}\""
325-
"RC_FILE_VERSION=\"${RC_FILE_VERSION}\""
326-
"RC_INTERNAL_NAME=\"${TARGET_NAME}\""
327-
"RC_ORIGINAL_FILENAME=\"${TARGET_NAME}.dll\""
328-
"RC_PRODUCT_NAME=\"${RC_PRODUCT_NAME}\""
329-
"RC_PRODUCT_VERSION=\"${RC_FILE_VERSION}\""
330-
"RC_COPYRIGHT=\"Copyright ${RC_CHAR_C} 2018 Intel Corporation. All rights reserved.\"")
331-
332297
# Enable compiler generation of Control Flow Guard security checks.
333298
target_compile_options(${TARGET_NAME} PUBLIC "/guard:cf")
334299
set_property(TARGET ${TARGET_NAME} APPEND_STRING PROPERTY
@@ -342,10 +307,75 @@ elseif(UNIX)
342307
LINK_FLAGS " -Wl,--no-undefined")
343308
endif(WIN32)
344309

310+
# Enable new IN_LIST operator.
311+
cmake_policy(SET CMP0057 NEW)
312+
set(OTHER_LIBRARIES)
313+
if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD)
314+
list(APPEND OTHER_LIBRARIES LLVMNVPTXCodeGen LLVMNVPTXDesc LLVMNVPTXInfo)
315+
endif()
316+
if ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD)
317+
list(APPEND OTHER_LIBRARIES LLVMAMDGPUCodeGen LLVMAMDGPUAsmParser LLVMAMDGPUDesc LLVMAMDGPUInfo)
318+
endif()
319+
320+
target_link_libraries( ${TARGET_NAME}
321+
LINK_PRIVATE
322+
${OPENCL_CLANG_LINK_LIBS}
323+
LLVMX86CodeGen
324+
LLVMX86AsmParser
325+
LLVMX86Desc
326+
LLVMX86Info
327+
LLVMX86Disassembler
328+
LLVMAnalysis
329+
LLVMCodeGen
330+
LLVMCore
331+
LLVMipo
332+
LLVMInstCombine
333+
LLVMInstrumentation
334+
LLVMMC
335+
LLVMMCParser
336+
LLVMObjCARCOpts
337+
LLVMOption
338+
LLVMScalarOpts
339+
LLVMSupport
340+
LLVMTransformUtils
341+
LLVMVectorize
342+
LLVMAsmPrinter
343+
LLVMSelectionDAG
344+
LLVMMCDisassembler
345+
LLVMProfileData
346+
LLVMObject
347+
LLVMBitWriter
348+
LLVMIRReader
349+
LLVMAsmParser
350+
LLVMTarget
351+
LLVMBitReader
352+
${OTHER_LIBRARIES}
353+
)
354+
345355
install(FILES common_clang.h
346356
DESTINATION include/cclang
347357
COMPONENT ${TARGET_NAME})
348358

349-
SET_LINUX_EXPORTS_FILE( ${TARGET_NAME} common_clang.map )
350-
351-
add_custom_target(deploy DEPENDS install-${TARGET_NAME})
359+
#
360+
# Stripped PDB files
361+
#
362+
if (WIN32)
363+
get_target_property(RT_OUTPUT_DIRECTORY ${TARGET_NAME} RUNTIME_OUTPUT_DIRECTORY)
364+
file(TO_NATIVE_PATH ${RT_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/${TARGET_NAME}_stripped.pdb PDB_NAME)
365+
if (${MSVC_VERSION} EQUAL 1500)
366+
# Visual Studio 2008
367+
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "${LINK_FLAGS} /PDBSTRIPPED:${PDB_NAME}")
368+
else (${MSVC_VERSION} EQUAL 1500)
369+
# Visual Studio 2010 (assumed if not Visual Studio 2008)
370+
# This is a fix due to a bug in CMake, Does not add the flag /DEBUG to the linker flags in Release mode.
371+
# The /DEBUG flag is required in order to create stripped pdbs.
372+
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_DEBUG "${LINK_FLAGS_DEBUG} /PDBSTRIPPED:${PDB_NAME}")
373+
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} /DEBUG /PDBSTRIPPED:${PDB_NAME}")
374+
endif (${MSVC_VERSION} EQUAL 1500)
375+
if (INSTALL_PDBS)
376+
install(FILES ${RT_OUTPUT_DIRECTORY}/\${BUILD_TYPE}/${TARGET_NAME}.pdb DESTINATION bin)
377+
endif(INSTALL_PDBS)
378+
install(FILES ${RT_OUTPUT_DIRECTORY}/\${BUILD_TYPE}/${TARGET_NAME}_stripped.pdb DESTINATION bin)
379+
else (WIN32)
380+
SET_LINUX_EXPORTS_FILE( ${TARGET_NAME} common_clang.map )
381+
endif(WIN32)

cmake/modules/CMakeFunctions.cmake

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
# Set compiler RTTI options according to the given flag
33
#
44
macro(use_rtti val)
5-
if( CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
5+
if (MSVC)
66
if( ${val} )
7-
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-fno-rtti" "-frtti")
7+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR-" "/GR")
88
else()
9-
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti" )
9+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-" )
1010
endif()
11-
else(MSVC)
11+
else () # G++ or clang or icx
1212
if( ${val} )
13-
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR-" "/GR")
13+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-fno-rtti" "-frtti")
1414
else()
15-
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-" )
15+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti" )
1616
endif()
1717
endif()
1818
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" PARENT_SCOPE )
@@ -22,20 +22,20 @@ endmacro(use_rtti)
2222
# Set compiler Exception Handling options according to the given flag
2323
#
2424
macro(use_eh val)
25-
if( CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
26-
if( ${val} )
27-
remove_definitions( -fno-exceptions )
28-
else()
29-
add_definitions( -fno-exceptions )
30-
endif()
31-
else(MSVC)
25+
if (MSVC)
3226
if( ${val} )
3327
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/EHs-c-" "/EHsc" )
3428
add_definitions( /D_HAS_EXCEPTIONS=1 )
3529
else()
3630
llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/EHsc" "/EHs-c-")
3731
add_definitions( /D_HAS_EXCEPTIONS=0 )
3832
endif()
33+
else () # G++ or clang or icx
34+
if( ${val} )
35+
remove_definitions( -fno-exceptions )
36+
else()
37+
add_definitions( -fno-exceptions )
38+
endif()
3939
endif()
4040
endmacro(use_eh)
4141

common_clang.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ static bool GetHeaders(std::vector<Resource> &Result) {
135135
for (auto Header : Headers) {
136136
Resource R = RM.get_resource(Header.Name, Header.ID, "PCM", true);
137137
if (!R) {
138-
assert(0 && "Resource not found");
138+
assert(false && "Resource not found");
139139
return false;
140140
}
141141

@@ -319,7 +319,7 @@ Compile(const char *pszProgramSource, const char **pInputHeaders,
319319
if (pBinaryResult) {
320320
*pBinaryResult = nullptr;
321321
}
322-
assert(!"Failed to read just compiled LLVM IR!");
322+
assert(false && "Failed to read just compiled LLVM IR!");
323323
return CL_COMPILE_PROGRAM_FAILURE;
324324
}
325325
pResult->getIRBufferRef().clear();

windows_resource_file.rc

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

0 commit comments

Comments
 (0)