Age | Commit message (Collapse) | Author |
|
I happen to be using just Git Bash for convenience for running the
commands on the Windows build instructions, hence the build folder
pattern to be ignored from the result of running `uname -s` there.
The instructions omit the part where you install vcpkg and set the
VCPKG_ROOT environment variable, cause it depends on where you install
vcpkg to your liking, but the next commands will rely on that variable
being set correctly.
The CMake used here is MS VS 2022 Community Edition's one, since it will
know where the C++ compiler is.
$VCPKG_ROOT/downloads/tools/msys2/21caed2f81ec917b/mingw64/bin is where
pkg-config.exe can be found.
$VCPKG_ROOT/installed/`uname -m|sed 's/86_//'`-windows/tools/libxml2 is
where xmllint.exe can be found (from libxml2[tools]).
PKG_CONFIG_LIBDIR and PYTHON environment settings are pretty
self-explanatory.
The flags set on LL_BUILD are now for Visual C++ and not MinGW(64)'s GCC
or Clang any more, and copied from most of the flags in the variables
file from LL's build-variables repo.
vcpkg's apr & apr-util packages don't seem to install their .pc files,
hence the manual target_include/link_directories/libraries settings,
relying on some automatically generated INTERNAL CMake variable called
prefix_result. vcpkg's Boost needs the same treatment, plus some suffix.
We still use LL's prebuilt libs for OpenSSL, libcurl and WebRTC.
Actually too for ColladaDOM for now, but we prepare Windows ColladaDOM
self-building for later.
For GLM and Meshoptimizer too, it's just the checking that's skipped
otherwise it would fail (but the vcpkg packages can be used).
Visual C++ doesn't recognise the no-deprecated-declarations compile
option.
On Visual C++, the macro to denote x86-64 seems to be _M_X64 (if not
added there, it would try to find sse2neon :))
We still aren't using Autobuild here for Windows either, hence the
FALSE-d viewer_manifest.py based file bundling.
|
|
to make it more flexible the next time a value in the if's parentheses
gets changed again, and also to reduce duplicate pattern matches when
grepping those CMake files with certain keywords.
|
|
but the fact that we keep on using as many system libraries as we
can (and only resort to other sources in certain cases), hasn't
changed, of course.
Also stop having to set USE_AUTOBUILD_3P to OFF.
Lines are reindented, and when a system library can be found for
a dependency, then that should be the way. If later we find out
that using some other way is better, than stick to that. So, one
option at a time, whichever is best for the situation.
GLEXT hasn't been used, and in order to be not having to hack its
.cmake file, we bypass it and refer to GLH (which is still used)
right away in LLWindow.
CMake commands that need to be bypassed, if it's a one-liner then
it's just commented out, but if it's multiple lines, then scope
them with if (FALSE) to minimise difference.
|
|
CMAKE_OSX_ARCHITECTURES & CMAKE_OSX_DEPLOYMENT_TARGET won't affect non-macOS.
Settings such as those 2, and CMAKE_BUILD_TYPE, aren't inherited,
so the significant ones should be set explicitly.
Meshoptimizer default installation header directory is without the
encapsulating "meshoptimizer" directory.
|
|
Media plugins enabling not yet.
OpenXR is disabled for now (it hasn't been used anyway).
perl-FindBin is needed to be able to build OpenSSL on Fedora aarch64.
Setting the C standard to 90 when building cURL is needed, otherwise
it would fail at configure time with a misleading error of not finding
link/run time requirements for dependencies (such as nghttp2 and zlib),
at least on Fedora (and macOS too back then, I remember).
GCC treated SSE2NEON warnings as errors on so many files,
so -Wno-cpp is added globally.
The same Linux CPU frequency calculation needs to be out of the x86 scope,
otherwise the viewer would complain about not meeting the requirements
at launch time.
|
|
Turns out it wasn't forwarded, when I was building on macOS 15 arm64.
|
|
Gentoo uses lib64, just like Fedora, and has libexec too.
The necessary step to install dependencies is part of the ebuild script
now (tracked in another repo, ebuild.git).
One thing I forgot to mention on the commit in that ebuild repo is,
unzip.h is provided on Gentoo only by minizip, and not minizip-ng cause
somehow the (minizip) "compat" USE flag couldn't be turned on somehow,
and there was no "minizip" (without -ng) package on Gentoo, but it was
achievable by setting the "minizip" USE flag on the zlib (again, without
-ng) package.
The queue header inclusion is needed cause its absence would cause the
compiling to fail on Portage (though it compiled when building the
viewer manually without Portage).
Also, using the prebuilt Meshoptimizer caused some linking errors when
using Portage (though, again, it linked when building the viewer
manually without Portage), hence Meshoptimizer is built from source as
part of the CMake configuration on Gentoo, differing from fellow Linux
distros.
Now Collada DOM, firstly the unpack destination directory is moved to
inside the build directory now, to make it uniform with other 3rd-party
files, just for less confusion. Secondly, since the patching that takes
effect is the one done by Portage, it would kill the process when there
are offending failed patchings (ones that generate .rej, reject files),
and they are the vcxproj patchings which aren't used anyway. Thirdly,
the hash checking on the downloaded file, that would fail anyway since
Portage doesn't allow any downloading that isn't part of the ebuild,
unfortunately has to be skipped so the emerge process wouldn't be killed
just because of it. Ebuild has its own sum checking (though this means
this particular file is not checked on other platforms, but other files
aren't checked either anyway yet).
Last but not least, the XDG Application category is removed because it's
considered deprecated by Portage, though not fatal, but the viewer is
already shown well in the Internet (Network) submenu anyway on unix
desktops.
|
|
Also simplify CMake-based dependency projects, the parameters that
have been set for the viewer seem to have been implied all this time
for the subprojects.
|
|
Its own CPACK_RPM_PACKAGE_REQUIRES will catch up soon.
|
|
instead of 0.
|
|
|
|
file(COPY) seems to already include making the necessary directories.
|
|
file(DOWNLOAD) replacing execute_process(COMMAND curl),
file(ARCHIVE_EXTRACT) replacing execute_process(COMMAND tar xf),
file(MAKE_DIRECTORY) replacing execute_process(COMMAND mkdir -p),
file(COPY) replacing execute_process(COMMAND cp),
file(RENAME) replacing execute_process(COMMAND mv),
try_compile replacing execute_process(COMMAND cmake/make),
LIBS_PREBUILT_DIR replacing AUTOBUILD_INSTALL_DIR,
0 replacing ${${_binary}_installed} where appropriate,
no FMOD reinstallation when it's already installed,
and archives & unarchived source/build directories are in CMake
root binary directory, instead of /tmp.
SHOW_PROGRESS is on for downloading Dullahan from the Megapahit
website cause it can be slow.
|
|
|
|
also fix ${_binary} to its intended fmodstudio name.
|
|
by making sure we *write* the _installed files (containing the value 0).
|
|
by moving them to Variables.cmake so they can be reused throughout
all CMake files.
|
|
and Ubuntu. find_package(meshoptimizer) didn't imply its
target_link_libraries.
|
|
It is decided that on x86-64, it's compiled too instead of using
LL's (old) prebuilt libmeshoptimizer.a.
|
|
on macOS and Fedora.
|
|
|
|
Co-authored-by: AiraYumi <aira.youme@airanyumi.net>
|
|
When cross-compiling, the host's /usr/local/include would be unsafely
included before. The problem with this was that it leaked other host
library headers unexpectedly, like Boost. The target compilation caught
some function from the host headers which of a newer version, and then
when trying to link to the target libraries, the function wasn't
available yet in the older version.
|
|
The Meshoptimizer CMake files don't seem to be working right. On more
than one platform, they always conclude the package as not found.
Nevertheless, the library is typically installed in standard paths, that
no special paths need to be included for Meshoptimizer to be found.
Except on macOS (so far), as existing package managers don't have that
package yet, hence the /usr/local/include addition. It's a safe path to
include anyway on other un*x platforms.
|
|
|