mirror of
https://github.com/panda3d/panda3d.git
synced 2026-02-15 03:28:48 -06:00
CMake: change how thirdparty directory is detected
This commit is contained in:
@@ -1,9 +1,54 @@
|
||||
set(_thirdparty_dir_default "${PROJECT_SOURCE_DIR}/thirdparty")
|
||||
if(NOT IS_DIRECTORY "${_thirdparty_dir_default}")
|
||||
set(_thirdparty_dir_default "")
|
||||
set(_thirdparty_platform)
|
||||
|
||||
if(APPLE)
|
||||
set(_thirdparty_platform "darwin-libs-a")
|
||||
|
||||
elseif(WIN32)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_thirdparty_platform "win-libs-vc14-x64")
|
||||
else()
|
||||
set(_thirdparty_platform "win-libs-vc14")
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
set(_thirdparty_platform "linux-libs-arm64")
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_thirdparty_platform "linux-libs-x64")
|
||||
else()
|
||||
set(_thirdparty_platform "linux-libs-a")
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
set(_thirdparty_platform "freebsd-libs-arm64")
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_thirdparty_platform "freebsd-libs-x64")
|
||||
else()
|
||||
set(_thirdparty_platform "freebsd-libs-a")
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(_thirdparty_platform "android-libs-${CMAKE_ANDROID_ARCH}")
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
|
||||
set(_thirdparty_platform "emscripten-libs")
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "WASI")
|
||||
set(_thirdparty_platform "wasi-libs-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
endif()
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "WASI")
|
||||
set(_thirdparty_dir_default "")
|
||||
|
||||
set(_thirdparty_dir_default "")
|
||||
if(_thirdparty_platform)
|
||||
if(IS_DIRECTORY "${PROJECT_SOURCE_DIR}/thirdparty/${_thirdparty_platform}")
|
||||
set(_thirdparty_dir_default "${PROJECT_SOURCE_DIR}/thirdparty")
|
||||
|
||||
else()
|
||||
message(WARNING
|
||||
"Ignoring thirdparty directory without ${_thirdparty_platform} subdirectory.")
|
||||
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(THIRDPARTY_DIRECTORY "${_thirdparty_dir_default}" CACHE PATH
|
||||
@@ -14,6 +59,11 @@ set(THIRDPARTY_DIRECTORY "${_thirdparty_dir_default}" CACHE PATH
|
||||
set(THIRDPARTY_DLLS)
|
||||
|
||||
if(THIRDPARTY_DIRECTORY)
|
||||
if(NOT _thirdparty_platform)
|
||||
message(FATAL_ERROR
|
||||
"You can't use THIRDPARTY_DIRECTORY on this platform. Unset it to continue.")
|
||||
endif()
|
||||
|
||||
# This policy is necessary for PackageName_ROOT variables to be respected
|
||||
if(POLICY CMP0074)
|
||||
cmake_policy(GET CMP0074 _policy_cmp0074)
|
||||
@@ -24,21 +74,14 @@ if(THIRDPARTY_DIRECTORY)
|
||||
"Your version of CMake is too old; please upgrade or unset THIRDPARTY_DIRECTORY to continue.")
|
||||
endif()
|
||||
|
||||
# Dig up the actual "libs" directory
|
||||
if(APPLE)
|
||||
set(_package_dir "${THIRDPARTY_DIRECTORY}/darwin-libs-a")
|
||||
|
||||
# Make sure thirdparty has the first shot, not system frameworks
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
|
||||
elseif(WIN32)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_package_dir "${THIRDPARTY_DIRECTORY}/win-libs-vc14-x64")
|
||||
|
||||
file(GLOB _python_dirs "${THIRDPARTY_DIRECTORY}/win-python*-x64")
|
||||
else()
|
||||
set(_package_dir "${THIRDPARTY_DIRECTORY}/win-libs-vc14")
|
||||
|
||||
file(GLOB _python_dirs "${THIRDPARTY_DIRECTORY}/win-python*")
|
||||
endif()
|
||||
|
||||
@@ -50,37 +93,6 @@ if(THIRDPARTY_DIRECTORY)
|
||||
set(BISON_ROOT "${THIRDPARTY_DIRECTORY}/win-util")
|
||||
set(FLEX_ROOT "${THIRDPARTY_DIRECTORY}/win-util")
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/linux-libs-arm64)
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/linux-libs-x64)
|
||||
else()
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/linux-libs-a)
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/freebsd-libs-arm64)
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/freebsd-libs-x64)
|
||||
else()
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/freebsd-libs-a)
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(_package_dir ${THIRDPARTY_DIRECTORY}/android-libs-${CMAKE_ANDROID_ARCH})
|
||||
|
||||
else()
|
||||
message(FATAL_ERROR
|
||||
"You can't use THIRDPARTY_DIRECTORY on this platform. Unset it to continue.")
|
||||
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_package_dir}")
|
||||
message(FATAL_ERROR
|
||||
"Either your THIRDPARTY_DIRECTORY path does not exist, or it is for the wrong platform.")
|
||||
|
||||
endif()
|
||||
|
||||
foreach(_Package
|
||||
@@ -133,7 +145,7 @@ if(THIRDPARTY_DIRECTORY)
|
||||
endif()
|
||||
|
||||
# Set search path
|
||||
set(${_Package}_ROOT "${_package_dir}/${_package}")
|
||||
set(${_Package}_ROOT "${THIRDPARTY_DIRECTORY}/${_thirdparty_platform}/${_package}")
|
||||
|
||||
# Set up copying DLLs, if necessary
|
||||
file(GLOB _dlls "${${_Package}_ROOT}/bin/*.dll")
|
||||
|
||||
Reference in New Issue
Block a user