mirror of
https://github.com/ModOrganizer2/modorganizer.git
synced 2026-07-27 13:58:24 -07:00
Compare commits
72
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7665d9dd61 | ||
|
|
12104ed988 | ||
|
|
87d0f2eeb6 | ||
|
|
455b5075f1 | ||
|
|
39210af3e5 | ||
|
|
3a8ea3ccce | ||
|
|
5d766e94a7 | ||
|
|
a823d2aa88 | ||
|
|
b531bbff39 | ||
|
|
3ef0db4cca | ||
|
|
15f3d2ba05 | ||
|
|
48f1f600de | ||
|
|
a41028fafc | ||
|
|
eddc30a47f | ||
|
|
52b37a760c | ||
|
|
bff386d277 | ||
|
|
d2832ec9c3 | ||
|
|
62ccbb1d02 | ||
|
|
6299be28e1 | ||
|
|
9049e65c5e | ||
|
|
f8340e1620 | ||
|
|
110014bf5e | ||
|
|
91912f5fef | ||
|
|
f42a9f1cef | ||
|
|
61ef16d08d | ||
|
|
c44ee31e9f | ||
|
|
08fc25d641 | ||
|
|
f305502c5d | ||
|
|
b6de58f2d3 | ||
|
|
75e24cd926 | ||
|
|
bafc058b7f | ||
|
|
71434efaa9 | ||
|
|
8f1dbe9f35 | ||
|
|
19fae10b2b | ||
|
|
7ed06a77c1 | ||
|
|
9c130cbf2f | ||
|
|
ea38fdc6ce | ||
|
|
89f39ef200 | ||
|
|
acd201157d | ||
|
|
f11925ab88 | ||
|
|
2395c13c25 | ||
|
|
cc92f6cf88 | ||
|
|
193442e773 | ||
|
|
a4f6298111 | ||
|
|
d3b647ab2b | ||
|
|
6d08d434a8 | ||
|
|
3d8bfdd1d4 | ||
|
|
fff03d34e2 | ||
|
|
88c386d74d | ||
|
|
c43535f5bc | ||
|
|
3d18f0cd38 | ||
|
|
a11617ff65 | ||
|
|
1871f32a8d | ||
|
|
fa82d1cca1 | ||
|
|
9ee4c5afe1 | ||
|
|
a1d199134d | ||
|
|
16423b2682 | ||
|
|
5adb1ec43d | ||
|
|
4472df8656 | ||
|
|
45c017de2f | ||
|
|
b350afee9e | ||
|
|
b3d27472cf | ||
|
|
e1932b34ea | ||
|
|
70a41a9b27 | ||
|
|
20aa98b511 | ||
|
|
783c05478f | ||
|
|
0315a88bd8 | ||
|
|
026fec4468 | ||
|
|
04eff9750f | ||
|
|
22714e5cdc | ||
|
|
8dd1637d1d | ||
|
|
2eade4c638 |
@@ -7,7 +7,7 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**This template is useful to add basic support using https://github.com/ModOrganizer2/modorganizer-basic_games.**
|
||||
**This template is useful to add basic support using https://github.com/ModOrganizer2/modorganizer-basic_games.**
|
||||
|
||||
**If you are vaguely familiar with programming you can try following the instructions on that link to get something working yourself. If you have trouble with that please fill in this template.**
|
||||
|
||||
|
||||
@@ -2,19 +2,32 @@ name: Build ModOrganizer 2
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: master
|
||||
branches: [master]
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
env:
|
||||
VCPKG_BINARY_SOURCES: clear;x-azblob,${{ vars.AZ_BLOB_VCPKG_URL }},${{ secrets.AZ_BLOB_SAS }},readwrite
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- name: Build ModOrganizer 2
|
||||
- name: Build ModOrganizer
|
||||
id: build-modorganizer
|
||||
uses: ModOrganizer2/build-with-mob-action@master
|
||||
with:
|
||||
qt-modules: qtpositioning qtwebchannel qtwebengine qtwebsockets
|
||||
mo2-third-parties:
|
||||
7z zlib fmt gtest libbsarch libloot openssl libffi bzip2 python lz4 spdlog
|
||||
boost boost-di sip pyqt pybind11 ss licenses explorerpp usvfs
|
||||
mo2-dependencies: cmake_common uibase githubpp bsatk esptk archive lootcli game_gamebryo
|
||||
mo2-dependencies: usvfs uibase bsatk esptk archive lootcli
|
||||
|
||||
- name: Install ModOrganizer
|
||||
shell: pwsh
|
||||
run: |
|
||||
cmake --install vsbuild --config RelWithDebInfo
|
||||
working-directory: ./build/${{ github.event.repository.name }}
|
||||
|
||||
- name: Package ModOrganizer
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: modorganizer
|
||||
path: ./install/bin
|
||||
|
||||
@@ -10,8 +10,8 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Run clang-format
|
||||
uses: jidicula/clang-format-action@v4.11.0
|
||||
- name: Check format
|
||||
uses: ModOrganizer2/check-formatting-action@master
|
||||
with:
|
||||
clang-format-version: "15"
|
||||
check-path: "."
|
||||
exclude-regex: "third-party"
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
syntax: glob
|
||||
scons_configure.py
|
||||
scons-ModOrganizer-*
|
||||
ModOrganizer-build-desktop*
|
||||
outputd/*
|
||||
output/*
|
||||
build-ModOrganizer-*
|
||||
source/NCC/*/bin
|
||||
source/NCC/*/obj
|
||||
source/NCC/bin
|
||||
*.orig
|
||||
source/plugins/proxyPython/build
|
||||
staging/*
|
||||
source - Copy/*
|
||||
ModOrganizer-build-*
|
||||
pdbs/*
|
||||
source/NCC/BossDummy.x/*
|
||||
*.ts
|
||||
staging_prepare/*
|
||||
staging_trans/*
|
||||
tools/python_zip/*
|
||||
Makefile
|
||||
html
|
||||
*.vcxproj
|
||||
*.pdb
|
||||
*.dll
|
||||
*.exp
|
||||
*.tlog
|
||||
*.user
|
||||
*.obj
|
||||
*.suo
|
||||
*.sln
|
||||
*.log
|
||||
*.filters
|
||||
*.lib
|
||||
source/organizer/resources/contents/icons
|
||||
source/plugins/build-*
|
||||
*/GeneratedFiles/*
|
||||
translations/*
|
||||
source/LocalPaths.pri
|
||||
source/*/Win32/Debug/*
|
||||
source/plugins/*/Win32/Debug/*
|
||||
*~
|
||||
syntax: regexp
|
||||
Makefile\.(Debug|Release)
|
||||
source/.*/debug/.*
|
||||
@@ -0,0 +1,20 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: check-merge-conflict
|
||||
- id: check-case-conflict
|
||||
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||
rev: v19.1.5
|
||||
hooks:
|
||||
- id: clang-format
|
||||
'types_or': [c++, c]
|
||||
|
||||
ci:
|
||||
autofix_commit_msg: "[pre-commit.ci] Auto fixes from pre-commit.com hooks."
|
||||
autofix_prs: true
|
||||
autoupdate_commit_msg: "[pre-commit.ci] Pre-commit autoupdate."
|
||||
autoupdate_schedule: quarterly
|
||||
submodules: false
|
||||
+17
-10
@@ -1,16 +1,23 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
# TODO: move these to cmake_common?
|
||||
set(OPENSSL_USE_STATIC_LIBS FALSE CACHE STRING "" FORCE)
|
||||
set(MySQL_INCLUDE_DIRS CACHE STRING "" FORCE)
|
||||
|
||||
if(DEFINED DEPENDENCIES_DIR)
|
||||
include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/mo2.cmake)
|
||||
else()
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../cmake_common/mo2.cmake)
|
||||
endif()
|
||||
# TODO: clean include directives
|
||||
set(MO2_CMAKE_DEPRECATED_UIBASE_INCLUDE ON)
|
||||
|
||||
project(organizer)
|
||||
|
||||
find_package(mo2-cmake CONFIG REQUIRED)
|
||||
|
||||
# if MO2_INSTALL_IS_BIN is set, this means that we should install directly into the
|
||||
# installation prefix, without the bin/ subfolder, typically for a standalone build
|
||||
# to update an existing install
|
||||
if (MO2_INSTALL_IS_BIN)
|
||||
set(_bin ".")
|
||||
else()
|
||||
set(_bin bin)
|
||||
endif()
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dump_running_process.bat DESTINATION bin)
|
||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT organizer)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dump_running_process.bat DESTINATION ${_bin})
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"configurePresets": [
|
||||
{
|
||||
"errors": {
|
||||
"deprecated": true
|
||||
},
|
||||
"hidden": true,
|
||||
"name": "cmake-dev",
|
||||
"warnings": {
|
||||
"deprecated": true,
|
||||
"dev": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"cacheVariables": {
|
||||
"VCPKG_MANIFEST_NO_DEFAULT_FEATURES": {
|
||||
"type": "BOOL",
|
||||
"value": "ON"
|
||||
}
|
||||
},
|
||||
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||
"hidden": true,
|
||||
"name": "vcpkg"
|
||||
},
|
||||
{
|
||||
"binaryDir": "${sourceDir}/vsbuild",
|
||||
"architecture": {
|
||||
"strategy": "set",
|
||||
"value": "x64"
|
||||
},
|
||||
"cacheVariables": {
|
||||
"CMAKE_CXX_FLAGS": "/EHsc /MP /W4",
|
||||
"VCPKG_TARGET_TRIPLET": {
|
||||
"type": "STRING",
|
||||
"value": "x64-windows-static-md"
|
||||
}
|
||||
},
|
||||
"generator": "Visual Studio 17 2022",
|
||||
"inherits": ["cmake-dev", "vcpkg"],
|
||||
"name": "vs2022-windows",
|
||||
"toolset": "v143"
|
||||
},
|
||||
{
|
||||
"cacheVariables": {
|
||||
"VCPKG_MANIFEST_FEATURES": {
|
||||
"type": "STRING",
|
||||
"value": "standalone"
|
||||
},
|
||||
"MO2_INSTALL_IS_BIN": {
|
||||
"type": "BOOL",
|
||||
"value": "ON"
|
||||
}
|
||||
},
|
||||
"inherits": "vs2022-windows",
|
||||
"name": "vs2022-windows-standalone"
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "vs2022-windows",
|
||||
"resolvePackageReferences": "on",
|
||||
"configurePreset": "vs2022-windows"
|
||||
},
|
||||
{
|
||||
"name": "vs2022-windows-standalone",
|
||||
"resolvePackageReferences": "on",
|
||||
"configurePreset": "vs2022-windows-standalone"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
-713
File diff suppressed because it is too large
Load Diff
@@ -1,77 +0,0 @@
|
||||
version: dev-appveyor{build}
|
||||
skip_branch_with_pr: true
|
||||
image: Visual Studio 2019
|
||||
init:
|
||||
- ps: >-
|
||||
# define build version depending on nightly or normal build
|
||||
|
||||
if($env:APPVEYOR_SCHEDULED_BUILD -eq 'True'){
|
||||
$timestamp= Get-Date -Format "ddMMyyyy-HHmm"
|
||||
Update-AppveyorBuild -Version "$($env:MO_VERSION)$($env:VER_STUB_NIGHTLY)$timestamp"
|
||||
} else {
|
||||
Update-AppveyorBuild -Version "$($env:MO_VERSION)$($env:VER_STUB_NORMAL)$($env:APPVEYOR_BUILD_NUMBER)"
|
||||
}
|
||||
|
||||
Write-Host Build version set to: $env:APPVEYOR_BUILD_VERSION
|
||||
environment:
|
||||
WEBHOOK_URL:
|
||||
secure: gOKbXaZM9ImtMD5XrYITvdyZUW/az082G9OIN1EC1VaKiI9iefpxhBavJ6Al6CzIZvQ+3pxnLqjmNgA7cDc22wcj2kB4hSG5qhbTI8wGa8jLQ5L65nuRZ3vrIqghBz9G3GLglgZkg6eqH9r3Kqc6UzcpCGzxxPOqm550nRcIiUU=
|
||||
MO_VERSION: 2.4.0
|
||||
VER_STUB_NORMAL: dev-appveyor-
|
||||
VER_STUB_NIGHTLY: dev-nightly-
|
||||
build_script:
|
||||
- pwsh: >-
|
||||
# Maintenance comments:
|
||||
|
||||
# APPVEYOR_BUILD_FOLDER= "c:\projects\modorganizer-slug"
|
||||
|
||||
# -Need to update py3 version used to invoke unimake.py once in a while.
|
||||
|
||||
# -Need update MO_VERSION env variable after each release.
|
||||
|
||||
# -Always clones umbrella master
|
||||
|
||||
# -Will checkout all the branches matching the one that triggered the build on the main repo.
|
||||
|
||||
# End comments.
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
git clone --depth=1 --no-single-branch https://github.com/ModOrganizer2/modorganizer-umbrella.git c:\projects\modorganizer-umbrella
|
||||
|
||||
New-Item -ItemType Directory -Path ${env:APPVEYOR_BUILD_FOLDER}\modorganizer-build
|
||||
|
||||
cd c:\projects\modorganizer-umbrella
|
||||
|
||||
($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH -eq $null) ? ($branch = $env:APPVEYOR_REPO_BRANCH) : ($branch = $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH)
|
||||
|
||||
git checkout $(git show-ref --verify --quiet refs/remotes/origin/${branch} || echo '-b') ${branch}
|
||||
|
||||
C:\Python38-x64\python.exe unimake.py -d ${env:APPVEYOR_BUILD_FOLDER}\modorganizer-build -s Appveyor_Build=True -s Feature_Branch=${env:APPVEYOR_REPO_BRANCH} -s override_build_version=${env:APPVEYOR_BUILD_VERSION}
|
||||
|
||||
if($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode ) }
|
||||
test: off
|
||||
artifacts:
|
||||
- path: '\modorganizer-build\install\bin\ModOrganizer.exe'
|
||||
name: Mod.Organizer-$(APPVEYOR_BUILD_VERSION)
|
||||
- path: '\modorganizer-build\install\pdb\ModOrganizer.pdb'
|
||||
name: PDB-Mod.Organizer-$(APPVEYOR_BUILD_VERSION)
|
||||
deploy: off
|
||||
on_success:
|
||||
- ps: >-
|
||||
Set-Location -Path $env:APPVEYOR_BUILD_FOLDER
|
||||
|
||||
Invoke-RestMethod https://raw.githubusercontent.com/DiscordHooks/appveyor-discord-webhook/master/send.ps1 -o send.ps1
|
||||
|
||||
if($env:APPVEYOR_SCHEDULED_BUILD -ne 'True'){
|
||||
./send.ps1 success $env:WEBHOOK_URL
|
||||
}
|
||||
on_failure:
|
||||
- ps: >-
|
||||
Set-Location -Path $env:APPVEYOR_BUILD_FOLDER
|
||||
|
||||
Invoke-RestMethod https://raw.githubusercontent.com/DiscordHooks/appveyor-discord-webhook/master/send.ps1 -o send.ps1
|
||||
|
||||
if($env:APPVEYOR_SCHEDULED_BUILD -ne 'True'){
|
||||
./send.ps1 failure $env:WEBHOOK_URL
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
[
|
||||
|
||||
# for boost???
|
||||
# These are probably correct but might need a revisit as if you look at the boost documentation pages, it
|
||||
# can give you huge lists of alternate includes...
|
||||
{ symbol: [ "BOOST_FOREACH", "private", "<boost/foreach.hpp>", "public" ] },
|
||||
|
||||
{ include: [ "@\"boost/bind/.*\"", "private", "<boost/bind.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/algorithm/string/.*\"", "private", "<boost/algorithm/string.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/assign/.*\"", "private", "<boost/assign.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/filesystem/.*\"", "private", "<boost/filesystem.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/format/.*\"", "private", "<boost/format.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/function/.*\"", "private", "<boost/function.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/local/.*\"", "private", "<boost/locale.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/python/.*\"", "private", "<boost/python.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/signals2/.*\"", "private", "<boost/signals2.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/scoped_array.hpp\"", "private", "<boost/scoped_array.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/shared_ptr.hpp\"", "private", "<boost/shared_ptr.hpp>", "public" ] },
|
||||
# this appears to be excessive
|
||||
#{ include: [ "@\"boost/thread/.*\"", "private", "<boost/thread.hpp>", "public" ] },
|
||||
|
||||
# And this is specific to us
|
||||
{ include: [ "\"appconfig.inc\"", "private", "\"appconfig.h\"", "public" ] },
|
||||
|
||||
]
|
||||
|
||||
# Ones I don't yet know how to deal with
|
||||
#include "boost/fusion/container/vector/vector10_fwd.hpp" // for fusion
|
||||
#include "boost/iterator/iterator_facade.hpp" // for operator!=
|
||||
#include "boost/iterator/iterator_facade.hpp"
|
||||
@@ -12,8 +12,8 @@ The project took up speed again after a few more coders showed up in late 2017,
|
||||
## Help Wanted!
|
||||
Mod Organizer 2 is an open project in the hands of the community, there are problems that need to be solved and things that could be added. MO2 really needs developers and if you have the programming skills and some free time you can really improve the experience of the modding community.
|
||||
|
||||
To have more information, please join the open MO2 Development discord server: [Mod Organizer 2](https://discord.gg/ewUVAqyrQX)
|
||||
If you want to help translate MO2 to your language you should join the discord server too and head to the #translation channel.
|
||||
To have more information, please join the open MO2 Development Discord server: [Mod Organizer 2](https://discord.gg/ewUVAqyrQX)
|
||||
If you want to help translate MO2 to your language you should join the Discord server too and head to the #translation channel.
|
||||
To setup a development environment on your machine, there is the [mob project](https://github.com/modorganizer2/mob) that handles that.
|
||||
If you want to submit your code changes, please use a good formatting style like the default one in Visual Studio.
|
||||
|
||||
@@ -22,7 +22,7 @@ Through the work of a few people of the community MO2 has come quite far, now it
|
||||
## Reporting Issues:
|
||||
Issues should be reported to the GitHub page or on the open discord server: [Mod Organizer 2](https://discord.gg/ewUVAqyrQX). Here is also where dev builds are tested, bugs are reported and investigated, suggestions are discussed and a lot more.
|
||||
|
||||
Credits to Tannin, LePresidente, Silarn, erasmux, AL12, LostDragonist, AnyOldName3, isa, Holt59 and many others for the development.
|
||||
Credits to Tannin, LePresidente, Silarn, erasmux, AL12, LostDragonist, AnyOldName3, isa, Holt59, Project579, przester, Qudix, RJ, Jonathan Feenstra and many others for the development.
|
||||
|
||||
## Download Location
|
||||
|
||||
@@ -39,7 +39,7 @@ Please refer to [Modorganizer2/mob](https://github.com/modorganizer2/mob) for bu
|
||||
|
||||
## Other Repositories
|
||||
|
||||
MO2 consists of multiple repositories on github. The mob project will download them automatically as required. They should however also be buildable individually.
|
||||
MO2 consists of multiple repositories on GitHub. The mob project will download them automatically as required. They should however also be buildable individually.
|
||||
Here is a complete list:
|
||||
|
||||
* https://github.com/LePresidente/cpython-1
|
||||
@@ -67,6 +67,7 @@ Here is a complete list:
|
||||
* https://github.com/ModOrganizer2/modorganizer-game_skyrim
|
||||
* https://github.com/ModOrganizer2/modorganizer-game_skyrimSE
|
||||
* https://github.com/ModOrganizer2/modorganizer-game_skyrimVR
|
||||
* https://github.com/ModOrganizer2/modorganizer-game_starfield
|
||||
* https://github.com/ModOrganizer2/modorganizer-game_ttw
|
||||
* https://github.com/ModOrganizer2/modorganizer-installer_bain
|
||||
* https://github.com/ModOrganizer2/modorganizer-installer_wizard
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# This python script contains the configuration for scons
|
||||
# Copy this to scons_configure.py and adjust to taste.
|
||||
|
||||
# Path to your boost install - it should have a boost/ subdirectory and a stage/
|
||||
# subdirectory. The scons script will use stage/lib if there, or the appropriate
|
||||
# version for your compiler, if you installed the multiple-build version
|
||||
BOOSTPATH = r"C:\Apps\boost_1_55_0"
|
||||
|
||||
# Version of Visual Studio to use, if you wish to use a specific version. If you
|
||||
# don't specify a version, the latest will be picked.. See the scons manual for
|
||||
# supported values.
|
||||
#MSVC_VERSION = '10.0Exp'
|
||||
|
||||
# Path to your python install
|
||||
# You don't really need to set this up but you might if (say) you have a 32- and
|
||||
# 64-bit python install and scons has been installed for the 64 bit version
|
||||
#PYTHONPATH=r"C:\Apps\Python"
|
||||
|
||||
# Path to your QT install. This might constrain the version of MSVC you can use.
|
||||
# This seems to be set by QTCreator
|
||||
#QTDIR = r"C:\Apps\Qt\4.8.6"
|
||||
|
||||
# Path to 7-zip sources
|
||||
SEVENZIPPATH = r"C:\Apps\7-Zip\7z920"
|
||||
|
||||
# Path to zlib. Please read the README file for more information about how this
|
||||
# needs to be set up
|
||||
ZLIBPATH = r"C:\Apps\zlib-1.2.8"
|
||||
|
||||
# Source control programs. Sadly I can't get this information from qt, even
|
||||
# though you have to set it up in the configuration
|
||||
GIT = r"C:\Program Files\git\bin\git.exe"
|
||||
MERCURIAL = r"C:\Program Files\TortoiseHg\hg.exe"
|
||||
+97
-20
@@ -1,30 +1,104 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
add_executable(organizer)
|
||||
set_target_properties(organizer PROPERTIES OUTPUT_NAME "ModOrganizer")
|
||||
mo2_configure_executable(organizer
|
||||
WARNINGS OFF
|
||||
EXTRA_TRANSLATIONS ${MO2_SUPER_PATH}/game_gamebryo/src ${MO2_UIBASE_PATH}/src
|
||||
PRIVATE_DEPENDS
|
||||
uibase githubpp bsatk esptk archive usvfs lootcli boost::program_options
|
||||
Qt::WebEngineWidgets Qt::WebSockets)
|
||||
target_link_libraries(organizer PUBLIC Shlwapi)
|
||||
mo2_install_target(organizer)
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt5"
|
||||
DESTINATION bin/dlls
|
||||
find_package(usvfs CONFIG REQUIRED)
|
||||
|
||||
find_package(mo2-uibase CONFIG REQUIRED)
|
||||
find_package(mo2-archive CONFIG REQUIRED)
|
||||
find_package(mo2-lootcli-header CONFIG REQUIRED)
|
||||
find_package(mo2-bsatk CONFIG REQUIRED)
|
||||
find_package(mo2-esptk CONFIG REQUIRED)
|
||||
find_package(mo2-dds-header CONFIG REQUIRED)
|
||||
find_package(mo2-libbsarch CONFIG REQUIRED)
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets WebSockets)
|
||||
find_package(Boost CONFIG REQUIRED COMPONENTS program_options thread interprocess signals2 uuid accumulators)
|
||||
find_package(7zip CONFIG REQUIRED)
|
||||
find_package(lz4 CONFIG REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
add_executable(organizer)
|
||||
set_target_properties(organizer PROPERTIES
|
||||
OUTPUT_NAME "ModOrganizer"
|
||||
WIN32_EXECUTABLE TRUE)
|
||||
|
||||
# disable translations because we want to be able to install somewhere else if
|
||||
# required
|
||||
mo2_configure_target(organizer WARNINGS 4 TRANSLATIONS OFF)
|
||||
|
||||
# we add translations "manually" to handle MO2_INSTALL_IS_BIN
|
||||
mo2_add_translations(organizer
|
||||
INSTALL_RELEASE
|
||||
INSTALL_DIRECTORY "${_bin}/translations"
|
||||
SOURCES ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
mo2_set_project_to_run_from_install(
|
||||
organizer EXECUTABLE ${CMAKE_INSTALL_PREFIX}/${_bin}/ModOrganizer.exe)
|
||||
|
||||
target_link_libraries(organizer PRIVATE
|
||||
Shlwapi Bcrypt
|
||||
usvfs::usvfs mo2::uibase mo2::archive mo2::libbsarch
|
||||
mo2::bsatk mo2::esptk mo2::lootcli-header
|
||||
Boost::program_options Boost::signals2 Boost::uuid Boost::accumulators
|
||||
Qt6::WebEngineWidgets Qt6::WebSockets Version Dbghelp)
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt6"
|
||||
DESTINATION ${_bin}/dlls
|
||||
CONFIGURATIONS Release RelWithDebInfo
|
||||
RENAME dlls.manifest)
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.debug.qt6"
|
||||
DESTINATION ${_bin}/dlls
|
||||
CONFIGURATIONS Debug
|
||||
RENAME dlls.manifest)
|
||||
|
||||
install(DIRECTORY
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/stylesheets"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/tutorials"
|
||||
DESTINATION bin)
|
||||
if (NOT MO2_SKIP_STYLESHEETS_INSTALL)
|
||||
install(
|
||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/stylesheets"
|
||||
DESTINATION ${_bin})
|
||||
endif()
|
||||
|
||||
if (NOT MO2_SKIP_TUTORIALS_INSTALL)
|
||||
install(
|
||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tutorials"
|
||||
DESTINATION ${_bin})
|
||||
endif()
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/markdown.html"
|
||||
DESTINATION bin/resources)
|
||||
DESTINATION ${_bin}/resources)
|
||||
|
||||
mo2_deploy_qt(BINARIES ModOrganizer.exe uibase.dll plugins/bsa_packer.dll)
|
||||
# install ModOrganizer.exe itself
|
||||
install(FILES $<TARGET_FILE:organizer> DESTINATION ${_bin})
|
||||
|
||||
# install dependencies DLLs
|
||||
install(FILES $<TARGET_FILE:mo2::libbsarch> DESTINATION ${_bin}/dlls)
|
||||
install(FILES $<TARGET_FILE:7zip::7zip> DESTINATION ${_bin}/dlls)
|
||||
|
||||
# this may copy over the ones from uibase/usvfs
|
||||
# - when building with mob, this should not matter as the files should be identical
|
||||
# - when building standalone, this should help having matching USVFS DLL between the
|
||||
# build and the installation
|
||||
# - this may cause issue with uibase in standalone mode if the installed version does
|
||||
# not match the one used for the build, but there would be other issue anyway (e.g.
|
||||
# different uibase.dll between modorganizer and plugins)
|
||||
#
|
||||
install(FILES
|
||||
$<TARGET_FILE:mo2::uibase>
|
||||
$<TARGET_FILE:usvfs_x64::usvfs_dll>
|
||||
$<TARGET_FILE:usvfs_x86::usvfs_dll>
|
||||
$<TARGET_FILE:usvfs_x64::usvfs_proxy>
|
||||
$<TARGET_FILE:usvfs_x86::usvfs_proxy>
|
||||
DESTINATION ${_bin})
|
||||
|
||||
# do not install PDB if CMAKE_INSTALL_PREFIX is "bin"
|
||||
if (NOT MO2_INSTALL_IS_BIN)
|
||||
install(FILES $<TARGET_PDB_FILE:organizer> DESTINATION pdb)
|
||||
endif()
|
||||
|
||||
mo2_deploy_qt(
|
||||
DIRECTORY ${_bin}
|
||||
BINARIES ModOrganizer.exe $<TARGET_FILE_NAME:mo2::uibase>)
|
||||
|
||||
# set source groups for VS
|
||||
mo2_add_filter(NAME src/application GROUPS
|
||||
iuserinterface
|
||||
commandline
|
||||
@@ -43,18 +117,20 @@ mo2_add_filter(NAME src/browser GROUPS
|
||||
)
|
||||
|
||||
mo2_add_filter(NAME src/categories GROUPS
|
||||
categories
|
||||
categories
|
||||
categoriestable
|
||||
categoriesdialog
|
||||
categoriesdialog
|
||||
categoryimportdialog
|
||||
)
|
||||
|
||||
mo2_add_filter(NAME src/core GROUPS
|
||||
archivefiletree
|
||||
githubpp
|
||||
installationmanager
|
||||
nexusinterface
|
||||
nxmaccessmanager
|
||||
organizercore
|
||||
game_features
|
||||
plugincontainer
|
||||
apiuseraccount
|
||||
processrunner
|
||||
@@ -196,6 +272,7 @@ mo2_add_filter(NAME src/profiles GROUPS
|
||||
|
||||
mo2_add_filter(NAME src/proxies GROUPS
|
||||
downloadmanagerproxy
|
||||
gamefeaturesproxy
|
||||
modlistproxy
|
||||
organizerproxy
|
||||
pluginlistproxy
|
||||
|
||||
-2331
File diff suppressed because it is too large
Load Diff
@@ -1,60 +0,0 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = bsatk \
|
||||
shared \
|
||||
uibase \
|
||||
esptk \
|
||||
organizer \
|
||||
hookdll \
|
||||
archive \
|
||||
helper \
|
||||
plugins \
|
||||
nxmhandler \
|
||||
BossDummy \
|
||||
pythonRunner \
|
||||
loot_cli
|
||||
|
||||
pythonRunner.depends = uibase
|
||||
plugins.depends = pythonRunner uibase
|
||||
hookdll.depends = shared
|
||||
organizer.depends = shared uibase plugins
|
||||
|
||||
CONFIG(debug, debug|release) {
|
||||
DESTDIR = $$PWD/../outputd
|
||||
} else {
|
||||
DESTDIR = $$PWD/../output
|
||||
}
|
||||
|
||||
STATICDATAPATH = $${DESTDIR}\\..\\tools\\static_data\\dlls
|
||||
DLLSPATH = $${DESTDIR}\\dlls
|
||||
|
||||
otherlibs.path = $$DLLSPATH
|
||||
otherlibs.files += $${STATICDATAPATH}\\7z.dll \
|
||||
$${BOOSTPATH}\\stage\\lib\\boost_python-vc*-mt-1*.dll
|
||||
|
||||
qtlibs.path = $$DLLSPATH
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4) {
|
||||
QTLIBNAMES += Core Gui Network OpenGL Script Sql Svg Qml Quick Webkit Widgets Xml XmlPatterns
|
||||
} else {
|
||||
QTLIBNAMES += Core Declarative Gui Network OpenGL Script Sql Svg Webkit Xml XmlPatterns
|
||||
}
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 5) {
|
||||
QTLIBNAMES += OpenGLWidgets
|
||||
}
|
||||
|
||||
QTLIBSUFFIX = $${QT_MAJOR_VERSION}.dll
|
||||
CONFIG(debug, debug|release): QTLIBSUFFIX = "d$${QTLIBSUFFIX}" # Can't use Debug: .. here, it ignores the line - no idea why, as it works in BossDummy.pro
|
||||
|
||||
for(QTNAME, QTLIBNAMES) {
|
||||
QTFILE = Qt$${QTNAME}
|
||||
qtlibs.files += $$[QT_INSTALL_BINS]\\$${QTFILE}$${QTLIBSUFFIX}
|
||||
}
|
||||
|
||||
INSTALLS += qtlibs otherlibs
|
||||
|
||||
OTHER_FILES +=\
|
||||
../SConstruct\
|
||||
../scons_configure.py\
|
||||
SConscript
|
||||
-179
@@ -1,179 +0,0 @@
|
||||
import ctypes
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def resolve_name(source):
|
||||
# Get the actual name of the file, after reparse points and symlinks are
|
||||
# taken into account.
|
||||
GENERIC_READ = 0x80000000
|
||||
FILE_SHARE_READ = 0x1
|
||||
OPEN_EXISTING = 0x3
|
||||
FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
|
||||
handle = ctypes.windll.kernel32.CreateFileA(source,
|
||||
GENERIC_READ,
|
||||
FILE_SHARE_READ,
|
||||
None,
|
||||
OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS,
|
||||
None)
|
||||
# get the target
|
||||
FILE_NAME_NORMALIZED = 0x0
|
||||
FILE_NAME_OPENED = 0x8
|
||||
buff = ctypes.create_string_buffer(1024)
|
||||
res = ctypes.windll.kernel32.GetFinalPathNameByHandleA(handle,
|
||||
buff,
|
||||
ctypes.sizeof(buff),
|
||||
FILE_NAME_NORMALIZED)
|
||||
target = buff.value
|
||||
ctypes.windll.kernel32.CloseHandle(handle)
|
||||
return target
|
||||
|
||||
def search_up(path, target):
|
||||
while True:
|
||||
if os.path.exists(os.path.join(path, target)):
|
||||
return True
|
||||
npath = os.path.dirname(path)
|
||||
if npath == path:
|
||||
break
|
||||
path = npath
|
||||
return False
|
||||
|
||||
Import('qt_env')
|
||||
|
||||
env = qt_env.Clone()
|
||||
|
||||
modules = [
|
||||
'Core',
|
||||
'Gui',
|
||||
'Network',
|
||||
'Script',
|
||||
'Sql',
|
||||
'WebKit',
|
||||
'Xml',
|
||||
'XmlPatterns',
|
||||
'Declarative'
|
||||
]
|
||||
|
||||
if env['QT_MAJOR_VERSION'] > 4:
|
||||
modules += [
|
||||
'Widgets',
|
||||
'Qml',
|
||||
'WebKitWidgets'
|
||||
]
|
||||
|
||||
env.EnableQtModules(*modules)
|
||||
|
||||
env.Uic(env.Glob('*.ui'))
|
||||
|
||||
env.RequireLibraries('uibase', 'shared', 'bsatk', 'esptk')
|
||||
|
||||
env.AppendUnique(LIBS = [
|
||||
'shell32',
|
||||
'user32',
|
||||
'ole32',
|
||||
'advapi32',
|
||||
'gdi32',
|
||||
'shlwapi',
|
||||
'Psapi',
|
||||
'Version'
|
||||
])
|
||||
|
||||
# We have to 'persuade' moc to generate certain other targets and inject them
|
||||
# into the list of cpps
|
||||
other_sources = env.AddExtraMoc(env.Glob('*.h'))
|
||||
|
||||
for file in env.Glob('*.rc'):
|
||||
other_sources.append(env.RES(file))
|
||||
|
||||
# Note the order of this is important, or you can pick up the wrong report.h...
|
||||
# Doing appendunique seems to throw the moc code into a tizzy
|
||||
env['CPPPATH'] += [
|
||||
'../archive',
|
||||
'../plugins/gamefeatures',
|
||||
'.', # Why is this necessary?
|
||||
'${LOOTPATH}',
|
||||
'${BOOSTPATH}',
|
||||
]
|
||||
|
||||
#########################FUDGE###############################
|
||||
env['CPPPATH'] += [
|
||||
'../plugins/gameGamebryo',
|
||||
]
|
||||
#############################################################
|
||||
|
||||
env.AppendUnique(CPPDEFINES = [
|
||||
'_UNICODE',
|
||||
'_CRT_SECURE_NO_WARNINGS',
|
||||
'_SCL_SECURE_NO_WARNINGS',
|
||||
'BOOST_DISABLE_ASSERTS',
|
||||
'NDEBUG',
|
||||
'QT_MESSAGELOGCONTEXT'
|
||||
])
|
||||
|
||||
# Boost produces very long names with msvc truncates. Doesn't seem to cause
|
||||
# problems.
|
||||
# Also note to remove the -wd4100 I hacked the boost headers (tagged_argument.hpp)
|
||||
# appropriately.
|
||||
env.AppendUnique(CPPFLAGS = [ '-wd4503' ])
|
||||
|
||||
env.AppendUnique(LINKFLAGS = [
|
||||
'/SUBSYSTEM:WINDOWS',
|
||||
'${EXE_MANIFEST_DEPENDENCY}'
|
||||
])
|
||||
|
||||
# modeltest is optional and it doesn't compile anyway...
|
||||
cpp_files = [
|
||||
x for x in env.Glob('*.cpp', source = True)
|
||||
if x.name != 'modeltest.cpp' and x.name != 'aboutdialog.cpp' and \
|
||||
not x.name.startswith('moc_') # I think this is a strange bug
|
||||
]
|
||||
|
||||
about_env = env.Clone()
|
||||
# This is somewhat of a hack until I can work out a way of setting up a build
|
||||
# with all the repos without using millions of junction points
|
||||
try:
|
||||
target = resolve_name(Dir('.').srcnode().abspath)
|
||||
if search_up(target, '.hg'):
|
||||
hgid = subprocess.check_output([env['MERCURIAL'], 'id', '-i']).rstrip()
|
||||
elif search_up(target, '.git'):
|
||||
hgid = subprocess.check_output([env['GIT'], '-C', target, 'describe',
|
||||
'--tag']).rstrip()
|
||||
else:
|
||||
hgid = "Unknown"
|
||||
except:
|
||||
hgid = "Problem determining version"
|
||||
|
||||
# FIXME: It'd be much easier to stringify this in the source code
|
||||
about_env.AppendUnique(CPPDEFINES = [ 'HGID=\\"%s\\"' % hgid ])
|
||||
other_sources.append(about_env.StaticObject('aboutdialog.cpp'))
|
||||
|
||||
env.AppendUnique(LIBPATH = "${ZLIBPATH}/build")
|
||||
env.AppendUnique(LIBS = 'zlibstatic')
|
||||
|
||||
prog = env.Program('ModOrganizer',
|
||||
cpp_files + env.Glob('*.qrc') + other_sources)
|
||||
|
||||
env.InstallModule(prog)
|
||||
|
||||
for subdir in ('tutorials', 'stylesheets'):
|
||||
env.Install(os.path.join(env['INSTALL_PATH'], subdir),
|
||||
env.Glob(os.path.join(subdir, '*')))
|
||||
|
||||
# FIXME Sort the translations. Except they don't exist on the 1.2 branch
|
||||
|
||||
res = env['QT_USED_MODULES']
|
||||
Return('res')
|
||||
|
||||
"""
|
||||
CONFIG(debug, debug|release) {
|
||||
} else {
|
||||
QMAKE_CXXFLAGS += /Zi /GL
|
||||
QMAKE_LFLAGS += /DEBUG /LTCG /OPT:REF /OPT:ICF
|
||||
}
|
||||
|
||||
TRANSLATIONS = organizer_en.ts
|
||||
|
||||
|
||||
QMAKE_POST_LINK += xcopy /y /s /I $$quote($$BASEDIR\\*.qm) $$quote($$DSTDIR)\\translations $$escape_expand(\\n)
|
||||
|
||||
"""
|
||||
+27
-2
@@ -127,7 +127,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string notr="true"><html><head/><body><p>Copyright © 2011-2016 Sebastian Herbord<br/>Copyright © 2016-2021 Mod Organizer 2 Contributors</p></body></html></string>
|
||||
<string notr="true"><html><head/><body><p>Copyright © 2011-2016 Sebastian Herbord<br/>Copyright © 2016-2025 Mod Organizer 2 Contributors</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -266,6 +266,16 @@
|
||||
<string notr="true">Qudix</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">RJ</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">Jonathan Feenstra</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -402,7 +412,7 @@
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>zDas (Portuguese)</string>
|
||||
<string>Dasinho (Portuguese)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
@@ -634,6 +644,21 @@
|
||||
<string notr="true">z929669</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">Eddoursul</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">Twinki</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">ashemedai</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
@@ -28,6 +28,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
using namespace MOBase;
|
||||
|
||||
ActivateModsDialog::ActivateModsDialog(SaveGameInfo::MissingAssets const& missingAssets,
|
||||
QWidget* parent)
|
||||
: TutorableDialog("ActivateMods", parent), ui(new Ui::ActivateModsDialog)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user