From 9d8f60ed7cf6bd7b2b303746682ebb08c17b7956 Mon Sep 17 00:00:00 2001 From: Jens Alfke Date: Fri, 14 Jun 2024 09:33:20 -0700 Subject: [PATCH] Got tests to run w/emscripten! (3 failures) CppTests: test cases: 499 | 496 passed | 3 failed assertions: 682799 | 682794 passed | 5 failed failed tests: >>> Query Functions >>> RealClockSource >>> Continuous Fast Push C4Tests: All tests passed (791941 assertions in 155 test cases) --- C/tests/CMakeLists.txt | 16 ++- C/tests/c4PerfTest.cc | 2 + C/tests/cmake/platform_emscripten.cmake | 10 +- CMakeLists.txt | 116 +++++++++--------- LiteCore/Storage/UnicodeCollator_JS.cc | 1 + LiteCore/Support/ThreadUtil.cc | 8 +- LiteCore/tests/CMakeLists.txt | 32 +++-- LiteCore/tests/DataFileTest.cc | 6 +- LiteCore/tests/LiteCoreTest.hh | 2 +- .../tests/cmake/platform_emscripten.cmake | 7 +- .../BLIP/cmake/platform_emscripten.cmake | 4 +- Replicator/tests/CookieStoreTest.cc | 1 + Xcode/LiteCore.xcodeproj/project.pbxproj | 17 ++- build_cmake/scripts/build_wasm_EE.sh | 19 +++ cmake/platform_emscripten.cmake | 12 +- cmake/platform_unix.cmake | 14 ++- 16 files changed, 179 insertions(+), 88 deletions(-) create mode 100755 build_cmake/scripts/build_wasm_EE.sh diff --git a/C/tests/CMakeLists.txt b/C/tests/CMakeLists.txt index 08c409764..e6953fad9 100644 --- a/C/tests/CMakeLists.txt +++ b/C/tests/CMakeLists.txt @@ -60,11 +60,25 @@ add_executable( c4CertificateTest.cc ${TOP}LiteCore/tests/main.cpp - ${TOP}Crypto/SecureRandomize.cc ${TOP}LiteCore/Support/TestsCommon.cc ${TOP}vendor/fleece/ObjC/slice+CoreFoundation.cc ) +if (NOT EMSCRIPTEN) + # These files contain internal functionality that isn't exported from the LiteCore shared lib. + # But C4Tests use these, so we have to compile them into its binary. + # This doesn't apply to Emscripten, bc WASM doesn't have shared libs; all linking is static. + target_sources( + C4Tests PRIVATE + ${TOP}Crypto/SecureRandomize.cc + ${TOP}LiteCore/Support/Error.cc + ${TOP}LiteCore/Support/FilePath.cc + ${TOP}LiteCore/Support/LogDecoder.cc + ${TOP}LiteCore/Support/Logging_Stub.cc + ${TOP}LiteCore/Support/StringUtil.cc + ) +endif() + get_directory_property(this_targets DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} BUILDSYSTEM_TARGETS) set(LITECORE_TARGETS ${LITECORE_TARGETS} ${this_targets} PARENT_SCOPE) setup_build() diff --git a/C/tests/c4PerfTest.cc b/C/tests/c4PerfTest.cc index 05124436c..d1d519475 100644 --- a/C/tests/c4PerfTest.cc +++ b/C/tests/c4PerfTest.cc @@ -175,6 +175,8 @@ class PerfTest : public C4Test { input += "_helium_macos"; #elif defined(__linux__) input += "_helium_linux"; +#elif defined(__EMSCRIPTEN__) + input += "_helium_emscripten"; #else # error "Unknown platform" #endif diff --git a/C/tests/cmake/platform_emscripten.cmake b/C/tests/cmake/platform_emscripten.cmake index 4d28c1bfe..cdf303ba4 100644 --- a/C/tests/cmake/platform_emscripten.cmake +++ b/C/tests/cmake/platform_emscripten.cmake @@ -1,14 +1,17 @@ function(setup_build) target_sources( C4Tests PRIVATE - ${TOP}Crypto/mbedUtils.cc ${TOP}LiteCore/Unix/strlcat.c ) target_link_libraries( C4Tests PRIVATE - mbedcrypto - mbedx509 + ) + + target_compile_options( + C4Tests PRIVATE + "-pthread" + "-fwasm-exceptions" ) target_link_options( @@ -19,7 +22,6 @@ function(setup_build) "SHELL:-s EXIT_RUNTIME=1" "SHELL:-s PTHREAD_POOL_SIZE=24" "SHELL:-s ALLOW_MEMORY_GROWTH=1" - "SHELL:-s DEMANGLE_SUPPORT=1" "SHELL:-s WASM_BIGINT=1" "-lnodefs.js" "-lnoderawfs.js" diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ef61e1ce..7f3d0540e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,7 +127,14 @@ if(BUILD_ENTERPRISE) ) endif() -if(MSVC) +if(EMSCRIPTEN) + # Emscripten does not actually support shared libraries and instead + # just builds a static library for compatibility with existing + # build setups. We just set this property to suppress a CMake warning. + set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) + + include("${PROJECT_SOURCE_DIR}/cmake/platform_emscripten.cmake") +elseif(MSVC) add_definitions(-DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0A00) if(WINDOWS_STORE) message(FATAL_ERROR "UWP no longer supported") @@ -141,13 +148,6 @@ elseif(ANDROID) elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") option(LITECORE_DYNAMIC_ICU "If enabled, search for ICU at runtime so as not to depend on a specific version" OFF) include("${PROJECT_SOURCE_DIR}/cmake/platform_linux_desktop.cmake") -elseif(EMSCRIPTEN) - # Emscripten does not actually support shared libraries and instead - # just builds a static library for compatibility with existing - # build setups. We just set this property to suppress a CMake warning. - set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) - - include("${PROJECT_SOURCE_DIR}/cmake/platform_emscripten.cmake") else() message(FATAL_ERROR "Unable to determine a supported platform from ${CMAKE_SYSTEM_NAME}") endif(MSVC) @@ -340,60 +340,62 @@ install(FILES ${FLEECE_HEADERS} DESTINATION include/fleece) ### Support Libraries (Add functionality, but add nothing to official API) -add_subdirectory(REST EXCLUDE_FROM_ALL) - -set( - LC_WEBSOCKET_SRC - Networking/HTTP/HTTPTypes.cc - Networking/HTTP/HTTPLogic.cc - Networking/NetworkInterfaces.cc - Networking/Poller.cc - Networking/TCPSocket.cc - Networking/TLSContext.cc - Networking/WebSockets/BuiltInWebSocket.cc - vendor/sockpp/src/acceptor.cpp - vendor/sockpp/src/connector.cpp - vendor/sockpp/src/datagram_socket.cpp - vendor/sockpp/src/exception.cpp - vendor/sockpp/src/inet_address.cpp - vendor/sockpp/src/inet6_address.cpp - vendor/sockpp/src/mbedtls_context.cpp - vendor/sockpp/src/socket.cpp - vendor/sockpp/src/stream_socket.cpp -) +if (NOT EMSCRIPTEN) + add_subdirectory(REST EXCLUDE_FROM_ALL) -add_library(LiteCoreWebSocket STATIC EXCLUDE_FROM_ALL ${LC_WEBSOCKET_SRC}) -target_include_directories( - LiteCoreWebSocket PRIVATE - C - C/include - C/Cpp_include - Crypto - LiteCore/Support - Networking - Networking/BLIP/ - Networking/HTTP - Networking/WebSockets - Replicator - REST - vendor/fleece/Fleece/Support - vendor/fleece/API - vendor/sockpp/include - vendor/mbedtls/include - vendor/mbedtls/crypto/include -) + set( + LC_WEBSOCKET_SRC + Networking/HTTP/HTTPTypes.cc + Networking/HTTP/HTTPLogic.cc + Networking/NetworkInterfaces.cc + Networking/Poller.cc + Networking/TCPSocket.cc + Networking/TLSContext.cc + Networking/WebSockets/BuiltInWebSocket.cc + vendor/sockpp/src/acceptor.cpp + vendor/sockpp/src/connector.cpp + vendor/sockpp/src/datagram_socket.cpp + vendor/sockpp/src/exception.cpp + vendor/sockpp/src/inet_address.cpp + vendor/sockpp/src/inet6_address.cpp + vendor/sockpp/src/mbedtls_context.cpp + vendor/sockpp/src/socket.cpp + vendor/sockpp/src/stream_socket.cpp + ) -target_link_libraries( - LiteCoreWebSocket PUBLIC - LiteCoreObjects -) + add_library(LiteCoreWebSocket STATIC EXCLUDE_FROM_ALL ${LC_WEBSOCKET_SRC}) + target_include_directories( + LiteCoreWebSocket PRIVATE + C + C/include + C/Cpp_include + Crypto + LiteCore/Support + Networking + Networking/BLIP/ + Networking/HTTP + Networking/WebSockets + Replicator + REST + vendor/fleece/Fleece/Support + vendor/fleece/API + vendor/sockpp/include + vendor/mbedtls/include + vendor/mbedtls/crypto/include + ) -if(LITECORE_PERF_TESTING_MODE) - target_compile_definitions( + target_link_libraries( LiteCoreWebSocket PUBLIC - LITECORE_PERF_TESTING_MODE + LiteCoreObjects ) -endif() + + if(LITECORE_PERF_TESTING_MODE) + target_compile_definitions( + LiteCoreWebSocket PUBLIC + LITECORE_PERF_TESTING_MODE + ) + endif() +endif() # NOT EMSCRIPTEN ### TESTS: diff --git a/LiteCore/Storage/UnicodeCollator_JS.cc b/LiteCore/Storage/UnicodeCollator_JS.cc index e7c2a5929..87d817fc3 100644 --- a/LiteCore/Storage/UnicodeCollator_JS.cc +++ b/LiteCore/Storage/UnicodeCollator_JS.cc @@ -23,6 +23,7 @@ namespace litecore { using namespace std; using namespace emscripten; + using namespace fleece; class JSCollationContext : public CollationContext { public: diff --git a/LiteCore/Support/ThreadUtil.cc b/LiteCore/Support/ThreadUtil.cc index fdd206313..4809aabd7 100644 --- a/LiteCore/Support/ThreadUtil.cc +++ b/LiteCore/Support/ThreadUtil.cc @@ -33,11 +33,10 @@ # ifndef HAVE_PTHREAD_THREADID_NP # include # endif -# ifndef HAVE_PTHREAD_GETNAME_NP -# include -# endif # ifdef __EMSCRIPTEN__ # include +# elif !defined(HAVE_PTHREAD_GETNAME_NP) +# include # endif namespace litecore { @@ -55,10 +54,11 @@ namespace litecore { std::string GetThreadName() { std::string retVal; std::stringstream s; - char name[256]; # if defined(HAVE_PTHREAD_GETNAME_NP) + char name[256]; if ( pthread_getname_np(pthread_self(), name, 255) == 0 && name[0] != 0 ) { s << name << " "; } # elif defined(HAVE_PRCTL) + char name[256]; if ( prctl(PR_GET_NAME, name, 0, 0, 0) == 0 ) { s << name << " "; } # else s << " "; diff --git a/LiteCore/tests/CMakeLists.txt b/LiteCore/tests/CMakeLists.txt index 2cd2f61be..4ff8773da 100644 --- a/LiteCore/tests/CMakeLists.txt +++ b/LiteCore/tests/CMakeLists.txt @@ -71,9 +71,6 @@ add_executable( UpgraderTest.cc VectorQueryTest.cc VersionVectorTest.cc - ${TOP}REST/tests/RESTListenerTest.cc - ${TOP}REST/tests/RESTClientTest.cc - ${TOP}REST/tests/SyncListenerTest.cc ${TOP}vendor/fleece/Tests/API_ValueTests.cc ${TOP}vendor/fleece/Tests/DeltaTests.cc ${TOP}vendor/fleece/Tests/EncoderTests.cc @@ -89,13 +86,8 @@ add_executable( ${TOP}Replicator/tests/DBAccessTestWrapper.cc ${TOP}Replicator/tests/PropertyEncryptionTests.cc ${TOP}Replicator/tests/ReplicatorLoopbackTest.cc - ${TOP}Replicator/tests/ReplicatorAPITest.cc - ${TOP}Replicator/tests/ReplicatorSGTest.cc ${TOP}Replicator/tests/ReplicatorCollectionTest.cc - ${TOP}Replicator/tests/ReplicatorCollectionSGTest.cc - ${TOP}Replicator/tests/ReplicatorSG30Test.cc ${TOP}Replicator/tests/ReplicatorVVUpgradeTest.cc - ${TOP}Replicator/tests/SG.cc ${TOP}Replicator/tests/SGTestUser.cc ${TOP}Replicator/tests/ReplParams.cc ${TOP}C/tests/c4Test.cc @@ -105,6 +97,20 @@ add_executable( main.cpp ) +if (NOT EMSCRIPTEN) + target_sources( + CppTests PRIVATE + ${TOP}REST/tests/RESTListenerTest.cc + ${TOP}REST/tests/RESTClientTest.cc + ${TOP}REST/tests/SyncListenerTest.cc + ${TOP}Replicator/tests/ReplicatorAPITest.cc + ${TOP}Replicator/tests/ReplicatorSGTest.cc + ${TOP}Replicator/tests/ReplicatorCollectionSGTest.cc + ${TOP}Replicator/tests/ReplicatorSG30Test.cc + ${TOP}Replicator/tests/SG.cc + ) +endif() + get_directory_property(this_targets DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} BUILDSYSTEM_TARGETS) set(LITECORE_TARGETS ${LITECORE_TARGETS} ${this_targets} PARENT_SCOPE) setup_build() @@ -159,6 +165,12 @@ target_link_libraries( LiteCoreUnitTesting FleeceObjects BLIPObjects - LiteCoreREST_Static - LiteCoreWebSocket ) + +if (NOT EMSCRIPTEN) + target_link_libraries( + CppTests PRIVATE + LiteCoreREST_Static + LiteCoreWebSocket + ) +endif() diff --git a/LiteCore/tests/DataFileTest.cc b/LiteCore/tests/DataFileTest.cc index 684664cae..9c23961af 100644 --- a/LiteCore/tests/DataFileTest.cc +++ b/LiteCore/tests/DataFileTest.cc @@ -649,11 +649,13 @@ N_WAY_TEST_CASE_METHOD(DataFileTestFixture, "DataFile Compact", "[DataFile]") { TEST_CASE("CanonicalPath") { #ifdef __EMSCRIPTEN__ + // clang-format off auto isMacOs = (bool)EM_ASM_INT({ - if ( typeof require == = 'undefined' ) return false; + if ( typeof require === 'undefined' ) return false; const process = require('process'); - return process.platform == = 'darwin'; + return process.platform === 'darwin'; }); + // clang-format on #endif #ifdef _MSC_VER diff --git a/LiteCore/tests/LiteCoreTest.hh b/LiteCore/tests/LiteCoreTest.hh index 3df7faff8..7525c87ca 100644 --- a/LiteCore/tests/LiteCoreTest.hh +++ b/LiteCore/tests/LiteCoreTest.hh @@ -51,7 +51,7 @@ std::string stringWithFormat(const char* format, ...) __printflike(1, 2); */ template static std::string randomDigitString() { - static_assert(1 < numDigits <= 64); + static_assert(1 < numDigits && numDigits <= 64); static_assert(numDigits % 2 == 0); auto appendEightDigits = [](std::stringstream& sstr) { auto now = std::chrono::high_resolution_clock::now(); diff --git a/LiteCore/tests/cmake/platform_emscripten.cmake b/LiteCore/tests/cmake/platform_emscripten.cmake index 76d3c8634..247234663 100644 --- a/LiteCore/tests/cmake/platform_emscripten.cmake +++ b/LiteCore/tests/cmake/platform_emscripten.cmake @@ -5,6 +5,12 @@ function(setup_build) ${TOP}LiteCore/Unix ) + target_compile_options( + CppTests PRIVATE + "-pthread" + "-fwasm-exceptions" + ) + target_link_options( CppTests PRIVATE "-pthread" @@ -13,7 +19,6 @@ function(setup_build) "SHELL:-s EXIT_RUNTIME=1" "SHELL:-s PTHREAD_POOL_SIZE=24" "SHELL:-s ALLOW_MEMORY_GROWTH=1" - "SHELL:-s DEMANGLE_SUPPORT=1" "SHELL:-s WASM_BIGINT=1" "-lnodefs.js" "-lnoderawfs.js" diff --git a/Networking/BLIP/cmake/platform_emscripten.cmake b/Networking/BLIP/cmake/platform_emscripten.cmake index d95f73fad..0e17ba464 100644 --- a/Networking/BLIP/cmake/platform_emscripten.cmake +++ b/Networking/BLIP/cmake/platform_emscripten.cmake @@ -19,14 +19,14 @@ endfunction() function(setup_build) add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/../../vendor/zlib" "vendor/zlib") target_include_directories( - BLIPStatic PRIVATE + BLIPObjects PRIVATE "${CMAKE_CURRENT_LIST_DIR}/../../vendor/zlib" "${CMAKE_CURRENT_BINARY_DIR}/vendor/zlib" ${LITECORE_LOCATION}/LiteCore/Unix ) target_link_libraries( - BLIPStatic INTERFACE + BLIPObjects INTERFACE zlibstatic ) endfunction() diff --git a/Replicator/tests/CookieStoreTest.cc b/Replicator/tests/CookieStoreTest.cc index f5c06042c..b2739cba6 100644 --- a/Replicator/tests/CookieStoreTest.cc +++ b/Replicator/tests/CookieStoreTest.cc @@ -184,6 +184,7 @@ TEST_CASE("Cookie Parser Failure", "[cookies]") { "name=value; Max-Age=", }; for ( const auto& badCookie : badCookies ) { + ExpectingExceptions x; INFO("Checking " << badCookie); Cookie c(badCookie, "example.com", "/"); CHECK(!c); diff --git a/Xcode/LiteCore.xcodeproj/project.pbxproj b/Xcode/LiteCore.xcodeproj/project.pbxproj index 8ae6aaf99..e68aec404 100644 --- a/Xcode/LiteCore.xcodeproj/project.pbxproj +++ b/Xcode/LiteCore.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 70; objects = { /* Begin PBXAggregateTarget section */ @@ -1276,6 +1276,8 @@ 279D411A1EA5569D00D8DD9D /* REST-dylib.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "REST-dylib.xcconfig"; sourceTree = ""; }; 279D41291EA55B3D00D8DD9D /* REST-dylib_Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "REST-dylib_Release.xcconfig"; sourceTree = ""; }; 279DE3DD24788A030059AE4E /* c4_ee.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = c4_ee.txt; path = scripts/c4_ee.txt; sourceTree = ""; }; + 27A0B36D2C1BA5510053B941 /* UnicodeCollator_ICU.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UnicodeCollator_ICU.cc; sourceTree = ""; }; + 27A0B36E2C1BA5510053B941 /* UnicodeCollator_JS.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UnicodeCollator_JS.cc; sourceTree = ""; }; 27A16314201FC2A500C18D9C /* DataFile+Shared.hh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = "DataFile+Shared.hh"; sourceTree = ""; }; 27A657BE1CBC1A3D00A7A1D7 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; 27A83D53269E3E69002B7EBA /* PropertyEncryptionTests.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PropertyEncryptionTests.cc; sourceTree = ""; }; @@ -1714,6 +1716,13 @@ FCC064D6287E31D6000C5BD7 /* ReplicatorCollectionTest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ReplicatorCollectionTest.cc; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 27A0B36C2C1BA28A0053B941 /* cmake */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = cmake; sourceTree = ""; }; + 27A0B3732C1BA79D0053B941 /* cmake */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = cmake; sourceTree = ""; }; + 27A0B3782C1BA7CA0053B941 /* cmake */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = cmake; sourceTree = ""; }; + 27A0B3932C1BC29F0053B941 /* cmake */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); name = cmake; path = ../cmake; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 2708FE4B1CF4CC880022F721 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -1915,6 +1924,7 @@ 2708FE591CF4D0450022F721 /* LiteCoreTest.hh */, 274D040A1BA75E1C00FF7C35 /* main.cpp */, 2750735A1F4B5ECC003D2CCE /* CMakeLists.txt */, + 27A0B3732C1BA79D0053B941 /* cmake */, 2719253B23970F4E0053DDA6 /* replacedb */, ); name = "C++ Tests"; @@ -2103,6 +2113,7 @@ 2744B30C241854F2005A194D /* CMakeLists.txt */, 2744B317241854F2005A194D /* BLIPConnection.hh */, 2744B319241854F2005A194D /* BLIP.hh */, + 27A0B36C2C1BA28A0053B941 /* cmake */, 2744B31C241854F2005A194D /* MessageBuilder.hh */, 2744B31D241854F2005A194D /* LoopbackProvider.hh */, 2744B31E241854F2005A194D /* Message.hh */, @@ -2234,6 +2245,7 @@ 2783DF981D27436700F84E6E /* c4ThreadingTest.cc */, 2700BB612170117F00797537 /* EE */, 275073591F4B5E66003D2CCE /* CMakeLists.txt */, + 27A0B3782C1BA7CA0053B941 /* cmake */, 2719253323970C7F0053DDA6 /* data */, ); path = tests; @@ -2260,6 +2272,7 @@ children = ( 273AD3CF18F4B23A007D8C23 /* README.md */, 275073581F4B5E13003D2CCE /* CMakeLists.txt */, + 27A0B3932C1BC29F0053B941 /* cmake */, 2757DE551B9FC34E002EE261 /* API */, 2745B7CA26825F970012A17A /* docs */, 27E4871019217187007D8940 /* LiteCore */, @@ -2954,6 +2967,8 @@ 27ADA79A1F2BF64100D9DE25 /* UnicodeCollator.cc */, 27ADA7881F2AB6C800D9DE25 /* UnicodeCollator.hh */, 27ADA7871F2AB6C800D9DE25 /* UnicodeCollator_Apple.cc */, + 27A0B36D2C1BA5510053B941 /* UnicodeCollator_ICU.cc */, + 27A0B36E2C1BA5510053B941 /* UnicodeCollator_JS.cc */, 2763011A1F32A7FD004A1592 /* UnicodeCollator_Stub.cc */, 276301261F394407004A1592 /* UnicodeCollator_winapi.cc */, 2791EA1320326F7100BD813C /* SQLiteChooser.c */, diff --git a/build_cmake/scripts/build_wasm_EE.sh b/build_cmake/scripts/build_wasm_EE.sh new file mode 100755 index 000000000..564d85c56 --- /dev/null +++ b/build_cmake/scripts/build_wasm_EE.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Copyright 2020-Present Couchbase, Inc. +# +# Use of this software is governed by the Business Source License included in +# the file licenses/BSL-Couchbase.txt. As of the Change Date specified in that +# file, in accordance with the Business Source License, use of this software +# will be governed by the Apache License, Version 2.0, included in the file +# licenses/APL2.txt. + +set -e + +SCRIPT_DIR=`dirname $0` +cd $SCRIPT_DIR/.. +mkdir -p wasm_EE +cd wasm_EE + +emcmake cmake -DBUILD_ENTERPRISE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ../.. +emmake make -j diff --git a/cmake/platform_emscripten.cmake b/cmake/platform_emscripten.cmake index 6d23a20f6..b1d4d1e21 100644 --- a/cmake/platform_emscripten.cmake +++ b/cmake/platform_emscripten.cmake @@ -8,9 +8,6 @@ function(setup_globals) setup_globals_unix() set(EMSCRIPTEN_COMPILE_FLAGS "-pthread -fwasm-exceptions") - - set(LITECORE_C_FLAGS ${EMSCRIPTEN_COMPILE_FLAGS} CACHE INTERNAL "") - set(LITECORE_CXX_FLAGS ${EMSCRIPTEN_COMPILE_FLAGS} CACHE INTERNAL "") endfunction() function(set_litecore_source) @@ -38,6 +35,15 @@ function(setup_litecore_build) LiteCore/Unix ) + foreach(platform LiteCoreObjects LiteCoreUnitTesting BLIPObjects CouchbaseSqlite3 SQLite3_UnicodeSN) + target_compile_options( + ${platform} PRIVATE + #${EMSCRIPTEN_COMPILE_FLAGS} + "-pthread" + "-fwasm-exceptions" + ) + endforeach() + target_link_libraries( LiteCoreStatic INTERFACE zlibstatic diff --git a/cmake/platform_unix.cmake b/cmake/platform_unix.cmake index 6bcfc0e6a..9df1ac732 100644 --- a/cmake/platform_unix.cmake +++ b/cmake/platform_unix.cmake @@ -79,24 +79,34 @@ function(setup_litecore_build_unix) target_compile_options(${liteCoreVariant} PRIVATE ${LITECORE_WARNINGS} -Wformat=2 - -fstack-protector -D_FORTIFY_SOURCE=2 $<$:-Wno-psabi;-Wno-odr> $<$:${LITECORE_CXX_WARNINGS}> $<$:${LITECORE_C_WARNINGS}> ) + if (NOT EMSCRIPTEN) + target_compile_options(${liteCoreVariant} PRIVATE + -fstack-protector + ) + endif() endforeach() target_compile_options(BLIPObjects PRIVATE ${LITECORE_WARNINGS} -Wformat=2 - -fstack-protector -D_FORTIFY_SOURCE=2 $<$:-Wno-psabi;-Wno-odr> $<$:${LITECORE_CXX_WARNINGS}> $<$:${LITECORE_C_WARNINGS}> ) + if (NOT EMSCRIPTEN) + target_compile_options(BLIPObjects PRIVATE + -fstack-protector + ) + endif() + + set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h") check_type_size(socklen_t SOCKLEN_T) if(${HAVE_SOCKLEN_T})