diff options
| -rw-r--r-- | .gitmodules | 3 | ||||
| -rwxr-xr-x | .travis/linux/docker.sh | 10 | ||||
| -rwxr-xr-x | .travis/macos/build.sh | 2 | ||||
| -rwxr-xr-x | .travis/macos/deps.sh | 6 | ||||
| -rw-r--r-- | CMakeLists.txt | 25 | ||||
| -rw-r--r-- | appveyor.yml | 20 | ||||
| m--------- | externals/unicorn | 0 | ||||
| -rw-r--r-- | src/core/arm/unicorn/arm_unicorn.cpp | 2 | 
8 files changed, 41 insertions, 27 deletions
diff --git a/.gitmodules b/.gitmodules index 07479dd78..d5a7ade4f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@  [submodule "lz4"]      path = externals/lz4      url = http://github.com/lz4/lz4.git +[submodule "unicorn"] +    path = externals/unicorn +    url = https://github.com/yuzu-emu/unicorn diff --git a/.travis/linux/docker.sh b/.travis/linux/docker.sh index a85225c5a..8a23b54b1 100755 --- a/.travis/linux/docker.sh +++ b/.travis/linux/docker.sh @@ -1,22 +1,16 @@  #!/bin/bash -ex  apt-get update -apt-get install -y build-essential git libcurl4-openssl-dev libqt5opengl5-dev libsdl2-dev libssl-dev python qtbase5-dev wget +apt-get install -y build-essential git libqt5opengl5-dev libsdl2-dev libssl-dev python qtbase5-dev wget  # Get a recent version of CMake  wget https://cmake.org/files/v3.10/cmake-3.10.1-Linux-x86_64.sh  sh cmake-3.10.1-Linux-x86_64.sh --exclude-subdir --prefix=/ --skip-license -mkdir /unicorn -cd /unicorn -git clone https://github.com/yuzu-emu/unicorn . -UNICORN_ARCHS=aarch64 ./make.sh -./make.sh install -  cd /yuzu  mkdir build && cd build -cmake .. -DUSE_SYSTEM_CURL=ON -DCMAKE_BUILD_TYPE=Release +cmake .. -DYUZU_BUILD_UNICORN=ON -DCMAKE_BUILD_TYPE=Release  make -j4  ctest -VV -C Release diff --git a/.travis/macos/build.sh b/.travis/macos/build.sh index e1c54af55..177e8ac3b 100755 --- a/.travis/macos/build.sh +++ b/.travis/macos/build.sh @@ -8,7 +8,7 @@ export UNICORNDIR=$(pwd)/externals/unicorn  mkdir build && cd build  cmake --version -cmake .. -DUSE_SYSTEM_CURL=ON -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h" -DCMAKE_BUILD_TYPE=Release +cmake .. -DYUZU_BUILD_UNICORN=ON -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h" -DCMAKE_BUILD_TYPE=Release  make -j4  ctest -VV -C Release diff --git a/.travis/macos/deps.sh b/.travis/macos/deps.sh index 7dea80438..b46482bbe 100755 --- a/.travis/macos/deps.sh +++ b/.travis/macos/deps.sh @@ -2,9 +2,3 @@  brew update  brew install dylibbundler p7zip qt5 sdl2 - -mkdir externals/unicorn -pushd externals/unicorn -git clone https://github.com/yuzu-emu/unicorn . -UNICORN_ARCHS=aarch64 ./make.sh macos-universal-no -popd diff --git a/CMakeLists.txt b/CMakeLists.txt index 3da8465b9..f1a4d0152 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -224,6 +224,31 @@ if (YUZU_USE_BUNDLED_UNICORN)      set(LIBUNICORN_INCLUDE_DIR "${UNICORN_PREFIX}/include" CACHE PATH "Path to Unicorn headers")      set(LIBUNICORN_LIBRARY "${UNICORN_PREFIX}/lib/x64/unicorn_dynload.lib" CACHE PATH "Path to Unicorn library")      set(UNICORN_DLL_DIR "${UNICORN_PREFIX}/lib/x64/" CACHE PATH "Path to unicorn.dll") +elseif (YUZU_BUILD_UNICORN) +    if (MSVC) +        message(FATAL_ERROR "Cannot build unicorn on msvc. Use YUZU_USE_BUNDLED_UNICORN instead") +    elseif (MINGW) +        set(UNICORN_LIB_NAME "unicorn.a") +    else() +        set(UNICORN_LIB_NAME "libunicorn.a") +    endif() + +    set(UNICORN_FOUND YES) +    set(UNICORN_PREFIX ${CMAKE_SOURCE_DIR}/externals/unicorn) +    set(LIBUNICORN_LIBRARY "${UNICORN_PREFIX}/${UNICORN_LIB_NAME}" CACHE PATH "Path to Unicorn library") +    set(LIBUNICORN_INCLUDE_DIR "${UNICORN_PREFIX}/include" CACHE PATH "Path to Unicorn headers") +    set(UNICORN_DLL_DIR "${UNICORN_PREFIX}/" CACHE PATH "Path to unicorn dynamic library") + +    add_custom_command(OUTPUT ${LIBUNICORN_LIBRARY} +        COMMAND ${CMAKE_COMMAND} -E env UNICORN_ARCHS="aarch64" /bin/sh make.sh +        WORKING_DIRECTORY ${UNICORN_PREFIX} +    ) +    # ALL makes this custom target build every time +    # but it won't actually build if LIBUNICORN_LIBRARY exists +    add_custom_target(unicorn-build ALL +        DEPENDS ${LIBUNICORN_LIBRARY} +    ) +    unset(UNICORN_LIB_NAME)  else()      find_package(Unicorn REQUIRED)  endif() diff --git a/appveyor.yml b/appveyor.yml index f491e5f0b..9d2aa156b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -28,7 +28,6 @@ install:          if ($env:BUILD_TYPE -eq 'mingw') {            $dependencies = "mingw64/mingw-w64-x86_64-cmake",                            "mingw64/mingw-w64-x86_64-qt5", -                          "mingw64/mingw-w64-x86_64-curl",                            "mingw64/mingw-w64-x86_64-SDL2"            # redirect err to null to prevent warnings from becoming errors            # workaround to prevent pacman from failing due to cyclical dependencies @@ -42,9 +41,9 @@ before_build:    - ps: |          if ($env:BUILD_TYPE -eq 'msvc') {            # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning -          cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_BUNDLED_UNICORN=1 -DCMAKE_USE_OPENSSL=0 .. 2>&1 && exit 0' +          cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_BUNDLED_UNICORN=1 .. 2>&1 && exit 0'          } else { -          C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DYUZU_USE_BUNDLED_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" +          C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DYUZU_BUILD_UNICORN=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1"          }    - cd .. @@ -81,11 +80,12 @@ after_build:            $env:BUILD_SYMBOLS = $MSVC_BUILD_PDB            $env:BUILD_UPDATE = $MSVC_SEVENZIP -          7z a -tzip $MSVC_BUILD_PDB .\msvc_build\bin\release\*.pdb -          rm .\msvc_build\bin\release\*.pdb +          mkdir pdb +          Get-ChildItem ".\msvc_build\bin\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb +          7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb            mkdir $RELEASE_DIST -          Copy-Item .\msvc_build\bin\release\* -Destination $RELEASE_DIST -Recurse +          Get-ChildItem ".\msvc_build\bin\" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST            Copy-Item .\license.txt -Destination $RELEASE_DIST            Copy-Item .\README.md -Destination $RELEASE_DIST            7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* @@ -104,16 +104,14 @@ after_build:            $env:BUILD_UPDATE = $MINGW_SEVENZIP            $CMAKE_SOURCE_DIR = "$env:APPVEYOR_BUILD_FOLDER" -          $CMAKE_BINARY_DIR = "$CMAKE_SOURCE_DIR/mingw_build" +          $CMAKE_BINARY_DIR = "$CMAKE_SOURCE_DIR/mingw_build/bin"            $RELEASE_DIST = $RELEASE_DIST + "-mingw"            mkdir $RELEASE_DIST            mkdir $RELEASE_DIST/platforms            # copy the compiled binaries and other release files to the release folder -          Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST -          # copy the libcurl dll -          Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "libcurl.dll" | Copy-Item -destination $RELEASE_DIST +          Get-ChildItem "$CMAKE_BINARY_DIR" -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST            Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST            Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST            # copy all the dll dependencies to the release folder @@ -122,7 +120,7 @@ after_build:                         # QT dll dependencies                         "libbz2-*.dll","libicudt*.dll","libicuin*.dll","libicuuc*.dll","libffi-*.dll",                         "libfreetype-*.dll","libglib-*.dll","libgobject-*.dll","libgraphite2.dll","libiconv-*.dll", -                       "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre16-*.dll","libpng16-*.dll", +                       "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre2-16-*.dll","libpcre16-*.dll","libpng16-*.dll",                         # Runtime/Other dependencies                         "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll"            foreach ($file in $MingwDLLs) { diff --git a/externals/unicorn b/externals/unicorn new file mode 160000 +Subproject 73f45735354396766a4bfb26d0b96b06e5cf31b diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp index 13f6c658c..0cd519ea3 100644 --- a/src/core/arm/unicorn/arm_unicorn.cpp +++ b/src/core/arm/unicorn/arm_unicorn.cpp @@ -11,7 +11,7 @@  #include "core/hle/kernel/svc.h"  // Load Unicorn DLL once on Windows using RAII -#ifdef _WIN32 +#ifdef MSVC  #include <unicorn_dynload.h>  struct LoadDll {  private:  | 
