brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 206b856 Raw
99 lines · plain
1list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes/cmake/Modules")2include(WarningFlags)3 4function(add_sycl_rt_library LIB_TARGET_NAME LIB_OBJ_NAME LIB_OUTPUT_NAME)5  if (NOT LLVM_ENABLE_PIC)6    message( FATAL_ERROR "Position-Independent Code generation is required for libsycl shared library" )7  endif()8 9  cmake_parse_arguments(ARG "" "" "COMPILE_OPTIONS;SOURCES" ${ARGN})10 11  add_library(${LIB_OBJ_NAME} OBJECT ${ARG_SOURCES})12 13  # Common compilation step setup14  target_compile_definitions(${LIB_OBJ_NAME} PRIVATE15              $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Windows>:_LIBSYCL_BUILDING_LIBRARY>)16  cxx_add_warning_flags(${LIB_OBJ_NAME} ${LIBSYCL_ENABLE_WERROR} ${LIBSYCL_ENABLE_PEDANTIC})17 18  target_include_directories(19    ${LIB_OBJ_NAME}20    PRIVATE21      ${CMAKE_CURRENT_SOURCE_DIR}22      ${LIBSYCL_BUILD_INCLUDE_DIR}23  )24 25  add_library(${LIB_TARGET_NAME} SHARED26              $<TARGET_OBJECTS:${LIB_OBJ_NAME}>)27 28  add_dependencies(${LIB_OBJ_NAME}29    sycl-headers30  )31 32  set_target_properties(${LIB_TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX)33 34  if (CMAKE_SYSTEM_NAME STREQUAL Windows)35    # Install stripped PDB36    set(PDB_FILENAME "${LIB_TARGET_NAME}$<$<CONFIG:Debug>:d>")37    check_linker_flag(CXX "LINKER:/PDBSTRIPPED:${PDB_FILENAME}.stripped.pdb"38                          LINKER_SUPPORTS_PDBSTRIPPED)39    if(LINKER_SUPPORTS_PDBSTRIPPED)40      target_link_options(${LIB_TARGET_NAME}41                          PRIVATE "LINKER:/PDBSTRIPPED:${PDB_FILENAME}.stripped.pdb")42      install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PDB_FILENAME}.stripped.pdb"43              DESTINATION ${CMAKE_INSTALL_PREFIX}/bin44              RENAME "${PDB_FILENAME}.pdb"45              COMPONENT ${LIB_TARGET_NAME}46              OPTIONAL)47    endif()48 49    target_compile_options(${LIB_OBJ_NAME} PUBLIC /EHsc)50  else()51    target_compile_options(${LIB_OBJ_NAME} PUBLIC52                           -fvisibility=hidden -fvisibility-inlines-hidden)53 54    if (UNIX AND NOT APPLE)55      set(linker_script "${CMAKE_CURRENT_SOURCE_DIR}/ld-version-script.txt")56      target_link_libraries(57          ${LIB_TARGET_NAME} PRIVATE "-Wl,--version-script=${linker_script}")58      set_target_properties(${LIB_TARGET_NAME} PROPERTIES LINK_DEPENDS ${linker_script})59    endif()60  endif()61 62  find_package(Threads REQUIRED)63 64  target_link_libraries(${LIB_TARGET_NAME}65    PRIVATE66      ${CMAKE_DL_LIBS}67      ${CMAKE_THREAD_LIBS_INIT}68  )69 70  set_target_properties(${LIB_TARGET_NAME} PROPERTIES71                        VERSION ${LIBSYCL_VERSION_STRING}72                        SOVERSION ${LIBSYCL_VERSION_STRING})73  set_target_properties(${LIB_TARGET_NAME} PROPERTIES OUTPUT_NAME ${LIB_OUTPUT_NAME})74endfunction(add_sycl_rt_library)75 76set(LIBSYCL_SOURCES77    "platform.cpp"78)79 80set(LIB_NAME "sycl")81set(LIB_OUTPUT_NAME "${LIB_NAME}")82if (CMAKE_SYSTEM_NAME STREQUAL Windows)83  if (CMAKE_MSVC_RUNTIME_LIBRARY AND (NOT CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "DLL$"))84      message(FATAL_ERROR "libsycl requires a DLL version of the MSVC CRT.")85  endif()86  if ((NOT CMAKE_MSVC_RUNTIME_LIBRARY AND uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")87      OR (CMAKE_MSVC_RUNTIME_LIBRARY STREQUAL "MultiThreadedDebugDLL"))88    set(LIB_OUTPUT_NAME "${LIB_OUTPUT_NAME}d")89  endif()90endif()91 92add_sycl_rt_library(${LIB_NAME} sycl_object ${LIB_OUTPUT_NAME}93                    SOURCES ${LIBSYCL_SOURCES})94 95install(TARGETS ${LIBSYCL_RT_LIBS}96  ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl97  LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl98  RUNTIME DESTINATION "bin" COMPONENT libsycl)99