mirror of
https://github.com/ModOrganizer2/mob.git
synced 2026-07-27 14:07:05 -07:00
Compare commits
12
Commits
v2.5.2
...
dev/extensions
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f97e0f1c7 | ||
|
|
621daac2ec | ||
|
|
044a158340 | ||
|
|
c29b1adca1 | ||
|
|
ec6bb2a177 | ||
|
|
bd6a03d2f8 | ||
|
|
1087129aac | ||
|
|
237bd6ab5e | ||
|
|
b6d75fd1a3 | ||
|
|
c9882c7d99 | ||
|
|
41bb2a3032 | ||
|
|
0d6a130ef8 |
@@ -0,0 +1,25 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v5.0.0
|
||||||
|
hooks:
|
||||||
|
- id: trailing-whitespace
|
||||||
|
exclude: '^(third-party|licenses)/.*$'
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
exclude: '^(third-party|licenses)/.*$'
|
||||||
|
- id: check-merge-conflict
|
||||||
|
exclude: '^(third-party|licenses)/.*$'
|
||||||
|
- id: check-case-conflict
|
||||||
|
exclude: '^(third-party|licenses)/.*$'
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||||
|
rev: v19.1.5
|
||||||
|
hooks:
|
||||||
|
- id: clang-format
|
||||||
|
'types_or': [c++, c]
|
||||||
|
exclude: '^third-party/.*$'
|
||||||
|
|
||||||
|
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
|
||||||
+1
-1
@@ -13,7 +13,7 @@ if (!$root) {
|
|||||||
|
|
||||||
$output = if ($Verbose) { "Out-Default" } else { "Out-Null" }
|
$output = if ($Verbose) { "Out-Default" } else { "Out-Null" }
|
||||||
|
|
||||||
cmake -B $root/build $root | & $output
|
cmake -B $root/build -G "Visual Studio 17 2022" $root | & $output
|
||||||
|
|
||||||
$installationPath = & $root\third-party\bin\vswhere.exe -products * -nologo -prerelease -latest -property installationPath
|
$installationPath = & $root\third-party\bin\vswhere.exe -products * -nologo -prerelease -latest -property installationPath
|
||||||
if (! $?) {
|
if (! $?) {
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
+94
-33
@@ -1,23 +1,24 @@
|
|||||||
7-Zip
|
7-Zip source code
|
||||||
~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
License for use and distribution
|
License for use and distribution
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
7-Zip Copyright (C) 1999-2023 Igor Pavlov.
|
7-Zip Copyright (C) 1999-2024 Igor Pavlov.
|
||||||
|
|
||||||
The licenses for files are:
|
The licenses for files are:
|
||||||
|
|
||||||
1) 7z.dll:
|
- CPP/7zip/Compress/Rar* files: the "GNU LGPL" with "unRAR license restriction"
|
||||||
- The "GNU LGPL" as main license for most of the code
|
- CPP/7zip/Compress/LzfseDecoder.cpp: the "BSD 3-clause License"
|
||||||
- The "GNU LGPL" with "unRAR license restriction" for some code
|
- C/ZstdDec.c: the "BSD 3-clause License"
|
||||||
- The "BSD 3-clause License" for some code
|
- C/Xxh64.c: the "BSD 2-clause License"
|
||||||
2) All other files: the "GNU LGPL".
|
- Some files are "public domain" files, if "public domain" status is stated in source file.
|
||||||
|
- the "GNU LGPL" for all other files. If there is no license information in
|
||||||
|
some source file, that file is under the "GNU LGPL".
|
||||||
|
|
||||||
|
The "GNU LGPL" with "unRAR license restriction" means that you must follow both
|
||||||
|
"GNU LGPL" rules and "unRAR license restriction" rules.
|
||||||
|
|
||||||
Redistributions in binary form must reproduce related license information from this file.
|
|
||||||
|
|
||||||
Note:
|
|
||||||
You can use 7-Zip on any computer, including a computer in a commercial
|
|
||||||
organization. You don't need to register or pay for 7-Zip.
|
|
||||||
|
|
||||||
|
|
||||||
GNU LGPL information
|
GNU LGPL information
|
||||||
@@ -33,39 +34,101 @@
|
|||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Lesser General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You can receive a copy of the GNU Lesser General Public License from
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not,
|
||||||
|
you can get a copy of the GNU Lesser General Public License from
|
||||||
http://www.gnu.org/
|
http://www.gnu.org/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BSD 3-clause License
|
BSD 3-clause License in 7-Zip code
|
||||||
--------------------
|
----------------------------------
|
||||||
|
|
||||||
The "BSD 3-clause License" is used for the code in 7z.dll that implements LZFSE data decompression.
|
The "BSD 3-clause License" is used for the following code in 7z.dll
|
||||||
|
1) LZFSE data decompression.
|
||||||
|
CPP/7zip/Compress/LzfseDecoder.cpp.
|
||||||
That code was derived from the code in the "LZFSE compression library" developed by Apple Inc,
|
That code was derived from the code in the "LZFSE compression library" developed by Apple Inc,
|
||||||
that also uses the "BSD 3-clause License":
|
that also uses the "BSD 3-clause License".
|
||||||
|
2) ZSTD data decompression.
|
||||||
|
C/ZstdDec.c
|
||||||
|
that code was developed using original zstd decoder code as reference code.
|
||||||
|
The original zstd decoder code was developed by Facebook Inc,
|
||||||
|
that also uses the "BSD 3-clause License".
|
||||||
|
|
||||||
----
|
|
||||||
Copyright (c) 2015-2016, Apple Inc. All rights reserved.
|
Copyright (c) 2015-2016, Apple Inc. All rights reserved.
|
||||||
|
Copyright (c) Facebook, Inc. All rights reserved.
|
||||||
|
Copyright (c) 2023-2024 Igor Pavlov.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
Text of the "BSD 3-clause License"
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
in the documentation and/or other materials provided with the distribution.
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
3. Neither the name of the copyright holder(s) nor the names of any contributors may be used to endorse or promote products derived
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
from this software without specific prior written permission.
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
3. Neither the name of the copyright holder nor the names of its contributors may
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
be used to endorse or promote products derived from this software without
|
||||||
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
specific prior written permission.
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
----
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BSD 2-clause License in 7-Zip code
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
The "BSD 2-clause License" is used for the XXH64 code in 7-Zip.
|
||||||
|
C/Xxh64.c
|
||||||
|
|
||||||
|
XXH64 code in 7-Zip was derived from the original XXH64 code developed by Yann Collet.
|
||||||
|
|
||||||
|
Copyright (c) 2012-2021 Yann Collet.
|
||||||
|
Copyright (c) 2023-2024 Igor Pavlov.
|
||||||
|
|
||||||
|
Text of the "BSD 2-clause License"
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -85,6 +148,4 @@
|
|||||||
stated in the documentation and source comments that the code may
|
stated in the documentation and source comments that the code may
|
||||||
not be used to develop a RAR (WinRAR) compatible archiver.
|
not be used to develop a RAR (WinRAR) compatible archiver.
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
Igor Pavlov
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2012 - present, Victor Zverovich
|
Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
a copy of this software and associated documentation files (the
|
a copy of this software and associated documentation files (the
|
||||||
|
|||||||
+6
-6
@@ -2,12 +2,12 @@ A. HISTORY OF THE SOFTWARE
|
|||||||
==========================
|
==========================
|
||||||
|
|
||||||
Python was created in the early 1990s by Guido van Rossum at Stichting
|
Python was created in the early 1990s by Guido van Rossum at Stichting
|
||||||
Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
|
Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands
|
||||||
as a successor of a language called ABC. Guido remains Python's
|
as a successor of a language called ABC. Guido remains Python's
|
||||||
principal author, although it includes many contributions from others.
|
principal author, although it includes many contributions from others.
|
||||||
|
|
||||||
In 1995, Guido continued his work on Python at the Corporation for
|
In 1995, Guido continued his work on Python at the Corporation for
|
||||||
National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
|
National Research Initiatives (CNRI, see https://www.cnri.reston.va.us)
|
||||||
in Reston, Virginia where he released several versions of the
|
in Reston, Virginia where he released several versions of the
|
||||||
software.
|
software.
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ https://www.python.org/psf/) was formed, a non-profit organization
|
|||||||
created specifically to own Python-related Intellectual Property.
|
created specifically to own Python-related Intellectual Property.
|
||||||
Zope Corporation was a sponsoring member of the PSF.
|
Zope Corporation was a sponsoring member of the PSF.
|
||||||
|
|
||||||
All Python releases are Open Source (see http://www.opensource.org for
|
All Python releases are Open Source (see https://opensource.org for
|
||||||
the Open Source Definition). Historically, most, but not all, Python
|
the Open Source Definition). Historically, most, but not all, Python
|
||||||
releases have also been GPL-compatible; the table below summarizes
|
releases have also been GPL-compatible; the table below summarizes
|
||||||
the various releases.
|
the various releases.
|
||||||
@@ -84,7 +84,7 @@ analyze, test, perform and/or display publicly, prepare derivative works,
|
|||||||
distribute, and otherwise use Python alone or in any derivative version,
|
distribute, and otherwise use Python alone or in any derivative version,
|
||||||
provided, however, that PSF's License Agreement and PSF's notice of copyright,
|
provided, however, that PSF's License Agreement and PSF's notice of copyright,
|
||||||
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||||
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation;
|
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation;
|
||||||
All Rights Reserved" are retained in Python alone or in any derivative version
|
All Rights Reserved" are retained in Python alone or in any derivative version
|
||||||
prepared by Licensee.
|
prepared by Licensee.
|
||||||
|
|
||||||
@@ -191,9 +191,9 @@ version prepared by Licensee. Alternately, in lieu of CNRI's License
|
|||||||
Agreement, Licensee may substitute the following text (omitting the
|
Agreement, Licensee may substitute the following text (omitting the
|
||||||
quotes): "Python 1.6.1 is made available subject to the terms and
|
quotes): "Python 1.6.1 is made available subject to the terms and
|
||||||
conditions in CNRI's License Agreement. This Agreement together with
|
conditions in CNRI's License Agreement. This Agreement together with
|
||||||
Python 1.6.1 may be located on the Internet using the following
|
Python 1.6.1 may be located on the internet using the following
|
||||||
unique, persistent identifier (known as a handle): 1895.22/1013. This
|
unique, persistent identifier (known as a handle): 1895.22/1013. This
|
||||||
Agreement may also be obtained from a proxy server on the Internet
|
Agreement may also be obtained from a proxy server on the internet
|
||||||
using the following URL: http://hdl.handle.net/1895.22/1013".
|
using the following URL: http://hdl.handle.net/1895.22/1013".
|
||||||
|
|
||||||
3. In the event Licensee prepares a derivative work that is based on
|
3. In the event Licensee prepares a derivative work that is based on
|
||||||
|
|||||||
+18
-45
@@ -1,49 +1,22 @@
|
|||||||
RIVERBANK COMPUTING LIMITED LICENSE AGREEMENT FOR SIP
|
Copyright 2024 Phil Thompson <phil@riverbankcomputing.com>
|
||||||
|
|
||||||
1. This LICENSE AGREEMENT ("the SIP License") is between Riverbank Computing
|
Redistribution and use in source and binary forms, with or without
|
||||||
Limited ("Riverbank"), and the Individual or Organization ("Licensee")
|
modification, are permitted provided that the following conditions are met:
|
||||||
accessing and otherwise using SIP software in source or binary form and its
|
|
||||||
associated documentation. SIP comprises a software tool for generating Python
|
|
||||||
bindings for software C and C++ libraries, and a Python extension module used
|
|
||||||
at runtime by those generated bindings. This License Agreement may also be
|
|
||||||
applied to other software packages written by Riverbank.
|
|
||||||
|
|
||||||
2. Subject to the terms and conditions of this License Agreement, Riverbank
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
hereby grants Licensee a nonexclusive, royalty-free, world-wide license to
|
list of conditions and the following disclaimer.
|
||||||
reproduce, analyze, test, perform and/or display publicly, prepare derivative
|
|
||||||
works, distribute, and otherwise use SIP alone or in any derivative version,
|
|
||||||
provided, however, that Riverbank's License Agreement and Riverbank's notice of
|
|
||||||
copyright, e.g., "Copyright (c) 2015 Riverbank Computing Limited; All Rights
|
|
||||||
Reserved" are retained in SIP alone or in any derivative version prepared by
|
|
||||||
Licensee.
|
|
||||||
|
|
||||||
3. In the event Licensee prepares a derivative work that is based on or
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
incorporates SIP or any part thereof, and wants to make the derivative work
|
this list of conditions and the following disclaimer in the documentation
|
||||||
available to others as provided herein, then Licensee hereby agrees to include
|
and/or other materials provided with the distribution.
|
||||||
in any such work a brief summary of the changes made to SIP.
|
|
||||||
|
|
||||||
4. Licensee may not use SIP to generate Python bindings for any C or C++
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
|
||||||
library for which bindings are already provided by Riverbank.
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
5. Riverbank is making SIP available to Licensee on an "AS IS" basis.
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
RIVERBANK MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
OF EXAMPLE, BUT NOT LIMITATION, RIVERBANK MAKES NO AND DISCLAIMS ANY
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
PURPOSE OR THAT THE USE OF SIP WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
6. RIVERBANK SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF SIP FOR ANY
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING,
|
|
||||||
DISTRIBUTING, OR OTHERWISE USING SIP, OR ANY DERIVATIVE THEREOF, EVEN IF
|
|
||||||
ADVISED OF THE POSSIBILITY THEREOF.
|
|
||||||
|
|
||||||
7. This License Agreement will automatically terminate upon a material breach
|
|
||||||
of its terms and conditions.
|
|
||||||
|
|
||||||
8. Nothing in this License Agreement shall be deemed to create any relationship
|
|
||||||
of agency, partnership, or joint venture between Riverbank and Licensee. This
|
|
||||||
License Agreement does not grant permission to use Riverbank trademarks or
|
|
||||||
trade name in a trademark sense to endorse or promote products or services of
|
|
||||||
Licensee, or any third party.
|
|
||||||
|
|
||||||
9. By copying, installing or otherwise using SIP, Licensee agrees to be bound
|
|
||||||
by the terms and conditions of this License Agreement.
|
|
||||||
|
|||||||
+1
-1
@@ -22,5 +22,5 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-- NOTE: Third party dependency used by this software --
|
-- NOTE: Third party dependency used by this software --
|
||||||
This software depends on the fmt lib (MIT License),
|
This software depends on the fmt lib (MIT License),
|
||||||
and users must comply to its license: https://github.com/fmtlib/fmt/blob/master/LICENSE.rst
|
and users must comply to its license: https://raw.githubusercontent.com/fmtlib/fmt/master/LICENSE
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -1,4 +1,6 @@
|
|||||||
(C) 1995-2017 Jean-loup Gailly and Mark Adler
|
Copyright notice:
|
||||||
|
|
||||||
|
(C) 1995-2022 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
|||||||
@@ -18,9 +18,13 @@ install_message = never
|
|||||||
host =
|
host =
|
||||||
|
|
||||||
[aliases]
|
[aliases]
|
||||||
super = cmake_common modorganizer* githubpp
|
super = cmake_common modorganizer*
|
||||||
plugins = check_fnis bsapacker bsa_extractor diagnose_basic installer_* plugin_python preview_base preview_bsa tool_* game_*
|
plugins = check_fnis bsapacker bsa_extractor diagnose_basic installer_* plugin_python preview_base preview_bsa tool_* game_*
|
||||||
|
|
||||||
|
[translations]
|
||||||
|
mo2-translations = organizer uibase plugin_python
|
||||||
|
mo2-game-bethesda = game_creation game_enderal game_enderalse game_fallout3 game_fallout4 game_fallout4vr game_falloutNV game_gamebryo game_morrowind game_nehrim game_oblivion game_skyrim game_skyrimse game_skyrimvr game_ttw
|
||||||
|
|
||||||
[task]
|
[task]
|
||||||
enabled = true
|
enabled = true
|
||||||
mo_org = ModOrganizer2
|
mo_org = ModOrganizer2
|
||||||
@@ -47,6 +51,7 @@ git_shallow = false
|
|||||||
|
|
||||||
[usvfs:task]
|
[usvfs:task]
|
||||||
git_shallow = false
|
git_shallow = false
|
||||||
|
configuration = Release
|
||||||
|
|
||||||
[installer:task]
|
[installer:task]
|
||||||
enabled = false
|
enabled = false
|
||||||
@@ -84,40 +89,14 @@ force = false
|
|||||||
configure = true
|
configure = true
|
||||||
pull = true
|
pull = true
|
||||||
|
|
||||||
[prebuilt]
|
|
||||||
boost = true
|
|
||||||
lz4 = true
|
|
||||||
openssl = true
|
|
||||||
pyqt = true
|
|
||||||
python = true
|
|
||||||
|
|
||||||
[versions]
|
[versions]
|
||||||
vs = 17
|
vs = 17
|
||||||
vs_year = 2022
|
vs_year = 2022
|
||||||
vs_toolset = 14.3
|
vs_toolset = 14.3
|
||||||
sdk = 10.0.22621.0
|
sdk = 10.0.26100.0
|
||||||
sevenz = 24.05
|
|
||||||
boost = 1.85.0
|
|
||||||
boost_vs = 14.3
|
|
||||||
fmt = 10.2.1
|
|
||||||
gtest = main
|
|
||||||
directxtex = main
|
|
||||||
libloot = 0.23.0
|
|
||||||
lz4 = v1.9.4
|
|
||||||
nmm = 0.71.2
|
|
||||||
openssl = 3.3.0
|
|
||||||
pyqt = 6.7.1
|
pyqt = 6.7.1
|
||||||
pyqt_builder = 1.16.4
|
qt = 6.7.3
|
||||||
pyqt_sip = 13.8.0
|
qt_vs = 2022
|
||||||
python = v3.12.3
|
|
||||||
pybind11 = v2.12.0
|
|
||||||
bzip2 = 1.0.8
|
|
||||||
sip = 6.8.6
|
|
||||||
spdlog = v1.14.1
|
|
||||||
qt = 6.7.1
|
|
||||||
qt_vs = 2019
|
|
||||||
zlib = v1.3.1
|
|
||||||
libbsarch = 0.0.12
|
|
||||||
usvfs = master
|
usvfs = master
|
||||||
explorerpp = 1.4.0
|
explorerpp = 1.4.0
|
||||||
ss_paper_lad_6788 = 7.2
|
ss_paper_lad_6788 = 7.2
|
||||||
@@ -130,16 +109,11 @@ ss_starfield_trosski = V1.11
|
|||||||
ss_fallout3_trosski = v1.11
|
ss_fallout3_trosski = v1.11
|
||||||
ss_fallout4_trosski = v1.11
|
ss_fallout4_trosski = v1.11
|
||||||
|
|
||||||
[build-types]
|
|
||||||
libbsarch = release
|
|
||||||
pyqt = release
|
|
||||||
python = release
|
|
||||||
|
|
||||||
[paths]
|
[paths]
|
||||||
third_party =
|
third_party =
|
||||||
prefix =
|
prefix =
|
||||||
cache =
|
cache =
|
||||||
patches =
|
icons =
|
||||||
licenses =
|
licenses =
|
||||||
build =
|
build =
|
||||||
install =
|
install =
|
||||||
@@ -148,13 +122,13 @@ install_installer =
|
|||||||
install_libs =
|
install_libs =
|
||||||
install_pdbs =
|
install_pdbs =
|
||||||
install_dlls =
|
install_dlls =
|
||||||
install_loot =
|
|
||||||
install_plugins =
|
install_plugins =
|
||||||
|
install_extensions =
|
||||||
install_stylesheets =
|
install_stylesheets =
|
||||||
install_licenses =
|
install_licenses =
|
||||||
install_pythoncore =
|
|
||||||
install_translations =
|
install_translations =
|
||||||
vs =
|
vs =
|
||||||
|
vcpkg =
|
||||||
qt_install =
|
qt_install =
|
||||||
qt_bin =
|
qt_bin =
|
||||||
qt_translations =
|
qt_translations =
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
--- builder.py (date 1575938575861)
|
|
||||||
+++ builder.py (date 1575938575861)
|
|
||||||
@@ -402,17 +402,29 @@
|
|
||||||
'QMAKE_LFLAGS += -Wl,--version-script={}.exp'.format(
|
|
||||||
buildable.target))
|
|
||||||
|
|
||||||
- pro_lines.append(
|
|
||||||
+ if project.py_platform == 'win32':
|
|
||||||
+ for include_dir in project.py_include_dir.split(';'):
|
|
||||||
+ pro_lines.append(
|
|
||||||
+ 'INCLUDEPATH += {}'.format(
|
|
||||||
+ self.qmake_quote(include_dir)))
|
|
||||||
+ else:
|
|
||||||
+ pro_lines.append(
|
|
||||||
'INCLUDEPATH += {}'.format(
|
|
||||||
- self.qmake_quote(project.py_include_dir)))
|
|
||||||
+ self.qmake_quote(project.py_include_dir)))
|
|
||||||
|
|
||||||
+ if project.py_pylib_shlib != "":
|
|
||||||
+ pro_lines.append(
|
|
||||||
+ 'DEFINES += {}'.format(
|
|
||||||
+ self.qmake_quote("PYTHON_LIB=\"{}\"".format(
|
|
||||||
+ project.py_pylib_shlib))))
|
|
||||||
+
|
|
||||||
# Python.h on Windows seems to embed the need for pythonXY.lib, so tell
|
|
||||||
# it where it is.
|
|
||||||
# TODO: is this still necessary for Python v3.8?
|
|
||||||
if not buildable.static:
|
|
||||||
pro_lines.extend(['win32 {',
|
|
||||||
- ' LIBS += -L{}'.format(
|
|
||||||
- self.qmake_quote(project.py_pylib_dir)),
|
|
||||||
+ ' LIBS += -L{}{}'.format(
|
|
||||||
+ self.qmake_quote(project.py_pylib_dir), '' if project.py_pylib_lib == '' else ' -l' + project.py_pylib_lib),
|
|
||||||
'}'])
|
|
||||||
|
|
||||||
# Add any installables from the buildable
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
--- PCbuild/openssl.props (revision 5c02a39a0b31a330e06b4d6f44835afb205dc7cc)
|
|
||||||
+++ PCbuild/openssl.props (date 1575994670797)
|
|
||||||
@@ -13,6 +13,7 @@
|
|
||||||
<_DLLSuffix>-3</_DLLSuffix>
|
|
||||||
<_DLLSuffix Condition="$(Platform) == 'ARM'">$(_DLLSuffix)-arm</_DLLSuffix>
|
|
||||||
<_DLLSuffix Condition="$(Platform) == 'ARM64'">$(_DLLSuffix)-arm64</_DLLSuffix>
|
|
||||||
+ <_DLLSuffix Condition="$(Platform) == 'x64'">$(_DLLSuffix)-x64</_DLLSuffix>
|
|
||||||
<OpenSSLDLLSuffix Condition="$(OpenSSLDLLSuffix) == ''">$(_DLLSuffix)</OpenSSLDLLSuffix>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
@@ -1,63 +1,69 @@
|
|||||||
|
# `mob` - ModOrganizer Build Tool
|
||||||
|
|
||||||
|
This README explains how to use `mob` and build ModOrganizer2 with it.
|
||||||
|
If you want to contribute to a single plugin of MO2 or even write your own plugins,
|
||||||
|
check the [ModOrganizer2 Wiki](https://github.com/ModOrganizer2/modorganizer/wiki).
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
- [Quick start](#quick-start)
|
- [Quick start](#quick-start)
|
||||||
- [Slow start](#slow-start)
|
- [Extended start](#extended-start)
|
||||||
- [Changing options](#changing-options)
|
- [Changing options](#changing-options)
|
||||||
* [INI files](#ini-files)
|
- [INI files](#override-options-using-ini-files)
|
||||||
* [Command line](#command-line)
|
- [Command line](#override-options-using-command-line)
|
||||||
* [INI format](#ini-format)
|
- [INI format](#ini-format)
|
||||||
- [Options](#options)
|
- [Options](#options)
|
||||||
* [`[global]`](#global)
|
- [`[global]`](#global)
|
||||||
* [`[task]`](#task)
|
- [`[task]`](#task)
|
||||||
* [`[tools]`](#tools)
|
- [`[tools]`](#tools)
|
||||||
* [`[prebuilt]`](#prebuilt)
|
- [`[versions]`](#versions)
|
||||||
* [`[versions]`](#versions)
|
- [`[paths]`](#paths)
|
||||||
* [`[paths]`](#paths)
|
- [Command line](#command-line)
|
||||||
- [Command line](#command-line-1)
|
- [Global options](#global-options)
|
||||||
* [Global options](#global-options)
|
- [`build`](#build)
|
||||||
* [`build`](#build)
|
- [`list`](#list)
|
||||||
* [`list`](#list)
|
- [`options`](#options)
|
||||||
* [`options`](#options)
|
- [`release`](#release)
|
||||||
* [`release`](#release)
|
- [`git`](#git)
|
||||||
* [`git`](#git)
|
- [`cmake-config`](#cmake-config)
|
||||||
* [`cmake`](#cmake)
|
- [`inis`](#inis)
|
||||||
* [`inis`](#inis)
|
|
||||||
|
|
||||||
|
|
||||||
## Quick start
|
## Quick start
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
> git clone https://github.com/ModOrganizer2/mob
|
git clone https://github.com/ModOrganizer2/mob
|
||||||
> cd mob
|
cd mob
|
||||||
> bootstrap
|
./bootstrap
|
||||||
> mob -d c:\somewhere build
|
mob -d c:\somewhere build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Extended start
|
## Extended start
|
||||||
|
|
||||||
### Qt - CLI based install using [aqt](https://github.com/miurahr/aqtinstall)
|
### Qt Installation
|
||||||
|
|
||||||
[aqt](https://github.com/miurahr/aqtinstall) is a CLI installer for Qt, it makes installing Qt extremely quick and painless, and doesn't require a login
|
Check [`mob.ini`](https://github.com/ModOrganizer2/mob/blob/master/mob.ini#L94) to find
|
||||||
|
out which version of Qt you need.
|
||||||
|
|
||||||
#### Installing aqt via package manager
|
#### CLI based install using [aqt](https://github.com/miurahr/aqtinstall)
|
||||||
- Start an administrative terminal
|
|
||||||
- Install aqt using one of the two popular packaage managers
|
|
||||||
- `winget install --id=miurahr.aqtinstall -e`
|
|
||||||
- `choco install aqt`
|
|
||||||
|
|
||||||
#### Installing aqt via python/pip
|
[aqt](https://github.com/miurahr/aqtinstall) is a CLI installer for Qt, it makes
|
||||||
|
installing Qt extremely quick and painless, and doesn't require a login.
|
||||||
|
Check the [documentation](https://aqtinstall.readthedocs.io/en/latest/installation.html)
|
||||||
|
to install **aqt** itself.
|
||||||
|
|
||||||
- Install [Python 3.9](https://www.python.org/downloads/release/python-390/)
|
When using **aqt**, you can choose which modules to install but we recommend installing
|
||||||
- Install [aqt](https://github.com/miurahr/aqtinstall) using `pip`
|
all of them in case of changes.
|
||||||
|
|
||||||
#### Using aqt
|
|
||||||
- Open a terminal with administrative rights, and run
|
|
||||||
```powershell
|
```powershell
|
||||||
aqt install-qt --outputdir "C:\Qt" windows desktop 6.7.0 win64_msvc2019_64 -m qtwebengine qtimageformats qtpositioning qtserialport qtwebchannel qtwebsockets
|
# you can also use -m all to install all modules
|
||||||
|
aqt install-qt --outputdir "C:\Qt" windows desktop ${QT_VERSION} win64_msvc2022_64 `
|
||||||
|
-m qtwebengine qtimageformats qtpositioning qtserialport qtwebchannel qtwebsockets
|
||||||
```
|
```
|
||||||
|
|
||||||
### Qt - Manual installation
|
#### Manual installation
|
||||||
- Install Qt 6.7.0 ([Installer](https://download.qt.io/official_releases/online_installers/qt-unified-windows-x64-online.exe)) and select these components:
|
|
||||||
- MSVC 2019 64-bit
|
- Install Qt ([Installer](https://download.qt.io/official_releases/online_installers/qt-unified-windows-x64-online.exe)) and select these components:
|
||||||
|
- MSVC 2022 64-bit
|
||||||
- Additional Libraries:
|
- Additional Libraries:
|
||||||
- Qt WebEngine (display nexus pages)
|
- Qt WebEngine (display nexus pages)
|
||||||
- Qt Image Formats (display images in image tab and preview)
|
- Qt Image Formats (display images in image tab and preview)
|
||||||
@@ -70,12 +76,15 @@ aqt install-qt --outputdir "C:\Qt" windows desktop 6.7.0 win64_msvc2019_64 -m qt
|
|||||||
- Qt Debug Files
|
- Qt Debug Files
|
||||||
|
|
||||||
### Visual Studio
|
### Visual Studio
|
||||||
|
|
||||||
- Install Visual Studio 2022 ([Installer](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false))
|
- Install Visual Studio 2022 ([Installer](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false))
|
||||||
|
|
||||||
- Desktop development with C++
|
- Desktop development with C++
|
||||||
- Desktop .NET desktop development (needed by OMOD and FOMOD installers)
|
- Desktop .NET desktop development (needed by OMOD and FOMOD installers)
|
||||||
- Individual Components:
|
- Individual Components:
|
||||||
- .Net Framework 4.8 SDK
|
- .Net Framework 4.8 SDK
|
||||||
- .Net Framework 4.7.2 targeting pack (OMOD targets 4.8 but VS still requires the package for other .Net components)
|
- .Net Framework 4.7.2 targeting pack (OMOD targets 4.8 but VS still requires
|
||||||
|
the package for other .Net components)
|
||||||
- Windows Universal C Runtime
|
- Windows Universal C Runtime
|
||||||
- C++ ATL for latest v143 build Tools (x86 & x64)
|
- C++ ATL for latest v143 build Tools (x86 & x64)
|
||||||
- C++ /CLI support for v143 build Tools (Latest) (for OMOD and FOMOD installers)
|
- C++ /CLI support for v143 build Tools (Latest) (for OMOD and FOMOD installers)
|
||||||
@@ -85,44 +94,62 @@ aqt install-qt --outputdir "C:\Qt" windows desktop 6.7.0 win64_msvc2019_64 -m qt
|
|||||||
- CMake tools for Windows (Skip if you have this already installed outside of the VS installer)
|
- CMake tools for Windows (Skip if you have this already installed outside of the VS installer)
|
||||||
|
|
||||||
## Setting up MOB
|
## Setting up MOB
|
||||||
- Open a shell. If you've installed Git or CMake through the VS installer, they won't be on your PATH, so you must use x64 Native Tools Command Prompt for VS 2022.- Pick a folder to develop MO2 in, for these steps it'll be `C:\dev`
|
|
||||||
- Execute these commands
|
|
||||||
```powershell
|
```powershell
|
||||||
mkdir C:\dev
|
mkdir C:\dev
|
||||||
cd C:\dev
|
cd C:\dev
|
||||||
|
|
||||||
|
# close this repository
|
||||||
git clone https://github.com/ModOrganizer2/mob
|
git clone https://github.com/ModOrganizer2/mob
|
||||||
|
|
||||||
|
# build mob itself - this will create mob.exe in the current directory
|
||||||
./bootstrap.ps1
|
./bootstrap.ps1
|
||||||
|
|
||||||
|
# build MO2 itself - this will take a LONG time
|
||||||
mob -d C:\dev\modorganizer build
|
mob -d C:\dev\modorganizer build
|
||||||
```
|
```
|
||||||
- Once `mob` is finished, everything will be in `C:\dev\modorganizer`. Mod Organizer can be run from `install\bin\ModOrganizer.exe`. The Visual Studio solution for Mod Organizer itself is `build\modorganizer_super\modorganizer\vsbuild\organizer.sln`.
|
|
||||||
|
|
||||||
### Prebuilts
|
|
||||||
Some third-parties are not normally built from source, but this can be changed in the options by setting the various tasks in `[prebuilt]` to `false`. If OpenSSL is built from source, perl is required ([Strawberry Perl 5.30.2.1 installer](http://strawberryperl.com/download/5.30.2.1/strawberry-perl-5.30.2.1-64bit.msi)).
|
|
||||||
|
|
||||||
|
Once `mob` is finished, everything will be in `C:\dev\modorganizer`.
|
||||||
|
Mod Organizer can be run from `install\bin\ModOrganizer.exe`.
|
||||||
|
The Visual Studio solution for Mod Organizer itself is `build\modorganizer_super\modorganizer\vsbuild\organizer.sln`.
|
||||||
|
|
||||||
## Changing options
|
## Changing options
|
||||||
`mob` has two ways of setting options: from INI files, the `MOBINI` environment variable, or from the command line.
|
|
||||||
|
|
||||||
### INI files
|
`mob` has two ways of setting options: from INI files, the `MOBINI` environment
|
||||||
`mob` builds a list of available INI files in order of priority. Higher numbers override lower numbers:
|
variable, or from the command line.
|
||||||
|
|
||||||
|
### OVerride options using INI files
|
||||||
|
|
||||||
|
`mob` builds a list of available INI files in order of priority. Higher numbers
|
||||||
|
override lower numbers:
|
||||||
|
|
||||||
1) The master INI `mob.ini` in the directory where `mob.exe` lives (required).
|
1) The master INI `mob.ini` in the directory where `mob.exe` lives (required).
|
||||||
2) Any files set in `MOBINI` (separated by semicolons).
|
2) Any files set in `MOBINI` (separated by semicolons).
|
||||||
3) Another `mob.ini` in the current directory.
|
3) Another `mob.ini` in the current directory.
|
||||||
4) Files given with `--ini`.
|
4) Files given with `--ini`.
|
||||||
|
|
||||||
Use `mob inis` to see the list of INI files in order. If `--no-default-inis` is given, `mob` will skip 1) and 2). The first INI it finds after that is considered the master.
|
Use `mob inis` to see the list of INI files in order. If `--no-default-inis` is given,
|
||||||
|
`mob` will skip 1) and 2). The first INI it finds after that is considered the master.
|
||||||
|
|
||||||
### Command line
|
### Override options using command line
|
||||||
Any option can be overridden from the command like with `-s task:section/key=value`, where `task:` is optional. Some options have shortcuts, such as `--dry` for `-s global/dry=true` and `-l5` for `-s global:output_log_level=5`. See `mob options` for the list of options.
|
|
||||||
|
Any option can be overridden from the command like with `-s task:section/key=value`,
|
||||||
|
where `task:` is optional. Some options have shortcuts, such as `--dry`
|
||||||
|
for `-s global/dry=true` and `-l5` for `-s global:output_log_level=5`.
|
||||||
|
See `mob options` for the list of options.
|
||||||
|
|
||||||
### INI format
|
### INI format
|
||||||
Inside the INI file are `[sections]` and `key = value` pairs. The `[task]` section is special because it can be changed for specific tasks instead of globally. Any value under a `[task_name:task]` section will only apply to a task named `task_name`. The list of available tasks can be seen with `mob list`. See [Task names](#task-names).
|
|
||||||
|
|
||||||
|
Inside the INI file are `[sections]` and `key = value` pairs. The `[task]` section is
|
||||||
|
special because it can be changed for specific tasks instead of globally.
|
||||||
|
Any value under a `[task_name:task]` section will only apply to a task
|
||||||
|
named `task_name`. The list of available tasks can be seen with `mob list`.
|
||||||
|
See [Task names](#task-names).
|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|
||||||
### `[global]`
|
### `[global]`
|
||||||
|
|
||||||
| Option | Type | Description |
|
| Option | Type | Description |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `dry` | bool | Whether filesystem operations are simulated. Note that many operations will fail and that the build process will most probably not complete. This is mostly useful to get a dump of the options. |
|
| `dry` | bool | Whether filesystem operations are simulated. Note that many operations will fail and that the build process will most probably not complete. This is mostly useful to get a dump of the options. |
|
||||||
@@ -133,12 +160,13 @@ Inside the INI file are `[sections]` and `key = value` pairs. The `[task]` secti
|
|||||||
| `clean_task` | bool | For `build`, whether tasks are cleaned. |
|
| `clean_task` | bool | For `build`, whether tasks are cleaned. |
|
||||||
| `fetch_task` | bool | For `build`, whether tasks are fetched (download, git, etc.) |
|
| `fetch_task` | bool | For `build`, whether tasks are fetched (download, git, etc.) |
|
||||||
| `build_task` | bool | For `build`, whether tasks are built (msbuild, jobm etc.) |
|
| `build_task` | bool | For `build`, whether tasks are built (msbuild, jobm etc.) |
|
||||||
| `output_log_level` | [0-6]| The log level for stdout: 0=silent, 1=errors, 2=warnings, 3=info (default), 4=debug, 5=trace, 6=dump. Note that 6 will dump _a lot_ of stuff, such as debug information from curl during downloads.
|
| `output_log_level` | [0-6]| The log level for stdout: 0=silent, 1=errors, 2=warnings, 3=info (default), 4=debug, 5=trace, 6=dump. Note that 6 will dump _a lot_ of stuff, such as debug information from curl during downloads. |
|
||||||
| `file_log_level` | [0-6]| The log level for the log file. |
|
| `file_log_level` | [0-6]| The log level for the log file. |
|
||||||
| `log_file` | path | The path to a log file. |
|
| `log_file` | path | The path to a log file. |
|
||||||
| `ignore_uncommitted` | bool | When `--redownload` or `--reextract` is given, directories controlled by git will be deleted even if they contain uncommitted changes.|
|
| `ignore_uncommitted` | bool | When `--redownload` or `--reextract` is given, directories controlled by git will be deleted even if they contain uncommitted changes.|
|
||||||
|
|
||||||
### `[task]`
|
### `[task]`
|
||||||
|
|
||||||
Options for individual tasks. Can be `[task_name:task]`, where `task_name` is the name of a task (see `mob list`) , `super` for all MO tasks or a glob like `installer_*`.
|
Options for individual tasks. Can be `[task_name:task]`, where `task_name` is the name of a task (see `mob list`) , `super` for all MO tasks or a glob like `installer_*`.
|
||||||
|
|
||||||
| Option | Type | Description |
|
| Option | Type | Description |
|
||||||
@@ -147,20 +175,21 @@ Options for individual tasks. Can be `[task_name:task]`, where `task_name` is th
|
|||||||
| `configuration` | enum | Which configuration to build, should be one of Debug, Release or RelWithDebInfo with RelWithDebInfo being the default.|
|
| `configuration` | enum | Which configuration to build, should be one of Debug, Release or RelWithDebInfo with RelWithDebInfo being the default.|
|
||||||
|
|
||||||
#### Common git options
|
#### Common git options
|
||||||
|
|
||||||
Unless otherwise stated, applies to any task that is a git repo.
|
Unless otherwise stated, applies to any task that is a git repo.
|
||||||
|
|
||||||
| Option | Type | Description |
|
| Option | Type | Description |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `mo_org` | string | The organisation name when pulling from Github. Only applies to ModOrganizer projects, plus NCC and usvfs. |
|
| `mo_org` | string | The organisation name when pulling from Github. Only applies to ModOrganizer projects, plus NCC and usvfs. |
|
||||||
| `mo_branch` | string | The branch name when pulling from Github. Only applies to ModOrganizer projects, plus NCC and usvfs. |
|
| `mo_branch` | string | The branch name when pulling from Github. Only applies to ModOrganizer projects, plus NCC and usvfs. |
|
||||||
| `mo_master` | string | The fallback branch name when pulling from Github. Only applies to ModOrganizer projects, plus NCC and usvfs.
|
| `mo_master` | string | The fallback branch name when pulling from Github. Only applies to ModOrganizer projects, plus NCC and usvfs. This branch is used when `mo_branch` does not exists. If this value is empty, the fallback mechanism is disabled (default behavior). |
|
||||||
This branch is used when `mo_branch` does not exists. If this value is empty, the fallback mechanism is disabled (default behavior). |
|
|
||||||
| `no_pull` | bool | If a repo is already cloned, a `git pull` will be done on it every time `mob build` is run. Set to `false` to never pull and build with whatever is in there. |
|
| `no_pull` | bool | If a repo is already cloned, a `git pull` will be done on it every time `mob build` is run. Set to `false` to never pull and build with whatever is in there. |
|
||||||
| `ignore_ts` | bool | Marks all the `.ts` files in a repo with `--assume-unchanged`. Note that `mob git ignore-ts off` can be used to revert it. |
|
| `ignore_ts` | bool | Marks all the `.ts` files in a repo with `--assume-unchanged`. Note that `mob git ignore-ts off` can be used to revert it. |
|
||||||
| `git_url_prefix` | string | When cloning a repo, the URL will be `$(git_url_prefix)mo_org/repo.git`. |
|
| `git_url_prefix` | string | When cloning a repo, the URL will be `$(git_url_prefix)mo_org/repo.git`. |
|
||||||
| `git_shallow` | bool | When true, clones with `--depth 1` to avoid having to fetch all the history. Defaults to true for third-parties. |
|
| `git_shallow` | bool | When true, clones with `--depth 1` to avoid having to fetch all the history. Defaults to true for third-parties. |
|
||||||
|
|
||||||
#### Git credentials
|
#### Git credentials
|
||||||
|
|
||||||
These are used to set `user.name` and `user.email`. Applies to any task that is a git repo.
|
These are used to set `user.name` and `user.email`. Applies to any task that is a git repo.
|
||||||
|
|
||||||
| Option | Type | Description |
|
| Option | Type | Description |
|
||||||
@@ -169,7 +198,9 @@ These are used to set `user.name` and `user.email`. Applies to any task that is
|
|||||||
| `git_email` | string | Email |
|
| `git_email` | string | Email |
|
||||||
|
|
||||||
#### Origin and upstream remotes
|
#### Origin and upstream remotes
|
||||||
|
|
||||||
When `git` clones, it automatically creates a remote named `origin` for the URL that was cloned. When `set_origin_remote` is `true`, this will:
|
When `git` clones, it automatically creates a remote named `origin` for the URL that was cloned. When `set_origin_remote` is `true`, this will:
|
||||||
|
|
||||||
1) Rename `origin` to `upstream`, and
|
1) Rename `origin` to `upstream`, and
|
||||||
2) Create a new `origin` with the given parameters.
|
2) Create a new `origin` with the given parameters.
|
||||||
|
|
||||||
@@ -183,7 +214,7 @@ When `git` clones, it automatically creates a remote named `origin` for the URL
|
|||||||
|
|
||||||
For example, this will create an `origin` remote for all ModOrganizer2 projects and mark all `.ts` files as `--assume-unchanged`.
|
For example, this will create an `origin` remote for all ModOrganizer2 projects and mark all `.ts` files as `--assume-unchanged`.
|
||||||
|
|
||||||
```
|
```ini
|
||||||
[super:task]
|
[super:task]
|
||||||
ignore_ts = true
|
ignore_ts = true
|
||||||
git_username = isanae
|
git_username = isanae
|
||||||
@@ -196,21 +227,22 @@ remote_push_default_origin = true
|
|||||||
```
|
```
|
||||||
|
|
||||||
### `[tools]`
|
### `[tools]`
|
||||||
|
|
||||||
The various tools in this section are used verbatim when creating processes and so will be looked in the `PATH` environment variable. `vcvars` is best left empty, it will be found using the `vswhere.exe` that's bundled as a third-party.
|
The various tools in this section are used verbatim when creating processes and so will be looked in the `PATH` environment variable. `vcvars` is best left empty, it will be found using the `vswhere.exe` that's bundled as a third-party.
|
||||||
|
|
||||||
### `[prebuilt]`
|
|
||||||
Some tasks can use prebuilt binaries instead of building from source.
|
|
||||||
|
|
||||||
### `[versions]`
|
### `[versions]`
|
||||||
|
|
||||||
The versions for all the tasks.
|
The versions for all the tasks.
|
||||||
|
|
||||||
### `[paths]`
|
### `[paths]`
|
||||||
|
|
||||||
The only path that's required is `prefix`, which is where `mob` will put everything. Within this directory will be `build/`, `downloads/` and `install/`. Everything else is derived from it.
|
The only path that's required is `prefix`, which is where `mob` will put everything. Within this directory will be `build/`, `downloads/` and `install/`. Everything else is derived from it.
|
||||||
|
|
||||||
If `mob` is unable to find the Qt installation directory, it can be specified in `qt_install`. This directory should contain `bin/`, `include/`, etc. It's typically something like `C:\Qt\6.5.1\msvc2019_64\`. The other path `qt_bin` will be derived from it, it's just `$qt_install/bin/`.
|
If `mob` is unable to find the Qt installation directory, it can be specified in `qt_install`. This directory should contain `bin/`, `include/`, etc.
|
||||||
|
It's typically something like `C:\Qt\6.7.3\msvc2022_64\`. The other path `qt_bin` will be derived from it, it's just `$qt_install/bin/`.
|
||||||
|
|
||||||
## Command line
|
## Command line
|
||||||
|
|
||||||
Do `mob --help` for global options and the list of available commands. Do `mob <command> --help` for more help about a command.
|
Do `mob --help` for global options and the list of available commands. Do `mob <command> --help` for more help about a command.
|
||||||
|
|
||||||
To use global options with command options, ensure command options are together, with no global options in the middle.
|
To use global options with command options, ensure command options are together, with no global options in the middle.
|
||||||
@@ -219,15 +251,15 @@ To use global options with command options, ensure command options are together,
|
|||||||
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `--ini` | Adds an INI file, see [INI files](#ini-files). |
|
| `--ini` | Adds an INI file, see [INI files](#override-options-using-ini-files). |
|
||||||
| `--dry` | Simulates filesystem operations. Note that many operations will fail and that the build process will stop with errors. This is mostly useful to get a dump of the options. |
|
| `--dry` | Simulates filesystem operations. Note that many operations will fail and that the build process will stop with errors. This is mostly useful to get a dump of the options. |
|
||||||
| `-log-level` | The log level for stdout: 0=silent, 1=errors, 2=warnings, 3=info (default), 4=debug, 5=trace, 6=dump. Note that 6 will dump _a lot_ of stuff, such as debug information from curl during downloads.
|
| `-log-level` | The log level for stdout: 0=silent, 1=errors, 2=warnings, 3=info (default), 4=debug, 5=trace, 6=dump. Note that 6 will dump _a lot_ of stuff, such as debug information from curl during downloads. |
|
||||||
| `--destination` | The build directory where `mob` will put everything.
|
| `--destination` | The build directory where `mob` will put everything. |
|
||||||
| `--set` | Sets an option: `-s task:section/key=value`.
|
| `--set` | Sets an option: `-s task:section/key=value`. |
|
||||||
| `--no-default-inis` | Does not auto detect INI files, only uses `--ini`. |
|
| `--no-default-inis` | Does not auto detect INI files, only uses `--ini`. |
|
||||||
|
|
||||||
|
|
||||||
### `build`
|
### `build`
|
||||||
|
|
||||||
Builds tasks. The order in which tasks have to be built is handled by `mob`, but dependencies will not be built automatically when specifying tasks manually. That is, `mob build` will build `python` before `pyqt`, but `mob build pyqt` will not build `python`. Many tasks will be able to run in parallel, but not all, either because they hog the CPU (such as `usvfs`) or because they have dependencies that have to be built first.
|
Builds tasks. The order in which tasks have to be built is handled by `mob`, but dependencies will not be built automatically when specifying tasks manually. That is, `mob build` will build `python` before `pyqt`, but `mob build pyqt` will not build `python`. Many tasks will be able to run in parallel, but not all, either because they hog the CPU (such as `usvfs`) or because they have dependencies that have to be built first.
|
||||||
|
|
||||||
If any task fails to build, all the active tasks are aborted as quickly as possible.
|
If any task fails to build, all the active tasks are aborted as quickly as possible.
|
||||||
@@ -236,7 +268,7 @@ If any task fails to build, all the active tasks are aborted as quickly as possi
|
|||||||
|
|
||||||
Each task has a name, some have more. MO tasks for example have a full name that corresponds to their git repo (such as `modorganizer-game_features`) and a shorter name (such as `game_features`). Both can be used interchangeably. The task name can also be `super`, which refers to all repos hosted on the Mod Organizer Github account, minus `libbsarch`, `usvfs` and `NexusClientCli`. Globs can be used, like `installer_*`. See `mob list` for a list of all available tasks.
|
Each task has a name, some have more. MO tasks for example have a full name that corresponds to their git repo (such as `modorganizer-game_features`) and a shorter name (such as `game_features`). Both can be used interchangeably. The task name can also be `super`, which refers to all repos hosted on the Mod Organizer Github account, minus `libbsarch`, `usvfs` and `NexusClientCli`. Globs can be used, like `installer_*`. See `mob list` for a list of all available tasks.
|
||||||
|
|
||||||
#### Options
|
#### Options for `build`
|
||||||
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
@@ -245,75 +277,78 @@ Each task has a name, some have more. MO tasks for example have a full name that
|
|||||||
| `--reconfigure` | Reconfigures the task by running cmake, configure scripts, etc. Some tasks might have to delete the whole source directory. |
|
| `--reconfigure` | Reconfigures the task by running cmake, configure scripts, etc. Some tasks might have to delete the whole source directory. |
|
||||||
| `--rebuild` | Cleans and rebuilds projects. Some tasks might have to delete the whole source directory |
|
| `--rebuild` | Cleans and rebuilds projects. Some tasks might have to delete the whole source directory |
|
||||||
| `--new` | Implies all the four flags above. |
|
| `--new` | Implies all the four flags above. |
|
||||||
| `--clean-task`,<br>`--no-clean-task` | Sets whether tasks are cleaned. With `--no-clean-task`, the flags above are ignored. |
|
| `--clean-task`, `--no-clean-task` | Sets whether tasks are cleaned. With `--no-clean-task`, the flags above are ignored. |
|
||||||
| `--fetch-task`,<br>`--no-fetch-task` | Sets whether tasks are fetched. With `--no-fetch-task`, nothing is downloaded, extracted, cloned or pulled. |
|
| `--fetch-task`, `--no-fetch-task` | Sets whether tasks are fetched. With `--no-fetch-task`, nothing is downloaded, extracted, cloned or pulled. |
|
||||||
| `--build-task`,<br>`--no-build-task` | Sets whether tasks are built. With `--no-build-task`, nothing is ever built or installed. |
|
| `--build-task`, `--no-build-task` | Sets whether tasks are built. With `--no-build-task`, nothing is ever built or installed. |
|
||||||
| `--pull`,<br>`--no-pull` | For repos that are controlled by git, whether to pull repos that are already cloned. With `--no-pull`, once a repo is cloned, it is never updated automatically. |
|
| `--pull`, `--no-pull` | For repos that are controlled by git, whether to pull repos that are already cloned. With `--no-pull`, once a repo is cloned, it is never updated automatically. |
|
||||||
| `--revert-ts`,<br>`--no-revert-ts` | Most projects will generate `.ts` files for translations. These files are typically not committed to Github and so will often conflict when trying to pull. With `--revert-ts`, any `.ts` file is reverted before pulling. |
|
| `--revert-ts`, `--no-revert-ts` | Most projects will generate `.ts` files for translations. These files are typically not committed to Github and so will often conflict when trying to pull. With `--revert-ts`, any `.ts` file is reverted before pulling. |
|
||||||
| `--ignore-uncommitted-changes` | With `--reextract`, ignores repos that have uncommitted changes and deletes the directory without confirmation. |
|
| `--ignore-uncommitted-changes` | With `--reextract`, ignores repos that have uncommitted changes and deletes the directory without confirmation. |
|
||||||
| `--keep-msbuild` | `mob` starts a lot of `msbuild.exe` processes, some of which hold locks on the build directory. Because that's pretty darn annoying, `mob` will kill all `msbuild.exe` processes when it finished, unless this flag is given. |
|
| `--keep-msbuild` | `mob` starts a lot of `msbuild.exe` processes, some of which hold locks on the build directory. Because that's pretty darn annoying, `mob` will kill all `msbuild.exe` processes when it finished, unless this flag is given. |
|
||||||
| `<task>...` | List of tasks to run, see [Task names](#task-names). |
|
| `<task>...` | List of tasks to run, see [Task names](#task-names). |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### `list`
|
### `list`
|
||||||
|
|
||||||
Lists all the available task names. If a task has multiple names, they are all shown, separated by a comma.
|
Lists all the available task names. If a task has multiple names, they are all shown, separated by a comma.
|
||||||
|
|
||||||
#### Options
|
#### Options for `list`
|
||||||
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `--all` | Shows a task tree to see which are built in parallel. |
|
| `--all` | Shows a task tree to see which are built in parallel. |
|
||||||
| `<task>...` | This is the same list of tasks that can be given in the `build` command. With `--all`, this will only show the tasks that would be built. |
|
| `<task>...` | This is the same list of tasks that can be given in the `build` command. With `--all`, this will only show the tasks that would be built. |
|
||||||
|
|
||||||
|
|
||||||
### `options`
|
### `options`
|
||||||
|
|
||||||
Lists all the options after parsing the INIs and the command line.
|
Lists all the options after parsing the INIs and the command line.
|
||||||
|
|
||||||
|
|
||||||
### `release`
|
### `release`
|
||||||
|
|
||||||
Creates a release in `prefix/releases`. Only supports devbuilds for now. A release is made out of three archives:
|
Creates a release in `prefix/releases`. Only supports devbuilds for now. A release is made out of three archives:
|
||||||
|
|
||||||
- Binaries from `prefix/install/bin`;
|
- Binaries from `prefix/install/bin`;
|
||||||
- PDBs from `prefix/install/pdb`;
|
- PDBs from `prefix/install/pdb`;
|
||||||
- Sources from various directories in `prefix/build`.
|
- Sources from various directories in `prefix/build`.
|
||||||
|
|
||||||
The archive filename is `Mod.Organizer-version-suffix-what.7z`, where:
|
The archive filename is `Mod.Organizer-version-suffix-what.7z`, where:
|
||||||
|
|
||||||
- `version` is taken from `ModOrganizer.exe`, `version.rc` or from `--version`;
|
- `version` is taken from `ModOrganizer.exe`, `version.rc` or from `--version`;
|
||||||
- `suffix` is the optional `--suffix` argument;
|
- `suffix` is the optional `--suffix` argument;
|
||||||
- `what` is either nothing, `src` or `pdbs`.
|
- `what` is either nothing, `src` or `pdbs`.
|
||||||
|
|
||||||
|
#### Options for `release`
|
||||||
|
|
||||||
|
|
||||||
#### Options
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `--bin`,<br>`--no-bin` | Whether the binary archive is created [default: yes] |
|
| `--bin`, `--no-bin` | Whether the binary archive is created [default: yes] |
|
||||||
| `--pdbs`,<br>`--no-pdbs` | Whether the PDBs archive is created [default: yes] |
|
| `--pdbs`, `--no-pdbs` | Whether the PDBs archive is created [default: yes] |
|
||||||
| `--src`,<br>`--no-src` | Whether the source archive is created [default: yes] |
|
| `--src`,, `--no-src` | Whether the source archive is created [default: yes] |
|
||||||
| `--version-from-exe` | Retrieves version information from ModOrganizer.exe [default] |
|
| `--version-from-exe` | Retrieves version information from ModOrganizer.exe [default] |
|
||||||
| `--version-from-rc` | Retrieves version information from `modorganizer/src/version.rc` |
|
| `--version-from-rc` | Retrieves version information from `modorganizer/src/version.rc` |
|
||||||
| `--rc <PATH>` | Overrides the path to `version.rc` |
|
| `--rc <PATH>` | Overrides the path to `version.rc` |
|
||||||
| `--version <VERSION>` | Overrides the version string, ignores `--version-from-exe` and `--version-from-rc` |
|
| `--version <VERSION>` | Overrides the version string, ignores `--version-from-exe` and `--version-from-rc` |
|
||||||
| `--output-dir <PATH>` | Sets the output directory to use instead of `prefix/releases` |
|
| `--output-dir <PATH>` | Sets the output directory to use instead of `prefix/releases` |
|
||||||
| `--suffix <SUFFIX>` | Optional suffix to add to the archive filenames
|
| `--suffix <SUFFIX>` | Optional suffix to add to the archive filenames. |
|
||||||
| `--force` | `mob` will refuse to create a source archive over 20MB because it would probably be incorrect. This ignores the file size warnings and creates the archive regardless of its size. |
|
| `--force` | `mob` will refuse to create a source archive over 20MB because it would probably be incorrect. This ignores the file size warnings and creates the archive regardless of its size. |
|
||||||
|
|
||||||
|
|
||||||
### `git`
|
### `git`
|
||||||
|
|
||||||
Various commands to manage the git repos. Includes `usvfs`, `NexusClientCli` and all the projects under `modorganizer_super`.
|
Various commands to manage the git repos. Includes `usvfs`, `NexusClientCli` and all the projects under `modorganizer_super`.
|
||||||
|
|
||||||
#### `set-remotes`
|
#### `set-remotes`
|
||||||
|
|
||||||
Does the same thing as the when `set_origin_remotes` is set in the INI: renames `origin` to `upstream` and adds a new `origin` with the options below. See [Origin and upstream remotes](#origin-and-upstream-remotes).
|
Does the same thing as the when `set_origin_remotes` is set in the INI: renames `origin` to `upstream` and adds a new `origin` with the options below. See [Origin and upstream remotes](#origin-and-upstream-remotes).
|
||||||
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `--username <USERNAME>` | Git username |
|
| `--username <USERNAME>` | Git username. |
|
||||||
| `--email <EMAIL>` | Git email |
|
| `--email <EMAIL>` | Git email. |
|
||||||
| `--key <PATH>` | Path to a putty key |
|
| `--key <PATH>` | Path to a putty key. |
|
||||||
| `--no-push` | Disables pushing to `upstream` by changing the push url to `nopushurl` to avoid accidental pushes |
|
| `--no-push` | Disables pushing to `upstream` by changing the push url to `nopushurl` to avoid accidental pushes. |
|
||||||
| `--push-origin` | Sets the new `origin` remote as the default push target
|
| `--push-origin` | Sets the new `origin` remote as the default push target. |
|
||||||
| `<path>` | Only use this repo instead of going through all of them |
|
| `<path>` | Only use this repo instead of going through all of them. |
|
||||||
|
|
||||||
#### `add-remote`
|
#### `add-remote`
|
||||||
|
|
||||||
Simply adds a new remote with the given parameters to all the git repos.
|
Simply adds a new remote with the given parameters to all the git repos.
|
||||||
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
@@ -324,31 +359,22 @@ Simply adds a new remote with the given parameters to all the git repos.
|
|||||||
| `--push-origin` | Sets this new remote as the default push target |
|
| `--push-origin` | Sets this new remote as the default push target |
|
||||||
| `<path>` | Only use this repo instead of going through all of them |
|
| `<path>` | Only use this repo instead of going through all of them |
|
||||||
|
|
||||||
|
### `cmake-config`
|
||||||
|
|
||||||
### `cmake`
|
The `cmake-config` command can display the `CMAKE_INSTALL_PREFIX` and
|
||||||
Runs `cmake` in a directory, as if `mob` had done it as part of the build process for a `modorganizer` project. The `cmake` invocation will contain all variables required for `cmake_common` to work.
|
`CMAKE_PREFIX_PATH` variable using by `mob` itself when building so that you can run
|
||||||
|
your own `cmake`.
|
||||||
|
|
||||||
By default, this runs:
|
Below is a typical use of the command:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# configure the current project with preset vs2022-windows using mob PATH
|
||||||
|
cmake --preset vs2022-windows `
|
||||||
|
("-DCMAKE_INSTALL_PREFIX=" + (mob cmake-config install-prefix)) `
|
||||||
|
("-DCMAKE_PREFIX_PATH=" + (mob cmake-config prefix-path))
|
||||||
```
|
```
|
||||||
cmake
|
|
||||||
-G "Visual Studio version year"
|
|
||||||
-A x64
|
|
||||||
-DCMAKE_BUILD_TYPE=Release
|
|
||||||
-DCMAKE_INSTALL_MESSAGE=NEVER
|
|
||||||
<all defines>
|
|
||||||
--log-level=ERROR
|
|
||||||
--no-warn-unused-cli
|
|
||||||
..
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Options
|
|
||||||
| Option | Description |
|
|
||||||
| --- | --- |
|
|
||||||
| `--generator <GEN>` | Sets the `-G` option |
|
|
||||||
| `--cmd` | Sets the last bit of the command, defaults to `..` |
|
|
||||||
| `--x86`, `--x64` | Whether to use the 32-bit or 64-bit vcvars. If `--generator` is not given, also sets `-A`. |
|
|
||||||
| `--install-prefix <PATH>` | Passes `-DCMAKE_INSTALL_PREFIX=<path>` to cmake |
|
|
||||||
|
|
||||||
|
|
||||||
### `inis`
|
### `inis`
|
||||||
Shows a list of the all the INIs that would be loaded, in order of priority. See [INI files](#ini-files).
|
|
||||||
|
Shows a list of the all the INIs that would be loaded, in order of priority.
|
||||||
|
See [INI files](#override-options-using-ini-files).
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ file(GLOB_RECURSE source_files *.cpp)
|
|||||||
file(GLOB_RECURSE header_files *.h)
|
file(GLOB_RECURSE header_files *.h)
|
||||||
|
|
||||||
add_executable(mob ${source_files} ${header_files})
|
add_executable(mob ${source_files} ${header_files})
|
||||||
set_target_properties(mob PROPERTIES CXX_STANDARD 20)
|
set_target_properties(mob PROPERTIES CXX_STANDARD 23)
|
||||||
|
|
||||||
target_compile_definitions(mob PUBLIC NOMINMAX)
|
target_compile_definitions(mob PUBLIC NOMINMAX)
|
||||||
target_compile_options(mob PUBLIC "/MT")
|
target_compile_options(mob PUBLIC "/MT")
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
#include "pch.h"
|
|
||||||
#include "../tasks/tasks.h"
|
|
||||||
#include "commands.h"
|
|
||||||
|
|
||||||
namespace mob {
|
|
||||||
|
|
||||||
cmake_command::cmake_command() : command(requires_options) {}
|
|
||||||
|
|
||||||
command::meta_t cmake_command::meta() const
|
|
||||||
{
|
|
||||||
return {"cmake", "runs cmake in a directory"};
|
|
||||||
}
|
|
||||||
|
|
||||||
clipp::group cmake_command::do_group()
|
|
||||||
{
|
|
||||||
return clipp::group(
|
|
||||||
clipp::command("cmake").set(picked_),
|
|
||||||
|
|
||||||
(clipp::option("-h", "--help") >> help_) % "shows this message",
|
|
||||||
|
|
||||||
(clipp::option("-G", "--generator") & clipp::value("GEN") >> gen_) %
|
|
||||||
("sets the -G option for cmake [default: VS]"),
|
|
||||||
|
|
||||||
(clipp::option("-c", "--cmd") & clipp::value("CMD") >> cmd_) %
|
|
||||||
"overrides the cmake command line [default: \"..\"]",
|
|
||||||
|
|
||||||
(clipp::option("--x64").set(x64_, true) |
|
|
||||||
clipp::option("--x86").set(x64_, false)) %
|
|
||||||
"whether to use the x64 or x86 vcvars; if -G is not set, "
|
|
||||||
"whether to pass \"-A Win32\" or \"-A x64\" for the default "
|
|
||||||
"VS generator [default: x64]",
|
|
||||||
|
|
||||||
(clipp::option("--install-prefix") & clipp::value("PATH") >> prefix_) %
|
|
||||||
"sets CMAKE_INSTALL_PREFIX [default: empty]",
|
|
||||||
|
|
||||||
(clipp::option("-d", "--debug").set(debug_, true)) %
|
|
||||||
"whether to configure for debug mode [default: false]",
|
|
||||||
|
|
||||||
(clipp::value("PATH") >> path_) % "path from which to run `cmake`");
|
|
||||||
}
|
|
||||||
|
|
||||||
int cmake_command::do_run()
|
|
||||||
{
|
|
||||||
auto t = tasks::modorganizer::create_cmake_tool(
|
|
||||||
fs::path(utf8_to_utf16(path_)), mob::cmake::generate,
|
|
||||||
debug_ ? config::debug : config::relwithdebinfo);
|
|
||||||
|
|
||||||
t.generator(gen_);
|
|
||||||
t.cmd(cmd_);
|
|
||||||
t.prefix(prefix_);
|
|
||||||
t.output(path_);
|
|
||||||
|
|
||||||
if (!x64_)
|
|
||||||
t.architecture(arch::x86);
|
|
||||||
|
|
||||||
// copy the global context, the tool will modify it
|
|
||||||
context cxcopy(gcx());
|
|
||||||
|
|
||||||
t.run(cxcopy);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string cmake_command::do_doc()
|
|
||||||
{
|
|
||||||
return "Runs `cmake ..` in the given directory with the same command line\n"
|
|
||||||
"as the one used for modorganizer projects.";
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace mob
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
#include "../core/conf.h"
|
||||||
|
#include "../tasks/tasks.h"
|
||||||
|
|
||||||
|
#include "commands.h"
|
||||||
|
|
||||||
|
namespace mob {
|
||||||
|
|
||||||
|
cmake_config_command::cmake_config_command() : command(requires_options) {}
|
||||||
|
|
||||||
|
command::meta_t cmake_config_command::meta() const
|
||||||
|
{
|
||||||
|
return {"cmake-config", "print CMake configuration variables"};
|
||||||
|
}
|
||||||
|
|
||||||
|
clipp::group cmake_config_command::do_group()
|
||||||
|
{
|
||||||
|
return clipp::group(
|
||||||
|
clipp::command("cmake-config").set(picked_),
|
||||||
|
(clipp::option("-h", "--help") >> help_) % ("shows this message"),
|
||||||
|
clipp::command("prefix-path").set(var_, variable::prefix_path) |
|
||||||
|
clipp::command("install-prefix").set(var_, variable::install_prefix));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string cmake_config_command::do_doc()
|
||||||
|
{
|
||||||
|
return "Print CMake variables to be used when configuring projects.\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
int cmake_config_command::do_run()
|
||||||
|
{
|
||||||
|
switch (var_) {
|
||||||
|
case variable::prefix_path:
|
||||||
|
u8cout << tasks::modorganizer::cmake_prefix_path();
|
||||||
|
break;
|
||||||
|
case variable::install_prefix:
|
||||||
|
u8cout << conf().path().install().string();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} // namespace mob
|
||||||
+16
-23
@@ -281,7 +281,6 @@ namespace mob {
|
|||||||
void make_bin();
|
void make_bin();
|
||||||
void make_pdbs();
|
void make_pdbs();
|
||||||
void make_src();
|
void make_src();
|
||||||
void make_uibase();
|
|
||||||
void make_installer();
|
void make_installer();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -297,7 +296,6 @@ namespace mob {
|
|||||||
bool bin_ = true;
|
bool bin_ = true;
|
||||||
bool src_ = true;
|
bool src_ = true;
|
||||||
bool pdbs_ = true;
|
bool pdbs_ = true;
|
||||||
bool uibase_ = true;
|
|
||||||
bool installer_ = false;
|
bool installer_ = false;
|
||||||
std::string utf8out_;
|
std::string utf8out_;
|
||||||
fs::path out_;
|
fs::path out_;
|
||||||
@@ -367,27 +365,6 @@ namespace mob {
|
|||||||
std::vector<fs::path> get_repos() const;
|
std::vector<fs::path> get_repos() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
// runs cmake in a directory with the same parameters as `build` would
|
|
||||||
//
|
|
||||||
class cmake_command : public command {
|
|
||||||
public:
|
|
||||||
cmake_command();
|
|
||||||
meta_t meta() const override;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
clipp::group do_group() override;
|
|
||||||
int do_run() override;
|
|
||||||
std::string do_doc() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::string gen_;
|
|
||||||
std::string cmd_;
|
|
||||||
bool x64_ = true;
|
|
||||||
bool debug_ = false;
|
|
||||||
std::string prefix_;
|
|
||||||
std::string path_;
|
|
||||||
};
|
|
||||||
|
|
||||||
// lists the inis found by mob
|
// lists the inis found by mob
|
||||||
//
|
//
|
||||||
class inis_command : public command {
|
class inis_command : public command {
|
||||||
@@ -427,4 +404,20 @@ namespace mob {
|
|||||||
void do_build();
|
void do_build();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// print CMake configuration variables
|
||||||
|
//
|
||||||
|
class cmake_config_command : public command {
|
||||||
|
public:
|
||||||
|
cmake_config_command();
|
||||||
|
meta_t meta() const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
clipp::group do_group() override;
|
||||||
|
int do_run() override;
|
||||||
|
std::string do_doc() override;
|
||||||
|
|
||||||
|
enum class variable { prefix_path, install_prefix };
|
||||||
|
variable var_;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace mob
|
} // namespace mob
|
||||||
|
|||||||
+13
-31
@@ -44,9 +44,19 @@ namespace mob {
|
|||||||
u8cout << "making src archive " << path_to_utf8(out) << "\n";
|
u8cout << "making src archive " << path_to_utf8(out) << "\n";
|
||||||
|
|
||||||
const std::vector<std::string> ignore = {"\\..+", // dot files
|
const std::vector<std::string> ignore = {"\\..+", // dot files
|
||||||
".*\\.log", ".*\\.tlog", ".*\\.dll",
|
"explorer\\+\\+",
|
||||||
".*\\.exe", ".*\\.lib", ".*\\.obj",
|
"stylesheets",
|
||||||
".*\\.ts", ".*\\.aps", "vsbuild"};
|
"transifex-translations"
|
||||||
|
".*\\.log",
|
||||||
|
".*\\.tlog",
|
||||||
|
".*\\.dll",
|
||||||
|
".*\\.exe",
|
||||||
|
".*\\.lib",
|
||||||
|
".*\\.obj",
|
||||||
|
".*\\.ts",
|
||||||
|
".*\\.aps",
|
||||||
|
"(bin|lib)",
|
||||||
|
"vsbuild(32|64)?"};
|
||||||
|
|
||||||
const std::vector<std::regex> ignore_re(ignore.begin(), ignore.end());
|
const std::vector<std::regex> ignore_re(ignore.begin(), ignore.end());
|
||||||
|
|
||||||
@@ -77,25 +87,6 @@ namespace mob {
|
|||||||
op::archive_from_files(gcx(), files, tasks::modorganizer::super_path(), out);
|
op::archive_from_files(gcx(), files, tasks::modorganizer::super_path(), out);
|
||||||
}
|
}
|
||||||
|
|
||||||
void release_command::make_uibase()
|
|
||||||
{
|
|
||||||
const auto out = out_ / make_filename("uibase");
|
|
||||||
u8cout << "making uibase archive " << path_to_utf8(out) << "\n";
|
|
||||||
|
|
||||||
std::vector<fs::path> files;
|
|
||||||
|
|
||||||
if (!fs::exists(tasks::modorganizer::super_path())) {
|
|
||||||
gcx().bail_out(context::generic, "modorganizer super path not found: {}",
|
|
||||||
tasks::modorganizer::super_path());
|
|
||||||
}
|
|
||||||
|
|
||||||
op::archive_from_glob(
|
|
||||||
gcx(), tasks::modorganizer::super_path() / "uibase" / "src" / "*.h", out,
|
|
||||||
{});
|
|
||||||
op::archive_from_files(gcx(), {conf().path().install_libs() / "uibase.lib"},
|
|
||||||
conf().path().install_libs(), out);
|
|
||||||
}
|
|
||||||
|
|
||||||
void release_command::make_installer()
|
void release_command::make_installer()
|
||||||
{
|
{
|
||||||
const auto file = "Mod.Organizer-" + version_ + ".exe";
|
const auto file = "Mod.Organizer-" + version_ + ".exe";
|
||||||
@@ -178,11 +169,6 @@ namespace mob {
|
|||||||
clipp::option("--no-src").set(src_, false)) %
|
clipp::option("--no-src").set(src_, false)) %
|
||||||
"sets whether the source archive is created [default: yes]",
|
"sets whether the source archive is created [default: yes]",
|
||||||
|
|
||||||
//(
|
|
||||||
// clipp::option("--uibase").set(uibase_, true) |
|
|
||||||
// clipp::option("--no-uibase").set(uibase_, false)
|
|
||||||
//) % "sets whether the uibase archive is created [default: yes]",
|
|
||||||
|
|
||||||
(clipp::option("--inst").set(installer_, true) |
|
(clipp::option("--inst").set(installer_, true) |
|
||||||
clipp::option("--no-inst").set(installer_, false)) %
|
clipp::option("--no-inst").set(installer_, false)) %
|
||||||
"sets whether the installer is copied [default: no]",
|
"sets whether the installer is copied [default: no]",
|
||||||
@@ -271,9 +257,6 @@ namespace mob {
|
|||||||
if (src_)
|
if (src_)
|
||||||
make_src();
|
make_src();
|
||||||
|
|
||||||
if (uibase_)
|
|
||||||
make_uibase();
|
|
||||||
|
|
||||||
if (installer_)
|
if (installer_)
|
||||||
make_installer();
|
make_installer();
|
||||||
|
|
||||||
@@ -299,7 +282,6 @@ namespace mob {
|
|||||||
make_bin();
|
make_bin();
|
||||||
make_pdbs();
|
make_pdbs();
|
||||||
make_src();
|
make_src();
|
||||||
make_uibase();
|
|
||||||
make_installer();
|
make_installer();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
+25
-17
@@ -51,24 +51,32 @@ namespace mob::details {
|
|||||||
|
|
||||||
// returns a string from conf, bails out if it doesn't exist
|
// returns a string from conf, bails out if it doesn't exist
|
||||||
//
|
//
|
||||||
std::string get_string(std::string_view section, std::string_view key)
|
std::string get_string(std::string_view section, std::string_view key,
|
||||||
|
std::optional<std::string> default_)
|
||||||
{
|
{
|
||||||
auto sitor = g_conf.find(section);
|
auto sitor = g_conf.find(section);
|
||||||
if (sitor == g_conf.end())
|
if (sitor == g_conf.end())
|
||||||
gcx().bail_out(context::conf, "[{}] doesn't exist", section);
|
gcx().bail_out(context::conf, "[{}] doesn't exist", section);
|
||||||
|
|
||||||
auto kitor = sitor->second.find(key);
|
auto kitor = sitor->second.find(key);
|
||||||
if (kitor == sitor->second.end())
|
if (kitor == sitor->second.end()) {
|
||||||
|
if (!default_.has_value()) {
|
||||||
gcx().bail_out(context::conf, "no key '{}' in [{}]", key, section);
|
gcx().bail_out(context::conf, "no key '{}' in [{}]", key, section);
|
||||||
|
}
|
||||||
|
return *default_;
|
||||||
|
}
|
||||||
|
|
||||||
return kitor->second;
|
return kitor->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
// calls get_string(), converts to int
|
// calls get_string(), converts to int
|
||||||
//
|
//
|
||||||
int get_int(std::string_view section, std::string_view key)
|
int get_int(std::string_view section, std::string_view key,
|
||||||
|
std::optional<int> default_)
|
||||||
{
|
{
|
||||||
const auto s = get_string(section, key);
|
const auto s = get_string(section, key, default_.transform([](auto v) {
|
||||||
|
return std::to_string(v);
|
||||||
|
}));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return std::stoi(s);
|
return std::stoi(s);
|
||||||
@@ -80,9 +88,12 @@ namespace mob::details {
|
|||||||
|
|
||||||
// calls get_string(), converts to bool
|
// calls get_string(), converts to bool
|
||||||
//
|
//
|
||||||
bool get_bool(std::string_view section, std::string_view key)
|
bool get_bool(std::string_view section, std::string_view key,
|
||||||
|
std::optional<bool> default_)
|
||||||
{
|
{
|
||||||
const auto s = get_string(section, key);
|
const auto s = get_string(section, key, default_.transform([](auto v) {
|
||||||
|
return v ? "true" : "false";
|
||||||
|
}));
|
||||||
return bool_from_string(s);
|
return bool_from_string(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,14 +439,9 @@ namespace mob {
|
|||||||
|
|
||||||
MOB_ASSERT(!tasks.empty());
|
MOB_ASSERT(!tasks.empty());
|
||||||
|
|
||||||
for (auto& t : tasks) {
|
for (auto& t : tasks)
|
||||||
if (t->name() != task &&
|
|
||||||
details::find_string_for_task(t->name(), key)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
details::set_string_for_task(t->name(), key, value);
|
details::set_string_for_task(t->name(), key, value);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
// global task option
|
// global task option
|
||||||
|
|
||||||
@@ -509,9 +515,10 @@ namespace mob {
|
|||||||
set_path_if_empty("pf_x86", find_program_files_x86);
|
set_path_if_empty("pf_x86", find_program_files_x86);
|
||||||
set_path_if_empty("pf_x64", find_program_files_x64);
|
set_path_if_empty("pf_x64", find_program_files_x64);
|
||||||
set_path_if_empty("vs", find_vs);
|
set_path_if_empty("vs", find_vs);
|
||||||
|
set_path_if_empty("vcpkg", find_vcpkg); // set after vs as it will use the VS
|
||||||
set_path_if_empty("qt_install", find_qt);
|
set_path_if_empty("qt_install", find_qt);
|
||||||
set_path_if_empty("temp_dir", find_temp_dir);
|
set_path_if_empty("temp_dir", find_temp_dir);
|
||||||
set_path_if_empty("patches", find_in_root("patches"));
|
set_path_if_empty("icons", find_in_root("icons"));
|
||||||
set_path_if_empty("licenses", find_in_root("licenses"));
|
set_path_if_empty("licenses", find_in_root("licenses"));
|
||||||
set_path_if_empty("qt_bin", qt::installation_path() / "bin");
|
set_path_if_empty("qt_bin", qt::installation_path() / "bin");
|
||||||
set_path_if_empty("qt_translations", qt::installation_path() / "translations");
|
set_path_if_empty("qt_translations", qt::installation_path() / "translations");
|
||||||
@@ -530,15 +537,14 @@ namespace mob {
|
|||||||
resolve_path("install", p.prefix(), "install");
|
resolve_path("install", p.prefix(), "install");
|
||||||
resolve_path("install_installer", p.install(), "installer");
|
resolve_path("install_installer", p.install(), "installer");
|
||||||
resolve_path("install_bin", p.install(), "bin");
|
resolve_path("install_bin", p.install(), "bin");
|
||||||
resolve_path("install_libs", p.install(), "libs");
|
resolve_path("install_libs", p.install(), "lib");
|
||||||
resolve_path("install_pdbs", p.install(), "pdb");
|
resolve_path("install_pdbs", p.install(), "pdb");
|
||||||
resolve_path("install_dlls", p.install_bin(), "dlls");
|
resolve_path("install_dlls", p.install_bin(), "dlls");
|
||||||
resolve_path("install_loot", p.install_bin(), "loot");
|
|
||||||
resolve_path("install_plugins", p.install_bin(), "plugins");
|
resolve_path("install_plugins", p.install_bin(), "plugins");
|
||||||
resolve_path("install_licenses", p.install_bin(), "licenses");
|
resolve_path("install_licenses", p.install_bin(), "licenses");
|
||||||
resolve_path("install_pythoncore", p.install_bin(), "pythoncore");
|
|
||||||
resolve_path("install_stylesheets", p.install_bin(), "stylesheets");
|
resolve_path("install_stylesheets", p.install_bin(), "stylesheets");
|
||||||
resolve_path("install_translations", p.install_bin(), "translations");
|
resolve_path("install_translations", p.install_bin(), "translations");
|
||||||
|
resolve_path("install_extensions", p.install_bin(), "extensions");
|
||||||
|
|
||||||
// finally, resolve the tools that are unlikely to be in PATH; all the
|
// finally, resolve the tools that are unlikely to be in PATH; all the
|
||||||
// other tools (7z, jom, patch, etc.) are assumed to be in PATH (which
|
// other tools (7z, jom, patch, etc.) are assumed to be in PATH (which
|
||||||
@@ -684,7 +690,7 @@ namespace mob {
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
conf_prebuilt conf::prebuilt()
|
conf_translations conf::translation()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@@ -777,6 +783,8 @@ namespace mob {
|
|||||||
|
|
||||||
conf_build_types::conf_build_types() : conf_section("build-types") {}
|
conf_build_types::conf_build_types() : conf_section("build-types") {}
|
||||||
|
|
||||||
|
conf_translations::conf_translations() : conf_section("translations") {}
|
||||||
|
|
||||||
conf_prebuilt::conf_prebuilt() : conf_section("prebuilt") {}
|
conf_prebuilt::conf_prebuilt() : conf_section("prebuilt") {}
|
||||||
|
|
||||||
conf_paths::conf_paths() : conf_section("paths") {}
|
conf_paths::conf_paths() : conf_section("paths") {}
|
||||||
|
|||||||
+32
-14
@@ -9,7 +9,8 @@ namespace mob::details {
|
|||||||
|
|
||||||
// returns an option named `key` from the given `section`
|
// returns an option named `key` from the given `section`
|
||||||
//
|
//
|
||||||
std::string get_string(std::string_view section, std::string_view key);
|
std::string get_string(std::string_view section, std::string_view key,
|
||||||
|
std::optional<std::string> default_ = {});
|
||||||
|
|
||||||
// convert a string to the given type
|
// convert a string to the given type
|
||||||
template <class T>
|
template <class T>
|
||||||
@@ -25,11 +26,13 @@ namespace mob::details {
|
|||||||
|
|
||||||
// calls get_string(), converts to bool
|
// calls get_string(), converts to bool
|
||||||
//
|
//
|
||||||
bool get_bool(std::string_view section, std::string_view key);
|
bool get_bool(std::string_view section, std::string_view key,
|
||||||
|
std::optional<bool> default_ = {});
|
||||||
|
|
||||||
// calls get_string(), converts to in
|
// calls get_string(), converts to in
|
||||||
//
|
//
|
||||||
int get_int(std::string_view section, std::string_view key);
|
int get_int(std::string_view section, std::string_view key,
|
||||||
|
std::optional<int> default_ = {});
|
||||||
|
|
||||||
// sets the given option, bails out if the option doesn't exist
|
// sets the given option, bails out if the option doesn't exist
|
||||||
//
|
//
|
||||||
@@ -60,9 +63,17 @@ namespace mob {
|
|||||||
template <class DefaultType>
|
template <class DefaultType>
|
||||||
class conf_section {
|
class conf_section {
|
||||||
public:
|
public:
|
||||||
DefaultType get(std::string_view key) const
|
DefaultType get(std::string_view key,
|
||||||
|
std::optional<DefaultType> default_ = {}) const
|
||||||
{
|
{
|
||||||
const auto value = details::get_string(name_, key);
|
const auto value = [=] {
|
||||||
|
if constexpr (std::is_same_v<DefaultType, std::string>) {
|
||||||
|
return details::get_string(name_, key, default_);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return details::get_string(name_, key);
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
|
||||||
if constexpr (std::is_convertible_v<std::string, DefaultType>) {
|
if constexpr (std::is_convertible_v<std::string, DefaultType>) {
|
||||||
return value;
|
return value;
|
||||||
@@ -74,18 +85,18 @@ namespace mob {
|
|||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
template <class T>
|
template <class T>
|
||||||
T get(std::string_view key) const;
|
T get(std::string_view key, std::optional<T> default_ = {}) const;
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
bool get<bool>(std::string_view key) const
|
bool get<bool>(std::string_view key, std::optional<bool> default_) const
|
||||||
{
|
{
|
||||||
return details::get_bool(name_, key);
|
return details::get_bool(name_, key, default_);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
int get<int>(std::string_view key) const
|
int get<int>(std::string_view key, std::optional<int> default_) const
|
||||||
{
|
{
|
||||||
return details::get_int(name_, key);
|
return details::get_int(name_, key, default_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set(std::string_view key, std::string_view value)
|
void set(std::string_view key, std::string_view value)
|
||||||
@@ -223,6 +234,13 @@ namespace mob {
|
|||||||
conf_build_types();
|
conf_build_types();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// options in [translations]
|
||||||
|
//
|
||||||
|
class conf_translations : public conf_section<std::string> {
|
||||||
|
public:
|
||||||
|
conf_translations();
|
||||||
|
};
|
||||||
|
|
||||||
// options in [prebuilt]
|
// options in [prebuilt]
|
||||||
//
|
//
|
||||||
class conf_prebuilt : public conf_section<std::string> {
|
class conf_prebuilt : public conf_section<std::string> {
|
||||||
@@ -245,7 +263,7 @@ namespace mob {
|
|||||||
VALUE(third_party);
|
VALUE(third_party);
|
||||||
VALUE(prefix);
|
VALUE(prefix);
|
||||||
VALUE(cache);
|
VALUE(cache);
|
||||||
VALUE(patches);
|
VALUE(icons);
|
||||||
VALUE(licenses);
|
VALUE(licenses);
|
||||||
VALUE(build);
|
VALUE(build);
|
||||||
|
|
||||||
@@ -256,14 +274,13 @@ namespace mob {
|
|||||||
VALUE(install_pdbs);
|
VALUE(install_pdbs);
|
||||||
|
|
||||||
VALUE(install_dlls);
|
VALUE(install_dlls);
|
||||||
VALUE(install_loot);
|
VALUE(install_extensions);
|
||||||
VALUE(install_plugins);
|
|
||||||
VALUE(install_stylesheets);
|
VALUE(install_stylesheets);
|
||||||
VALUE(install_licenses);
|
VALUE(install_licenses);
|
||||||
VALUE(install_pythoncore);
|
|
||||||
VALUE(install_translations);
|
VALUE(install_translations);
|
||||||
|
|
||||||
VALUE(vs);
|
VALUE(vs);
|
||||||
|
VALUE(vcpkg);
|
||||||
VALUE(qt_install);
|
VALUE(qt_install);
|
||||||
VALUE(qt_bin);
|
VALUE(qt_bin);
|
||||||
VALUE(qt_translations);
|
VALUE(qt_translations);
|
||||||
@@ -285,6 +302,7 @@ namespace mob {
|
|||||||
conf_cmake cmake();
|
conf_cmake cmake();
|
||||||
conf_tools tool();
|
conf_tools tool();
|
||||||
conf_transifex transifex();
|
conf_transifex transifex();
|
||||||
|
conf_translations translation();
|
||||||
conf_prebuilt prebuilt();
|
conf_prebuilt prebuilt();
|
||||||
conf_versions version();
|
conf_versions version();
|
||||||
conf_build_types build_types();
|
conf_build_types build_types();
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user