This commit is contained in:
Rosalie Wanders
2020-09-20 20:37:48 +02:00
parent 116da39c62
commit 754bc58a5b
7 changed files with 75 additions and 49 deletions
+5 -1
View File
@@ -10,7 +10,7 @@ set(CMAKE_INSTALL_PREFIX "")
find_package(Git REQUIRED)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_VERSION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -23,6 +23,10 @@ install(TARGETS RMG
if (WIN32)
add_subdirectory(Source/Installer)
add_custom_target(bundle_dependencies
COMMAND "${CMAKE_SOURCE_DIR}/Source/Script/BundleDependencies.sh" "${CMAKE_SOURCE_DIR}/Bin/${CMAKE_BUILD_TYPE}/rmg/RMG.exe" "${CMAKE_SOURCE_DIR}/Bin/${CMAKE_BUILD_TYPE}/rmg" "/mingw64/bin"
)
endif()
add_subdirectory(Source/3rdParty)
+8 -2
View File
@@ -88,11 +88,17 @@ ExternalProject_Add(mupen64plus-input-raphnetraw
)
set(GLIDEN64_BUILD_DIR "${THIRDPARTY_DIR}/mupen64plus-video-GLideN64/projects/cmake")
if (MSYS)
set(GLIDEN64_LIB "${GLIDEN64_BUILD_DIR}/mupen64plus-video-GLideN64.${SO_EXT}")
else()
set(GLIDEN64_LIB "${GLIDEN64_BUILD_DIR}/plugin/${CMAKE_BUILD_TYPE}/mupen64plus-video-GLideN64.${SO_EXT}")
endif()
ExternalProject_Add(mupen64plus-video-GLideN64
SOURCE_DIR mupen64plus-video-GLideN64
GIT_REPOSITORY https://github.com/gonetz/GLideN64
GIT_TAG 229a6bc788fe4601fbe00288fcccdedb9396340f
GIT_TAG 1f5f9874d947bf5d10b9ef0e4f80cc6b4fa10d0d
INSTALL_COMMAND ""
@@ -102,7 +108,7 @@ ExternalProject_Add(mupen64plus-video-GLideN64
SOURCE_SUBDIR ./src/
BINARY_DIR ${GLIDEN64_BUILD_DIR}
BUILD_BYPRODUCTS ${GLIDEN64_BUILD_DIR}/plugin/${CMAKE_BUILD_TYPE}/mupen64plus-video-GLideN64.${SO_EXT}
BUILD_BYPRODUCTS ${GLIDEN64_LIB}
BUILD_BYPRODUCTS ${THIRDPARTY_DIR}/mupen64plus-video-GLideN64/ini/GLideN64.custom.ini
)
+1 -5
View File
@@ -1,8 +1,4 @@
#
# InnoSetup Installer CMakeLists.txt
#
add_custom_target(create_installer
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Creating InnoSetup Installer"
COMMAND ISCC.exe .\\RMG.iss /DMyAppDir="${CMAKE_SOURCE_DIR}\\Bin\\${CMAKE_BUILD_TYPE}\\rmg" /DMyAppVer="${GIT_VERSION}" /DMyOutDir="${CMAKE_SOURCE_DIR}\\Bin" /DMySrcDir="${CMAKE_SOURCE_DIR}"
)
configure_file(create_installer.bat.in create_installer.bat)
+1 -40
View File
@@ -47,46 +47,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "{#MyAppDir}\RMG.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Config\stylesheet.qss"; DestDir: "{app}\Config"; Flags: ignoreversion
Source: "{#MyAppDir}\Core\*"; DestDir: "{app}\Core"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\Data\*"; DestDir: "{app}\Data"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\iconengines\*"; DestDir: "{app}\iconengines"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\imageformats\*"; DestDir: "{app}\imageformats"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\platforms\*"; DestDir: "{app}\platforms"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\Plugin\*"; DestDir: "{app}\Plugin"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\styles\*"; DestDir: "{app}\styles"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\translations\*"; DestDir: "{app}\translations"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\libbrotlicommon.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libbrotlidec.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libbz2-1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libdouble-conversion.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libfreetype-6.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libgcc_s_seh-1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libglib-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libgraphite2.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libharfbuzz-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libhidapi-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libiconv-2.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libicudt67.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libicuin67.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libicuuc67.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libintl-8.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libminizip-1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libpcre-1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libpcre2-16-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libpng16-16.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libsamplerate-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libspeexdsp-1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libstdc++-6.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libwinpthread-1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\libzstd.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Qt5Gui.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Qt5Svg.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Qt5Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\SDL2.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
+6
View File
@@ -0,0 +1,6 @@
ISCC.exe ^
".\Source\Installer\RMG.iss" ^
"/DMyAppDir=..\..\Bin\${CMAKE_BUILD_TYPE}\rmg" ^
"/DMyAppVer=${GIT_VERSION}" ^
"/DMyOutDir=..\..\Bin" ^
"/DMySrcDir=..\..\"
+12 -1
View File
@@ -6,14 +6,25 @@ toplvl_dir="$(realpath "$script_dir/../../")"
build_dir="$toplvl_dir/Build"
build_config="${1:-Debug}"
install_dir="$toplvl_dir/Bin/$build_config"
generator="${2:-Unix Makefiles}"
mkdir -p "$build_dir"
pushd "$build_dir"
cmake -S "$toplvl_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="$build_config"
if [[ $(uname -s) = *MINGW64* ]]
then
generator="MSYS Makefiles"
fi
cmake -S "$toplvl_dir" -B "$build_dir" -DCMAKE_BUILD_TYPE="$build_config" -G "$generator"
make -j6
make install DESTDIR="$install_dir"
if [[ $(uname -s) = *MINGW64* ]]
then
make bundle_dependencies
fi
popd
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
#
# ./BundleDependencies.sh "./Bin/Release/rmg/RMG.exe" "./Bin/Release/rmg" "/mingw64/bin"
#
set -e
exe="$1"
bin_dir="$2"
path="$3"
function copyForOBJ() {
local deps=`objdump.exe -p $1 | grep 'DLL Name:' | sed -e "s/\t*DLL Name: //g"`
while read -r line
do
findAndCopyDLL $line
done <<< "$deps"
}
function findAndCopyDLL() {
local file="$path/$1"
if [ -f $file ] && [ ! -f "$bin_dir/$1" ]
then
cp "$file" "$bin_dir"
copyForOBJ $file
return 0
fi
return 0
}
for ext in dll exe
do
while read -r file_line
do
echo "=> Copying dependencies for $file_line"
copyForOBJ "$file_line"
done < <(find "$bin_dir" -name "*.$ext")
done
windeployqt "$exe"