diff --git a/CMakeLists.txt b/CMakeLists.txt index 12b618f38..ae2691ccc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,12 +10,6 @@ option(BUILD_SHARED_LIBS "Build shared libraries by default" YES) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - -set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift) - include(CTest) include(GNUInstallDirs) diff --git a/Sources/ArgumentParser/CMakeLists.txt b/Sources/ArgumentParser/CMakeLists.txt index ea7d83f93..697ad8c3b 100644 --- a/Sources/ArgumentParser/CMakeLists.txt +++ b/Sources/ArgumentParser/CMakeLists.txt @@ -54,11 +54,9 @@ add_library(ArgumentParser Validators/ParsableArgumentsValidation.swift Validators/PositionalArgumentsValidator.swift Validators/UniqueNamesValidator.swift) -# NOTE: workaround for CMake not setting up include flags yet -set_target_properties(ArgumentParser PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) + target_compile_options(ArgumentParser PRIVATE - $<$:-enable-testing>) + $<$:-enable-testing> -enable-library-evolution) target_link_libraries(ArgumentParser PRIVATE ArgumentParserToolInfo) if(Foundation_FOUND) diff --git a/Sources/ArgumentParser/Parsing/CommandParser.swift b/Sources/ArgumentParser/Parsing/CommandParser.swift index e4b42f440..2b1957bec 100644 --- a/Sources/ArgumentParser/Parsing/CommandParser.swift +++ b/Sources/ArgumentParser/Parsing/CommandParser.swift @@ -345,6 +345,9 @@ struct AutodetectedGenerateCompletions: ParsableCommand { @Flag() var generateCompletionScript = false } +func swiftBug72841Unwrap(_ x: T) -> T { x } +func swiftBug72841Unwrap(_ x: T?) -> T { x! } + extension CommandParser { func checkForCompletionScriptRequest(_ split: inout SplitArguments) throws { // Pseudo-commands don't support `--generate-completion-script` flag @@ -363,14 +366,14 @@ extension CommandParser { throw CommandError( commandStack: commandStack, parserError: .completionScriptRequested( - shell: result.generateCompletionScript)) + shell: swiftBug72841Unwrap(result).generateCompletionScript)) } // Check for for `--generate-completion-script` without a value var autodetectedParser = CommandParser(AutodetectedGenerateCompletions.self) if let result = try? autodetectedParser.parseCurrent(&split) as? AutodetectedGenerateCompletions, - result.generateCompletionScript + swiftBug72841Unwrap(result).generateCompletionScript { throw CommandError( commandStack: commandStack, diff --git a/Sources/ArgumentParserTestHelpers/CMakeLists.txt b/Sources/ArgumentParserTestHelpers/CMakeLists.txt index 2af1eb833..bc3170200 100644 --- a/Sources/ArgumentParserTestHelpers/CMakeLists.txt +++ b/Sources/ArgumentParserTestHelpers/CMakeLists.txt @@ -1,8 +1,6 @@ add_library(ArgumentParserTestHelpers StringHelpers.swift TestHelpers.swift) -set_target_properties(ArgumentParserTestHelpers PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) target_link_libraries(ArgumentParserTestHelpers PUBLIC ArgumentParser ArgumentParserToolInfo) diff --git a/Sources/ArgumentParserToolInfo/CMakeLists.txt b/Sources/ArgumentParserToolInfo/CMakeLists.txt index b82adb71d..cd707e531 100644 --- a/Sources/ArgumentParserToolInfo/CMakeLists.txt +++ b/Sources/ArgumentParserToolInfo/CMakeLists.txt @@ -1,8 +1,5 @@ add_library(ArgumentParserToolInfo STATIC ToolInfo.swift) -# NOTE: workaround for CMake not setting up include flags yet -set_target_properties(ArgumentParserToolInfo PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) target_compile_options(ArgumentParserToolInfo PRIVATE $<$:-enable-testing>)