diff options
-rw-r--r-- | CONTRIBUTING.md | 49 | ||||
-rw-r--r-- | README.md | 220 | ||||
-rw-r--r-- | doc/freebsd.jpg | bin | 200607 -> 0 bytes | |||
-rw-r--r-- | indra/cmake/GLH.cmake | 5 | ||||
-rw-r--r-- | indra/cmake/NDOF.cmake | 2 | ||||
-rw-r--r-- | indra/cmake/TinyGLTF.cmake | 4 | ||||
-rw-r--r-- | indra/cmake/Variables.cmake | 2 | ||||
-rw-r--r-- | indra/llmath/CMakeLists.txt | 2 | ||||
-rw-r--r-- | indra/llplugin/slplugin/CMakeLists.txt | 5 | ||||
-rw-r--r-- | indra/media_plugins/cef/CMakeLists.txt | 23 | ||||
-rw-r--r-- | indra/media_plugins/libvlc/CMakeLists.txt | 32 | ||||
-rw-r--r-- | indra/newview/CMakeLists.txt | 22 | ||||
-rw-r--r-- | indra/newview/FixBundle.cmake.in | 154 | ||||
-rw-r--r-- | indra/newview/Info-SecondLife.plist | 2 | ||||
-rw-r--r-- | indra/newview/ViewerInstall.cmake | 28 |
15 files changed, 456 insertions, 94 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6bd8a2b74c..99876c8119 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,8 @@ # Contributor guidelines -Thanks for your interest in contributing to Second Life! This document +Thanks for your interest in contributing to Megapahit! This document summarizes some of the most important points for people looking to contribute -to the platform especially those looking to provide bug reports and code +to the project especially those looking to provide bug reports and code changes. ## Table of contents @@ -13,46 +13,39 @@ changes. ## Communication -Second Life has multiple channels for communication. Some of these channels are +Megapahit has multiple channels for communication. Some of these channels are more end-user focused, while others are more tailored for developer-to-developer or support. -- [feedback.secondlife.com][] is Second Life's primary community engagement +- [Bugzilla][] is Megapahit's primary community engagement forum. Ideas and bug reports should be placed here unless they relate to ongoing development issues and developer-to-developer communication. -- [Public user groups][slug] are held on a regular basis, including those for - discussing open source development, content creation, server topics and more. +- [IRC][] is publishing updates on a regular basis, including those for + announcing Git commit logs, nightly build URLs and more. - [Github issues][] provide a means for staff to organize their work and collaborate with other developers. By default most user-facing - discussions should happen on [feedback.secondlife.com][] so that they are + discussions should happen on [Bugzilla][] so that they are visible to more people, can build consensus, and be placed onto our public roadmap. Github issues are useful for collaboration between viewer forks and the official upstream and when engineering-specific and technical collaboration is beneficial. -- [Official forums][] exist for many topics including content creation, - scripting, social topics and more. -- The [opensource-dev mailing list][] is useful for announcements and +- The [In-world group][] and [Discord][] exist for many topics including content creation, + scripting, social topics and more, and are useful for announcements and discussion between viewer maintainers. ## Reporting bugs and requesting features -Report bugs and provide ideas for features using the respective board on Second -Life's feedback portal: +Report bugs and provide ideas for features using the respective board on Megapahit's +feedback portal: -- [Features](https://feedback.secondlife.com/feature-requests) -- [Scripting bugs](https://feedback.secondlife.com/scripting-bugs) -- [Scripting features](https://feedback.secondlife.com/scripting-features) -- [Server bugs](https://feedback.secondlife.com/scripting-bugs) -- [Viewer bugs](https://feedback.secondlife.com/bug-reports) -- [Web/Marketplace bugs](https://feedback.secondlife.com/web-bugs) -- [Web/Marketplace features](https://feedback.secondlife.com/web-features) +- [Viewer bugs and features](https://megapahit.com/enter_bug.cgi) -Creating posts on feedback.secondlife.com is important as it allows the greatest -exposure and input from Second Life users. It also allows Linden Lab staff to +Creating posts on Bugzilla is important as it allows the greatest +exposure and input from Second Life users. It also allows Megapahit staff to place work on a single public roadmap. -Issues created on feedback.secondlife.com are imported onto Github after they +Issues created on Github or Discord are imported onto Bugzilla after they have been reviewed by staff and accepted. ## Contributing pull requests @@ -60,7 +53,7 @@ have been reviewed by staff and accepted. If you wish to contribute a new pull request, please ensure that: - You talk to other developers about how best to implement the work. -- The functionality is desired. Be sure to talk to users and Second Life staff to ensure +- The functionality is desired. Be sure to talk to users and Megapahit staff to ensure the work is a good idea and will be accepted. - The work is high quality and the PR follows [PR etiquette][] - You have tested the work locally @@ -68,9 +61,9 @@ If you wish to contribute a new pull request, please ensure that: The [Git Style Guide](https://github.com/agis/git-style-guide) is also a good reference for best git practices. -[feedback.secondlife.com]: https://feedback.secondlife.com -[slug]: https://community.secondlife.com/blogs/entry/6509-introducing-the-second-life-public-calendar/ +[Bugzilla]: https://megapahit.com +[IRC]: irc://megapahit.net/#viewer [PR etiquette]: https://gist.github.com/mikepea/863f63d6e37281e329f8 -[Github issues]: https://github.com/secondlife/viewer/issues -[Official forums]: https://community.secondlife.com/forums/ -[opensource-dev mailing list]: https://wiki.secondlife.com/wiki/OpenSource-Dev +[Github issues]: https://github.com/megapahit/viewer/issues +[In-world group]: https://world.secondlife.com/group/1142646c-5fb2-162c-ecf8-c5e422ab5c6d +[Discord]: https://discord.gg/jpt33HPVEK @@ -16,78 +16,226 @@ Lab's open source history and projects. ## Download -Most people use a pre-built viewer release to access Second Life. Windows and macOS builds are +Most people use a pre-built viewer release to access Second Life. macOS, GNU/Linux and FreeBSD builds are [published on the official website][download]. More experimental viewers, such as release candidates and -project viewers, are detailed on the [Alternate Viewers page](https://releasenotes.secondlife.com/viewer.html). +project viewers, are detailed on the same page. -### Third Party Viewers +### Third Party Viewer -Third party maintained forks, which include Linux compatible builds, are indexed in the [Third Party Viewer Directory][tpv]. +As a third party maintained fork, which includes Apple Silicon native builds, Megapahit viewer is indexed in the [Third Party Viewer Directory][tpv]. ## Build Instructions -[Windows](https://wiki.secondlife.com/wiki/Build_the_Viewer_on_Windows) +``` +$ cd viewer +$ git remote add megapahit git://megapahit.org/viewer.git +$ git fetch megapahit +$ git checkout megapahit/main +$ git switch -c megapahit +``` ### macOS ``` -# port install git cmake pkgconfig freealut +universal apr-util +universal boost +universal collada-dom +universal hunspell +universal jsoncpp +universal openjpeg +universal libsdl2 +universal uriparser +universal -$ export LL_BUILD="-O3 -gdwarf-2 -stdlib=libc++ -iwithsysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -std=c++17 -fPIC -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG -DPIC -DLL_DARWIN=1 -arch arm64" +$ sudo port install cmake pkgconfig freealut +universal apr-util +universal boost +universal collada-dom +universal hunspell +universal jsoncpp +universal openjpeg +universal libsdl2 +universal uriparser +universal +$ mkdir -p build/universal-apple-darwin`uname -r`/packages +$ cd ~/Downloads +$ curl -OL https://github.com/secondlife/3p-curl/releases/download/v7.54.1-513145c/curl-7.54.1-513145c-darwin64-513145c.tar.zst -OL https://megapahit.net/downloads/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwinuniversal-233471337.tar.bz2 -OL https://github.com/secondlife/3p-emoji-shortcodes/releases/download/v6.1.0.5413f58/emoji_shortcodes-6.1.0.5413f58-darwin64-5413f58.tar.zst -OL https://github.com/secondlife/3p-glh_linear/releases/download/v1.0.1-dev4-984c397/glh_linear-1.0.1-dev4-common-984c397.tar.zst -OL https://github.com/secondlife/llca/releases/download/v202402012004.0-0f5d9c3/llca-202402012004.0-common-0f5d9c3.tar.zst -L https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz -o meshoptimizer-0.21.tar.gz -OL https://github.com/secondlife/3p-mikktspace/releases/download/v2-e967e1b/mikktspace-1-darwin64-8756084692.tar.zst -OL https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/115452/994130/nanosvg-2022.09.27-darwin64-580364.tar.bz2 -L https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.2.tar.gz -o openjpeg-2.5.2.tar.gz -OL https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-darwin64-de53f55.tar.zst -OL https://github.com/secondlife/3p-tinyexr/releases/download/v1.0.8-ba4bc64/tinyexr-v1.0.8-common-9373975608.tar.zst -OL https://github.com/secondlife/3p-tinygltf/releases/download/v2.5.0-1ae57fd/tinygltf-v2.5.0-common-1ae57fd.tar.zst -OL https://github.com/secondlife/3p-viewer-fonts/releases/download/v1.0.0-r1/viewer_fonts-1.0.0.8512067490-common-8512067490.tar.zst -OL https://sourceforge.net/projects/xmlrpc-epi/files/xmlrpc-epi-base/0.54.2/xmlrpc-epi-0.54.2.tar.bz2 +$ cd - +$ cd .. +$ tar xf ~/Downloads/meshoptimizer-0.21.tar.gz +$ tar xf ~/Downloads/openjpeg-2.5.2.tar.gz +$ tar xf ~/Downloads/xmlrpc-epi-0.54.2.tar.bz2 +$ git clone https://github.com/secondlife/3p-openssl +$ git clone https://github.com/secondlife/3p-curl +$ cd meshoptimizer-0.21 +$ mkdir -p build/universal-apple-darwin`uname -r` +$ cd build/universal-apple-darwin`uname -r` +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES:STRING="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12.0 -DMESHOPT_BUILD_SHARED_LIBS:BOOL=ON ../.. +$ make -j`gnproc` +$ sudo make install +$ cd ../../../openjpeg-2.5.2 +$ sudo cp src/lib/openjp2/cio.h src/lib/openjp2/event.h /opt/local/include/openjpeg-2.5/ +$ mkdir -p build/`uname -m`-apple-darwin`uname -r` +$ cd build/`uname -m`-apple-darwin`uname -r` +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release ../.. +$ sudo cp src/lib/openjp2/opj_config_private.h /opt/local/include/openjpeg-2.5/ +$ cd ../../../xmlrpc-epi-0.54.2 +$ rm -f config.sub missing +$ autoreconf -is +$ mkdir -p build/x86_64-apple-darwin`uname -r` +$ cd build/x86_64-apple-darwin`uname -r` +$ export CFLAGS="-arch x86_64" +$ ../../configure --host=x86_64-apple-darwin`uname -r` +$ make -j`gnproc` +$ sudo make install +$ cd - +$ sed -i '' -e 's/XMLRPC_VALUE find_named_value/__attribute__((always_inline)) XMLRPC_VALUE find_named_value/g' src/xmlrpc_introspection.c +$ sed -i '' -e 's/void describe_method/__attribute__((always_inline)) void describe_method/g' src/xmlrpc_introspection.c +$ mkdir -p build/aarch64-apple-darwin`uname -r` +$ cd build/aarch64-apple-darwin`uname -r` +$ export CFLAGS="-arch arm64" +$ ../../configure --host=aarch64-apple-darwin`uname -r` +$ make -j`gnproc` +$ sudo lipo src/.libs/libxmlrpc-epi.a /usr/local/lib/libxmlrpc-epi.a -create -output /usr/local/lib/libxmlrpc-epi.a +$ sudo lipo src/.libs/libxmlrpc-epi.0.dylib /usr/local/lib/libxmlrpc-epi.0.dylib -create -output /usr/local/lib/libxmlrpc-epi.0.dylib +$ unset CFLAGS +$ cd ../../../../3p-openssl/openssl +$ mkdir -p build/aarch64-apple-darwin`uname -r` +$ cd build/aarch64-apple-darwin`uname -r` +$ ../../Configure no-shared darwin64-arm64-cc +$ make -j`gnproc` +$ cd ../../../../3p-curl/curl +$ mkdir -p build/aarch64-apple-darwin`uname -r` +$ cd build/aarch64-apple-darwin`uname -r` +$ export CFLAGS="-arch arm64 -mmacosx-version-min=12.0" +$ sudo port deactivate openssl3 +$ ../../configure --host=aarch64-apple-darwin`uname -r` --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=/opt/local/libexec/openssl11 --with-nghttp2=/opt/local --without-libidn2 --without-libpsl +$ make -j`gnproc` +$ sudo port activate openssl3 +$ unset CFLAGS +$ cd ../../../../viewer/indra/newview +$ tar xf ~/Downloads/viewer_fonts-1.0.0.8512067490-common-8512067490.tar.zst +$ cd ../../build/universal-apple-darwin`uname -r`/packages +$ tar xf ~/Downloads/curl-7.54.1-513145c-darwin64-513145c.tar.zst +$ tar xf ~/Downloads/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwinuniversal-233471337.tar.bz2 +$ tar xf ~/Downloads/emoji_shortcodes-6.1.0.5413f58-darwin64-5413f58.tar.zst +$ tar xf ~/Downloads/glh_linear-1.0.1-dev4-common-984c397.tar.zst +$ tar xf ~/Downloads/llca-202402012004.0-common-0f5d9c3.tar.zst +$ tar xf ~/Downloads/mikktspace-1-darwin64-8756084692.tar.zst +$ tar xf ~/Downloads/nanosvg-2022.09.27-darwin64-580364.tar.bz2 +$ tar xf ~/Downloads/openssl-1.1.1q.de53f55-darwin64-de53f55.tar.zst +$ tar xf ~/Downloads/tinyexr-v1.0.8-common-9373975608.tar.zst +$ tar xf ~/Downloads/tinygltf-v2.5.0-common-1ae57fd.tar.zst +$ cd lib/release +$ lipo ../../../../../../3p-openssl/openssl/build/aarch64-apple-darwin`uname -r`/libcrypto.a libcrypto.a -create -output libcrypto.a +$ lipo ../../../../../../3p-openssl/openssl/build/aarch64-apple-darwin`uname -r`/libssl.a libssl.a -create -output libssl.a +$ lipo ../../../../../../3p-curl/curl/build/aarch64-apple-darwin`uname -r`/lib/.libs/libcurl.a libcurl.a -create -output libcurl.a +$ cd ../../.. +$ cd /opt/local/include +$ sudo curl -OL https://raw.githubusercontent.com/DLTcollab/sse2neon/master/sse2neon.h +$ cd - +$ export LL_BUILD="-O3 -gdwarf-2 -stdlib=libc++ -iwithsysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -std=c++17 -fPIC -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG -DPIC -DLL_DARWIN=1" +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=newview/Megapahit.app/Contents -DCMAKE_OSX_ARCHITECTURES:STRING="arm64;x86_64" -DADDRESS_SIZE:INTERNAL=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=OFF ../../indra +$ make -j`gnproc` +$ make install +$ open newview/Megapahit.app ``` -### Debian/Ubuntu +### GNU/Linux ``` -# apt install git cmake pkg-config libalut-dev libaprutil1-dev libboost-fiber-dev libboost-program-options-dev libboost-regex-dev libcollada-dom-dev libexpat1-dev libfltk1.3-dev libfontconfig-dev libfreetype-dev libglu1-mesa-dev libhunspell-dev libjpeg-dev libjsoncpp-dev libmeshoptimizer-dev libnghttp2-dev libpng-dev libpipewire-0.3-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxft-dev libxmlrpc-epi-dev libxxhash-dev -# apt install libnanosvg-dev +$ mkdir -p build/`uname -m`-linux-gnu/packages +$ cd ~/Downloads +$ curl -OL https://github.com/secondlife/3p-curl/releases/download/v7.54.1-513145c/curl-7.54.1-513145c-linux64-513145c.tar.zst -OL https://megapahit.net/downloads/dullahan-1.14.0.202401180326_118.7.1_g99817d2_chromium-118.0.5993.119-linux64-240180325.tar.bz2 -OL https://github.com/secondlife/3p-emoji-shortcodes/releases/download/v6.1.0.5413f58/emoji_shortcodes-6.1.0.5413f58-linux64-5413f58.tar.zst -OL https://github.com/secondlife/3p-glh_linear/releases/download/v1.0.1-dev4-984c397/glh_linear-1.0.1-dev4-common-984c397.tar.zst -OL https://github.com/secondlife/llca/releases/download/v202402012004.0-0f5d9c3/llca-202402012004.0-common-0f5d9c3.tar.zst -OL https://github.com/secondlife/3p-mikktspace/releases/download/v2-e967e1b/mikktspace-1-linux64-8756084692.tar.zst -OL https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-linux64-de53f55.tar.zst -OL https://github.com/secondlife/3p-tinyexr/releases/download/v1.0.8-ba4bc64/tinyexr-v1.0.8-common-9373975608.tar.zst -OL https://github.com/secondlife/3p-tinygltf/releases/download/v2.5.0-1ae57fd/tinygltf-v2.5.0-common-1ae57fd.tar.zst -OL https://github.com/secondlife/3p-viewer-fonts/releases/download/v1.0.0-r1/viewer_fonts-1.0.0.8512067490-common-8512067490.tar.zst +$ cd - +$ cd indra/newview +$ tar xf ~/Downloads/viewer_fonts-1.0.0.8512067490-common-8512067490.tar.zst +$ cd ../../build/`uname -m`-linux-gnu/packages +$ tar xf ~/Downloads/curl-7.54.1-513145c-linux64-513145c.tar.zst +$ tar xf ~/Downloads/dullahan-1.14.0.202401180326_118.7.1_g99817d2_chromium-118.0.5993.119-linux64-240180325.tar.bz2 +$ tar xf ~/Downloads/emoji_shortcodes-6.1.0.5413f58-linux64-5413f58.tar.zst +$ tar xf ~/Downloads/glh_linear-1.0.1-dev4-common-984c397.tar.zst +$ tar xf ~/Downloads/llca-202402012004.0-common-0f5d9c3.tar.zst +$ tar xf ~/Downloads/mikktspace-1-linux64-8756084692.tar.zst +$ tar xf ~/Downloads/openssl-1.1.1q.de53f55-linux64-de53f55.tar.zst +$ tar xf ~/Downloads/tinyexr-v1.0.8-common-9373975608.tar.zst +$ tar xf ~/Downloads/tinygltf-v2.5.0-common-1ae57fd.tar.zst +$ cd .. $ export LL_BUILD="-O3 -std=c++17 -fPIC -DLL_LINUX=1" ``` -libnanosvg-dev is not available yet on Debian 12.5. -libfontconfig-dev, libfreetype-dev, libjpegdev, libpng-dev, and libxft-dev may not be pulled in automatically by another package already on a minimal debootstrapped system. -### Fedora +#### Debian 12.5 ``` -# dnf install git gcc-c++ cmake zstd freealut-devel apr-util-devel boost-devel collada-dom-devel expat-devel fltk-devel hunspell-devel jsoncpp-devel libcurl-devel libnghttp2-devel libvorbis-devel mesa-libGLU-devel nanosvg-devel openjpeg2-devel openssl-devel pipewire-devel pulseaudio-libs-devel SDL2-devel uriparser-devel vlc-devel xmlrpc-epi-devel xxhash-devel -$ export LL_BUILD="-O3 -std=c++17 -fPIC -DLL_LINUX=1" +$ cd ~/Downloads +$ curl -OL https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/115397/993664/nanosvg-2022.09.27-linux-580337.tar.bz2 +$ cd - +$ cd ../../build/`uname -m`-linux-gnu/packages +$ tar xf ~/Downloads/nanosvg-2022.09.27-linux-580337.tar.bz2 +$ cd .. +$ sudo apt install cmake pkg-config libalut-dev libaprutil1-dev libboost-fiber-dev libboost-program-options-dev libboost-regex-dev libcollada-dom-dev libexpat1-dev libfltk1.3-dev libglu1-mesa-dev libhunspell-dev libjsoncpp-dev libmeshoptimizer-dev libnghttp2-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxmlrpc-epi-dev libxxhash-dev +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -DADDRESS_SIZE:INTERNAL=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCPACK_PACKAGE_NAME:STRING=megapahit -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF -DCPACK_BINARY_DEB:BOOL=ON -DCPACK_DEBIAN_PACKAGE_ARCHITECTURE:STRING=amd64 -DCPACK_DEBIAN_PACKAGE_DESCRIPTION:STRING="A fork of the Second Life viewer" -DCPACK_DEBIAN_PACKAGE_MAINTAINER:STRING=$USER@$HOST -DCPACK_DEBIAN_PACKAGE_SECTION:STRING=net -DCPACK_DEBIAN_PACKAGE_DEPENDES:STRING="libalut0, libaprutil1, libboost-fiber1.74.0 | libboost-fiber1.81.0, libboost-program-options1.74.0 | libboost-program-options1.81.0, libboost-regex1.74.0 | libboost-regex1.81.0, libboost-thread1.74.0 | libboost-thread1.81.0, libcollada-dom2.5-dp0, libexpat1, libfltk1.3, libglu1-mesa, libhunspell-1.7-0, libjsoncpp25, libmeshoptimizer2d (>= 0.18), libnghttp2-14, libsdl2-2.0-0, liburiparser1, libvlc5, libvorbisenc2, libvorbisfile3, libxmlrpc-epi0, vlc-plugin-base" ../../indra +$ cmake ../../indra +$ make -j`nproc` +$ cpack -G DEB +$ sudo apt install megapahit-`cat newview/viewer_version.txt`-Linux.deb +$ megapahit ``` -### FreeBSD +#### Ubuntu 24.04 ``` -# portmaster devel/git devel/cmake-core devel/pkgconf audio/freealut devel/apr1 devel/collada-dom x11-toolkits/fltk textproc/hunspell misc/meshoptimizer graphics/nanosvg graphics/openjpeg devel/sdl20 net/uriparser multimedia/vlc audio/libvorbis net/xmlrpc-epi devel/xxhash -$ setenv LL_BUILD "-O3 -std=c++17 -fPIC" +$ sudo apt install cmake pkg-config libalut-dev libaprutil1-dev libboost-fiber-dev libboost-program-options-dev libboost-regex-dev libcollada-dom-dev libexpat1-dev libglu1-mesa-dev libfltk1.3-dev libhunspell-dev libjsoncpp-dev libmeshoptimizer-dev libnanosvg-dev libnghttp2-dev libsdl2-dev liburiparser-dev libvlc-dev libvlccore-dev libvorbis-dev libxmlrpc-epi-dev libxxhash-dev +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -DADDRESS_SIZE:INTERNAL=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCPACK_PACKAGE_NAME:STRING=megapahit -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF -DCPACK_BINARY_DEB:BOOL=ON -DCPACK_DEBIAN_PACKAGE_ARCHITECTURE:STRING=amd64 -DCPACK_DEBIAN_PACKAGE_DESCRIPTION:STRING="A fork of the Second Life viewer" -DCPACK_DEBIAN_PACKAGE_MAINTAINER:STRING=$USER@$HOST -DCPACK_DEBIAN_PACKAGE_SECTION:STRING=net -DCPACK_DEBIAN_PACKAGE_DEPENDES:STRING="libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libcollada-dom2.5-dp0, libexpat1, libfltk2.0-0t64, libglu1-mesa, libhunspell-1.7-0, libjsoncpp25, libmeshoptimizer2d, libnghttp2-14, libsdl2-2.0-0, liburiparser1, libvlc5, libvorbisenc2, libvorbisfile3, libxmlrpc-epi0t64, vlc-plugin-base" ../../indra +$ cmake ../../indra +$ make -j`nproc` +$ cpack -G DEB +$ sudo apt install megapahit-`cat newview/viewer_version.txt`-Linux.deb +$ megapahit ``` -### Common +#### Fedora ``` -$ cd viewer -$ git remote add megapahit git://megapahit.org/viewer.git -$ git fetch megapahit -$ git checkout megapahit/main -$ git switch -c megapahit -$ mkdir -p build -$ cd build -$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:INTERNAL=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DPACKAGE:BOOL=OFF -DINSTALL:BOOL=ON ../indra -$ make -j12 +$ cd ~/Downloads +$ curl -L https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz -o meshoptimizer-0.21.tar.gz +$ cd - +$ cd .. +$ tar xf ~/Downloads/meshoptimizer-0.21.tar.gz +$ cd meshoptimizer-0.21 +$ mkdir -p build/`uname -m`-linux-gnu +$ cd build/`uname -m`-linux-gnu +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release ../.. +$ make -j`nproc` $ sudo make install +$ cd ../../../viewer/build/`uname -m`-linux-gnu +$ sudo dnf install cmake gcc-c++ freealut-devel apr-util-devel boost-devel collada-dom-devel expat-devel fltk-devel mesa-libGLU-devel hunspell-devel jsoncpp-devel libnghttp2-devel nanosvg-devel openjpeg2-devel SDL2-devel uriparser-devel vlc-devel libvorbis-devel xmlrpc-epi-devel xxhash-devel zstd +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -DADDRESS_SIZE:INTERNAL=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCPACK_PACKAGE_NAME:STRING=megapahit -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF -DCPACK_BINARY_RPM:BOOL=ON -DCPACK_RPM_PACKAGE_SUMMARY:STRING="A fork of the Second Life viewer" -DCPACK_RPM_PACKAGE_ARCHITECTURE:STRING=`uname -m` -DCPACK_RPM_PACKAGE_LICENSE:STRING=LGPL-2.1-only -DCPACK_RPM_PACKAGE_VENDOR:STRING=Megapahit -DCPACK_RPM_PACKAGE_URL:STRING=https://megapahit.net -DCPACK_RPM_PACKAGE_DESCRIPTION:STRING="An entrance to virtual empires in only megabytes. A shelter for the metaverse refugess, especially those from less supported operating systems." -DCPACK_RPM_PACKAGE_REQUIRES:STRING="freealut, apr-util, boost-fiber, boost-program-options, boost-regex, boost-thread, collada-dom, expat, fltk, mesa-libGLU, hunspell, jsoncpp, libnghttp2, openjpeg2, SDL2, uriparser, vlc-libs, vlc-plugins-base, libvorbis, xmlrpc-epi" ../../indra +$ cmake ../../indra +$ make -j`nproc` +$ cpack -G RPM +$ sudo rpm -i megapahit-`cat newview/viewer_version.txt`-Linux.rpm $ megapahit ``` -## Example - -![FreeBSD](doc/freebsd.jpg) +### FreeBSD -Running natively on FreeBSD (not with Linux binary compatibility). +``` +$ mkdir -p build/`uname -m`-unknown-freebsd14.1/packages +$ cd ~/Downloads +$ curl -OL https://github.com/secondlife/3p-emoji-shortcodes/releases/download/v6.1.0.5413f58/emoji_shortcodes-6.1.0.5413f58-linux64-5413f58.tar.zst -OL https://github.com/secondlife/3p-glh_linear/releases/download/v1.0.1-dev4-984c397/glh_linear-1.0.1-dev4-common-984c397.tar.zst -OL https://github.com/secondlife/llca/releases/download/v202402012004.0-0f5d9c3/llca-202402012004.0-common-0f5d9c3.tar.zst -OL https://github.com/secondlife/3p-mikktspace/releases/download/v2-e967e1b/mikktspace-1-linux64-8756084692.tar.zst -OL https://github.com/secondlife/3p-tinyexr/releases/download/v1.0.8-ba4bc64/tinyexr-v1.0.8-common-9373975608.tar.zst -OL https://github.com/secondlife/3p-tinygltf/releases/download/v2.5.0-1ae57fd/tinygltf-v2.5.0-common-1ae57fd.tar.zst -OL https://github.com/secondlife/3p-viewer-fonts/releases/download/v1.0.0-r1/viewer_fonts-1.0.0.8512067490-common-8512067490.tar.zst +$ cd - +$ cd indra/newview +$ tar xf ~/Downloads/viewer_fonts-1.0.0.8512067490-common-8512067490.tar.zst +$ cd ../../build/`uname -m`-unknown-freebsd14.1/packages +$ tar xf ~/Downloads/emoji_shortcodes-6.1.0.5413f58-linux64-5413f58.tar.zst +$ tar xf ~/Downloads/glh_linear-1.0.1-dev4-common-984c397.tar.zst +$ tar xf ~/Downloads/llca-202402012004.0-common-0f5d9c3.tar.zst +$ tar xf ~/Downloads/mikktspace-1-linux64-8756084692.tar.zst +$ tar xf ~/Downloads/tinyexr-v1.0.8-common-9373975608.tar.zst +$ tar xf ~/Downloads/tinygltf-v2.5.0-common-1ae57fd.tar.zst +$ cd .. +$ setenv LL_BUILD "-O3 -std=c++17 -fPIC" +$ sudo su - +# portmaster devel/cmake devel/pkgconf audio/freealut devel/apr1 devel/collada-dom x11-toolkits/fltk textproc/hunspell misc/meshoptimizer graphics/nanosvg graphics/openjpeg devel/sdl20 net/uriparser multimedia/vlc audio/libvorbis net/xmlrpc-epi devel/xxhash +# exit +$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:INTERNAL=64 -DUSESYSTEMLIBS:BOOL=ON -DUSE_OPENAL:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCPACK_PACKAGE_NAME:STRING=megapahit -DCPACK_BINARY_STGZ:BOOL=OFF -DCPACK_BINARY_TGZ:BOOL=OFF -DCPACK_BINARY_TZ:BOOL=OFF -DCPACK_BINARY_FREEBSD:BOOL=ON -DCPACK_FREEBSD_PACKAGE_COMMENT:STRING="A fork of the Second Life viewer" -DCPACK_FREEBSD_PACKAGE_DESCRIPTION:STRING="An entrance to virtual empires in only megabytes. A shelter for the metaverse refugess, especially those from less supported operating systems." -DCPACK_FREEBSD_PACKAGE_WWW:STRING=https://megapahit.net -DCPACK_FREEBSD_PACKAGE_LICENSE:STRING=LGPL21 -DCPACK_FREEBSD_PACKAGE_MAINTAINER:STRING=$USER@$HOST -DCPACK_FREEBSD_PACKAGE_ORIGIN:STRING=net/megapahit -DCPACK_FREEBSD_PACKAGE_DEPS:STRING="audio/freealut;devel/collada-dom;graphics/libGLU;textproc/hunspell;misc/meshoptimizer;www/libnghttp2;graphics/openjpeg;net/uriparser;multimedia/vlc;audio/libvorbis;net/xmlrpc-epi" ../../indra +$ cmake ../../indra +$ make -j`nproc` +$ sudo cpack -G FREEBSD +$ sudo pkg add megapahit-`cat newview/viewer_version.txt`-FreeBSD.pkg +$ sudo pkg set -yA 1 freealut apr1 collada-dom fltk hunspell meshoptimizer nanosvg openjpeg sdl20 uriparser vlc libvorbis xmlrpc-epi +$ megapahit +``` ## Contribute -Help make Second Life better! You can get involved with improvements by filing bugs, suggesting enhancements, submitting +Help make Megapahit better! You can get involved with improvements by filing bugs, suggesting enhancements, submitting pull requests and more. See the [CONTRIBUTING][] and the [open source portal][] for details. [Second Life]: https://secondlife.com/ -[download]: https://secondlife.com/support/downloads/ -[tpv]: http://wiki.secondlife.com/wiki/Third_Party_Viewer_Directory +[download]: https://megapahit.net +[tpv]: http://wiki.secondlife.com/wiki/Third_Party_Viewer_Directory/Megapahit [open source portal]: http://wiki.secondlife.com/wiki/Open_Source_Portal -[contributing]: https://github.com/secondlife/viewer/blob/main/CONTRIBUTING.md +[contributing]: https://megapahit.org/viewer.git/tree/CONTRIBUTING.md diff --git a/doc/freebsd.jpg b/doc/freebsd.jpg Binary files differdeleted file mode 100644 index 85872b6886..0000000000 --- a/doc/freebsd.jpg +++ /dev/null diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake index 09f7d568be..bdd8bc4836 100644 --- a/indra/cmake/GLH.cmake +++ b/indra/cmake/GLH.cmake @@ -4,9 +4,8 @@ include(Prebuilt) add_library( ll::glh_linear INTERFACE IMPORTED ) if (USESYSTEMLIBS) - target_include_directories(ll::glh_linear SYSTEM INTERFACE - ${CMAKE_SYSROOT}/usr/local/include) - return () + target_include_directories( ll::glh_linear SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) + return () endif () use_system_binary( glh_linear ) diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake index db9c8b1780..326ef26c2c 100644 --- a/indra/cmake/NDOF.cmake +++ b/indra/cmake/NDOF.cmake @@ -7,11 +7,13 @@ include_guard() add_library( ll::ndof INTERFACE IMPORTED ) if (NDOF) + if (NOT USESYSTEMLIBS) if (WINDOWS OR DARWIN) use_prebuilt_binary(libndofdev) elseif (LINUX) use_prebuilt_binary(open-libndofdev) endif (WINDOWS OR DARWIN) + endif (NOT USESYSTEMLIBS) if (WINDOWS) target_link_libraries( ll::ndof INTERFACE libndofdev) diff --git a/indra/cmake/TinyGLTF.cmake b/indra/cmake/TinyGLTF.cmake index b20a2a41de..7e74089208 100644 --- a/indra/cmake/TinyGLTF.cmake +++ b/indra/cmake/TinyGLTF.cmake @@ -2,10 +2,8 @@ include(Prebuilt) if (NOT USESYSTEMLIBS) - use_prebuilt_binary(tinygltf) +endif (NOT USESYSTEMLIBS) set(TINYGLTF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tinygltf) -endif (NOT USESYSTEMLIBS) - diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index c037d657eb..ab8add8af8 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -202,7 +202,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "") set(CMAKE_XCODE_ATTRIBUTE_DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING YES) set(CMAKE_XCODE_ATTRIBUTE_GCC_WARN_64_TO_32_BIT_CONVERSION NO) - set(CMAKE_OSX_ARCHITECTURES "${ARCH}") + #set(CMAKE_OSX_ARCHITECTURES "${ARCH}") string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt index c85d9c75c7..c0a62ad225 100644 --- a/indra/llmath/CMakeLists.txt +++ b/indra/llmath/CMakeLists.txt @@ -98,6 +98,8 @@ set(llmath_HEADER_FILES list(APPEND llmath_SOURCE_FILES ${llmath_HEADER_FILES}) +include_directories(${LIBS_PREBUILT_DIR}/include) + add_library (llmath ${llmath_SOURCE_FILES}) target_link_libraries(llmath llcommon llmeshoptimizer) diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index c3752a4705..46e63e473c 100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt @@ -56,7 +56,7 @@ if (DARWIN) COMMAND mkdir ARGS -p - ${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/SLPlugin.app/Contents/Resources + ${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/SLPlugin.app/Contents/Frameworks ) endif (DARWIN) @@ -67,8 +67,7 @@ endif () if (INSTALL) if (DARWIN) - install(TARGETS ${PROJECT_NAME} - DESTINATION ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources) + install(TARGETS ${PROJECT_NAME} DESTINATION Resources) else (DARWIN) install(TARGETS ${PROJECT_NAME} DESTINATION libexec/${VIEWER_BINARY_NAME}) endif (DARWIN) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 5fbe5be626..b4bf449a43 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -103,6 +103,27 @@ if (DARWIN) add_custom_command(TARGET media_plugin_cef POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework" "@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" + -change "/opt/local/lib/libopenjp2.7.dylib" "@loader_path/../../Frameworks/libopenjp2.7.dylib" + -change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib" + -change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib" + -change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib" + -change "@rpath/libmeshoptimizer.dylib" "@loader_path/../../Frameworks/libmeshoptimizer.dylib" + -change "/opt/local/lib/libaprutil-1.0.dylib" "@loader_path/../../Frameworks/libaprutil-1.0.dylib" + -change "/opt/local/lib/libiconv.2.dylib" "@loader_path/../../Frameworks/libiconv.2.dylib" + -change "/opt/local/lib/libapr-1.0.dylib" "@loader_path/../../Frameworks/libapr-1.0.dylib" + -change "/opt/local/lib/libexpat.1.dylib" "@loader_path/../../Frameworks/libexpat.1.dylib" + -change "/opt/local/lib/libjsoncpp.25.dylib" "@loader_path/../../Frameworks/libjsoncpp.25.dylib" + -change "/opt/local/lib/libz.1.dylib" "@loader_path/../../Frameworks/libz.1.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_context-mt.dylib" "@loader_path/../../Frameworks/libboost_context-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_fiber-mt.dylib" "@loader_path/../../Frameworks/libboost_fiber-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_filesystem-mt.dylib" "@loader_path/../../Frameworks/libboost_filesystem-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_program_options-mt.dylib" "@loader_path/../../Frameworks/libboost_program_options-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_regex-mt.dylib" "@loader_path/../../Frameworks/libboost_regex-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_system-mt.dylib" "@loader_path/../../Frameworks/libboost_system-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_thread-mt.dylib" "@loader_path/../../Frameworks/libboost_thread-mt.dylib" + -change "/opt/local/lib/liburiparser.1.dylib" "@loader_path/../../Frameworks/liburiparser.1.dylib" + -change "/opt/local/lib/libnghttp2.14.dylib" "@loader_path/../../Frameworks/libnghttp2.14.dylib" + -change "/usr/local/lib/libxmlrpc-epi.0.dylib" "@loader_path/../../Frameworks/libxmlrpc-epi.0.dylib" "$<TARGET_FILE:media_plugin_cef>" VERBATIM COMMENT "Fixing path to CEF Framework" @@ -112,7 +133,7 @@ endif (DARWIN) if (INSTALL) if (DARWIN) - set(_LIB ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/llplugin) + set(_LIB Resources/llplugin) elseif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) set(_LIB lib/${ARCH}-linux-gnu) elseif (EXISTS /lib64) diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 1140f2de1b..9a30fcd51b 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -47,11 +47,41 @@ if (DARWIN) LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" ) + add_custom_command(TARGET ${PROJECT_NAME} + POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} + -change "/opt/local/lib/libopenjp2.7.dylib" "@loader_path/../../Frameworks/libopenjp2.7.dylib" + -change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib" + -change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib" + -change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib" + -change "@rpath/libmeshoptimizer.dylib" "@loader_path/../../Frameworks/libmeshoptimizer.dylib" + -change "/opt/local/lib/libaprutil-1.0.dylib" "@loader_path/../../Frameworks/libaprutil-1.0.dylib" + -change "/opt/local/lib/libiconv.2.dylib" "@loader_path/../../Frameworks/libiconv.2.dylib" + -change "/opt/local/lib/libapr-1.0.dylib" "@loader_path/../../Frameworks/libapr-1.0.dylib" + -change "/opt/local/lib/libexpat.1.dylib" "@loader_path/../../Frameworks/libexpat.1.dylib" + -change "/opt/local/lib/libjsoncpp.25.dylib" "@loader_path/../../Frameworks/libjsoncpp.25.dylib" + -change "/opt/local/lib/libz.1.dylib" "@loader_path/../../Frameworks/libz.1.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_context-mt.dylib" "@loader_path/../../Frameworks/libboost_context-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_fiber-mt.dylib" "@loader_path/../../Frameworks/libboost_fiber-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_filesystem-mt.dylib" "@loader_path/../../Frameworks/libboost_filesystem-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_program_options-mt.dylib" "@loader_path/../../Frameworks/libboost_program_options-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_regex-mt.dylib" "@loader_path/../../Frameworks/libboost_regex-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_system-mt.dylib" "@loader_path/../../Frameworks/libboost_system-mt.dylib" + -change "/opt/local/libexec/boost/1.76/lib/libboost_thread-mt.dylib" "@loader_path/../../Frameworks/libboost_thread-mt.dylib" + -change "/opt/local/lib/liburiparser.1.dylib" "@loader_path/../../Frameworks/liburiparser.1.dylib" + -change "/opt/local/lib/libnghttp2.14.dylib" "@loader_path/../../Frameworks/libnghttp2.14.dylib" + -change "/usr/local/lib/libxmlrpc-epi.0.dylib" "@loader_path/../../Frameworks/libxmlrpc-epi.0.dylib" + -change "@rpath/libvlc.dylib" "@loader_path/../../Frameworks/libvlc.dylib" + -change "@rpath/libvlccore.dylib" "@loader_path/../../Frameworks/libvlccore.dylib" + "$<TARGET_FILE:media_plugin_libvlc>" + VERBATIM + COMMENT "Fixing paths to LibVLC media plugin dependencies" + ) + endif (DARWIN) if (INSTALL) if (DARWIN) - set(_LIB ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/llplugin) + set(_LIB Resources/llplugin) elseif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) set(_LIB lib/${ARCH}-linux-gnu) elseif (EXISTS /lib64) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 6954f0334c..a1c6ed2018 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1417,7 +1417,7 @@ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\n") set_source_files_properties( - llversioninfo.cpp tests/llversioninfo_test.cpp + llversioninfo.cpp tests/llversioninfo_test.cpp PROPERTIES COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake ) @@ -1623,7 +1623,7 @@ endif (WINDOWS) file(GLOB_RECURSE viewer_XUI_FILES LIST_DIRECTORIES FALSE ${CMAKE_CURRENT_SOURCE_DIR}/skins/*.xml) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/skins PREFIX "XUI Files" FILES ${viewer_XUI_FILES}) -set_source_files_properties(${viewer_XUI_FILES} +set_source_files_properties(${viewer_XUI_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES}) @@ -1631,7 +1631,7 @@ list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES}) file(GLOB_RECURSE viewer_SHADER_FILES LIST_DIRECTORIES FALSE ${CMAKE_CURRENT_SOURCE_DIR}/app_settings/shaders/*.glsl) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/app_settings/shaders PREFIX "Shaders" FILES ${viewer_SHADER_FILES}) -set_source_files_properties(${viewer_SHADER_FILES} +set_source_files_properties(${viewer_SHADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) list(APPEND viewer_SOURCE_FILES ${viewer_SHADER_FILES}) @@ -1923,7 +1923,7 @@ endif (WINDOWS) # one of these being libz where you can find four or more versions in play # at once. On Linux, libz can be found at link and run time via a number # of paths: -# +# # => -lfreetype # => libz.so.1 (on install machine, not build) # => -lSDL @@ -2040,7 +2040,7 @@ foreach(elem ${country_codes}) set(emoji_mapping_src_file "${emoji_mapping_src_folder}/${elem}/emoji_characters.xml") set(emoji_mapping_dst_file - "${emoji_mapping_dst_folder}/${elem}/emoji_characters.xml") + "${emoji_mapping_dst_folder}/${elem}/emoji_characters.xml") configure_file(${emoji_mapping_src_file} ${emoji_mapping_dst_file} COPYONLY) endforeach() @@ -2144,7 +2144,7 @@ if (DARWIN) # https://blog.kitware.com/upcoming-in-cmake-2-8-12-osx-rpath-support/ set(CMAKE_MACOSX_RPATH 1) - + set_target_properties( ${VIEWER_BINARY_NAME} PROPERTIES @@ -2196,11 +2196,7 @@ if (DARWIN) endif (NOT INSTALL) if (ENABLE_MEDIA_PLUGINS) - if (DARWIN OR LINUX) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_libvlc media_plugin_cef) - else (DARWIN) - add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_libvlc) - endif (DARWIN OR LINUX) else (ENABLE_MEDIA_PLUGINS) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin) endif (ENABLE_MEDIA_PLUGINS) @@ -2332,7 +2328,7 @@ if (LL_TESTS) # llremoteparcelrequest.cpp llviewerhelputil.cpp llversioninfo.cpp -# llvocache.cpp +# llvocache.cpp llworldmap.cpp llworldmipmap.cpp ) @@ -2341,7 +2337,7 @@ if (LL_TESTS) llworldmap.cpp llworldmipmap.cpp PROPERTIES - LL_TEST_ADDITIONAL_SOURCE_FILES + LL_TEST_ADDITIONAL_SOURCE_FILES tests/llviewertexture_stub.cpp #llviewertexturelist.cpp ) @@ -2375,7 +2371,7 @@ if (LL_TESTS) llworldmap.cpp llworldmipmap.cpp PROPERTIES - LL_TEST_ADDITIONAL_SOURCE_FILES + LL_TEST_ADDITIONAL_SOURCE_FILES tests/llviewertexture_stub.cpp ) diff --git a/indra/newview/FixBundle.cmake.in b/indra/newview/FixBundle.cmake.in index 73806642e4..b2957cd9b5 100644 --- a/indra/newview/FixBundle.cmake.in +++ b/indra/newview/FixBundle.cmake.in @@ -5,3 +5,157 @@ set(dirs ) fixup_bundle(${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app "" "${dirs}") + +file(CREATE_LINK + "../../../../Frameworks/libnghttp2.14.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libnghttp2.14.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libxmlrpc-epi.0.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libxmlrpc-epi.0.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libopenjp2.7.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libopenjp2.7.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libpng16.16.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libpng16.16.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libjpeg.8.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libjpeg.8.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libmeshoptimizer.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libmeshoptimizer.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libaprutil-1.0.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libaprutil-1.0.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libiconv.2.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libiconv.2.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libapr-1.0.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libapr-1.0.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libjsoncpp.25.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libjsoncpp.25.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libz.1.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libz.1.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_context-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_context-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_fiber-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_fiber-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_filesystem-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_filesystem-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_program_options-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_program_options-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_regex-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_regex-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_system-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_system-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libboost_thread-mt.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_thread-mt.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/liburiparser.1.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/liburiparser.1.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libexpat.1.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libexpat.1.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libfreetype.6.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libfreetype.6.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libicudata.74.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicudata.74.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libicui18n.74.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicui18n.74.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libicuuc.74.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicuuc.74.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libbz2.1.0.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbz2.1.0.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libbrotlidec.1.1.0.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlidec.1.1.0.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libbrotlidec.1.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlidec.1.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/libbrotlicommon.1.dylib" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlicommon.1.dylib" + SYMBOLIC + ) +file(CREATE_LINK + "../../../../Frameworks/Chromium Embedded Framework.framework" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework" + SYMBOLIC + ) + +file(CHMOD + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper.app/Contents/MacOS/DullahanHelper" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (GPU).app/Contents/MacOS/DullahanHelper (GPU)" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (Plugin).app/Contents/MacOS/DullahanHelper (Plugin)" + "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (Renderer).app/Contents/MacOS/DullahanHelper (Renderer)" + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + ) diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist index cc8edfadb8..82f63519db 100644 --- a/indra/newview/Info-SecondLife.plist +++ b/indra/newview/Info-SecondLife.plist @@ -11,7 +11,7 @@ <key>CFBundleIconFile</key> <string>${MACOSX_BUNDLE_ICON_FILE}</string> <key>CFBundleIdentifier</key> - <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleLongVersionString</key> diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 7d9f160467..b6e670d09b 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -22,7 +22,7 @@ if (DARWIN) skins tr.lproj zh-Hans.lproj - DESTINATION ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources + DESTINATION Resources ) install(FILES @@ -31,21 +31,41 @@ if (DARWIN) cube.dae featuretable_mac.txt secondlife.icns - DESTINATION ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources + DESTINATION Resources ) install(FILES licenses-mac.txt RENAME licenses.txt - DESTINATION ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources + DESTINATION Resources ) install(FILES ${SCRIPTS_DIR}/messages/message_template.msg ${SCRIPTS_DIR}/../etc/message.xml - DESTINATION ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/app_settings + DESTINATION Resources/app_settings ) + install(DIRECTORY + "${AUTOBUILD_INSTALL_DIR}/lib/release/Chromium Embedded Framework.framework" + DESTINATION Frameworks + ) + + install(DIRECTORY + "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper.app" + "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (GPU).app" + "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (Plugin).app" + "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (Renderer).app" + DESTINATION Resources/SLPlugin.app/Contents/Frameworks + ) + + if (NDOF) + install(FILES + "${AUTOBUILD_INSTALL_DIR}/lib/release/libndofdev.dylib" + DESTINATION Resources + ) + endif () + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/FixBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake |