From 415bfb74fd52b200f21031e78a4ca9fd5e595978 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 7 Apr 2025 11:52:31 +0800 Subject: Fix logics for using prebuilt or system GLM Since the last merge, the prebuilt version has been used for all Megapahit platforms, when some should've used the system version instead, as instructed. And then, not all Linux distros don't have sufficient version of GLM on their repos, some do have and have already been instructed to install system GLM anyway. So the distros that still have insufficient version of GLM (0.9.9.8 instead of the necessary 1.0.1) are Debian, Ubuntu and openSUSE Tumbleweed, while other distros and OSes have GLM 1.0.1. --- README.md | 2 +- indra/cmake/GLM.cmake | 6 +++--- indra/llcommon/CMakeLists.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2b9ba019d9..f610fb9918 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ $ megapahit ### Fedora ``` -$ sudo dnf install cmake gcc-c++ patch patchelf rpm-build apr-util-devel boost-devel boost-url expat-devel fltk-devel mesa-libGLU-devel hunspell-devel minizip-ng-compat-devel libnghttp2-devel nanosvg-devel pipewire-devel pulseaudio-libs-devel SDL2-devel uriparser-devel vlc-devel libvorbis-devel libXcursor-devel libXfixes-devel libXinerama-devel xxhash-devel +$ sudo dnf install cmake gcc-c++ patch patchelf rpm-build apr-util-devel boost-devel boost-url expat-devel fltk-devel glm-devel mesa-libGLU-devel hunspell-devel minizip-ng-compat-devel libnghttp2-devel nanosvg-devel pipewire-devel pulseaudio-libs-devel SDL2-devel uriparser-devel vlc-devel libvorbis-devel libXcursor-devel libXfixes-devel libXinerama-devel xxhash-devel $ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=OFF -DUSE_FMODSTUDIO:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra $ make -j`nproc` diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake index 451b7292cb..d411c049ec 100644 --- a/indra/cmake/GLM.cmake +++ b/indra/cmake/GLM.cmake @@ -5,10 +5,10 @@ add_library( ll::glm INTERFACE IMPORTED ) if (NOT USESYSTEMLIBS) use_system_binary( glm ) -elseif (NOT LINUX) +elseif (NOT (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))) find_package( glm REQUIRED ) endif (NOT USESYSTEMLIBS) -if (LINUX OR USESYSTEMLIBS) +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR NOT USESYSTEMLIBS) use_prebuilt_binary(glm) -endif (LINUX OR USESYSTEMLIBS) +endif () diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 8e56e6a800..521a1b3ced 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -300,7 +300,7 @@ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) file(WRITE ${PREBUILD_TRACKING_DIR}/sse2neon_installed "0") endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/sse2neon_installed OR NOT ${sse2neon_installed} EQUAL 0) target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include/sse2neon) -elseif (LINUX) +elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include) endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) -- cgit v1.2.3 From e282774e68dc4e1826517a3dd4ab09714adcca26 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 7 Apr 2025 12:14:09 +0800 Subject: Make it build & install, USING Portage, on Gentoo 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. --- README.md | 10 +-- indra/cmake/LibraryInstall.cmake | 2 +- indra/cmake/Meshoptimizer.cmake | 4 +- indra/cmake/Prebuilt.cmake | 6 +- indra/cmake/UnixInstall.cmake | 2 +- indra/llprimitive/CMakeLists.txt | 2 +- indra/llwebrtc/CMakeLists.txt | 2 +- indra/media_plugins/cef/CMakeLists.txt | 2 +- indra/media_plugins/libvlc/CMakeLists.txt | 2 +- indra/newview/ViewerInstall.cmake | 2 +- indra/newview/linux_tools/megapahit.desktop | 2 +- indra/newview/llcallingcard.h | 1 + patches/collada-dom-v2.3-r8.patch | 110 ---------------------------- 13 files changed, 19 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index f610fb9918..566c903a42 100644 --- a/README.md +++ b/README.md @@ -104,12 +104,12 @@ $ megapahit ### Gentoo ``` -$ sudo su - -# emerge cmake pkgconf freealut apr-util boost fltk glm hunspell minizip-ng nanosvg nghttp2 media-video/pipewire libsdl2 uriparser vlc libvorbis dev-libs/xxhash +$ su - +# eselect repository add megapahit git git://megapahit.org/ebuild.git +# emaint sync -r megapahit +# emerge megapahit # exit -$ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=OFF ../indra -$ make -j`nproc` +$ megapahit ``` ### Windows diff --git a/indra/cmake/LibraryInstall.cmake b/indra/cmake/LibraryInstall.cmake index 1289ce02af..a843f40c99 100644 --- a/indra/cmake/LibraryInstall.cmake +++ b/indra/cmake/LibraryInstall.cmake @@ -4,7 +4,7 @@ list(REMOVE_ITEM ${PROJECT_NAME}_HEADER_FILES CMakeLists.txt) if (BUILD_SHARED_LIBS) if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}) else () set(_LIB lib) diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake index e1bfe10e93..d893ea35b2 100644 --- a/indra/cmake/Meshoptimizer.cmake +++ b/indra/cmake/Meshoptimizer.cmake @@ -14,7 +14,7 @@ elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CM return () endif (NOT USESYSTEMLIBS) -if (LINUX OR NOT USESYSTEMLIBS) +if (LINUX AND NOT (${LINUX_DISTRO} MATCHES gentoo) OR NOT USESYSTEMLIBS) use_prebuilt_binary(meshoptimizer) elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0) if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz) @@ -45,7 +45,7 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA ) file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}") endif (${MESHOPTIMIZER_RESULT}) -endif (LINUX OR NOT USESYSTEMLIBS) +endif (LINUX AND NOT (${LINUX_DISTRO} MATCHES gentoo) OR NOT USESYSTEMLIBS) if (NOT USESYSTEMLIBS AND WINDOWS) target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib) diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 051435e7cb..751e83051f 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -123,10 +123,10 @@ find_package(Patch) # Download the third party software archive and patch it. macro(prepare_thirdparty url filename dirname patch hash) - file(DOWNLOAD ${url} ${filename} EXPECTED_HASH SHA512=${hash}) + file(DOWNLOAD ${url} ${filename}) file(ARCHIVE_EXTRACT INPUT ${filename} - DESTINATION ${CMAKE_SOURCE_DIR}/../..) + DESTINATION ${CMAKE_BINARY_DIR}) execute_process(COMMAND ${Patch_EXECUTABLE} "-p1" "-i" ${CMAKE_SOURCE_DIR}/../patches/${patch} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${dirname}) + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${dirname}) endmacro() diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake index 48d84dc062..1fd17a0142 100644 --- a/indra/cmake/UnixInstall.cmake +++ b/indra/cmake/UnixInstall.cmake @@ -16,7 +16,7 @@ if (INSTALL) if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}) else () set(_LIB lib) diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index 8d2e592a41..00d821c470 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -23,7 +23,7 @@ if(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD ) ) set(OPT_COLLADA14 TRUE) add_subdirectory( - "${CMAKE_SOURCE_DIR}/../../3p-colladadom-2.3-r8" "colladadom") + "${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8" "colladadom") target_include_directories( ll::colladadom INTERFACE ${colladadom_SOURCE_DIR}/include diff --git a/indra/llwebrtc/CMakeLists.txt b/indra/llwebrtc/CMakeLists.txt index 1e9898e5cc..c4971d44b1 100644 --- a/indra/llwebrtc/CMakeLists.txt +++ b/indra/llwebrtc/CMakeLists.txt @@ -82,7 +82,7 @@ if (INSTALL) set(_LIB ../Frameworks) elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}) else (DARWIN) set(_LIB lib) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 3fa029f260..1502d16cfc 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -154,7 +154,7 @@ if (INSTALL) elseif (LINUX) if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}) else () set(_LIB lib) diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 91e6df92de..547733496f 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -92,7 +92,7 @@ if (INSTALL) ) elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}) else (DARWIN) set(_LIB lib) diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 373c771253..9292802e7c 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -103,7 +103,7 @@ endif (${LINUX_DISTRO} MATCHES arch) if (LINUX) if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}) else () set(_LIB lib) diff --git a/indra/newview/linux_tools/megapahit.desktop b/indra/newview/linux_tools/megapahit.desktop index 05e5d0175a..091df71e11 100755 --- a/indra/newview/linux_tools/megapahit.desktop +++ b/indra/newview/linux_tools/megapahit.desktop @@ -5,6 +5,6 @@ Exec=megapahit Icon=megapahit Terminal=false Type=Application -Categories=Application;Network; +Categories=Network; StartupNotify=true X-Desktop-File-Install-Version=3.0" diff --git a/indra/newview/llcallingcard.h b/indra/newview/llcallingcard.h index 48b93fdf9d..bd263b4bdb 100644 --- a/indra/newview/llcallingcard.h +++ b/indra/newview/llcallingcard.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "lluserrelations.h" #include "lluuid.h" diff --git a/patches/collada-dom-v2.3-r8.patch b/patches/collada-dom-v2.3-r8.patch index c72c014340..b24ae2746b 100644 --- a/patches/collada-dom-v2.3-r8.patch +++ b/patches/collada-dom-v2.3-r8.patch @@ -389,116 +389,6 @@ index 15b1e6a..023814d 100644 $(obj): includeOpts := $(includeOpts) # Call createObjRule with a source file path -diff --git a/projects/vc142-1.4/dom-static.vcxproj b/projects/vc142-1.4/dom-static.vcxproj -index 555ca4c..b87c231 100644 ---- a/projects/vc142-1.4/dom-static.vcxproj -+++ b/projects/vc142-1.4/dom-static.vcxproj -@@ -122,13 +122,11 @@ - ..\..\include;..\..\include\1.4;..\..\stage\packages\include;..\..\stage\packages\include\libxml2;..\..\stage\packages\include\minizip-ng;..\..\stage\packages\include\zlib-ng;..\..\external-libs\tinyxml;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;DOM_INCLUDE_LIBXML;LIBXML_STATIC;%(PreprocessorDefinitions) - MultiThreadedDLL -- false - - - Level3 - OldStyle -- false -- stdcpp17 -+ stdcpp20 - true - - -@@ -143,13 +141,11 @@ - ..\..\include;..\..\include\1.4;..\..\stage\packages\include;..\..\stage\packages\include\libxml2;..\..\stage\packages\include\minizip-ng;..\..\stage\packages\include\zlib-ng;..\..\external-libs\tinyxml;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;DOM_INCLUDE_LIBXML;LIBXML_STATIC;%(PreprocessorDefinitions) - MultiThreadedDLL -- false - - - Level3 - OldStyle -- false -- stdcpp17 -+ stdcpp20 - true - - -diff --git a/projects/vc142-1.4/dom.vcxproj b/projects/vc142-1.4/dom.vcxproj -index 04b0a11..0c57fd4 100644 ---- a/projects/vc142-1.4/dom.vcxproj -+++ b/projects/vc142-1.4/dom.vcxproj -@@ -149,15 +149,14 @@ - - ..\..\include;..\..\include\1.4;..\..\stage\packages\include;..\..\stage\packages\include\libxml2;..\..\stage\packages\include\minizip-ng;..\..\stage\packages\include\zlib-ng;..\..\external-libs\tinyxml;%(AdditionalIncludeDirectories) - ProgramDatabase -- false - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;DOM_DYNAMIC;DOM_EXPORT;DOM_INCLUDE_LIBXML;LIBXML_STATIC;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level3 - true -- false - true -+ stdcpp20 - - - libxml2.lib;Bcrypt.lib;zlib.lib;wsock32.lib;minizip.lib;libboost_regex-mt-x32.lib;libboost_filesystem-mt-x32.lib;libboost_system-mt-x32.lib;%(AdditionalDependencies) -@@ -180,15 +179,14 @@ - - ..\..\include;..\..\include\1.4;..\..\stage\packages\include;..\..\stage\packages\include\libxml2;..\..\stage\packages\include\minizip-ng;..\..\stage\packages\include\zlib-ng;..\..\external-libs\tinyxml;%(AdditionalIncludeDirectories) - ProgramDatabase -- false - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;DOM_DYNAMIC;DOM_EXPORT;DOM_INCLUDE_LIBXML;LIBXML_STATIC;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level3 - true -- false - true -+ stdcpp20 - - - libxml2.lib;Bcrypt.lib;zlib.lib;wsock32.lib;minizip.lib;libboost_regex-mt-x64.lib;libboost_filesystem-mt-x64.lib;libboost_system-mt-x64.lib;%(AdditionalDependencies) -diff --git a/projects/vc142-1.4/domTest.vcxproj b/projects/vc142-1.4/domTest.vcxproj -index 5daeaa3..362ca6f 100644 ---- a/projects/vc142-1.4/domTest.vcxproj -+++ b/projects/vc142-1.4/domTest.vcxproj -@@ -133,15 +133,14 @@ - - ..\..\include;..\..\include\1.4;..\..\stage\packages\include;%(AdditionalIncludeDirectories) - ProgramDatabase -- false - WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;DOM_DYNAMIC;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level3 - true -- false - true -+ stdcpp20 - - - libcollada14dom23.lib;libboost_filesystem-mt-x32.lib;libboost_system-mt-x32.lib;%(AdditionalDependencies) -@@ -161,15 +160,14 @@ - - ..\..\include;..\..\include\1.4;..\..\stage\packages\include;%(AdditionalIncludeDirectories) - ProgramDatabase -- false - WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;DOM_DYNAMIC;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level3 - true -- false - true -+ stdcpp20 - - - libcollada14dom23.lib;libboost_filesystem-mt-x64.lib;libboost_system-mt-x64.lib;%(AdditionalDependencies) diff --git a/src/1.4/CMakeLists.txt b/src/1.4/CMakeLists.txt index 17fbaea..d0d5939 100644 --- a/src/1.4/CMakeLists.txt -- cgit v1.2.3 From bd7bb5b429fd8450150ad6671ba56492fd57cba9 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 7 Apr 2025 13:54:16 +0800 Subject: Reorder the build instructions alphabetically by the platform/OS/distro name. Add -a to emerge since it's very likely the user hasn't set some necessary USE flags on before they try to install the viewer. Decapitalise openSUSE's initial letter. --- README.md | 90 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 566c903a42..980943d732 100644 --- a/README.md +++ b/README.md @@ -17,35 +17,23 @@ $ mkdir build-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m` $ cd build-`uname -s|tr '[:upper:]' '[:lower:]'`-`uname -m` ``` -### macOS - -``` -$ sudo port install cmake pkgconfig freealut +universal apr-util +universal boost187 +universal glm hunspell +universal freetype +universal minizip +universal uriparser +universal libvorbis +universal xxhashlib -$ export LL_BUILD="-O3 -gdwarf-2 -stdlib=libc++ -mmacosx-version-min=11 -iwithsysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -std=c++20 -fPIC -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG -DPIC -DLL_DARWIN=1" -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=newview/Megapahit.app/Contents/Resources -DCMAKE_OSX_ARCHITECTURES:STRING=`uname -m` -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11 -DENABLE_SIGNING:BOOL=ON -DSIGNING_IDENTITY:STRING=- ../indra -$ make -j`sysctl -n hw.ncpu` -$ make install -$ open newview/Megapahit.app -``` - -### Debian - +### Arch ``` -$ sudo apt install cmake pkg-config libxml2-utils libalut-dev libaprutil1-dev libboost-fiber1.81-dev libboost-json1.81-dev libboost-program-options1.81-dev libboost-regex1.81-dev libboost-url1.81-dev libexpat1-dev libfltk1.3-dev libfontconfig-dev libfreetype-dev libglu1-mesa-dev libhunspell-dev libjpeg-dev libmeshoptimizer-dev libminizip-dev libnghttp2-dev libpipewire-0.3-dev libpng-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxft-dev libxml2-dev libxxhash-dev +$ sudo pacman -S cmake base-devel python apr-util boost fltk glm glu hunspell minizip nanosvg libnghttp2 libpipewire sdl2 uriparser vlc libvorbis xxhash $ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=OFF -DUSE_FMODSTUDIO:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr ../indra $ make -j`nproc` -$ cpack -G DEB -$ sudo apt install ./megapahit-`cat newview/viewer_version.txt`-Linux.deb +$ makepkg -R +$ sudo pacman -U megapahit-`cat newview/viewer_version.txt|sed 's/\(.*\)\./\1-/'`-`uname -m`.pkg.tar.zst $ megapahit ``` -### Ubuntu +### Debian ``` -$ sudo apt install cmake pkg-config libxml2-utils libaprutil1-dev libboost-fiber-dev libboost-json-dev libboost-program-options-dev libboost-regex-dev libboost-url-dev libexpat1-dev libfltk1.3-dev libfontconfig-dev libfreetype-dev libglu1-mesa-dev libhunspell-dev libjpeg-dev libmeshoptimizer-dev libminizip-dev libnanosvg-dev libnghttp2-dev libpipewire-0.3-dev libpng-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxft-dev libxml2-dev libxxhash-dev +$ sudo apt install cmake pkg-config libxml2-utils libalut-dev libaprutil1-dev libboost-fiber1.81-dev libboost-json1.81-dev libboost-program-options1.81-dev libboost-regex1.81-dev libboost-url1.81-dev libexpat1-dev libfltk1.3-dev libfontconfig-dev libfreetype-dev libglu1-mesa-dev libhunspell-dev libjpeg-dev libmeshoptimizer-dev libminizip-dev libnghttp2-dev libpipewire-0.3-dev libpng-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxft-dev libxml2-dev libxxhash-dev $ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=OFF -DUSE_FMODSTUDIO:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra $ make -j`nproc` $ cpack -G DEB $ sudo apt install ./megapahit-`cat newview/viewer_version.txt`-Linux.deb @@ -64,30 +52,6 @@ $ sudo dnf install megapahit-`cat newview/viewer_version.txt`-Linux.rpm $ megapahit ``` -### OpenSUSE Tumbleweed - -``` -$ sudo zypper install gcc-c++ patchelf apr-util-devel boost-devel libboost_program_options-devel libboost_url1_87_0-devel libboost_context-devel libboost_fiber-devel libboost_filesystem-devel libboost_regex-devel libboost_system-devel libboost_thread-devel libexpat-devel fltk-devel glu-devel hunspell-devel minizip-devel nanosvg-devel libnghttp2-devel pipewire-devel libpulse-devel libSDL2_gfx-1_0-0 libSDL2_gfx-devel sdl2-compat-devel uriparser-devel vlc-devel libvorbis-devel xxhash-devel zlib-ng-devel libXrender-devel libXcursor-devel libXfixes-devel libXext-devel libXft-devel libXinerama-devel freetype2-devel fontconfig-devel libjpeg8-devel libjpeg8-devel freealut-devel -$ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra -$ make -j`nproc` -$ cpack -G RPM -$ rpm --addsign megapahit-`cat newview/viewer_version.txt`-Linux.rpm (Set up pgp public key first) -$ sudo rpm -i megapahit-`cat newview/viewer_version.txt`-Linux.rpm -$ megapahit -``` - -### Arch -``` -$ sudo pacman -S cmake base-devel python apr-util boost fltk glm glu hunspell minizip nanosvg libnghttp2 libpipewire sdl2 uriparser vlc libvorbis xxhash -$ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=OFF -DUSE_FMODSTUDIO:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr ../indra -$ make -j`nproc` -$ makepkg -R -$ sudo pacman -U megapahit-`cat newview/viewer_version.txt|sed 's/\(.*\)\./\1-/'`-`uname -m`.pkg.tar.zst -$ megapahit -``` - ### FreeBSD ``` $ sudo su - @@ -107,11 +71,47 @@ $ megapahit $ su - # eselect repository add megapahit git git://megapahit.org/ebuild.git # emaint sync -r megapahit -# emerge megapahit +# emerge -a megapahit # exit $ megapahit ``` +### macOS + +``` +$ sudo port install cmake pkgconfig freealut +universal apr-util +universal boost187 +universal glm hunspell +universal freetype +universal minizip +universal uriparser +universal libvorbis +universal xxhashlib +$ export LL_BUILD="-O3 -gdwarf-2 -stdlib=libc++ -mmacosx-version-min=11 -iwithsysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -std=c++20 -fPIC -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG -DPIC -DLL_DARWIN=1" +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=newview/Megapahit.app/Contents/Resources -DCMAKE_OSX_ARCHITECTURES:STRING=`uname -m` -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11 -DENABLE_SIGNING:BOOL=ON -DSIGNING_IDENTITY:STRING=- ../indra +$ make -j`sysctl -n hw.ncpu` +$ make install +$ open newview/Megapahit.app +``` + +### Ubuntu + +``` +$ sudo apt install cmake pkg-config libxml2-utils libaprutil1-dev libboost-fiber-dev libboost-json-dev libboost-program-options-dev libboost-regex-dev libboost-url-dev libexpat1-dev libfltk1.3-dev libfontconfig-dev libfreetype-dev libglu1-mesa-dev libhunspell-dev libjpeg-dev libmeshoptimizer-dev libminizip-dev libnanosvg-dev libnghttp2-dev libpipewire-0.3-dev libpng-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxft-dev libxml2-dev libxxhash-dev +$ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=OFF -DUSE_FMODSTUDIO:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra +$ make -j`nproc` +$ cpack -G DEB +$ sudo apt install ./megapahit-`cat newview/viewer_version.txt`-Linux.deb +$ megapahit +``` + +### openSUSE Tumbleweed + +``` +$ sudo zypper install gcc-c++ patchelf apr-util-devel boost-devel libboost_program_options-devel libboost_url1_87_0-devel libboost_context-devel libboost_fiber-devel libboost_filesystem-devel libboost_regex-devel libboost_system-devel libboost_thread-devel libexpat-devel fltk-devel glu-devel hunspell-devel minizip-devel nanosvg-devel libnghttp2-devel pipewire-devel libpulse-devel libSDL2_gfx-1_0-0 libSDL2_gfx-devel sdl2-compat-devel uriparser-devel vlc-devel libvorbis-devel xxhash-devel zlib-ng-devel libXrender-devel libXcursor-devel libXfixes-devel libXext-devel libXft-devel libXinerama-devel freetype2-devel fontconfig-devel libjpeg8-devel libjpeg8-devel freealut-devel +$ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_LINUX=1" +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra +$ make -j`nproc` +$ cpack -G RPM +$ rpm --addsign megapahit-`cat newview/viewer_version.txt`-Linux.rpm (Set up pgp public key first) +$ sudo rpm -i megapahit-`cat newview/viewer_version.txt`-Linux.rpm +$ megapahit +``` + ### Windows ``` $ pacman -S mingw-w64-clang-aarch64-cmake mingw-w64-clang-aarch64-pkgconf mingw-w64-clang-aarch64-freealut mingw-w64-clang-aarch64-apr-util mingw-w64-clang-aarch64-boost mingw-w64-clang-aarch64-fltk mingw-w64-clang-aarch64-glm mingw-w64-clang-aarch64-hunspell mingw-w64-clang-aarch64-minizip mingw-w64-clang-aarch64-nghttp2 mingw-w64-clang-aarch64-SDL2 mingw-w64-clang-aarch64-uriparser mingw-w64-clang-aarch64-vlc mingw-w64-clang-aarch64-libvorbis mingw-w64-clang-aarch64-xxhash -- cgit v1.2.3 From 553a6c02472315c0f9f5a5d30c87417f2682dd95 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 7 Apr 2025 13:56:33 +0800 Subject: FMOD has been upgraded from 2.02.27 to 2.02.28 --- indra/cmake/FMODSTUDIO.cmake | 26 +++++++++++++------------- indra/newview/ViewerInstall.cmake | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index 7baf067029..ea62dd72ce 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -34,7 +34,7 @@ if (USE_FMODSTUDIO) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release) if (DARWIN) execute_process( - COMMAND hdiutil attach -noverify fmodstudioapi20227mac-installer.dmg + COMMAND hdiutil attach -noverify fmodstudioapi20228mac-installer.dmg WORKING_DIRECTORY $ENV{HOME}/Downloads ) file( @@ -64,26 +64,26 @@ if (USE_FMODSTUDIO) file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}") else (DARWIN) file(ARCHIVE_EXTRACT - INPUT $ENV{HOME}/Downloads/fmodstudioapi20227linux.tar.gz + INPUT $ENV{HOME}/Downloads/fmodstudioapi20228linux.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod.hpp - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod_codec.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod_common.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod_dsp.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod_dsp_effects.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod_errors.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/inc/fmod_output.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod.hpp + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod_codec.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod_common.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod_dsp.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod_dsp_effects.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod_errors.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/inc/fmod_output.h DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio ) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 - ${CMAKE_BINARY_DIR}/fmodstudioapi20227linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.27 + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.28 DESTINATION ${LIBS_PREBUILT_DIR}/lib/release FOLLOW_SYMLINK_CHAIN ) diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 9292802e7c..4716cdde36 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -112,7 +112,7 @@ if (LINUX) install(FILES ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13 - ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13.27 + ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13.28 DESTINATION ${_LIB}) endif (USE_FMODSTUDIO) endif (LINUX) -- cgit v1.2.3