From 77d71dec863e28323bcafb1573cd1ecd54fe3049 Mon Sep 17 00:00:00 2001 From: Rye Date: Thu, 28 Aug 2025 00:43:38 -0400 Subject: Fix up universal build --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'build.sh') diff --git a/build.sh b/build.sh index eb81ff319a..9118cb4346 100755 --- a/build.sh +++ b/build.sh @@ -40,7 +40,7 @@ retry_cmd() build_dir_Darwin() { - echo build-darwin-x86_64 + echo build-darwin-universal } build_dir_Linux() -- cgit v1.3 From 5ffcd3dc88892a651fe9a95974280efb85e18a8b Mon Sep 17 00:00:00 2001 From: Rye Date: Thu, 28 Aug 2025 14:09:03 -0400 Subject: Fixes for GHA build --- build.sh | 3 ++- indra/cmake/Audio.cmake | 2 +- indra/cmake/Boost.cmake | 2 +- indra/cmake/OPENAL.cmake | 4 ++++ indra/cmake/OpenJPEG.cmake | 3 +++ indra/llcommon/llprocessor.cpp | 37 ------------------------------------- 6 files changed, 11 insertions(+), 40 deletions(-) (limited to 'build.sh') diff --git a/build.sh b/build.sh index 9118cb4346..36e332cf42 100755 --- a/build.sh +++ b/build.sh @@ -158,6 +158,7 @@ pre_build() if [[ "$arch" == "Darwin" ]] then + HAVOK=OFF SIGNING=("-DENABLE_SIGNING:BOOL=YES" \ "-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.") fi @@ -387,7 +388,7 @@ do if `cat "$build_dir/build_ok"` then case "$variant" in - Release) + Release*) if [ -r "$build_dir/autobuild-package.xml" ] then begin_section "Autobuild metadata" diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index 6f61b056e0..5a7a7ab0b5 100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake @@ -33,5 +33,5 @@ find_library(VORBISFILE_LIBRARY libvorbisfile.a PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) -target_link_libraries(ll::vorbis INTERFACE ${OGG_LIBRARY} ${VORBISENC_LIBRARY} ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY}) +target_link_libraries(ll::vorbis INTERFACE ${VORBISENC_LIBRARY} ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARY} ) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 518e678585..7b3882c936 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -65,8 +65,8 @@ find_library(BOOST_URL_LIBRARY PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) target_link_libraries(ll::boost INTERFACE - ${BOOST_CONTEXT_LIBRARY} ${BOOST_FIBER_LIBRARY} + ${BOOST_CONTEXT_LIBRARY} ${BOOST_FILESYSTEM_LIBRARY} ${BOOST_PROGRAMOPTIONS_LIBRARY} ${BOOST_REGEX_LIBRARY} diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 2566a08189..ab1604aa22 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -26,11 +26,15 @@ if (USE_OPENAL) NAMES OpenAL32 openal + libopenal.dylib + libopenal.so PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) find_library(ALUT_LIBRARY NAMES alut + libalut.dylib + libalut.so PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) target_link_libraries(ll::openal INTERFACE ${OPENAL_LIBRARY} ${ALUT_LIBRARY}) diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake index 33e9cf4898..95e71fd78e 100644 --- a/indra/cmake/OpenJPEG.cmake +++ b/indra/cmake/OpenJPEG.cmake @@ -12,6 +12,9 @@ use_prebuilt_binary(openjpeg) find_library(OPENJPEG_LIBRARY NAMES openjp2 + openjp2.lib + libopenjp2.a + libopenjp2.so PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) target_link_libraries(ll::openjpeg INTERFACE ${OPENJPEG_LIBRARY}) diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index a6ecad2cf7..718f471321 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -640,43 +640,6 @@ public: { getCPUIDInfo(); uint64_t frequency = getSysctlInt64("hw.cpufrequency"); - if(frequency == 0) // Attempt to query IO Services for pcore frequency - { - CFMutableDictionaryRef arm_io_matching = IOServiceMatching("AppleARMIODevice"); - io_iterator_t iter; - kern_return_t ret = IOServiceGetMatchingServices(kIOMasterPortDefault, arm_io_matching, &iter); - if(ret == KERN_SUCCESS) - { - io_object_t obj; - while ((obj = IOIteratorNext(iter))) - { - io_name_t obj_class; - ret = IOObjectGetClass(obj, obj_class); - if(ret == KERN_SUCCESS) - { - io_name_t obj_name; - ret = IORegistryEntryGetName(obj, obj_name); - if(ret == KERN_SUCCESS) - { - if (strncmp(obj_name, "pmgr", sizeof(obj_name)) == 0) - { - CFTypeRef cfData = IORegistryEntryCreateCFProperty(obj, CFSTR("voltage-states5-sram"), kCFAllocatorDefault, 0); // pcore frequency - if(cfData) - { - CFIndex size = CFDataGetLength((CFDataRef)cfData); - std::vector databuf(size); - CFDataGetBytes((CFDataRef)cfData, CFRangeMake(0, size), databuf.data()); - - frequency = 0x00000000FFFFFFFF & ((databuf[size-5] << 24) | (databuf[size-6] << 16) | (databuf[size-7] << 8) | (databuf[size-8])); - CFRelease(cfData); - } - break; - } - } - } - } - } - } if (frequency == 0) // fallback to clockrate and tbfrequency { frequency = getSysctlClockrate() * getSysctlInt64("hw.tbfrequency"); -- cgit v1.3 From 589498fece769446310c085e9feb08ccd8400c2c Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Wed, 1 Oct 2025 17:50:28 -0700 Subject: Reenable havok llphysicsextensions on Darwin x86_64 with llphysicsextensions_stub used for aarch64 --- autobuild.xml | 40 ++++------------------------------- build.sh | 1 - indra/cmake/LLPhysicsExtensions.cmake | 9 +++++++- indra/newview/CMakeLists.txt | 9 ++++++++ 4 files changed, 21 insertions(+), 38 deletions(-) (limited to 'build.sh') diff --git a/autobuild.xml b/autobuild.xml index c9355c73c0..280078b4c2 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1432,53 +1432,21 @@ platforms - darwin64 - - archive - - creds - github - hash - 7facda95e2f00c260513f3d4db42588fa8ba703c - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/196289774 - - name - darwin64 - - linux64 - - archive - - creds - github - hash - 01d08f13c7bc8d1b95b0330fa6833b7d8274e4d0 - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/196289775 - - name - linux64 - - windows64 + common archive creds github hash - 6d00345c7d3471bc5f7c1218e014dd0f1a2c069b + 1949ae355a70a4cbe2f0969de636680a0b5d7b15 hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/196289778 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/299453833 name - windows64 + common license diff --git a/build.sh b/build.sh index 36e332cf42..325386e7e9 100755 --- a/build.sh +++ b/build.sh @@ -158,7 +158,6 @@ pre_build() if [[ "$arch" == "Darwin" ]] then - HAVOK=OFF SIGNING=("-DENABLE_SIGNING:BOOL=YES" \ "-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.") fi diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake index 80d243d9f8..6112621b5a 100644 --- a/indra/cmake/LLPhysicsExtensions.cmake +++ b/indra/cmake/LLPhysicsExtensions.cmake @@ -22,7 +22,14 @@ if (HAVOK) include(Havok) use_prebuilt_binary(llphysicsextensions_source) set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/src) - target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions) + if(DARWIN) + set(LLPHYSICSEXTENSIONS_STUB_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub) + # can't set these library dependencies per-arch here, need to do it using XCODE_ATTRIBUTE_OTHER_LDFLAGS[arch=*] in newview/CMakeLists.txt + #target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions) + #target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub) + else() + target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions) + endif() elseif (HAVOK_TPV) use_prebuilt_binary(llphysicsextensions_tpv) target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions_tpv) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index c727d5ae57..72baac73ae 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -59,6 +59,10 @@ if (NOT HAVOK_TPV) # which means we need to duct tape this togther ... add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions) + if (NOT "${LLPHYSICSEXTENSIONS_STUB_DIR}" EQUAL "") + # for darwin universal builds we need both real llphysicsextensions and the stub for aarch64 fallback + add_subdirectory(${LLPHYSICSEXTENSIONS_STUB_DIR} llphysicsextensionsstub) + endif() # Another hack that works with newer cmake versions: cmake_policy( SET CMP0079 NEW) @@ -1952,6 +1956,11 @@ elseif (DARWIN) RESOURCE SecondLife.xib #LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip -Xlinker -map -Xlinker ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}.MAP" LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip" + # arch specific flags for universal builds: https://stackoverflow.com/a/77942065 + XCODE_ATTRIBUTE_OTHER_CFLAGS[arch=x86_64] "$(inherited) -DLLPHYSICSEXTENSIONS_USE_FULL" + XCODE_ATTRIBUTE_OTHER_CFLAGS[arch=arm64] "$(inherited) -DLLPHYSICSEXTENSIONS_USE_STUB" + XCODE_ATTRIBUTE_OTHER_LDFLAGS[arch=x86_64] "$(inherited) -L${CMAKE_CURRENT_BINARY_DIR}/llphysicsextensions/$,$,${CMAKE_CFG_INTDIR}>/ -lllphysicsextensions" + XCODE_ATTRIBUTE_OTHER_LDFLAGS[arch=arm64] "$(inherited) -L${CMAKE_CURRENT_BINARY_DIR}/llphysicsextensionsstub/$,$,${CMAKE_CFG_INTDIR}>/ -lllphysicsextensionsstub" ) else (WINDOWS) # Linux -- cgit v1.3 From c440843513b9d9688db019034be4d8c24a3e6f8b Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Fri, 3 Oct 2025 11:39:57 -0700 Subject: disable package_llphysicsextensions_tpv for now --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'build.sh') diff --git a/build.sh b/build.sh index 325386e7e9..694b03c42e 100755 --- a/build.sh +++ b/build.sh @@ -261,8 +261,8 @@ build() done fi - # *TODO: Make this a build extension. - package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages" + # *TODO: Make this a build extension. disabled for now + # package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages" end_section "extensions $variant" else -- cgit v1.3