diff --git a/CMakeLists.txt b/CMakeLists.txt index 4538e4675d457..b6733cc25b567 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,9 +29,6 @@ ENABLE_LANGUAGE(C) include(SwiftUtils) include(CheckSymbolExists) -# WebAssembly: hack: use llvm-ar for creating static libraries; Ubuntu's GNU ar doesn't work with wasm-ld -set(CMAKE_AR "${SWIFT_WASM_WASI_SDK_PATH}/bin/llvm-ar") - # # User-configurable options that control the inclusion and default build # behavior for components which may not strictly be necessary (tools, examples, @@ -814,6 +811,11 @@ if(swift_build_wasm AND NOT "${SWIFT_HOST_VARIANT_SDK}" STREQUAL "WASM") # message(FATAL_ERROR "A Darwin or Linux host is required to build the Swift runtime for Android") #endif() + if (NOT ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Darwin")) + # WebAssembly: hack: use llvm-ar for creating static libraries; Ubuntu's GNU ar doesn't work with wasm-ld + set(CMAKE_AR "${SWIFT_WASM_WASI_SDK_PATH}/bin/llvm-ar") + endif() + if("${SWIFT_SDK_WASM_ARCHITECTURES}" STREQUAL "") set(SWIFT_SDK_WASM_ARCHITECTURES wasm32) endif() diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4f706adb0f3bc..4c3de4283a247 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -41,8 +41,11 @@ jobs: sourcedir="$PWD" cd swift utils/update-checkout --clone --scheme wasm + git checkout $BUILD_SOURCEBRANCHNAME || git checkout $SYSTEM_PULLREQUEST_SOURCEBRANCH utils/build-script --release --wasm \ --llvm-targets-to-build "X86;WebAssembly" \ + --build-swift-dynamic-sdk-overlay false \ + --build-swift-static-sdk-overlay false \ --wasm-wasi-sdk "/opt/wasi-sdk" \ --wasm-icu-uc "todo" \ --wasm-icu-uc-include "$sourcedir/icu_out/include" \ @@ -61,14 +64,7 @@ jobs: - task: PublishBuildArtifacts@1 inputs: pathtoPublish: $(Build.ArtifactStagingDirectory) - artifactName: swiftwasm-sdk - - task: GitHubRelease@0 - inputs: - gitHubConnection: swiftwasm-release - tagSource: manual - tag: $(Build.BuildNumber) - assets: | - $(Build.ArtifactStagingDirectory)/* + artifactName: swiftwasm-sdk-linux - job: macOS timeoutInMinutes: 0 @@ -92,8 +88,13 @@ jobs: - checkout: self path: swift-source/swift - script: | - wget -O wasisdk.deb "https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk_3.19gefb17cb478f9.m_amd64.deb" - sudo dpkg -i wasisdk.deb + wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz + tar xfz wasi-sdk.tar.gz + mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk + # Link sysroot/usr/include to sysroot/include because Darwin sysroot doesn't + # find header files in sysroot/include but sysroot/usr/include + mkdir wasi-sdk/share/sysroot/usr/ + ln -s ../include wasi-sdk/share/sysroot/usr/include wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz" tar xf icu.tar.xz workingDirectory: $(Pipeline.Workspace)/swift-source @@ -102,11 +103,14 @@ jobs: sourcedir="$PWD" cd swift utils/update-checkout --clone --scheme wasm + git checkout $BUILD_SOURCEBRANCHNAME || git checkout $SYSTEM_PULLREQUEST_SOURCEBRANCH utils/build-script --release --wasm \ + --verbose \ + --skip-build-benchmarks \ + --build-swift-dynamic-sdk-overlay false \ + --build-swift-static-sdk-overlay false \ --llvm-targets-to-build "X86;WebAssembly" \ - --stdlib-deployment-targets "macosx-x86_64" \ - --extra-cmake-options="-DSWIFT_WASM_WASI_SDK_PATH=/usr/local/opt/llvm" \ - --wasm-wasi-sdk "/opt/wasi-sdk" \ + --wasm-wasi-sdk "$sourcedir/wasi-sdk" \ --wasm-icu-uc "todo" \ --wasm-icu-uc-include "$sourcedir/icu_out/include" \ --wasm-icu-i18n "todo" \ @@ -125,11 +129,20 @@ jobs: - task: PublishBuildArtifacts@1 inputs: pathtoPublish: $(Build.ArtifactStagingDirectory) - artifactName: swiftwasm-sdk + artifactName: swiftwasm-sdk-macos +- job: UploadArtifacts + dependsOn: + - Ubuntu + - macOS + steps: + - task: DownloadBuildArtifacts@0 + inputs: + downloadType: 'specific' + itemPattern: '**' + downloadPath: $(Build.ArtifactStagingDirectory) - task: GitHubRelease@0 inputs: gitHubConnection: swiftwasm-release tagSource: manual tag: $(Build.BuildNumber) - assets: | - $(Build.ArtifactStagingDirectory)/* + assets: $(Build.ArtifactStagingDirectory)/* diff --git a/cmake/modules/FindICU.cmake b/cmake/modules/FindICU.cmake index 1b5c53a22b5b1..8c9c1c2b55249 100644 --- a/cmake/modules/FindICU.cmake +++ b/cmake/modules/FindICU.cmake @@ -24,7 +24,7 @@ foreach(MODULE ${ICU_FIND_COMPONENTS}) HINTS ${PC_ICU_${MODULE}_LIBRARY_DIRS}) endforeach() -foreach(sdk ANDROID;FREEBSD;LINUX;WINDOWS;HAIKU) +foreach(sdk ANDROID;FREEBSD;LINUX;WINDOWS;HAIKU;WASM) foreach(MODULE ${ICU_FIND_COMPONENTS}) string(TOUPPER "${MODULE}" MODULE) if("${SWIFT_${sdk}_${SWIFT_HOST_VARIANT_ARCH}_ICU_${MODULE}_INCLUDE}" STREQUAL "") diff --git a/fakeld b/fakeld index 1df157004de91..152fba307e4e0 100755 --- a/fakeld +++ b/fakeld @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python import sys def outputname(): for i in range(len(sys.argv)): diff --git a/lib/Driver/CMakeLists.txt b/lib/Driver/CMakeLists.txt index fe06fa38591c7..27654b876fac1 100644 --- a/lib/Driver/CMakeLists.txt +++ b/lib/Driver/CMakeLists.txt @@ -37,7 +37,7 @@ if(SWIFT_BUILD_STATIC_STDLIB) set(ICU_STATICLIB "TRUE") else() set(ICU_STATICLIB "FALSE") - find_package(ICU REQUIRED COMPONENTS uc i18n) + #find_package(ICU REQUIRED COMPONENTS uc i18n) get_filename_component(ICU_UC_LIBDIR "${ICU_UC_LIBRARIES}" DIRECTORY) get_filename_component(ICU_I18N_LIBDIR "${ICU_I18N_LIBRARIES}" DIRECTORY) endif() diff --git a/stdlib/CMakeLists.txt b/stdlib/CMakeLists.txt index d05618c94c5e7..4c2daa3d95cf4 100644 --- a/stdlib/CMakeLists.txt +++ b/stdlib/CMakeLists.txt @@ -5,6 +5,7 @@ list(APPEND CMAKE_MODULE_PATH include(AddSwiftStdlib) +set(CMAKE_OSX_SYSROOT "${SWIFT_WASM_WASI_SDK_PATH}") # Create convenience targets for the Swift standard library. # NOTE(compnerd) save the original compiler for the host swiftReflection that diff --git a/stdlib/public/Darwin/CMakeLists.txt b/stdlib/public/Darwin/CMakeLists.txt index b9db521f0a5f7..e608e4ac4d977 100644 --- a/stdlib/public/Darwin/CMakeLists.txt +++ b/stdlib/public/Darwin/CMakeLists.txt @@ -1,5 +1,6 @@ # All libraries in this directory tree are overlays that depend on Darwin SDK. +set(CMAKE_OSX_SYSROOT "/Applications/Xcode-11.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk") set(SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES) if(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY) list(APPEND SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES SHARED) diff --git a/utils/swift_build_support/swift_build_support/targets.py b/utils/swift_build_support/swift_build_support/targets.py index 130e1a5f6c7bc..d142754ebe1bb 100644 --- a/utils/swift_build_support/swift_build_support/targets.py +++ b/utils/swift_build_support/swift_build_support/targets.py @@ -228,10 +228,6 @@ def host_target(): if machine == 'x86_64': return StdlibDeploymentTarget.Haiku.x86_64 - elif system == 'Wasm': - if machine == 'wasm32': - return StdlibDeploymentTarget.Wasm.wasm32 - raise NotImplementedError('System "%s" with architecture "%s" is not ' 'supported' % (system, machine))