@@ -399,17 +399,16 @@ function(_add_host_variant_link_flags target)
399
399
endif ()
400
400
endfunction ()
401
401
402
- # Add a single variant of a new Swift library.
402
+ # Add a new Swift host library.
403
403
#
404
404
# Usage:
405
- # _add_swift_host_library_single(
406
- # target
405
+ # add_swift_host_library(name
407
406
# [SHARED]
408
407
# [STATIC]
409
408
# [LLVM_LINK_COMPONENTS comp1 ...]
410
409
# source1 [source2 source3 ...])
411
410
#
412
- # target
411
+ # name
413
412
# Name of the library (e.g., swiftParse).
414
413
#
415
414
# SHARED
@@ -422,223 +421,142 @@ endfunction()
422
421
# LLVM components this library depends on.
423
422
#
424
423
# 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 )
427
426
set (options
428
427
SHARED
429
428
STATIC )
430
429
set (single_parameter_options )
431
430
set (multiple_parameter_options
432
431
LLVM_LINK_COMPONENTS )
433
432
434
- cmake_parse_arguments (ASHLS
433
+ cmake_parse_arguments (ASHL
435
434
"${options} "
436
435
"${single_parameter_options} "
437
436
"${multiple_parameter_options} "
438
437
${ARGN} )
439
- set (ASHLS_SOURCES ${ASHLS_UNPARSED_ARGUMENTS } )
438
+ set (ASHL_SOURCES ${ASHL_UNPARSED_ARGUMENTS } )
440
439
441
- translate_flags (ASHLS "${options} " )
440
+ translate_flags (ASHL "${options} " )
442
441
443
- if (NOT ASHLS_SHARED AND NOT ASHLS_STATIC )
442
+ if (NOT ASHL_SHARED AND NOT ASHL_STATIC )
444
443
message (FATAL_ERROR "Either SHARED or STATIC must be specified" )
445
444
endif ()
446
445
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
-
456
446
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
460
450
${SWIFT_SOURCE_DIR} /include/swift${dir}/*.h
461
451
${SWIFT_SOURCE_DIR} /include/swift${dir}/*.def
462
452
${CMAKE_CURRENT_SOURCE_DIR} /*.def )
463
-
464
- file (GLOB_RECURSE ASHLS_TDS
453
+ file (GLOB_RECURSE ASHL_TDS
465
454
${SWIFT_SOURCE_DIR} /include/swift${dir}/*.td )
466
455
467
- set_source_files_properties (${ASHLS_HEADERS} ${ASHLS_TDS}
468
- PROPERTIES
456
+ set_source_files_properties (${ASHL_HEADERS} ${ASHL_TDS} PROPERTIES
469
457
HEADER_FILE_ONLY true )
470
- source_group ("TableGen descriptions" FILES ${ASHLS_TDS } )
458
+ source_group ("TableGen descriptions" FILES ${ASHL_TDS } )
471
459
472
- set (ASHLS_SOURCES ${ASHLS_SOURCES } ${ASHLS_HEADERS } ${ASHLS_TDS } )
460
+ set (ASHL_SOURCES ${ASHL_SOURCES } ${ASHL_HEADERS } ${ASHL_TDS } )
473
461
endif ()
474
462
475
- if (ASHLS_SHARED )
463
+ if (ASHL_SHARED )
476
464
set (libkind SHARED )
477
- elseif (ASHLS_STATIC )
465
+ elseif (ASHL_STATIC )
478
466
set (libkind STATIC )
479
467
endif ()
480
468
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}
500
474
BINARY_DIR ${SWIFT_RUNTIME_OUTPUT_INTDIR}
501
475
LIBRARY_DIR ${SWIFT_LIBRARY_OUTPUT_INTDIR} )
502
476
503
477
if (SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_APPLE_PLATFORMS )
504
- set_target_properties (" ${target} "
478
+ set_target_properties (${name}
505
479
PROPERTIES
506
480
INSTALL_NAME_DIR "@rpath" )
507
481
elseif (SWIFT_HOST_VARIANT_SDK STREQUAL LINUX )
508
- set_target_properties (" ${target} "
482
+ set_target_properties (${name}
509
483
PROPERTIES
510
484
INSTALL_RPATH "$ORIGIN:/usr/lib/swift/linux" )
511
485
elseif (SWIFT_HOST_VARIANT_SDK STREQUAL CYGWIN )
512
- set_target_properties (" ${target} "
486
+ set_target_properties (${name}
513
487
PROPERTIES
514
488
INSTALL_RPATH "$ORIGIN:/usr/lib/swift/cygwin" )
515
489
elseif (SWIFT_HOST_VARIANT_SDK STREQUAL "ANDROID" )
516
- set_target_properties (" ${target} "
490
+ set_target_properties (${name}
517
491
PROPERTIES
518
492
INSTALL_RPATH "$ORIGIN" )
519
493
endif ()
520
494
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" )
526
498
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} " )
538
502
539
503
# Set compilation and link flags.
540
504
if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS )
541
505
swift_windows_include_for_arch (${SWIFT_HOST_VARIANT_ARCH}
542
506
${SWIFT_HOST_VARIANT_ARCH} _INCLUDE )
543
- target_include_directories (${target } SYSTEM PRIVATE
507
+ target_include_directories (${name } SYSTEM PRIVATE
544
508
${${SWIFT_HOST_VARIANT_ARCH}_INCLUDE} )
545
509
510
+ if (libkind STREQUAL SHARED )
511
+ target_compile_definitions (${name} PRIVATE
512
+ _WINDLL )
513
+ endif ()
514
+
546
515
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 } " )
550
519
551
520
# MSVC doesn't support -Xclang. We don't need to manually specify
552
521
# the dependent libraries as `cl` does so.
553
- target_compile_options (${target } PRIVATE
522
+ target_compile_options (${name } PRIVATE
554
523
"SHELL:-Xclang --dependent-lib=oldnames"
555
524
# TODO(compnerd) handle /MT, /MTd
556
525
"SHELL:-Xclang --dependent-lib=msvcrt$<$<CONFIG:Debug>:d>" )
557
526
endif ()
527
+
528
+ set_target_properties (${name} PROPERTIES
529
+ CXX_STANDARD 14
530
+ NO_SONAME YES )
558
531
endif ()
559
532
560
533
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 ()
567
534
# Include LLVM Bitcode slices for iOS, Watch OS, and Apple TV OS device libraries.
568
535
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" )
583
549
endif ()
584
550
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} )
627
551
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 ()
632
558
endif ()
633
559
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
-
642
560
add_dependencies (dev ${name} )
643
561
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY )
644
562
swift_install_in_component (TARGETS ${name}
0 commit comments