@@ -399,17 +399,16 @@ function(_add_host_variant_link_flags target)
399399 endif ()
400400endfunction ()
401401
402- # Add a single variant of a new Swift library.
402+ # Add a new Swift host library.
403403#
404404# Usage:
405- # _add_swift_host_library_single(
406- # target
405+ # add_swift_host_library(name
407406# [SHARED]
408407# [STATIC]
409408# [LLVM_LINK_COMPONENTS comp1 ...]
410409# source1 [source2 source3 ...])
411410#
412- # target
411+ # name
413412# Name of the library (e.g., swiftParse).
414413#
415414# SHARED
@@ -422,223 +421,142 @@ endfunction()
422421# LLVM components this library depends on.
423422#
424423# source1 ...
425- # Sources to add into this library
426- function (_add_swift_host_library_single target )
424+ # Sources to add into this library.
425+ function (add_swift_host_library name )
427426 set (options
428427 SHARED
429428 STATIC )
430429 set (single_parameter_options)
431430 set (multiple_parameter_options
432431 LLVM_LINK_COMPONENTS)
433432
434- cmake_parse_arguments (ASHLS
433+ cmake_parse_arguments (ASHL
435434 "${options} "
436435 "${single_parameter_options} "
437436 "${multiple_parameter_options} "
438437 ${ARGN} )
439- set (ASHLS_SOURCES ${ASHLS_UNPARSED_ARGUMENTS } )
438+ set (ASHL_SOURCES ${ASHL_UNPARSED_ARGUMENTS } )
440439
441- translate_flags(ASHLS "${options} " )
440+ translate_flags(ASHL "${options} " )
442441
443- if (NOT ASHLS_SHARED AND NOT ASHLS_STATIC )
442+ if (NOT ASHL_SHARED AND NOT ASHL_STATIC )
444443 message (FATAL_ERROR "Either SHARED or STATIC must be specified" )
445444 endif ()
446445
447- # Include LLVM Bitcode slices for iOS, Watch OS, and Apple TV OS device libraries.
448- set (embed_bitcode_arg)
449- if (SWIFT_EMBED_BITCODE_SECTION)
450- if (SWIFT_HOST_VARIANT_SDK MATCHES "(I|TV|WATCH)OS" )
451- list (APPEND ASHLS_C_COMPILE_FLAGS "-fembed-bitcode" )
452- set (embed_bitcode_arg EMBED_BITCODE)
453- endif ()
454- endif ()
455-
456446 if (XCODE)
457- string ( REGEX MATCHALL "/[^/]+" split_path ${CMAKE_CURRENT_SOURCE_DIR} )
458- list ( GET split_path -1 dir)
459- file (GLOB_RECURSE ASHLS_HEADERS
447+ get_filename_component (dir ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY )
448+
449+ file (GLOB_RECURSE ASHL_HEADERS
460450 ${SWIFT_SOURCE_DIR} /include /swift${dir} /*.h
461451 ${SWIFT_SOURCE_DIR} /include /swift${dir} /*.def
462452 ${CMAKE_CURRENT_SOURCE_DIR} /*.def)
463-
464- file (GLOB_RECURSE ASHLS_TDS
453+ file (GLOB_RECURSE ASHL_TDS
465454 ${SWIFT_SOURCE_DIR} /include /swift${dir} /*.td)
466455
467- set_source_files_properties (${ASHLS_HEADERS} ${ASHLS_TDS}
468- PROPERTIES
456+ set_source_files_properties (${ASHL_HEADERS} ${ASHL_TDS} PROPERTIES
469457 HEADER_FILE_ONLY true )
470- source_group ("TableGen descriptions" FILES ${ASHLS_TDS } )
458+ source_group ("TableGen descriptions" FILES ${ASHL_TDS } )
471459
472- set (ASHLS_SOURCES ${ASHLS_SOURCES } ${ASHLS_HEADERS } ${ASHLS_TDS } )
460+ set (ASHL_SOURCES ${ASHL_SOURCES } ${ASHL_HEADERS } ${ASHL_TDS } )
473461 endif ()
474462
475- if (ASHLS_SHARED )
463+ if (ASHL_SHARED )
476464 set (libkind SHARED)
477- elseif (ASHLS_STATIC )
465+ elseif (ASHL_STATIC )
478466 set (libkind STATIC )
479467 endif ()
480468
481- add_library ("${target} " ${libkind} ${ASHLS_SOURCES} )
482- _set_target_prefix_and_suffix("${target} " "${libkind} " "${SWIFT_HOST_VARIANT_SDK} " )
483- add_dependencies (${target} ${LLVM_COMMON_DEPENDS} )
484-
485- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
486- swift_windows_include_for_arch(${SWIFT_HOST_VARIANT_ARCH} SWIFTLIB_INCLUDE)
487- target_include_directories ("${target} " SYSTEM PRIVATE ${SWIFTLIB_INCLUDE} )
488- set_target_properties (${target}
489- PROPERTIES
490- CXX_STANDARD 14)
491- endif ()
492-
493- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
494- set_property (TARGET "${target} " PROPERTY NO_SONAME ON )
495- endif ()
496-
497- llvm_update_compile_flags(${target} )
498-
499- set_output_directory(${target}
469+ add_library (${name} ${libkind} ${ASHL_SOURCES} )
470+ add_dependencies (${name} ${LLVM_COMMON_DEPENDS} )
471+ llvm_update_compile_flags(${name} )
472+ swift_common_llvm_config(${name} ${ASHL_LLVM_LINK_COMPONENTS} )
473+ set_output_directory(${name}
500474 BINARY_DIR ${SWIFT_RUNTIME_OUTPUT_INTDIR}
501475 LIBRARY_DIR ${SWIFT_LIBRARY_OUTPUT_INTDIR} )
502476
503477 if (SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_APPLE_PLATFORMS)
504- set_target_properties (" ${target} "
478+ set_target_properties (${name}
505479 PROPERTIES
506480 INSTALL_NAME_DIR "@rpath" )
507481 elseif (SWIFT_HOST_VARIANT_SDK STREQUAL LINUX)
508- set_target_properties (" ${target} "
482+ set_target_properties (${name}
509483 PROPERTIES
510484 INSTALL_RPATH "$ORIGIN:/usr/lib/swift/linux" )
511485 elseif (SWIFT_HOST_VARIANT_SDK STREQUAL CYGWIN )
512- set_target_properties (" ${target} "
486+ set_target_properties (${name}
513487 PROPERTIES
514488 INSTALL_RPATH "$ORIGIN:/usr/lib/swift/cygwin" )
515489 elseif (SWIFT_HOST_VARIANT_SDK STREQUAL "ANDROID" )
516- set_target_properties (" ${target} "
490+ set_target_properties (${name}
517491 PROPERTIES
518492 INSTALL_RPATH "$ORIGIN" )
519493 endif ()
520494
521- set_target_properties ("${target} " PROPERTIES BUILD_WITH_INSTALL_RPATH YES )
522- set_target_properties ("${target} " PROPERTIES FOLDER "Swift libraries" )
523-
524- # Call llvm_config() only for libraries that are part of the compiler.
525- swift_common_llvm_config("${target} " ${ASHLS_LLVM_LINK_COMPONENTS} )
495+ set_target_properties (${name} PROPERTIES
496+ BUILD_WITH_INSTALL_RPATH YES
497+ FOLDER "Swift libraries" )
526498
527- target_compile_options (${target} PRIVATE
528- ${ASHLS_C_COMPILE_FLAGS} )
529- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
530- if (libkind STREQUAL SHARED)
531- target_compile_definitions (${target} PRIVATE
532- _WINDLL)
533- endif ()
534- endif ()
535-
536- _add_host_variant_c_compile_flags(${target} )
537- _add_host_variant_link_flags(${target} )
499+ _add_host_variant_c_compile_flags(${name} )
500+ _add_host_variant_link_flags(${name} )
501+ _set_target_prefix_and_suffix(${name} "${libkind} " "${SWIFT_HOST_VARIANT_SDK} " )
538502
539503 # Set compilation and link flags.
540504 if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
541505 swift_windows_include_for_arch(${SWIFT_HOST_VARIANT_ARCH}
542506 ${SWIFT_HOST_VARIANT_ARCH} _INCLUDE)
543- target_include_directories (${target } SYSTEM PRIVATE
507+ target_include_directories (${name } SYSTEM PRIVATE
544508 ${${SWIFT_HOST_VARIANT_ARCH} _INCLUDE})
545509
510+ if (libkind STREQUAL SHARED)
511+ target_compile_definitions (${name} PRIVATE
512+ _WINDLL)
513+ endif ()
514+
546515 if (NOT ${CMAKE_C_COMPILER_ID} STREQUAL MSVC )
547- swift_windows_get_sdk_vfs_overlay(ASHLS_VFS_OVERLAY )
548- target_compile_options (${target } PRIVATE
549- "SHELL:-Xclang -ivfsoverlay -Xclang ${ASHLS_VFS_OVERLAY } " )
516+ swift_windows_get_sdk_vfs_overlay(ASHL_VFS_OVERLAY )
517+ target_compile_options (${name } PRIVATE
518+ "SHELL:-Xclang -ivfsoverlay -Xclang ${ASHL_VFS_OVERLAY } " )
550519
551520 # MSVC doesn't support -Xclang. We don't need to manually specify
552521 # the dependent libraries as `cl` does so.
553- target_compile_options (${target } PRIVATE
522+ target_compile_options (${name } PRIVATE
554523 "SHELL:-Xclang --dependent-lib=oldnames"
555524 # TODO(compnerd) handle /MT, /MTd
556525 "SHELL:-Xclang --dependent-lib=msvcrt$<$<CONFIG:Debug>:d>" )
557526 endif ()
527+
528+ set_target_properties (${name} PROPERTIES
529+ CXX_STANDARD 14
530+ NO_SONAME YES )
558531 endif ()
559532
560533 if (${SWIFT_HOST_VARIANT_SDK} IN_LIST SWIFT_APPLE_PLATFORMS)
561- target_link_options (${target} PRIVATE
562- "LINKER:-compatibility_version,1" )
563- if (SWIFT_COMPILER_VERSION)
564- target_link_options (${target} PRIVATE
565- "LINKER:-current_version,${SWIFT_COMPILER_VERSION} " )
566- endif ()
567534 # Include LLVM Bitcode slices for iOS, Watch OS, and Apple TV OS device libraries.
568535 if (SWIFT_EMBED_BITCODE_SECTION)
569- if (${SWIFT_HOST_VARIANT_SDK} MATCHES "(I|TV|WATCH)OS" )
570- target_link_options (${target} PRIVATE
571- "LINKER:-bitcode_bundle"
572- "LINKER:-lto_library,${LLVM_LIBRARY_DIR} /libLTO.dylib" )
573-
574- # Please note that using a generator expression to fit
575- # this in a single target_link_options does not work
576- # (at least in CMake 3.15 and 3.16),
577- # since that seems not to allow the LINKER: prefix to be
578- # evaluated (i.e. it will be added as-is to the linker parameters)
579- if (SWIFT_EMBED_BITCODE_SECTION_HIDE_SYMBOLS)
580- target_link_options (${target} PRIVATE
581- "LINKER:-bitcode_hide_symbols" )
582- endif ()
536+ target_compile_options (${name} PRIVATE
537+ -fembed-bitcode)
538+ target_link_options (${name} PRIVATE
539+ "LINKER:-bitcode_bundle"
540+ "LINKER:-lto_library,${LLVM_LIBRARY_DIR} /libLTO.dylib" )
541+
542+ # Please note that using a generator expression to fit this in a single
543+ # target_link_options does not work (at least in CMake 3.15 and 3.16),
544+ # since that seems not to allow the LINKER: prefix to be evaluated (i.e.
545+ # it will be added as-is to the linker parameters)
546+ if (SWIFT_EMBED_BITCODE_SECTION_HIDE_SYMBOLS)
547+ target_link_options (${name} PRIVATE
548+ "LINKER:-bitcode_hide_symbols" )
583549 endif ()
584550 endif ()
585- endif ()
586-
587- # Do not add code here.
588- endfunction ()
589-
590- # Add a new Swift host library.
591- #
592- # Usage:
593- # add_swift_host_library(name
594- # [SHARED]
595- # [STATIC]
596- # [LLVM_LINK_COMPONENTS comp1 ...]
597- # source1 [source2 source3 ...])
598- #
599- # name
600- # Name of the library (e.g., swiftParse).
601- #
602- # SHARED
603- # Build a shared library.
604- #
605- # STATIC
606- # Build a static library.
607- #
608- # LLVM_LINK_COMPONENTS
609- # LLVM components this library depends on.
610- #
611- # source1 ...
612- # Sources to add into this library.
613- function (add_swift_host_library name )
614- set (options
615- SHARED
616- STATIC )
617- set (single_parameter_options)
618- set (multiple_parameter_options
619- LLVM_LINK_COMPONENTS)
620-
621- cmake_parse_arguments (ASHL
622- "${options} "
623- "${single_parameter_options} "
624- "${multiple_parameter_options} "
625- ${ARGN} )
626- set (ASHL_SOURCES ${ASHL_UNPARSED_ARGUMENTS} )
627551
628- translate_flags(ASHL "${options} " )
629-
630- if (NOT ASHL_SHARED AND NOT ASHL_STATIC)
631- message (FATAL_ERROR "Either SHARED or STATIC must be specified" )
552+ target_link_options (${name} PRIVATE
553+ "LINKER:-compatibility_version,1" )
554+ if (SWIFT_COMPILER_VERSION)
555+ target_link_options (${name} PRIVATE
556+ "LINKER:-current_version,${SWIFT_COMPILER_VERSION} " )
557+ endif ()
632558 endif ()
633559
634- _add_swift_host_library_single(
635- ${name}
636- ${ASHL_SHARED_keyword}
637- ${ASHL_STATIC_keyword}
638- ${ASHL_SOURCES}
639- LLVM_LINK_COMPONENTS ${ASHL_LLVM_LINK_COMPONENTS}
640- )
641-
642560 add_dependencies (dev ${name} )
643561 if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
644562 swift_install_in_component(TARGETS ${name}
0 commit comments