summaryrefslogtreecommitdiff
path: root/indra/cmake/LLPrimitive.cmake
AgeCommit message (Collapse)Author
7 daysUse MacPorts' Boost 1.88 instead of its Boost 1.87Erik Kundiman
Now that MacPorts' newest Boost version is 1.88.
2025-07-07Get the viewer installable on Debian arm64Erik Kundiman
The Debian version supported is 13 (trixie), because that's the version I could install on my M1, hence the Boost default version is 1.83 & we can use system's OpenJPEG 2.5.3. Somehow CMake's FindOpenGL wasn't effective, but we can get around this by setting the GL libraries paths when running cmake. Debian aarch64 suffers from the same problem Fedora aarch64 had when compiling libcurl, and it's assumed that it's Linux aarch64 thing. When trying to build ColladaDOM when building the viewer, it couldn't find Boost somehow, so building ColladaDOM is done in configuration stage instead. Upstream Variables.cmake is full of assumptions regarding architecture, and ARCH is used in many places already for Debian/Ubuntu, so we have to make sure ARCH is set with the correct value at the root level. Pipewire on trixie is also too new, so it's cancelled here. Some dependencies have the t64 suffixes on them, just like the currently supported Ubuntu (because I guess 24.04 *is*, based on trixie). The executable still crashes when launched on my M1, however, but we'll commit the progress so far for now.
2025-06-23Fix the vcpkg Boost libraries suffix on Win arm64Erik Kundiman
2025-06-15Make sure lib/release exists on Windows arm64Erik Kundiman
before using it for ColladaDOM library file, cause it seems that ColladaDOM is the first one that gets built on Windows arm64 before any other package gets installed and implicitly creating that folder.
2025-06-07Fix ColladaDOM link error to Boost throw_exceptionErik Kundiman
in viewer linking stage on Windows. throw_exception is user defined (it's not picking up its definition from anywhere on Windows, at least when using vcpkg's Boost). (Link target) -> libcollada14dom23-s.lib(daeURI.obj) : error LNK2019: unresolved external symbol void __cdecl boost::throw_exception(class std::exception const &) (?throw_exception@boost@@YAXAEBVexception@std@@@Z) referenced in function void __cdecl boost::re_detail_500::raise_runtime_error<class boost::regex_error>(class boost::regex_error const &) (??$raise_runtime_error@Vregex_error@boost@@@re_detail_500@boost@@YAXAEBVregex_error@1@@Z) [C:\Users\erik\Documents\Megapahit\viewer\build-mingw64_nt-10.0-19045-x86_64\newview\megapahit.vcxproj]
2025-06-05Combine 2 ColladaDOM sed process in 1 executionErik Kundiman
and make the if, else, & endif styles more consistent.
2025-06-04Set ColladaDOM to refer to vcpkg BoostErik Kundiman
Turns out I couldn't repeat self-building ColladaDOM using SLv prebuilt Boost successfully, because of the zlib, minizip, libxml2 header directories search confusion, no matter how I tried tinkering with LL's ColladaDOM fork CXX_FLAGS and/or EXTRA_COMPILE_FLAGS settings. With vcpkg Boost, self-building ColladaDOM in the viewer CMake configuration stage goes smoothly (compiling ColladaDOM on Windows could take a while, though.. at least on my system).
2025-06-04Self-build ColladaDOM on WindowsErik Kundiman
Plus simplifying the SHARED to STATIC stream editing by not using the global 'g' key, cause it's only 1 instance to edit. For now, BOOST_CFLAGS & BOOST_LIBS are set to refer to SLv prebuilt binary installation, along with its library suffix. try_compile doesn't seem to "compile" it, but it does configure it, so we just execute MSBuild.exe afterwards. Last time I tried, it didn't finish building or didn't build successfully, though. So what I did is manually run MSBuild.exe on ColladaDOM's solution file, and the next CMake configuration picked up the generated library, renamed to be the same as expected when using SLv prebuilt one, so that we don't have to adjust more lines for this, it has to be copied/moved anyway, might as well rename it the same. About the WIN32 definition stream editing, somehow WIN32 is not defined in daeUtils.cpp, that it would fail at deciding which commands to compile. I did try adding /DWIN32 to CXX_FLAGS but it ruined it for the Minizip header directory search. So the hack is to just forcefully define WIN32 in that file.
2025-05-27Fix mistake, don't self-build ColladaDOM on Windows for nowErik Kundiman
2025-05-27Pass configuration phase with vcpkg replacing MSYS2Erik Kundiman
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.
2025-05-13Not rely on (LL_)USESYSTEMLIBS macro & CMake settingErik Kundiman
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.
2025-04-27One Collada DOM try_compile for all platformsErik Kundiman
On macOS, it's static library too, now, hence the stream editing is done out of any platform scope (which it's still needed because BUILD_SHARED_LIBS is ignored), and the (so)versions don't need to be set any more. CMAKE_INSTALL_LIBDIR is also ignored, hence the libcollada14dom.a moving.
2025-04-17Explicit on macOS deployment target when CMaking depsErik Kundiman
Turns out it wasn't forwarded, when I was building on macOS 15 arm64.
2025-03-11Replace MacPorts' Boost 1.81 with 1.87Erik Kundiman
and therefore LL's Collada DOM can be upgraded to something newer than r4, and therefore PCRE can be no longer depended on. Have to set the C++ standard so it doesn't use anything old, but also it wasn't ready for something as new as C++20 yet, that's why it's explicitly set to C++17. Have to set the architecture too when you're cross-compiling, it would use the native architecture.
2024-09-30No VC flags on GCC & deps only if building ColladaErik Kundiman
2024-09-30Windows configuration, with MSYS2 in MinGW for nowErik Kundiman
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.
2024-09-25Re-add pcre header directory for macOSErik Kundiman
I thought /opt/local/include wasn't needed since we switched to boost181, but PCRE headers are there. If you still have "boost" installed (maybe depended on by some other package, just deactivate it first before cmake).
2024-09-21ColladaDOM depends on dynamic Boost 1.81 on macOSErik Kundiman
so we don't need the boost package or the -no_static variant of boost181 any more.
2024-09-07Merge branch 'main' into 2024.08-DeltaFPSErik Kundiman
2024-09-01Merge remote-tracking branch 'secondlife/release/2024.08-DeltaFPS' into ↵Erik Kundiman
2024.08-DeltaFPS
2024-09-01Merge branch 'main' into freebsdHiroo Ono
2024-09-01Build and link collada-dom v2.3-r7 taken from Linden Lab's 3rd party softwareHiroo Ono
repository.
2024-09-01Build private static collada-dom library for Linux and FreeBSD.Hiroo Ono
Clone the repository by git and make it a cmake submodule.
2024-08-31Revert GNU/Linux to use system Collada DOM for nowErik Kundiman
2024-08-31Fix Error: Dae parsing issue on FreeBSDErik Kundiman
by managing to compile LL's ColladaDOM 2.3 on-the-fly.
2024-08-31Make sure ColladaDOM gets built nowErik Kundiman
Spaces are really just troublesome in argument passing. They can't really be escaped, quoting from -D would even replace spaces with semicolons. Hence making use of every variable that can be used in Collada DOM's CMakeLists.txt.
2024-08-31Revert "macOS uses prebuilt Collada DOM binaries"Erik Kundiman
This reverts commit 3bba39cf3e4d56da5aba883479539ed89fa578b9.
2024-08-31macOS uses prebuilt Collada DOM binariesErik Kundiman
2024-08-31Fix logics in deciding to build ColladaDOM or notErik Kundiman
So that colladadom_installed won't throw USESYSTEMLIBS to the next scope. Also libpcrecpp_LIBRARIES doesn't take spaces (might work by escaping the quotes, but only 1 pcrecpp needed anyway).
2024-08-31Revert Linux/BSD to use system Collada DOM for nowErik Kundiman
Turns out getting 2.3 compiled on those platforms need a lot more attention. Apart from that, the compilation result variable name got fixed, the prebuilt include directory got fixed, and pkg-config-ing minizip, libpcrecpp and libxml-2.0 so we can make have generic variable arguments to pass to Collada DOM's CMake settings.
2024-08-30Fix Error: Dae parsing issue - see log for detailsErik Kundiman
https://megapahit.com/show_bug.cgi?id=76 It seems like we have to use LL's Collada DOM 2.3. Make sure minizip is installed on macOS. It should be safe to uninstall your system Collada DOM package now. The CMake arguments might have to be completed for non-Darwin platforms in a next commit.
2024-08-12Update zlib-ng libxml2 libpng freetype minizip-ng boost collada-dom tinygltf ↵Rye Mutt
packages (#2250) Rebuild expat, apr, meshoptimizer, ogg_vorbis, libjpeg-turbo for symbol fixes
2024-08-02Remove dead pcre library dependency (#2177)Rye Mutt
2024-05-16Merge tag '7.1.7-release'Erik Kundiman
source for viewer 7.1.7.8974243247
2024-04-29#824 Process source files in bulk: replace tabs with spaces, convert CRLF to ↵Andrey Lihatskiy
LF, and trim trailing whitespaces as needed
2023-07-19Obtain COLLADA DOM flags when using system libsErik Kundiman
There are also several additional flags from running pkgconf that we don't get from pkg_check_modules. At least 1 is needed later when compiling llprimitive.
2022-09-17SL-17238 Fix coding policy build issuesAndrey Kleshchev
2022-07-17Be more explicit: Rename use_conan_binary to use_system_binary, this will ↵Nicky
allow us to reuse the macro for more than just conan.
2022-04-18Round one to support conan for 3P packages, this allows to build the viewer ↵Nicky
on Linux again.
2022-04-17Remove function create_target and instead directly use add_libraryNicky
2022-04-17Switch to target_include_directoriesNicky
All 3Ps include dirs are treated as SYSTEM, this will stop compilers stop emitting warnings from those files and greatly helps having high warning levels and not being swamped by warnings that come from external libraries.
2022-04-17Switch over to standard target_link_libraries (cmake requirements are high ↵Nicky
enough now).
2022-04-13Rework cmake, the original plan was to maybe be able to use conan targets ↵Nicky
with the same name (that's why 3ps had names like apr::apr), but it's safer and saner to put the LL 3ps under the ll:: prefix. This also allows means it is possible to get rid of that bad "if( TRAGET ...) return() endif()" pattern and rather use include_guard().
2022-04-06Move CMake files to modernized cmake syntax, step 1.Nicky
Change projects to cmake targetsto get rid of havig to hardcore include directories and link libraries in consumer projects.
2021-09-09SL-14541 MacOS build fixAndrey Kleshchev
2021-09-08SL-14541 Replace zlib with zlib-ngAndrey Kleshchev
2015-11-10remove execute permission from many files that should not have itOz Linden
2014-06-03All: Committing to llqtwebkit2 and the future. Updating all libraries.Monty Brandenberg
Updating SDL to 290561, c-ares to 290399, Boost to 290566, colladadom to 290576, curl to 290567, fontconfig to 290569, freetype to 290557, google-mock to 290574, libpng to 290558, libxml2 to 290562, llqtwebkit to 290578, openssl to 290560, PCRE to 290406, zlib to 290556. Document compiling and linking in new 00-COMPILE-LINK-RUN.txt in indra/cmake. It is the README for the building process based on things learned during this library project. Switch building process back to style used for new llqtwebkit2 repo. This builds shared libraries for Qt4 products on all platforms using current build machines and TC task templates. All platforms are building. All have comparable FPS rates. Builds are getting quieter. Forward, comrades!
2014-05-28Win: Get running on Windows. Remove DOM_DYNAMIC, link with libxml2_a.lib.Monty Brandenberg
Release and Debug builds working. Remove the DOM_DYNAMIC define so that we don't create declspec declarations to colladadom objects and pull in libxml2_a (_a for archive) to complete the link. Debug functional and would be moreso if not for all the CrtCheckMemory() calls.
2014-05-28All: Update library SDL to 290309, c-ares to 290089, boost to 290191,Monty Brandenberg
colladadom to 290229, curl to 290186, fontconfig to 290258, freetype to 290255, google-mock/gmock/gtest to 290199, libpng to 290081, libxml2 to 290157, llqtwebkit to 290262/250147 (to be fixed shortly), openssl to 290083, pcre to 290150, zlib to 290080. The freetype2 headers are now normalized to what they would normally be on a unix-type system. Libxml2 and pcre are available on all platforms. Libraries generally move in the direction of static archives rather than shared libraries (e.g. openssl). The llqtwebkit side is a step back from the more ambitious goal. What will be used (290262) will be a simple rebuild of the existing 4.7.1 library with updated package dependencies. The bigger work will be in the future.