mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			312 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			312 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
 | |
| 
 | |
| vcpkg_from_github(
 | |
|     OUT_SOURCE_PATH SOURCE_PATH
 | |
|     REPO webmproject/libvpx
 | |
|     REF "v${VERSION}"
 | |
|     SHA512 49706838563c92fab7334376848d0f374efcbc1729ef511e967c908fd2ecd40e8d197f1d85da6553b3a7026bdbc17e5a76595319858af26ce58cb9a4c3854897
 | |
|     HEAD_REF master
 | |
|     PATCHES
 | |
|         0002-Fix-nasm-debug-format-flag.patch
 | |
|         0003-add-uwp-v142-and-v143-support.patch
 | |
|         0004-remove-library-suffixes.patch
 | |
|         0005-fix-arm64-build.patch # Upstream commit: https://github.com/webmproject/libvpx/commit/858a8c611f4c965078485860a6820e2135e6611b
 | |
| )
 | |
| 
 | |
| if(CMAKE_HOST_WIN32)
 | |
|     vcpkg_acquire_msys(MSYS_ROOT PACKAGES make perl)
 | |
|     set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
 | |
|     set(ENV{PATH} "${MSYS_ROOT}/usr/bin;$ENV{PATH}")
 | |
| else()
 | |
| 	vcpkg_find_acquire_program(PERL)
 | |
| 	get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
 | |
|     set(BASH /bin/bash)
 | |
|     set(ENV{PATH} "${MSYS_ROOT}/usr/bin:$ENV{PATH}:${PERL_EXE_PATH}")
 | |
| endif()
 | |
| 
 | |
| vcpkg_find_acquire_program(NASM)
 | |
| get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
 | |
| vcpkg_add_to_path(${NASM_EXE_PATH})
 | |
| 
 | |
| if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
 | |
| 
 | |
|     file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tmp")
 | |
| 
 | |
|     if(VCPKG_CRT_LINKAGE STREQUAL static)
 | |
|         set(LIBVPX_CRT_LINKAGE --enable-static-msvcrt)
 | |
|         set(LIBVPX_CRT_SUFFIX mt)
 | |
|     else()
 | |
|         set(LIBVPX_CRT_SUFFIX md)
 | |
|     endif()
 | |
| 
 | |
|     if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore AND (VCPKG_PLATFORM_TOOLSET STREQUAL v142 OR VCPKG_PLATFORM_TOOLSET STREQUAL v143))
 | |
|         set(LIBVPX_TARGET_OS "uwp")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86 OR VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
 | |
|         set(LIBVPX_TARGET_OS "win32")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x64 OR VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
 | |
|         set(LIBVPX_TARGET_OS "win64")
 | |
|     endif()
 | |
| 
 | |
|     if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
 | |
|         set(LIBVPX_TARGET_ARCH "x86-${LIBVPX_TARGET_OS}")
 | |
|         set(LIBVPX_ARCH_DIR "Win32")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x64)
 | |
|         set(LIBVPX_TARGET_ARCH "x86_64-${LIBVPX_TARGET_OS}")
 | |
|         set(LIBVPX_ARCH_DIR "x64")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
 | |
|         set(LIBVPX_TARGET_ARCH "arm64-${LIBVPX_TARGET_OS}")
 | |
|         set(LIBVPX_ARCH_DIR "ARM64")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
 | |
|         set(LIBVPX_TARGET_ARCH "armv7-${LIBVPX_TARGET_OS}")
 | |
|         set(LIBVPX_ARCH_DIR "ARM")
 | |
|     endif()
 | |
| 
 | |
|     if(VCPKG_PLATFORM_TOOLSET STREQUAL v143)
 | |
|         set(LIBVPX_TARGET_VS "vs17")
 | |
|     elseif(VCPKG_PLATFORM_TOOLSET STREQUAL v142)
 | |
|         set(LIBVPX_TARGET_VS "vs16")
 | |
|     else()
 | |
|         set(LIBVPX_TARGET_VS "vs15")
 | |
|     endif()
 | |
| 
 | |
|     set(OPTIONS "--disable-examples --disable-tools --disable-docs --enable-pic")
 | |
| 
 | |
|     if("realtime" IN_LIST FEATURES)
 | |
|         set(OPTIONS "${OPTIONS} --enable-realtime-only")
 | |
|     endif()
 | |
| 
 | |
|     if("highbitdepth" IN_LIST FEATURES)
 | |
|         set(OPTIONS "${OPTIONS} --enable-vp9-highbitdepth")
 | |
