From 8a4a644a6d85d601186b829d3770df681c5d48ac Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Thu, 22 May 2025 12:58:19 -0700 Subject: [PATCH 1/3] build: use library directories instead of library names `Foundation` was not being resolved to the target and instead would add `-lFoundation` to the linker invocation which is unnecessary due to the autolinking. Add the library search directory instead. --- Sources/TSCBasic/CMakeLists.txt | 4 ++-- Sources/TSCUtility/CMakeLists.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/TSCBasic/CMakeLists.txt b/Sources/TSCBasic/CMakeLists.txt index d8b85eaa..ffefc590 100644 --- a/Sources/TSCBasic/CMakeLists.txt +++ b/Sources/TSCBasic/CMakeLists.txt @@ -59,8 +59,8 @@ target_link_libraries(TSCBasic PRIVATE TSCLibc) if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) if(Foundation_FOUND) - target_link_libraries(TSCBasic PUBLIC - Foundation) + target_link_directories(TSCBasic PUBLIC + $) endif() endif() target_link_libraries(TSCBasic PRIVATE diff --git a/Sources/TSCUtility/CMakeLists.txt b/Sources/TSCUtility/CMakeLists.txt index 8e0a232e..d6ca83d7 100644 --- a/Sources/TSCUtility/CMakeLists.txt +++ b/Sources/TSCUtility/CMakeLists.txt @@ -54,8 +54,8 @@ if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) target_link_directories(TSCUtility PRIVATE /usr/local/lib) endif() if(Foundation_FOUND) - target_link_libraries(TSCUtility PUBLIC - FoundationNetworking) + target_link_directories(TSCUtility PUBLIC + $) endif() endif() # NOTE(compnerd) workaround for CMake not setting up include flags yet From 203e3a13af31c015c4f08aafc128aa9dd509f1ac Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Fri, 13 Jun 2025 15:55:44 -0700 Subject: [PATCH 2/3] build: make `Foundation` privately linked This allows building with or without a build tree which eases the toolchain builds. --- Sources/TSCBasic/CMakeLists.txt | 2 +- Sources/TSCUtility/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/TSCBasic/CMakeLists.txt b/Sources/TSCBasic/CMakeLists.txt index ffefc590..d0c90550 100644 --- a/Sources/TSCBasic/CMakeLists.txt +++ b/Sources/TSCBasic/CMakeLists.txt @@ -59,7 +59,7 @@ target_link_libraries(TSCBasic PRIVATE TSCLibc) if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) if(Foundation_FOUND) - target_link_directories(TSCBasic PUBLIC + target_link_directories(TSCBasic PRIVATE $) endif() endif() diff --git a/Sources/TSCUtility/CMakeLists.txt b/Sources/TSCUtility/CMakeLists.txt index d6ca83d7..109eb738 100644 --- a/Sources/TSCUtility/CMakeLists.txt +++ b/Sources/TSCUtility/CMakeLists.txt @@ -54,7 +54,7 @@ if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) target_link_directories(TSCUtility PRIVATE /usr/local/lib) endif() if(Foundation_FOUND) - target_link_directories(TSCUtility PUBLIC + target_link_directories(TSCUtility PRIVATE $) endif() endif() From 4cc024d1a0e926c792eac66257e776e8a08c9786 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Fri, 13 Jun 2025 15:57:12 -0700 Subject: [PATCH 3/3] build: add `TSCTestSupport` This is not a required library, but add it to the build to support use in SPM testing. Although the library is built, we do not install it as it does not need to be distributed. --- CMakeLists.txt | 1 + Sources/CMakeLists.txt | 1 + Sources/TSCTestSupport/CMakeLists.txt | 32 +++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 Sources/TSCTestSupport/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 98acf968..47ff68f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ option(BUILD_SHARED_LIBS "Build shared libraries by default" YES) find_package(dispatch QUIET) find_package(Foundation QUIET) find_package(Threads QUIET) +find_package(XCTest QUIET) add_subdirectory(Sources) add_subdirectory(cmake/modules) diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt index 18c8abd5..07b0d4d5 100644 --- a/Sources/CMakeLists.txt +++ b/Sources/CMakeLists.txt @@ -2,3 +2,4 @@ add_subdirectory(TSCclibc) add_subdirectory(TSCLibc) add_subdirectory(TSCBasic) add_subdirectory(TSCUtility) +add_subdirectory(TSCTestSupport) diff --git a/Sources/TSCTestSupport/CMakeLists.txt b/Sources/TSCTestSupport/CMakeLists.txt new file mode 100644 index 00000000..9244472e --- /dev/null +++ b/Sources/TSCTestSupport/CMakeLists.txt @@ -0,0 +1,32 @@ +# This source file is part of the Swift.org open source project +# +# Copyright (c) 2014 - 2019 Apple Inc. and the Swift project authors +# Licensed under Apache License v2.0 with Runtime Library Exception +# +# See http://swift.org/LICENSE.txt for license information +# See http://swift.org/CONTRIBUTORS.txt for Swift project authors + +add_library(TSCTestSupport + AssertMatch.swift + DiagnosticsEngine.swift + FileSystemExtensions.swift + JSONExtensions.swift + misc.swift + Product.swift + PseudoTerminal.swift + XCTAssertHelpers.swift + XCTestCasePerf.swift) +target_link_libraries(TSCTestSupport PUBLIC + TSCBasic + TSCLibc + TSCUtility) +if(NOT APPLE) + if(Foundation_FOUND) + target_link_libraries(TSCTestSupport PRIVATE + Foundation) + endif() + if(XCTest_FOUND) + target_link_libraries(TSCTestSupport PRIVATE + XCTest) + endif() +endif()