7 changed files with 113 additions and 10 deletions
+8 -7
View File
@@ -101,22 +101,23 @@ boost = 1.85.0
boost_vs = 14.3 boost_vs = 14.3
fmt = 10.2.1 fmt = 10.2.1
gtest = main gtest = main
libloot = 0.22.4 directxtex = main
libloot = 0.23.0
lz4 = v1.9.4 lz4 = v1.9.4
nmm = 0.71.2 nmm = 0.71.2
openssl = 3.3.0 openssl = 3.3.0
pyqt = 6.7.0 pyqt = 6.7.1
pyqt_builder = 1.16.2 pyqt_builder = 1.16.4
pyqt_sip = 13.7.0 pyqt_sip = 13.8.0
python = v3.12.3 python = v3.12.3
pybind11 = v2.12.0 pybind11 = v2.12.0
bzip2 = 1.0.8 bzip2 = 1.0.8
sip = 6.8.3 sip = 6.8.6
spdlog = v1.14.1 spdlog = v1.14.1
qt = 6.7.0 qt = 6.7.1
qt_vs = 2019 qt_vs = 2019
zlib = v1.3.1 zlib = v1.3.1
libbsarch = 0.0.9 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
+6 -1
View File
@@ -33,12 +33,17 @@ namespace mob {
(clipp::option("--install-prefix") & clipp::value("PATH") >> prefix_) % (clipp::option("--install-prefix") & clipp::value("PATH") >> prefix_) %
"sets CMAKE_INSTALL_PREFIX [default: empty]", "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`"); (clipp::value("PATH") >> path_) % "path from which to run `cmake`");
} }
int cmake_command::do_run() int cmake_command::do_run()
{ {
auto t = tasks::modorganizer::create_cmake_tool(fs::path(utf8_to_utf16(path_))); 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.generator(gen_);
t.cmd(cmd_); t.cmd(cmd_);
+2 -1
View File
@@ -382,7 +382,8 @@ namespace mob {
private: private:
std::string gen_; std::string gen_;
std::string cmd_; std::string cmd_;
bool x64_ = true; bool x64_ = true;
bool debug_ = false;
std::string prefix_; std::string prefix_;
std::string path_; std::string path_;
}; };
+2 -1
View File
@@ -33,7 +33,8 @@ namespace mob {
.add_task<libbsarch>() .add_task<libbsarch>()
.add_task<libloot>() .add_task<libloot>()
.add_task<openssl>() .add_task<openssl>()
.add_task<bzip2>(); .add_task<bzip2>()
.add_task<directxtex>();
add_task<parallel_tasks>() add_task<parallel_tasks>()
.add_task<tasks::python>() .add_task<tasks::python>()
+80
View File
@@ -0,0 +1,80 @@
#include "pch.h"
#include "tasks.h"
namespace mob::tasks {
namespace {
msbuild create_msbuild_tool(arch a, config config,
msbuild::ops o = msbuild::build)
{
return std::move(msbuild(o).architecture(a).configuration(config).solution(
directxtex::source_path() / "DirectXTex" /
"DirectXTex_Desktop_2022.vcxproj"));
}
} // namespace
directxtex::directxtex() : basic_task("directxtex") {}
std::string directxtex::version()
{
return conf().version().get("directxtex");
}
bool directxtex::prebuilt()
{
return false;
}
fs::path directxtex::source_path()
{
return conf().path().build() / "DirectXTex";
}
void directxtex::do_clean(clean c)
{
if (is_set(c, clean::reclone)) {
git_wrap::delete_directory(cx(), source_path());
return;
}
if (is_set(c, clean::rebuild)) {
run_tool(create_msbuild_tool(arch::x64, config::release, msbuild::clean));
run_tool(create_msbuild_tool(arch::x64, config::debug, msbuild::clean));
}
}
void directxtex::do_fetch()
{
run_tool(make_git()
.url(make_git_url("microsoft", "DirectXTex"))
.branch(version())
.root(source_path()));
}
void directxtex::do_build_and_install()
{
op::create_directories(cx(), directxtex::source_path() / "Include");
op::create_directories(cx(), directxtex::source_path() / "Lib" / "Debug");
op::create_directories(cx(), directxtex::source_path() / "Lib" / "Release");
// DO NOT run these in parallel because both generate files that are shared
// between release and debug
run_tool(create_msbuild_tool(arch::x64, config::release));
run_tool(create_msbuild_tool(arch::x64, config::debug));
const auto binary_path =
source_path() / "DirectXTex" / "Bin" / "Desktop_2022" / "x64";
for (const auto& header : {"DDS.h", "DirectXTex.h", "DirectXTex.inl "}) {
op::copy_file_to_dir_if_better(cx(), source_path() / "DirectXTex" / header,
source_path() / "Include");
}
op::copy_file_to_dir_if_better(cx(), binary_path / "Debug" / "DirectXTex.lib",
source_path() / "Lib" / "Debug");
op::copy_file_to_dir_if_better(cx(), binary_path / "Release" / "DirectXTex.lib",
source_path() / "Lib" / "Release");
}
} // namespace mob::tasks
+1
View File
@@ -226,6 +226,7 @@ namespace mob::tasks {
gtest::build_path(arch::x64, c == config::debug ? config::debug gtest::build_path(arch::x64, c == config::debug ? config::debug
: config::release)) : config::release))
.def("OPENSSL_ROOT_DIR", openssl::source_path()) .def("OPENSSL_ROOT_DIR", openssl::source_path())
.def("DIRECTXTEX_ROOT", directxtex::source_path())
.root(root)); .root(root));
} }
+14
View File
@@ -77,6 +77,20 @@ namespace mob::tasks {
void do_fetch() override; void do_fetch() override;
}; };
class directxtex : public basic_task<directxtex> {
public:
directxtex();
static std::string version();
static bool prebuilt();
static fs::path source_path();
protected:
void do_clean(clean c) override;
void do_fetch() override;
void do_build_and_install() override;
};
class explorerpp : public basic_task<explorerpp> { class explorerpp : public basic_task<explorerpp> {
public: public:
explorerpp(); explorerpp();