@@ -1319,12 +1319,66 @@ endfunction()
13191319#
13201320# Usage:
13211321# add_swift_host_library(name
1322- # [FORCE_BUILD_OPTIMIZED]
1323- # [...]
1322+ # [SHARED]
1323+ # [STATIC]
1324+ # [DEPENDS dep1 ...]
1325+ # [LINK_LIBRARIES dep1 ...]
1326+ # [INTERFACE_LINK_LIBRARIES dep1 ...]
1327+ # [SWIFT_MODULE_DEPENDS dep1 ...]
1328+ # [LLVM_COMPONENT_DEPENDS comp1 ...]
1329+ # [FILE_DEPENDS target1 ...]
1330+ # [C_COMPILE_FLAGS flag1...]
1331+ # [LINK_FLAGS flag1...]
1332+ # [INSTALL]
1333+ # INSTALL_IN_COMPONENT comp
1334+ # source1 [source2 source3 ...])
1335+ #
1336+ # name
1337+ # Name of the library (e.g., swiftParse).
1338+ #
1339+ # SHARED
1340+ # Build a shared library.
1341+ #
1342+ # STATIC
1343+ # Build a static library.
1344+ #
1345+ # DEPENDS
1346+ # Targets that this library depends on.
1347+ #
1348+ # LINK_LIBRARIES
1349+ # Libraries this library depends on.
1350+ #
1351+ # LLVM_COMPONENT_DEPENDS
1352+ # LLVM components this library depends on.
1353+ #
1354+ # FILE_DEPENDS
1355+ # Additional files this library depends on.
1356+ #
1357+ # C_COMPILE_FLAGS
1358+ # Extra compiler flags (C, C++, ObjC).
1359+ #
1360+ # LINK_FLAGS
1361+ # Extra linker flags.
1362+ #
1363+ # INSTALL_IN_COMPONENT comp
1364+ # The Swift installation component that this library belongs to.
1365+ #
1366+ # source1 ...
1367+ # Sources to add into this library.
13241368function (add_swift_host_library name )
1325- set (options FORCE_BUILD_OPTIMIZED)
1369+ set (options
1370+ FORCE_BUILD_OPTIMIZED
1371+ SHARED
1372+ STATIC )
13261373 set (single_parameter_options)
1327- set (multiple_parameter_options GYB_SOURCES)
1374+ set (multiple_parameter_options
1375+ C_COMPILE_FLAGS
1376+ DEPENDS
1377+ FILE_DEPENDS
1378+ INTERFACE_LINK_LIBRARIES
1379+ LINK_FLAGS
1380+ LINK_LIBRARIES
1381+ LLVM_COMPONENT_DEPENDS)
13281382
13291383 cmake_parse_arguments (ASHL
13301384 "${options} "
@@ -1333,13 +1387,29 @@ function(add_swift_host_library name)
13331387 ${ARGN} )
13341388 set (ASHL_SOURCES ${ASHL_UNPARSED_ARGUMENTS} )
13351389
1336- handle_gyb_sources(gyb_generated_targets ASHL_GYB_SOURCES
1337- ${SWIFT_HOST_VARIANT_ARCH} )
1338- llvm_add_library(${name} ${ASHL_GYB_SOURCES} ${ASHL_UNPARSED_ARGUMENTS}
1339- DEPENDS ${gyb_generated_targets} )
1340- if (ASHL_FORCE_BUILD_OPTIMIZED)
1341- target_compile_options (${name} PRIVATE "-O2" )
1342- endif ()
1390+ translate_flags(ASHL "${options} " )
1391+
1392+ if (NOT ASHL_SHARED AND NOT ASHL_STATIC)
1393+ message (FATAL_ERROR "Either SHARED or STATIC must be specified" )
1394+ endif ()
1395+
1396+ _add_swift_library_single(
1397+ ${name}
1398+ ${name}
1399+ ${ASHL_SHARED_keyword}
1400+ ${ASHL_STATIC_keyword}
1401+ ${ASHL_SOURCES}
1402+ SDK ${SWIFT_HOST_VARIANT_SDK}
1403+ ARCHITECTURE ${SWIFT_HOST_VARIANT_ARCH}
1404+ DEPENDS ${ASHL_DEPENDS}
1405+ LINK_LIBRARIES ${ASHL_LINK_LIBRARIES}
1406+ LLVM_COMPONENT_DEPENDS ${ASHL_LLVM_COMPONENT_DEPENDS}
1407+ FILE_DEPENDS ${ASHL_FILE_DEPENDS}
1408+ C_COMPILE_FLAGS ${ASHL_C_COMPILE_FLAGS}
1409+ LINK_FLAGS ${ASHL_LINK_FLAGS}
1410+ INTERFACE_LINK_LIBRARIES ${ASHL_INTERFACE_LINK_LIBRARIES}
1411+ INSTALL_IN_COMPONENT "dev"
1412+ )
13431413
13441414 swift_install_in_component(dev
13451415 TARGETS ${name}
0 commit comments