diff options
| -rwxr-xr-x | .gitignore | 2 | ||||
| -rw-r--r-- | README.md | 7 | ||||
| -rw-r--r-- | indra/cmake/APR.cmake | 17 | ||||
| -rw-r--r-- | indra/cmake/Boost.cmake | 8 | ||||
| -rw-r--r-- | indra/cmake/CURL.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/GLM.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/LLPrimitive.cmake | 35 | ||||
| -rw-r--r-- | indra/cmake/Meshoptimizer.cmake | 6 | ||||
| -rw-r--r-- | indra/cmake/OpenSSL.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/WebRTC.cmake | 14 | ||||
| -rw-r--r-- | indra/llcommon/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | indra/llcommon/llmemory.h | 2 | ||||
| -rw-r--r-- | indra/llmath/llsimdmath.h | 2 | ||||
| -rw-r--r-- | indra/newview/CMakeLists.txt | 4 | 
14 files changed, 65 insertions, 43 deletions
| diff --git a/.gitignore b/.gitignore index c4b559f016..72187e23f2 100755 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ LICENSES  build-darwin-*  build-freebsd-*  build-linux-* -build-mingw-* +build-mingw64_nt*  debian/files  debian/secondlife-appearance-utility*  debian/secondlife-viewer* @@ -120,8 +120,11 @@ $ 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-vlc mingw-w64-clang-aarch64-libvorbis mingw-w64-clang-aarch64-xxhash -$ export LL_BUILD="-O3 -std=c++20 -fPIC -DLL_WINDOWS=1" +$ vcpkg install pkgconf python3 freealut apr-util boost freetype glm hunspell libjpeg-turbo meshoptimizer minizip nghttp2 openjpeg libvorbis libxml2[tools] xxhash +$ export LL_BUILD="/MD /O2 /Ob2 /std:c++20 /Zc:wchar_t- /Zi /GR /DLL_RELEASE=1 /DLL_RELEASE_FOR_DOWNLOAD=1 /DNDEBUG /D_SECURE_STL=0 /D_HAS_ITERATOR_DEBUGGING=0 /DWIN32 /D_WINDOWS /DLL_WINDOWS=1 /DUNICODE /D_UNICODE /DWINVER=0x0602 /D_WIN32_WINNT=0x0602" +$ export PATH="/c/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:$VCPKG_ROOT/downloads/tools/msys2/21caed2f81ec917b/mingw64/bin:$VCPKG_ROOT/installed/`uname -m|sed 's/86_//'`-windows/tools/libxml2:$PATH" +$ export PKG_CONFIG_LIBDIR="$VCPKG_ROOT/installed/`uname -m|sed 's/86_//'`-windows/lib/pkgconfig" +$ export PYTHON="$VCPKG_ROOT/installed/`uname -m|sed 's/86_//'`-windows/tools/python3/python.exe"  $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=OFF -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=OFF -DPACKAGE:BOOL=OFF ../indra  ``` diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index cf31027c9a..fa3b8a4ffb 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -5,11 +5,18 @@ include_guard()  add_library( ll::apr INTERFACE IMPORTED ) -include(FindPkgConfig) -pkg_check_modules(Apr REQUIRED apr-1 apr-util-1) -target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS}) -target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS}) -target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES}) +if (WINDOWS) +  target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include) +  target_link_directories(ll::apr INTERFACE ${prefix_result}) +  target_link_libraries(ll::apr INTERFACE apr-1 apr-util-1) +else () +  include(FindPkgConfig) +  pkg_check_modules(Apr REQUIRED apr-1 apr-util-1) +  target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS}) +  target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS}) +  target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES}) +endif () +  return ()  use_system_binary( apr apr-util ) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index ba2eaccf63..9ea1f6c9a6 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -6,13 +6,13 @@ include_guard()  add_library( ll::boost INTERFACE IMPORTED )  if (DARWIN) -  set(sfx -mt)    target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.87/include)    target_link_directories( ll::boost INTERFACE /opt/local/libexec/boost/1.87/lib) -elseif (WINDOWS)    set(sfx -mt) -  target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/x86_64-w64-mingw32/include) -  target_link_directories( ll::boost INTERFACE /opt/local/x86_64-w64-mingw32/lib) +elseif (WINDOWS) +  target_include_directories( ll::boost SYSTEM INTERFACE ${prefix_result}/../include) +  target_link_directories( ll::boost INTERFACE ${prefix_result}) +  set(sfx -vc143-mt-x64-1_88)  else ()    find_package( Boost REQUIRED )  endif () diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake index b301819536..06d5927174 100644 --- a/indra/cmake/CURL.cmake +++ b/indra/cmake/CURL.cmake @@ -6,7 +6,7 @@ include_guard()  add_library( ll::libcurl INTERFACE IMPORTED )  #use_system_binary(libcurl) -if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN) +if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR WINDOWS)  use_prebuilt_binary(curl)    if (DARWIN)      execute_process( diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake index fcf5e77cae..db6acc065e 100644 --- a/indra/cmake/GLM.cmake +++ b/indra/cmake/GLM.cmake @@ -6,6 +6,6 @@ add_library( ll::glm INTERFACE IMPORTED )  #use_system_binary( glm )  if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))  use_prebuilt_binary(glm) -else () +elseif (NOT WINDOWS)    find_package( glm REQUIRED )  endif () diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 21952713ca..bbda10fbaa 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -18,19 +18,11 @@ if( USE_CONAN )      "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )  endif() -if( WINDOWS ) -  include(FindPkgConfig) -  pkg_check_modules(Colladadom REQUIRED collada-dom-141) -  target_compile_definitions( ll::colladadom INTERFACE COLLADA_DOM_SUPPORT141 ) -  target_include_directories( ll::colladadom SYSTEM INTERFACE ${Colladadom_INCLUDE_DIRS} ) -  target_link_directories( ll::colladadom INTERFACE ${Colladadom_LIBRARY_DIRS} ) -  target_link_libraries( ll::colladadom INTERFACE ${Colladadom_LIBRARIES} ) -  return() -elseif( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD ) +if( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )    # Build of the collada-dom for Linux and FreeBSD is done in    # indra/llprimitive/CMakeLists.txt    return() -else() +elseif ( WINDOWS )    include(FindPkgConfig)    pkg_check_modules(Minizip REQUIRED minizip)    pkg_check_modules(Libxml2 REQUIRED libxml-2.0) @@ -47,15 +39,24 @@ else()        INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz        DESTINATION ${CMAKE_BINARY_DIR}        ) -    execute_process( -      COMMAND sed -i "" -e "s/SHARED/STATIC/g" CMakeLists.txt -      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4 -      ) +    if ( WINDOWS ) +      execute_process( +        COMMAND sed -i "s/SHARED/STATIC/g" CMakeLists.txt +        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4 +        ) +      set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_88) +    else () +      execute_process( +        COMMAND sed -i "" -e "s/SHARED/STATIC/g" CMakeLists.txt +        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4 +        ) +    endif ()      if( DARWIN )        set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.87/include)        set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.87/lib)        set(BOOST_LIBRARY_SUFFIX -mt)      endif() +    file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4)      try_compile(COLLADADOM_RESULT        PROJECT colladadom        SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8 @@ -92,10 +93,12 @@ else()    endif()  endif() -if( FALSE ) -use_system_binary( colladadom ) +#use_system_binary( colladadom ) +if (WINDOWS)  use_prebuilt_binary(colladadom) +endif () +if( FALSE )  use_prebuilt_binary(minizip-ng) # needed for colladadom  use_prebuilt_binary(libxml2) diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake index 4b428e4b83..5058614580 100644 --- a/indra/cmake/Meshoptimizer.cmake +++ b/indra/cmake/Meshoptimizer.cmake @@ -7,8 +7,10 @@ include_guard()  add_library( ll::meshoptimizer INTERFACE IMPORTED )  #use_system_binary(meshoptimizer) -if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) -  find_package(meshoptimizer) +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD OR WINDOWS) +  if (NOT WINDOWS) +    find_package(meshoptimizer) +  endif ()    target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer)    return ()  elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo)) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index 7cb59b04c3..ef90068993 100644 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -6,7 +6,7 @@ include_guard()  add_library( ll::openssl INTERFACE IMPORTED )  #use_system_binary(openssl) -if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN) +if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR WINDOWS)  use_prebuilt_binary(openssl)    if (DARWIN)      execute_process( diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake index 19457924d8..454ed8c0a1 100644 --- a/indra/cmake/WebRTC.cmake +++ b/indra/cmake/WebRTC.cmake @@ -6,9 +6,9 @@ include_guard()  add_library( ll::webrtc INTERFACE IMPORTED )  target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp") -if (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64) +if (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR WINDOWS)  use_prebuilt_binary(webrtc) -elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)) +elseif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)      target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1)      if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)          if (DARWIN) @@ -17,14 +17,14 @@ elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))              set(WEBRTC_PLATFORM linux-arm64)          else ()              set(WEBRTC_PLATFORM linux-x64) -        endif (DARWIN) +        endif ()          if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)              file(DOWNLOAD                  https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-${WEBRTC_PLATFORM}.tar.xz                  ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz                  SHOW_PROGRESS                  ) -        endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz) +        endif ()          file(ARCHIVE_EXTRACT              INPUT ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz              DESTINATION ${LIBS_PREBUILT_DIR} @@ -74,10 +74,10 @@ elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))                  ${ARCH_PREBUILT_DIRS_RELEASE}/WebRTC.framework                  )              file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks) -        endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) +        endif ()          file(WRITE ${PREBUILD_TRACKING_DIR}/webrtc_installed "0") -    endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0) -endif (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64) +    endif () +endif ()  if (WINDOWS)      target_link_libraries( ll::webrtc INTERFACE webrtc.lib ) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index ac35bec368..6c1e1ef64a 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -303,7 +303,10 @@ if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LIN    target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include)  endif () -target_compile_options(${PROJECT_NAME} PUBLIC -Wno-deprecated-declarations) +if (NOT WINDOWS) +  target_compile_options(${PROJECT_NAME} PUBLIC -Wno-deprecated-declarations) +endif () +  if (CMAKE_CXX_COMPILER_ID MATCHES GNU)    set_source_files_properties(      llapp.cpp diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 4a9359f8e2..d5802b9d95 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -71,7 +71,7 @@ LL_COMMON_API void ll_assert_aligned_func(uintptr_t ptr,U32 alignment);  #define ll_assert_aligned(ptr,alignment)  #endif -#if defined(__i386__) || defined(__x86_64__) +#if defined(__i386__) || defined(__x86_64__) || _M_X64  #include <xmmintrin.h>  #else  #include <sse2neon.h> diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h index 590d8de92f..6242095456 100644 --- a/indra/llmath/llsimdmath.h +++ b/indra/llmath/llsimdmath.h @@ -39,7 +39,7 @@  #include <stdint.h>  #endif -#if defined(__i386__) || defined(__x86_64__) +#if defined(__i386__) || defined(__x86_64__) || _M_X64  #include <xmmintrin.h>  #include <emmintrin.h>  #else diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b937727b15..8c895246de 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1760,6 +1760,8 @@ if (WINDOWS)          )      target_compile_options(${VIEWER_BINARY_NAME} PRIVATE /bigobj) +    if (FALSE) +      # If adding a file to viewer_manifest.py in the WindowsManifest.construct() method, be sure to add the dependency      # here.      # *NOTE:Mani - This is a crappy hack to have important dependencies for the viewer_manifest copy action @@ -1887,6 +1889,8 @@ if (WINDOWS)        add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts)      endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) +    endif (FALSE) +      add_dependencies(${VIEWER_BINARY_NAME} SLPlugin)      # sets the 'working directory' for debugging from visual studio. | 
