@@ -85,6 +85,7 @@ if (NOT WIN32)
85
85
endif ()
86
86
87
87
use_rtti (FALSE )
88
+ use_eh (TRUE )
88
89
89
90
if (CMAKE_SIZEOF_VOID_P EQUAL 4 )
90
91
set (ADDR 32 )
@@ -284,51 +285,15 @@ else()
284
285
)
285
286
endif ()
286
287
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
+ )
291
293
292
- DEPENDS CClangCompileOptions
293
- LINK_COMPONENTS
294
- all
295
- LINK_LIBS
296
- ${OPENCL_CLANG_LINK_LIBS}
297
- )
294
+ add_dependencies (${TARGET_NAME} CClangCompileOptions )
298
295
299
- # Configure resource file on Windows
300
296
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
-
332
297
# Enable compiler generation of Control Flow Guard security checks.
333
298
target_compile_options (${TARGET_NAME} PUBLIC "/guard:cf" )
334
299
set_property (TARGET ${TARGET_NAME} APPEND_STRING PROPERTY
@@ -342,10 +307,75 @@ elseif(UNIX)
342
307
LINK_FLAGS " -Wl,--no-undefined" )
343
308
endif (WIN32 )
344
309
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
+
345
355
install (FILES common_clang.h
346
356
DESTINATION include /cclang
347
357
COMPONENT ${TARGET_NAME} )
348
358
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 )
0 commit comments