diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index 1ce4eabb..784784b4 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -27,6 +27,13 @@ jobs: runTests: false clapValidate: false + - name: "windows arm64ec" + os: windows-latest + target: shortcircuit-products + cmakeConfig: -G"Visual Studio 17 2022" -A arm64ec -DCMAKE_SYSTEM_VERSION=10 + runTests: false + clapValidate: false + - name: "mac AU" os: macos-latest target: scxt_clapfirst_AU diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index dd6b5aac..059e3b23 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -12,15 +12,21 @@ defaults: jobs: build_plugin: - name: Release Build - ${{ matrix.os }} + name: Release Build ${{matrix.name }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: windows-latest + name: windows-x86 cmakeArgs: -GNinja -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang + - os: windows-latest + name: windows-arm64ec + cmakeArgs: -G"Visual Studio 17 2022" -A arm64ec -DCMAKE_SYSTEM_VERSION=10 + - os: macos-latest + name: macos cmakeArgs: -GNinja -D"CMAKE_OSX_ARCHITECTURES=arm64;x86_64" steps: - name: Checkout code @@ -61,7 +67,7 @@ jobs: uses: actions/upload-artifact@v4 with: path: build/installer - name: build-${{ matrix.os }} + name: build-${{ matrix.name }} build_plugin_docker: name: Docker Build Ubuntu20 ${{ matrix.name }} diff --git a/CMakeLists.txt b/CMakeLists.txt index f4f21b8b..adddaa6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # TODO Remove This before we ship non beta version. Remember # the AU rescans only when versions change even if binaries are # different. -message(STATUS "Using date-driven version while in alpha") +message(STATUS "ShortcircuitXT: Using date-driven version while in alpha") string(TIMESTAMP DAY_OF_YEAR "%j") string(TIMESTAMP YEAR "%Y") math(EXPR PART0 "${YEAR}-2023 + 6") @@ -62,8 +62,14 @@ option(SCXT_USE_JACK "Build with JACK when appropriate" ON) option(SCXT_COPY_PLUGIN_AFTER_BUILD "Copy plugin after build if possible" OFF) option(SCXT_SKIP_PIE_CHANGE "Dont add -no-pie to executables" OFF) -option(SCXT_USE_FLAC "Include FLAC support" ON) -option(SCXT_USE_MP3 "Include MP3 support" ON) +if ("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64ec") + message(STATUS "Default skipping FLAC and MP3 on arm64ec for now") + option(SCXT_USE_FLAC "Include FLAC support" OFF) + option(SCXT_USE_MP3 "Include MP3 support" OFF) +else() + option(SCXT_USE_FLAC "Include FLAC support" ON) + option(SCXT_USE_MP3 "Include MP3 support" ON) +endif() option(SCXT_SANITIZE "Build with clang/gcc address and undef sanitizer" OFF) if (WIN32) @@ -81,6 +87,9 @@ endif () # Share some information about the build message(STATUS "Shortcircuit XT ${CMAKE_PROJECT_VERSION}") message(STATUS "Compiler Version is ${CMAKE_CXX_COMPILER_VERSION}") +if (MSVC) + message(STATUS "Windows Architecture is ${CMAKE_GENERATOR_PLATFORM}") +endif() # Everything here is C++ 17 now if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND UNIX AND NOT APPLE AND NOT SCXT_SKIP_PIE_CHANGE) diff --git a/cmake/basic-installer.cmake b/cmake/basic-installer.cmake index 8a63784a..fcd467e9 100644 --- a/cmake/basic-installer.cmake +++ b/cmake/basic-installer.cmake @@ -131,12 +131,15 @@ endif () string(TIMESTAMP SCXT_DATE "%Y-%m-%d") if (WIN32) - set(SCXT_ZIP ShortcircuitXT-${SCXT_DATE}-${VERSION_CHUNK}-${CMAKE_SYSTEM_NAME}-${BITS}bit.zip) + if ("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64ec") + set(SCXT_ZIP ShortcircuitXT-${SCXT_DATE}-${VERSION_CHUNK}-${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}.zip) + else() + set(SCXT_ZIP ShortcircuitXT-${SCXT_DATE}-${VERSION_CHUNK}-${CMAKE_SYSTEM_NAME}-${BITS}bit.zip) + endif() else () set(SCXT_ZIP ShortcircuitXT-${SCXT_EXTRA_INSTALLER_NAME}${SCXT_DATE}-${VERSION_CHUNK}-${CMAKE_SYSTEM_NAME}.zip) - message(STATUS "Installer ZIP is ${SCXT_ZIP}") endif () - +message(STATUS "Installer ZIP is ${SCXT_ZIP}") if (APPLE) message(STATUS "Configuring for Mac installer.") @@ -158,13 +161,17 @@ elseif (WIN32) COMMAND ${CMAKE_COMMAND} -E echo "ZIP Installer in: installer/${SCXT_ZIP}") find_program(SHORTCIRCUIT_NUGET_EXE nuget.exe PATHS ENV "PATH") if(SHORTCIRCUIT_NUGET_EXE) - message(STATUS "NuGet found at ${SHORTCIRCUIT_NUGET_EXE}") - add_custom_command( - TARGET shortcircuit-installer - POST_BUILD - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMAND ${SHORTCIRCUIT_NUGET_EXE} install Tools.InnoSetup -version 6.2.1 - COMMAND Tools.InnoSetup.6.2.1/tools/iscc.exe /O"installer" /DSCXT_SRC="${CMAKE_SOURCE_DIR}" /DSCXT_BIN="${CMAKE_BINARY_DIR}" /DMyAppVersion="${SCXT_DATE}-${VERSION_CHUNK}" "${CMAKE_SOURCE_DIR}/resources/installer_win/scxt${BITS}.iss") + if ("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64ec") + message(STATUS "Zip only for now on arm64ec") + else() + message(STATUS "NuGet found at ${SHORTCIRCUIT_NUGET_EXE}") + add_custom_command( + TARGET shortcircuit-installer + POST_BUILD + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${SHORTCIRCUIT_NUGET_EXE} install Tools.InnoSetup -version 6.2.1 + COMMAND Tools.InnoSetup.6.2.1/tools/iscc.exe /O"installer" /DSCXT_SRC="${CMAKE_SOURCE_DIR}" /DSCXT_BIN="${CMAKE_BINARY_DIR}" /DMyAppVersion="${SCXT_DATE}-${VERSION_CHUNK}" "${CMAKE_SOURCE_DIR}/resources/installer_win/scxt${BITS}.iss") + endif() else() message(STATUS "NuGet not found!") endif() diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index f8c68ce4..7a52491f 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -27,6 +27,9 @@ add_subdirectory(fmt) # Modify this basedon the outcome of https://github.com/taocpp/PEGTL/issues/347 set(PEGTL_NO_STD_FILESYSTEM ON CACHE BOOL "Skip PEGTL FileSystem") add_subdirectory(taocpp_json) +if ("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64ec") + target_compile_definitions(taocpp-json INTERFACE -DRYU_ONLY_64_BIT_OPS) +endif() add_subdirectory(sqlite3-3.42.0) add_subdirectory(xiph) diff --git a/libs/simde b/libs/simde index 2fdc9a5e..71fd833d 160000 --- a/libs/simde +++ b/libs/simde @@ -1 +1 @@ -Subproject commit 2fdc9a5e5f078cb11107bdd5c79b6a5fa6d8bf43 +Subproject commit 71fd833d9666141edcd1d3c109a80e228303d8d7 diff --git a/libs/xiph/CMakeLists.txt b/libs/xiph/CMakeLists.txt index fea85018..b06d5bf5 100644 --- a/libs/xiph/CMakeLists.txt +++ b/libs/xiph/CMakeLists.txt @@ -14,5 +14,6 @@ if (${SCXT_USE_FLAC}) add_subdirectory(flac) target_compile_definitions(FLAC++ PUBLIC SCXT_USE_FLAC=1) else () - add_target(FLAC++ INTERFACE) + add_library(FLAC INTERFACE) + add_library(FLAC++ INTERFACE) endif () \ No newline at end of file diff --git a/libs/xiph/flac b/libs/xiph/flac index 9ee21a0e..28e4f052 160000 --- a/libs/xiph/flac +++ b/libs/xiph/flac @@ -1 +1 @@ -Subproject commit 9ee21a0e68de3fd1a59cf5f420220155245576ca +Subproject commit 28e4f0528c76b296c561e922ba67d43751990599 diff --git a/src-ui/app/edit-screen/components/GroupTriggersCard.cpp b/src-ui/app/edit-screen/components/GroupTriggersCard.cpp index 2ef05502..c5f79e6c 100644 --- a/src-ui/app/edit-screen/components/GroupTriggersCard.cpp +++ b/src-ui/app/edit-screen/components/GroupTriggersCard.cpp @@ -180,7 +180,8 @@ struct GroupTriggersCard::ConditionRow : juce::Component, HasEditor p.addSeparator(); auto mkv = [this](auto v) { - return [w = juce::Component::SafePointer(this), v]() { + auto that = this; // darn you MSVC + return [w = juce::Component::SafePointer(that), v]() { if (!w) return; w->parent->cond.storage[w->index].id = (engine::GroupTriggerID)v; diff --git a/src/dsp/generator.cpp b/src/dsp/generator.cpp index c47d13ef..3e79e462 100644 --- a/src/dsp/generator.cpp +++ b/src/dsp/generator.cpp @@ -436,7 +436,7 @@ void KernelOp::Process( // int16 // SSE2 path __m128i lipol0, tmp, sL8A, sR8A, tmp2, sL8B, sR8B; - __m128 fL, fR; + __m128 fL = _mm_setzero_ps(), fR = _mm_setzero_ps(); lipol0 = _mm_set1_epi16(ks.SampleSubPos & 0xffff); tmp = _mm_add_epi16(_mm_mulhi_epi16(*((__m128i *)&sincTable.SincOffsetI16[m0]), lipol0), diff --git a/src/engine/group_and_zone_impl.h b/src/engine/group_and_zone_impl.h index a12893d7..1918cbda 100644 --- a/src/engine/group_and_zone_impl.h +++ b/src/engine/group_and_zone_impl.h @@ -228,7 +228,7 @@ bool HasGroupZoneProcessors::checkOrAdjustBoolConsistency(int whichProcessor) if (pd.supportsKeytrack) { auto &ps = asT()->processorStorage[whichProcessor]; - if (ps.previousIsKeytracked < 0 || ps.isKeytracked != ps.previousIsKeytracked) + if (ps.previousIsKeytracked < 0 || ((int)ps.isKeytracked) != ps.previousIsKeytracked) { ps.previousIsKeytracked = ps.isKeytracked ? 1 : 0; asT()->setupProcessorControlDescriptions(whichProcessor, ps.type, nullptr, true); diff --git a/src/infrastructure/sse_include.h b/src/infrastructure/sse_include.h index 189a6d35..e08cf2d9 100644 --- a/src/infrastructure/sse_include.h +++ b/src/infrastructure/sse_include.h @@ -28,9 +28,11 @@ #ifndef SCXT_SRC_INFRASTRUCTURE_SSE_INCLUDE_H #define SCXT_SRC_INFRASTRUCTURE_SSE_INCLUDE_H -#if defined(__aarch64__) +#if defined(__aarch64__) || defined(_M_ARM64) #define SIMDE_ENABLE_NATIVE_ALIASES #include "simde/x86/sse4.2.h" +#elif defined(_M_ARM64EC) +#include #else #include #include diff --git a/src/messaging/messaging.h b/src/messaging/messaging.h index a39b83ff..2b237818 100644 --- a/src/messaging/messaging.h +++ b/src/messaging/messaging.h @@ -394,7 +394,7 @@ struct MessageController : MoveableOnly std::unique_ptr serializationThread; int64_t localCopyOfEngineProcessRuns{engineProcessRuns}; - int64_t localCopyOfIsAudioRunning{isAudioRunning}; + bool localCopyOfIsAudioRunning{isAudioRunning}; static constexpr int32_t engineOffCountdownInit{4}; int32_t engineOffCountdown{engineOffCountdownInit}; };