@@ -85,6 +85,7 @@ if (NOT WIN32)
8585endif ()
8686
8787use_rtti(FALSE )
88+ use_eh(TRUE )
8889
8990if (CMAKE_SIZEOF_VOID_P EQUAL 4)
9091 set (ADDR 32)
@@ -284,51 +285,15 @@ else()
284285 )
285286endif ()
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
300296if (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" )
343308endif (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+
345355install (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 )
0 commit comments