CMake: resolve uninitialized variable warnings

This commit is contained in:
Campbell Barton 2026-01-29 02:37:08 +00:00
parent b2ea4d3506
commit 8285ff7b81
9 changed files with 89 additions and 41 deletions

View file

@ -1463,11 +1463,13 @@ if(WITH_PYTHON)
# Do this before main 'platform_*' checks,
# because UNIX will search for the old Python paths which may not exist.
# giving errors about missing paths before this case is met.
if(DEFINED PYTHON_VERSION AND "${PYTHON_VERSION}" VERSION_LESS "3.13")
message(
FATAL_ERROR
"At least Python 3.13 is required to build, but found Python ${PYTHON_VERSION}"
)
if(DEFINED PYTHON_VERSION)
if("${PYTHON_VERSION}" VERSION_LESS "3.13")
message(
FATAL_ERROR
"At least Python 3.13 is required to build, but found Python ${PYTHON_VERSION}"
)
endif()
endif()
endif()
@ -2901,8 +2903,10 @@ if(FIRST_RUN)
if(WITH_PYTHON)
info_cfg_text("Python:")
info_cfg_option(WITH_PYTHON_INSTALL)
info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
info_cfg_option(WITH_PYTHON_INSTALL_ZSTANDARD)
if(WITH_PYTHON_INSTALL)
info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
info_cfg_option(WITH_PYTHON_INSTALL_ZSTANDARD)
endif()
info_cfg_option(WITH_PYTHON_MODULE)
info_cfg_option(WITH_PYTHON_SAFETY)
endif()

View file