|     endif()
 | |
| 
 | |
|     message(STATUS "Generating makefile")
 | |
|     file(MAKE_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tmp")
 | |
|     vcpkg_execute_required_process(
 | |
|         COMMAND
 | |
|             ${BASH} --noprofile --norc
 | |
|             "${SOURCE_PATH}/configure"
 | |
|             --target=${LIBVPX_TARGET_ARCH}-${LIBVPX_TARGET_VS}
 | |
|             ${LIBVPX_CRT_LINKAGE}
 | |
|             ${OPTIONS}
 | |
|             --as=nasm
 | |
|         WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tmp"
 | |
|         LOGNAME configure-${TARGET_TRIPLET})
 | |
| 
 | |
|     message(STATUS "Generating MSBuild projects")
 | |
|     vcpkg_execute_required_process(
 | |
|         COMMAND
 | |
|             ${BASH} --noprofile --norc -c "make dist"
 | |
|         WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tmp"
 | |
|         LOGNAME generate-${TARGET_TRIPLET})
 | |
| 
 | |
|     vcpkg_msbuild_install(
 | |
|         SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-tmp"
 | |
|         PROJECT_SUBPATH vpx.vcxproj
 | |
|     )
 | |
| 
 | |
|     if (VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
 | |
|         set(LIBVPX_INCLUDE_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vpx-vp8-vp9-nopost-nodocs-${LIBVPX_TARGET_ARCH}${LIBVPX_CRT_SUFFIX}-${LIBVPX_TARGET_VS}-v${VERSION}/include/vpx")
 | |
|     elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
 | |
|         set(LIBVPX_INCLUDE_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vpx-vp8-vp9-nopost-nomt-nodocs-${LIBVPX_TARGET_ARCH}${LIBVPX_CRT_SUFFIX}-${LIBVPX_TARGET_VS}-v${VERSION}/include/vpx")
 | |
|     else()
 | |
|         set(LIBVPX_INCLUDE_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vpx-vp8-vp9-nodocs-${LIBVPX_TARGET_ARCH}${LIBVPX_CRT_SUFFIX}-${LIBVPX_TARGET_VS}-v${VERSION}/include/vpx")
 | |
|     endif()
 | |
|     file(
 | |
|         INSTALL
 | |
|             "${LIBVPX_INCLUDE_DIR}"
 | |
|         DESTINATION
 | |
|             "${CURRENT_PACKAGES_DIR}/include"
 | |
|         RENAME
 | |
|             "vpx")
 | |
|     if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
 | |
|         set(LIBVPX_PREFIX "${CURRENT_INSTALLED_DIR}")
 | |
|         configure_file("${CMAKE_CURRENT_LIST_DIR}/vpx.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/vpx.pc" @ONLY)
 | |
|     endif()
 | |
| 
 | |
|     if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
 | |
|         set(LIBVPX_PREFIX "${CURRENT_INSTALLED_DIR}/debug")
 | |
|         configure_file("${CMAKE_CURRENT_LIST_DIR}/vpx.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/vpx.pc" @ONLY)
 | |
|     endif()
 | |
| 
 | |
| else()
 | |
| 
 | |
|     set(OPTIONS "--disable-examples --disable-tools --disable-docs --disable-unit-tests --enable-pic")
 | |
| 
 | |
|     set(OPTIONS_DEBUG "--enable-debug-libs --enable-debug --prefix=${CURRENT_PACKAGES_DIR}/debug")
 | |
|     set(OPTIONS_RELEASE "--prefix=${CURRENT_PACKAGES_DIR}")
 | |
|     set(AS_NASM "--as=nasm")
 | |
| 
 | |
|     if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
 | |
|         set(OPTIONS "${OPTIONS} --disable-static --enable-shared")
 | |
|     else()
 | |
|         set(OPTIONS "${OPTIONS} --enable-static --disable-shared")
 | |
|     endif()
 | |
| 
 | |
|     if("realtime" IN_LIST FEATURES)
 | |
|         set(OPTIONS "${OPTIONS} --enable-realtime-only")
 | |
|     endif()
 | |
| 
 | |
|     if("highbitdepth" IN_LIST FEATURES)
 | |
|         set(OPTIONS "${OPTIONS} --enable-vp9-highbitdepth")
 | |
|     endif()
 | |
| 
 | |
|     if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
 | |
|         set(LIBVPX_TARGET_ARCH "x86")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x64)
 | |
|         set(LIBVPX_TARGET_ARCH "x86_64")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
 | |
|         set(LIBVPX_TARGET_ARCH "armv7")
 | |
|     elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
 | |
|         set(LIBVPX_TARGET_ARCH "arm64")
 | |
|     else()
 | |
|         message(FATAL_ERROR "libvpx does not support architecture ${VCPKG_TARGET_ARCHITECTURE}")
 | |
|     endif()
 | |
| 
 | |
|     vcpkg_cmake_get_vars(cmake_vars_file)
 | |
|     include("${cmake_vars_file}")
 | |
| 
 | |
|     # Set environment variables for configure
 | |
|     if(VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "([^\/]*-)gcc$")
 | |
|         message(STATUS "Cross-building for ${TARGET_TRIPLET} with ${CMAKE_MATCH_1}")
 | |
|         set(ENV{CROSS} ${CMAKE_MATCH_1})
 | |
|         unset(AS_NASM)
 | |
|     else()
 | |
|         set(ENV{CC} ${VCPKG_DETECTED_CMAKE_C_COMPILER})
 | |
|         set(ENV{CXX} ${VCPKG_DETECTED_CMAKE_CXX_COMPILER})
 | |
|         set(ENV{AR} ${VCPKG_DETECTED_CMAKE_AR})
 | |
|         set(ENV{LD} ${VCPKG_DETECTED_CMAKE_LINKER})
 | |
|         set(ENV{RANLIB} ${VCPKG_DETECTED_CMAKE_RANLIB})
 | |
|         set(ENV{STRIP} ${VCPKG_DETECTED_CMAKE_STRIP})
 | |
|     endif()
 | |
| 
 | |
|     if(VCPKG_TARGET_IS_MINGW)
 | |
|         if(LIBVPX_TARGET_ARCH STREQUAL "x86")
 | |
|             set(LIBVPX_TARGET "x86-win32-gcc")
 | |
|         else()
 | |
|             set(LIBVPX_TARGET "x86_64-win64-gcc")
 | |
|         endif()
 | |
|     elseif(VCPKG_TARGET_IS_LINUX)
 | |
|         set(LIBVPX_TARGET "${LIBVPX_TARGET_ARCH}-linux-gcc")
 | |
|     elseif(VCPKG_TARGET_IS_ANDROID)
 | |
|         set(LIBVPX_TARGET "generic-gnu")
 | |
|         # Settings
 | |
|         if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
 | |
|             set(OPTIONS "${OPTIONS} --disable-sse4_1 --disable-avx --disable-avx2 --disable-avx512")
 | |
|         elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x64)
 | |
|             set(OPTIONS "${OPTIONS} --disable-avx --disable-avx2 --disable-avx512")
 | |
|         elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
 | |
|             set(OPTIONS "${OPTIONS} --enable-thumb --disable-neon")
 | |
|         elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
 | |
|             set(OPTIONS "${OPTIONS} --enable-thumb")
 | |
|         endif()
 | |
|         # Set environment variables for configure
 | |
|         set(ENV{AS} ${VCPKG_DETECTED_CMAKE_C_COMPILER})
 | |
|         set(ENV{LDFLAGS} "${LDFLAGS} --target=${VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET}")
 | |
|         # Set clang target
 | |
|         set(OPTIONS "${OPTIONS} --extra-cflags=--target=${VCPKG_DETECTED_CMAKE_C_COMPILER_TARGET} --extra-cxxflags=--target=${VCPKG_DETECTED_CMAKE_CXX_COMPILER_TARGET}")
 | |
|         # Unset nasm and let AS do its job
 | |
|         unset(AS_NASM)
 | |
|     elseif(VCPKG_TARGET_IS_OSX)
 | |
|         if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
 | |
|             set(LIBVPX_TARGET "arm64-darwin20-gcc")
 | |
|             if(DEFINED VCPKG_OSX_DEPLOYMENT_TARGET)
 | |
|                 set(MAC_OSX_MIN_VERSION_CFLAGS --extra-cflags=-mmacosx-version-min=${VCPKG_OSX_DEPLOYMENT_TARGET} --extra-cxxflags=-mmacosx-version-min=${VCPKG_OSX_DEPLOYMENT_TARGET})
 | |
|             endif()
 | |
|         else()
 | |
|             set(LIBVPX_TARGET "${LIBVPX_TARGET_ARCH}-darwin17-gcc") # enable latest CPU instructions for best performance and less CPU usage on MacOS
 | |
|         endif()
 | |
|     elseif(VCPKG_TARGET_IS_IOS)
 | |
|         if(VCPKG_TARGET_ARCHITECTURE STREQUAL arm)
 | |
|             set(LIBVPX_TARGET "armv7-darwin-gcc")
 | |
|         elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64)
 | |
|             set(LIBVPX_TARGET "arm64-darwin-gcc")
 | |
|         else()
 | |
|             message(FATAL_ERROR "libvpx does not support architecture ${VCPKG_TARGET_ARCHITECTURE} on iOS")
 | |
|         endif()
 | |
|     else()
 | |
|         set(LIBVPX_TARGET "generic-gnu") # use default target
 | |
|     endif()
 | |
| 
 | |
|     message(STATUS "Build info. Target: ${LIBVPX_TARGET}; Options: ${OPTIONS}")
 | |
| 
 | |
|     if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
 | |
|         message(STATUS "Configuring libvpx for Release")
 | |
|         file(MAKE_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel")
 | |
|         vcpkg_execute_required_process(
 | |
|         COMMAND
 | |
|             ${BASH} --noprofile --norc
 | |
|             "${SOURCE_PATH}/configure"
 | |
|             --target=${LIBVPX_TARGET}
 | |
|             ${OPTIONS}
 | |
|             ${OPTIONS_RELEASE}
 | |
|             ${MAC_OSX_MIN_VERSION_CFLAGS}
 | |
|             ${AS_NASM}
 | |
|         WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
 | |
|         LOGNAME configure-${TARGET_TRIPLET}-rel)
 | |
| 
 | |
|         message(STATUS "Building libvpx for Release")
 | |
|         vcpkg_execute_required_process(
 | |
|             COMMAND
 | |
|                 ${BASH} --noprofile --norc -c "make -j${VCPKG_CONCURRENCY}"
 | |
|             WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
 | |
|             LOGNAME build-${TARGET_TRIPLET}-rel
 | |
|         )
 | |
| 
 | |
|         message(STATUS "Installing libvpx for Release")
 | |
|         vcpkg_execute_required_process(
 | |
|             COMMAND
 | |
|                 ${BASH} --noprofile --norc -c "make install"
 | |
|             WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
 | |
|             LOGNAME install-${TARGET_TRIPLET}-rel
 | |
|         )
 | |
|     endif()
 | |
| 
 | |
|     # --- --- ---
 | |
| 
 | |
|     if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
 | |
|         message(STATUS "Configuring libvpx for Debug")
 | |
|         file(MAKE_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg")
 | |
|         vcpkg_execute_required_process(
 | |
|         COMMAND
 | |
|             ${BASH} --noprofile --norc
 | |
|             "${SOURCE_PATH}/configure"
 | |
|             --target=${LIBVPX_TARGET}
 | |
|             ${OPTIONS}
 | |
|             ${OPTIONS_DEBUG}
 | |
|             ${MAC_OSX_MIN_VERSION_CFLAGS}
 | |
|             ${AS_NASM}
 | |
|         WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg"
 | |
|         LOGNAME configure-${TARGET_TRIPLET}-dbg)
 | |
| 
 | |
|         message(STATUS "Building libvpx for Debug")
 | |
|         vcpkg_execute_required_process(
 | |
|             COMMAND
 | |
|                 ${BASH} --noprofile --norc -c "make -j${VCPKG_CONCURRENCY}"
 | |
|             WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg"
 | |
|             LOGNAME build-${TARGET_TRIPLET}-dbg
 | |
|         )
 | |
| 
 | |
|         message(STATUS "Installing libvpx for Debug")
 | |
|         vcpkg_execute_required_process(
 | |
|             COMMAND
 | |
|                 ${BASH} --noprofile --norc -c "make install"
 | |
|             WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg"
 | |
|             LOGNAME install-${TARGET_TRIPLET}-dbg
 | |
|         )
 | |
| 
 | |
|         file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
 | |
|         file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/lib/libvpx_g.a")
 | |
|     endif()
 | |
| endif()
 | |
| 
 | |
| vcpkg_fixup_pkgconfig()
 | |
| 
 | |
| if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
 | |
|     set(LIBVPX_CONFIG_DEBUG ON)
 | |
| else()
 | |
|     set(LIBVPX_CONFIG_DEBUG OFF)
 | |
| endif()
 | |
| 
 | |
| configure_file("${CMAKE_CURRENT_LIST_DIR}/unofficial-libvpx-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/unofficial-libvpx/unofficial-libvpx-config.cmake" @ONLY)
 | |
| 
 | |
| vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
 | 