@ -106,6 +106,17 @@ if((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
# endif()
string(REPLACE " " "" _CURRENT_ABI_FLAGS ${_CURRENT_ABI_FLAGS})
set(_python_INCLUDE_PATH_SUFFIXES
include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
)
if(DEFINED CMAKE_LIBRARY_ARCHITECTURE)
if(CMAKE_LIBRARY_ARCHITECTURE)
list(APPEND _python_INCLUDE_PATH_SUFFIXES
include/${CMAKE_LIBRARY_ARCHITECTURE}/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
)
endif()
endif()
if(NOT DEFINED PYTHON_INCLUDE_DIR)
find_path(PYTHON_INCLUDE_DIR
NAMES
@ -113,8 +124,7 @@ if((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
HINTS
${_python_SEARCH_DIRS}
PATH_SUFFIXES
include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
include/${CMAKE_LIBRARY_ARCHITECTURE}/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
${_python_INCLUDE_PATH_SUFFIXES}
)
endif()
@ -125,8 +135,7 @@ if((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
HINTS
${_python_SEARCH_DIRS}
PATH_SUFFIXES
include/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
include/${CMAKE_LIBRARY_ARCHITECTURE}/python${PYTHON_VERSION}${_CURRENT_ABI_FLAGS}
${_python_INCLUDE_PATH_SUFFIXES}
)
if((NOT PYTHON_INCLUDE_CONFIG_DIR) AND PYTHON_INCLUDE_DIR)
# Fallback...
@ -184,6 +193,7 @@ if((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
unset(_CURRENT_ABI_FLAGS)
unset(_CURRENT_PATH)
unset(_python_INCLUDE_PATH_SUFFIXES)
unset(_PYTHON_ABI_FLAGS_TEST)

View file

@ -88,10 +88,19 @@ if(UNIX AND NOT APPLE)
set(WITH_PIPEWIRE OFF CACHE BOOL "" FORCE)
set(WITH_PIPEWIRE_DYNLOAD ON CACHE BOOL "" FORCE)
endif()
if(NOT APPLE)
# Can't use CMAKE_SYSTEM_PROCESSOR here as it's not set yet,
# so fall back to checking the env for vcvarsall's VSCMD_ARG_TGT_ARCH
if(NOT (WIN32 AND "$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64"))
set(_is_win32_arm64_target OFF)
if(WIN32)
if(DEFINED ENV{VSCMD_ARG_TGT_ARCH})
if("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64")
# Can't use `CMAKE_SYSTEM_PROCESSOR` here as it's not set yet,
# so fall back to checking the environment for vcvarsall's `VSCMD_ARG_TGT_ARCH`.
set(_is_win32_arm64_target ON)
endif()
endif()
endif()
if(NOT _is_win32_arm64_target)
set(WITH_TBB_MALLOC_PROXY ON CACHE BOOL "" FORCE)
set(WITH_CYCLES_DEVICE_HIPRT ON CACHE BOOL "" FORCE)
set(WITH_CYCLES_DEVICE_OPTIX ON CACHE BOOL "" FORCE)
@ -100,4 +109,5 @@ if(NOT APPLE)
set(WITH_CYCLES_DEVICE_ONEAPI ON CACHE BOOL "" FORCE)
set(WITH_CYCLES_ONEAPI_BINARIES ON CACHE BOOL "" FORCE)
endif()
unset(_is_win32_arm64_target)
endif()

View file

@ -259,11 +259,13 @@ add_library(bf::dependencies::optional::python ALIAS bf_deps_optional_python)
if(WITH_PYTHON)
target_compile_definitions(bf_deps_optional_python INTERFACE WITH_PYTHON)
target_include_directories(bf_deps_optional_python SYSTEM INTERFACE ${PYTHON_INCLUDE_DIR})
target_link_libraries(bf_deps_optional_python INTERFACE ${PYTHON_LINKFLAGS})
if(WITH_PYTHON_MODULE)
target_compile_definitions(bf_deps_optional_python INTERFACE WITH_PYTHON_MODULE)
else()
target_link_libraries(bf_deps_optional_python INTERFACE ${PYTHON_LIBRARIES})
endif()
target_include_directories(bf_deps_optional_python SYSTEM INTERFACE ${PYTHON_INCLUDE_DIR})
target_link_libraries(bf_deps_optional_python INTERFACE ${PYTHON_LINKFLAGS} ${PYTHON_LIBRARIES})
endif()
# -----------------------------------------------------------------------------
@ -340,9 +342,11 @@ target_link_libraries(bf_deps_epoxy INTERFACE ${Epoxy_LIBRARIES})
add_library(bf_deps_gflags INTERFACE)
add_library(bf::dependencies::gflags ALIAS bf_deps_gflags)
target_compile_definitions(bf_deps_gflags INTERFACE ${GFLAGS_DEFINES})
target_include_directories(bf_deps_gflags SYSTEM INTERFACE ${GFLAGS_INCLUDE_DIRS})
target_link_libraries(bf_deps_gflags INTERFACE ${GFLAGS_LIBRARIES})
if(WITH_LIBMV OR WITH_GTESTS)
target_compile_definitions(bf_deps_gflags INTERFACE ${GFLAGS_DEFINES})
target_include_directories(bf_deps_gflags SYSTEM INTERFACE ${GFLAGS_INCLUDE_DIRS})
target_link_libraries(bf_deps_gflags INTERFACE ${GFLAGS_LIBRARIES})
endif()
# -----------------------------------------------------------------------------
# Configure Glog
@ -350,9 +354,11 @@ target_link_libraries(bf_deps_gflags INTERFACE ${GFLAGS_LIBRARIES})
add_library(bf_deps_glog INTERFACE)
add_library(bf::dependencies::glog ALIAS bf_deps_glog)
target_compile_definitions(bf_deps_glog INTERFACE ${GLOG_DEFINES})
target_include_directories(bf_deps_glog SYSTEM INTERFACE ${GLOG_INCLUDE_DIRS})
target_link_libraries(bf_deps_glog INTERFACE ${GLOG_LIBRARIES})
if(WITH_LIBMV OR WITH_GTESTS)
target_compile_definitions(bf_deps_glog INTERFACE ${GLOG_DEFINES})
target_include_directories(bf_deps_glog SYSTEM INTERFACE ${GLOG_INCLUDE_DIRS})
target_link_libraries(bf_deps_glog INTERFACE ${GLOG_LIBRARIES})
endif()
# -----------------------------------------------------------------------------
# Configure OpenImageDenoise

View file

@ -165,21 +165,23 @@ endif()
add_bundled_libraries(vulkan/lib)
function(check_freetype_for_brotli)
if((DEFINED HAVE_BROTLI AND HAVE_BROTLI) AND
(DEFINED HAVE_BROTLI_INC AND ("${HAVE_BROTLI_INC}" STREQUAL "${FREETYPE_INCLUDE_DIRS}")))
# Pass, the includes didn't change, use the cached value.
else()
unset(HAVE_BROTLI CACHE)
include(CheckSymbolExists)
set(CMAKE_REQUIRED_INCLUDES ${FREETYPE_INCLUDE_DIRS})
check_symbol_exists(FT_CONFIG_OPTION_USE_BROTLI "freetype/config/ftconfig.h" HAVE_BROTLI)
unset(CMAKE_REQUIRED_INCLUDES)
if(NOT HAVE_BROTLI)
unset(HAVE_BROTLI CACHE)
message(FATAL_ERROR "Freetype needs to be compiled with brotli support!")
if((DEFINED HAVE_BROTLI) AND (DEFINED HAVE_BROTLI_INC))
if(HAVE_BROTLI AND ("${HAVE_BROTLI_INC}" STREQUAL "${FREETYPE_INCLUDE_DIRS}"))
# Pass, the includes didn't change, use the cached value.
return()
endif()
set(HAVE_BROTLI_INC "${FREETYPE_INCLUDE_DIRS}" CACHE INTERNAL "")
endif()
unset(HAVE_BROTLI CACHE)
include(CheckSymbolExists)
set(CMAKE_REQUIRED_INCLUDES ${FREETYPE_INCLUDE_DIRS})
check_symbol_exists(FT_CONFIG_OPTION_USE_BROTLI "freetype/config/ftconfig.h" HAVE_BROTLI)
unset(CMAKE_REQUIRED_INCLUDES)
if(NOT HAVE_BROTLI)
unset(HAVE_BROTLI CACHE)
message(FATAL_ERROR "Freetype needs to be compiled with brotli support!")
endif()
set(HAVE_BROTLI_INC "${FREETYPE_INCLUDE_DIRS}" CACHE INTERNAL "")
endfunction()
if(NOT WITH_SYSTEM_FREETYPE)

View file

@ -357,7 +357,7 @@ function(blender_add_test_suite_executable
# perform search of _PyBaseObject_Type on startup.
#
# Work-around by telling the linker that the python libraries should not be stripped.
if(APPLE)
if(APPLE AND NOT WITH_PYTHON_MODULE)
target_link_libraries("${_test_name}_test" PRIVATE "-Wl,-force_load,${PYTHON_LIBRARIES}")
endif()

View file

@ -1219,7 +1219,14 @@ if(WITH_PYTHON)
endif()
add_library(audaspace-py ${LIBRARY_TYPE} ${PYTHON_SRC} ${PYTHON_HDR})
target_link_libraries(audaspace-py audaspace ${PYTHON_LIBRARIES})
# When Blender is built as a Python module, `PYTHON_LIBRARIES` won't be defined.
# NOTE: AUDASPACE has its own `WITH_PYTHON_MODULE` option with different meaning,
# so we check the variable is defined instead.
if(DEFINED PYTHON_LIBRARIES)
target_link_libraries(audaspace-py audaspace ${PYTHON_LIBRARIES})
else()
target_link_libraries(audaspace-py audaspace)
endif()
set_target_properties(audaspace-py PROPERTIES SOVERSION ${AUDASPACE_VERSION})
if(AUDASPACE_STANDALONE)

View file

@ -136,10 +136,12 @@ macro(cycles_external_libraries_append libraries)
${OPENEXR_LIBRARIES}
${OPENEXR_LIBRARIES} # For circular dependencies between libs.
${PUGIXML_LIBRARIES}
${PYTHON_LIBRARIES}
${ZLIB_LIBRARIES}
${CMAKE_DL_LIBS}
)
if(NOT WITH_PYTHON_MODULE)
list(APPEND ${libraries} ${PYTHON_LIBRARIES})
endif()
if(DEFINED PTHREADS_LIBRARIES)
list(APPEND ${libraries}

View file

@ -56,7 +56,6 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
if(WITH_CYCLES_ONEAPI_BINARIES)
message(STATUS "${SYCL_OFFLINE_COMPILER_PARALLEL_JOBS} instance(s) of oneAPI offline compiler will be used.")
endif()
# SYCL_CPP_FLAGS is a variable that the user can set to pass extra compiler options
set(sycl_compiler_flags
${CMAKE_CURRENT_SOURCE_DIR}/${SRC_KERNEL_DEVICE_ONEAPI}
-fsycl
@ -73,8 +72,11 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
-D__KERNEL_LOCAL_ATOMIC_SORT__
-o"${cycles_kernel_oneapi_lib}"
-I"${CMAKE_CURRENT_SOURCE_DIR}/../../.."
${SYCL_CPP_FLAGS}
)
# SYCL_CPP_FLAGS is a variable that the user can set to pass extra compiler options.
if(DEFINED SYCL_CPP_FLAGS)
list(APPEND sycl_compiler_flags ${SYCL_CPP_FLAGS})
endif()
if(WITH_CYCLES_ONEAPI_HOST_TASK_EXECUTION)
list(APPEND sycl_compiler_flags -DWITH_ONEAPI_SYCL_HOST_TASK)
@ -104,15 +106,20 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
ERROR_QUIET
)
else()
set(_ocloc_ld_library_path "${OCLOC_INSTALL_DIR}/lib")
if(DEFINED IGC_INSTALL_DIR)
string(APPEND _ocloc_ld_library_path ":${IGC_INSTALL_DIR}/lib")
endif()
execute_process(
COMMAND ${CMAKE_COMMAND}
-E env "LD_LIBRARY_PATH=${OCLOC_INSTALL_DIR}/lib:${IGC_INSTALL_DIR}/lib"
-E env "LD_LIBRARY_PATH=${_ocloc_ld_library_path}"
${OCLOC_INSTALL_DIR}/bin/ocloc ids ${device}
RESULT_VARIABLE oclocids_ret
OUTPUT_QUIET
ERROR_QUIET
)
unset(_ocloc_ld_library_path)
endif()
if(NOT oclocids_ret EQUAL 0)
list(REMOVE_ITEM CYCLES_ONEAPI_INTEL_BINARIES_ARCH ${device})