Silence some annoying warnings when doing full build with strict flags
[blender.git] / build_files / cmake / macros.cmake
index 2cc57f68e813d8c071721746593b49d8a6218a41..f26b22a9c5f13a1383e64129fdbcd267e9997c27 100644 (file)
@@ -48,7 +48,7 @@ macro(list_insert_before
        unset(_index)
 endmacro()
 
-function (list_assert_duplicates
+function(list_assert_duplicates
        list_id
        )
        
@@ -103,6 +103,23 @@ macro(file_list_suffix
 
 endmacro()
 
+if(UNIX AND NOT APPLE)
+       macro(find_package_static)
+               set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
+               set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+               find_package(${ARGV})
+               set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
+               unset(_cmake_find_library_suffixes_back)
+       endmacro()
+
+       macro(find_library_static)
+               set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
+               set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+               find_library(${ARGV})
+               set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
+               unset(_cmake_find_library_suffixes_back)
+       endmacro()
+endif()
 
 function(target_link_libraries_optimized
        TARGET
@@ -124,22 +141,6 @@ function(target_link_libraries_debug
        endforeach()
 endfunction()
 
-function(target_link_libraries_decoupled
-       target
-       libraries_var
-       )
-
-       if(NOT MSVC)
-               target_link_libraries(${target} ${${libraries_var}})
-       else()
-               # For MSVC we link to different libraries depending whether
-               # release or debug target is being built.
-               file_list_suffix(_libraries_debug "${${libraries_var}}" "_d")
-               target_link_libraries_debug(${target} "${_libraries_debug}")
-               target_link_libraries_optimized(${target} "${${libraries_var}}")
-       endif()
-endfunction()
-
 # Nicer makefiles with -I/1/foo/ instead of -I/1/2/3/../../foo/
 # use it instead of include_directories()
 function(blender_include_dirs
@@ -239,6 +240,9 @@ endfunction()
 
 function(SETUP_LIBDIRS)
 
+       # NOTE: For all new libraries, use absolute library paths.
+       # This should eventually be phased out.
+
        link_directories(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH})
 
        if(WITH_PYTHON)  #  AND NOT WITH_PYTHON_MODULE  # WIN32 needs
@@ -265,11 +269,8 @@ function(SETUP_LIBDIRS)
        if(WITH_OPENCOLORIO)
                link_directories(${OPENCOLORIO_LIBPATH})
        endif()
-       if(WITH_IMAGE_OPENJPEG AND WITH_SYSTEM_OPENJPEG)
-               link_directories(${OPENJPEG_LIBPATH})
-       endif()
-       if(WITH_CODEC_QUICKTIME)
-               link_directories(${QUICKTIME_LIBPATH})
+       if(WITH_OPENVDB)
+               link_directories(${OPENVDB_LIBPATH})
        endif()
        if(WITH_OPENAL)
                link_directories(${OPENAL_LIBPATH})
@@ -285,15 +286,13 @@ function(SETUP_LIBDIRS)
        endif()
        if(WITH_OPENCOLLADA)
                link_directories(${OPENCOLLADA_LIBPATH})
-               link_directories(${PCRE_LIBPATH})
-               link_directories(${EXPAT_LIBPATH})
+               ## Never set
+               # link_directories(${PCRE_LIBPATH})
+               # link_directories(${EXPAT_LIBPATH})
        endif()
        if(WITH_LLVM)
                link_directories(${LLVM_LIBPATH})
        endif()
-       if(WITH_MEM_JEMALLOC)
-               link_directories(${JEMALLOC_LIBPATH})
-       endif()
 
        if(WIN32 AND NOT UNIX)
                link_directories(${PTHREADS_LIBPATH})
@@ -304,14 +303,14 @@ function(setup_liblinks
        target
        )
 
-       set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}")
-       set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}")
+       set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE)
+       set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE)
 
-       set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}")
-       set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}")
+       set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE)
+       set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE)
 
-       set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}")
-       set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}")
+       set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE)
+       set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE)
 
        target_link_libraries(
                ${target}
@@ -343,6 +342,9 @@ function(setup_liblinks
        if(WITH_BULLET AND WITH_SYSTEM_BULLET)
                target_link_libraries(${target} ${BULLET_LIBRARIES})
        endif()
+       if(WITH_AUDASPACE AND WITH_SYSTEM_AUDASPACE)
+               target_link_libraries(${target} ${AUDASPACE_C_LIBRARIES} ${AUDASPACE_PY_LIBRARIES})
+       endif()
        if(WITH_OPENAL)
                target_link_libraries(${target} ${OPENAL_LIBRARY})
        endif()
@@ -370,6 +372,19 @@ function(setup_liblinks
        if(WITH_OPENCOLORIO)
                target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES})
        endif()
+       if(WITH_OPENSUBDIV)
+               if(WIN32 AND NOT UNIX)
+                       file_list_suffix(OPENSUBDIV_LIBRARIES_DEBUG "${OPENSUBDIV_LIBRARIES}" "_d")
+                       target_link_libraries_debug(${target} "${OPENSUBDIV_LIBRARIES_DEBUG}")
+                       target_link_libraries_optimized(${target} "${OPENSUBDIV_LIBRARIES}")
+                       unset(OPENSUBDIV_LIBRARIES_DEBUG)
+               else()
+                       target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
+               endif()
+       endif()
+       if(WITH_OPENVDB)
+               target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES})
+       endif()
        if(WITH_CYCLES_OSL)
                target_link_libraries(${target} ${OSL_LIBRARIES})
        endif()
@@ -381,14 +396,7 @@ function(setup_liblinks
        endif()
        target_link_libraries(${target} ${JPEG_LIBRARIES})
        if(WITH_IMAGE_OPENEXR)
-               if(WIN32 AND NOT UNIX AND NOT CMAKE_COMPILER_IS_GNUCC)
-                       file_list_suffix(OPENEXR_LIBRARIES_DEBUG "${OPENEXR_LIBRARIES}" "_d")
-                       target_link_libraries_debug(${target} "${OPENEXR_LIBRARIES_DEBUG}")
-                       target_link_libraries_optimized(${target} "${OPENEXR_LIBRARIES}")
-                       unset(OPENEXR_LIBRARIES_DEBUG)
-               else()
-                       target_link_libraries(${target} ${OPENEXR_LIBRARIES})
-               endif()
+               target_link_libraries(${target} ${OPENEXR_LIBRARIES})
        endif()
        if(WITH_IMAGE_OPENJPEG AND WITH_SYSTEM_OPENJPEG)
                target_link_libraries(${target} ${OPENJPEG_LIBRARIES})
@@ -439,11 +447,20 @@ function(setup_liblinks
        if(WIN32 AND NOT UNIX)
                target_link_libraries(${target} ${PTHREADS_LIBRARIES})
        endif()
+       if(UNIX AND NOT APPLE)
+               if(WITH_OPENMP_STATIC)
+                       target_link_libraries(${target} ${OpenMP_LIBRARIES})
+               endif()
+       endif()
 
        # We put CLEW and CUEW here because OPENSUBDIV_LIBRARIES dpeends on them..
        if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV)
                target_link_libraries(${target} "extern_clew")
-               target_link_libraries(${target} "extern_cuew")
+               if(WITH_CUDA_DYNLOAD)
+                       target_link_libraries(${target} "extern_cuew")
+               else()
+                       target_link_libraries(${target} ${CUDA_CUDA_LIBRARY})
+               endif()
        endif()
 
        #system libraries with no dependencies such as platform link libs or opengl should go last
@@ -561,7 +578,7 @@ function(SETUP_BLENDER_SORTED_LIBS)
                ge_phys_bullet
                bf_intern_smoke
                extern_lzma
-               extern_colamd
+               extern_curve_fit_nd
                ge_logic_ketsji
                extern_recastnavigation
                ge_logic
@@ -574,10 +591,10 @@ function(SETUP_BLENDER_SORTED_LIBS)
                ge_logic_loopbacknetwork
                bf_intern_moto
                extern_openjpeg
-               extern_redcode
                ge_videotex
                bf_dna
                bf_blenfont
+               bf_blentranslation
                bf_intern_audaspace
                bf_intern_mikktspace
                bf_intern_dualcon
@@ -588,12 +605,13 @@ function(SETUP_BLENDER_SORTED_LIBS)
                cycles_kernel
                cycles_util
                cycles_subd
-               bf_intern_raskter
                bf_intern_opencolorio
+               bf_intern_eigen
                extern_rangetree
                extern_wcwidth
-               extern_libmv
+               bf_intern_libmv
                extern_glog
+               extern_gflags
                extern_sdlew
 
                bf_intern_glew_mx
@@ -661,10 +679,6 @@ function(SETUP_BLENDER_SORTED_LIBS)
                list(APPEND BLENDER_SORTED_LIBS bf_intern_locale)
        endif()
 
-       if(WITH_OPENNL)
-               list_insert_after(BLENDER_SORTED_LIBS "bf_render" "bf_intern_opennl")
-       endif()
-
        if(WITH_BULLET)
                list_insert_after(BLENDER_SORTED_LIBS "bf_blenkernel" "bf_intern_rigidbody")
        endif()
@@ -673,6 +687,14 @@ function(SETUP_BLENDER_SORTED_LIBS)
                list_insert_after(BLENDER_SORTED_LIBS "ge_logic_ngnetwork" "extern_bullet")
        endif()
 
+       if(WITH_OPENSUBDIV)
+               list(APPEND BLENDER_SORTED_LIBS bf_intern_opensubdiv)
+       endif()
+
+       if(WITH_OPENVDB)
+               list(APPEND BLENDER_SORTED_LIBS bf_intern_openvdb)
+       endif()
+
        foreach(SORTLIB ${BLENDER_SORTED_LIBS})
                set(REMLIB ${SORTLIB})
                foreach(SEARCHLIB ${BLENDER_LINK_LIBS})
@@ -759,15 +781,11 @@ macro(TEST_SSE_SUPPORT
        unset(CMAKE_REQUIRED_FLAGS)
 endmacro()
 
-macro(TEST_STDBOOL_SUPPORT)
-       include(CheckCSourceRuns)
-
-       # This program will compile correctly if and only if
-       # this C compiler supports C99 stdbool.
-       check_c_source_runs("
-               #include <stdbool.h>
-               int main(void) { return (int)false; }"
-       HAVE_STDBOOL_H)
+# Only print message if running CMake first time
+macro(message_first_run)
+       if(FIRST_RUN)
+               message(${ARGV})
+       endif()
 endmacro()
 
 macro(TEST_UNORDERED_MAP_SUPPORT)
@@ -776,11 +794,11 @@ macro(TEST_UNORDERED_MAP_SUPPORT)
        # and define the include path
        # This module defines
        #  HAVE_UNORDERED_MAP, whether unordered_map implementation was found
-       #  
+       #
        #  HAVE_STD_UNORDERED_MAP_HEADER, <unordered_map.h> was found
        #  HAVE_UNORDERED_MAP_IN_STD_NAMESPACE, unordered_map is in namespace std
        #  HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE, unordered_map is in namespace std::tr1
-       #  
+       #
        #  UNORDERED_MAP_INCLUDE_PREFIX, include path prefix for unordered_map, if found
        #  UNORDERED_MAP_NAMESPACE, namespace for unordered_map, if found
 
@@ -804,7 +822,7 @@ macro(TEST_UNORDERED_MAP_SUPPORT)
                                          }"
                                          HAVE_UNORDERED_MAP_IN_STD_NAMESPACE)
                if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE)
-                       message(STATUS "Found unordered_map/set in std namespace.")
+                       message_first_run(STATUS "Found unordered_map/set in std namespace.")
 
                        set(HAVE_UNORDERED_MAP "TRUE")
                        set(UNORDERED_MAP_INCLUDE_PREFIX "")
@@ -817,26 +835,26 @@ macro(TEST_UNORDERED_MAP_SUPPORT)
                                                  }"
                                                  HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
                        if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
-                               message(STATUS "Found unordered_map/set in std::tr1 namespace.")
+                               message_first_run(STATUS "Found unordered_map/set in std::tr1 namespace.")
 
                                set(HAVE_UNORDERED_MAP "TRUE")
                                set(UNORDERED_MAP_INCLUDE_PREFIX "")
                                set(UNORDERED_MAP_NAMESPACE "std::tr1")
                        else()
-                               message(STATUS "Found <unordered_map> but cannot find either std::unordered_map "
-                                       "or std::tr1::unordered_map.")
+                               message_first_run(STATUS "Found <unordered_map> but cannot find either std::unordered_map "
+                                                 "or std::tr1::unordered_map.")
                        endif()
                endif()
        else()
                CHECK_INCLUDE_FILE_CXX("tr1/unordered_map" HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
                if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
-                       message(STATUS "Found unordered_map/set in std::tr1 namespace.")
+                       message_first_run(STATUS "Found unordered_map/set in std::tr1 namespace.")
 
                        set(HAVE_UNORDERED_MAP "TRUE")
                        set(UNORDERED_MAP_INCLUDE_PREFIX "tr1")
                        set(UNORDERED_MAP_NAMESPACE "std::tr1")
                else()
-                       message(STATUS "Unable to find <unordered_map> or <tr1/unordered_map>. ")
+                       message_first_run(STATUS "Unable to find <unordered_map> or <tr1/unordered_map>. ")
                endif()
        endif()
 endmacro()
@@ -873,7 +891,7 @@ macro(TEST_SHARED_PTR_SUPPORT)
                                          HAVE_SHARED_PTR_IN_STD_NAMESPACE)
 
                if(HAVE_SHARED_PTR_IN_STD_NAMESPACE)
-                       message("-- Found shared_ptr in std namespace using <memory> header.")
+                       message_first_run("-- Found shared_ptr in std namespace using <memory> header.")
                        set(SHARED_PTR_FOUND TRUE)
                else()
                        CHECK_CXX_SOURCE_COMPILES("#include <memory>
@@ -883,7 +901,7 @@ macro(TEST_SHARED_PTR_SUPPORT)
                                                   }"
                                                  HAVE_SHARED_PTR_IN_TR1_NAMESPACE)
                        if(HAVE_SHARED_PTR_IN_TR1_NAMESPACE)
-                               message("-- Found shared_ptr in std::tr1 namespace using <memory> header.")
+                               message_first_run("-- Found shared_ptr in std::tr1 namespace using <memory> header.")
                                set(SHARED_PTR_TR1_NAMESPACE TRUE)
                                set(SHARED_PTR_FOUND TRUE)
                        endif()
@@ -904,7 +922,7 @@ macro(TEST_SHARED_PTR_SUPPORT)
                                                   }"
                                                   HAVE_SHARED_PTR_IN_TR1_NAMESPACE_FROM_TR1_MEMORY_HEADER)
                        if(HAVE_SHARED_PTR_IN_TR1_NAMESPACE_FROM_TR1_MEMORY_HEADER)
-                               message("-- Found shared_ptr in std::tr1 namespace using <tr1/memory> header.")
+                               message_first_run("-- Found shared_ptr in std::tr1 namespace using <tr1/memory> header.")
                                set(SHARED_PTR_TR1_MEMORY_HEADER TRUE)
                                set(SHARED_PTR_TR1_NAMESPACE TRUE)
                                set(SHARED_PTR_FOUND TRUE)
@@ -918,19 +936,22 @@ endmacro()
 
 # utility macro
 macro(remove_cc_flag
-       flag)
-
-       string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
-       string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
-       string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
-       string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
-       string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
-
-       string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-       string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
-       string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
-       string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}")
-       string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+       _flag)
+
+       foreach(flag ${ARGV})
+               string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+               string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
+               string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+               string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
+               string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+
+               string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+               string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
+               string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+               string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}")
+               string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+       endforeach()
+       unset(flag)
 
 endmacro()
 
@@ -944,28 +965,35 @@ endmacro()
 macro(remove_strict_flags)
 
        if(CMAKE_COMPILER_IS_GNUCC)
-               remove_cc_flag("-Wstrict-prototypes")
-               remove_cc_flag("-Wmissing-prototypes")
-               remove_cc_flag("-Wunused-parameter")
-               remove_cc_flag("-Wunused-macros")
-               remove_cc_flag("-Wwrite-strings")
-               remove_cc_flag("-Wredundant-decls")
-               remove_cc_flag("-Wundef")
-               remove_cc_flag("-Wshadow")
-               remove_cc_flag("-Wdouble-promotion")
-               remove_cc_flag("-Wold-style-definition")
-               remove_cc_flag("-Werror=[^ ]+")
-               remove_cc_flag("-Werror")
+               remove_cc_flag(
+                       "-Wstrict-prototypes"
+                       "-Wmissing-prototypes"
+                       "-Wmissing-declarations"
+                       "-Wmissing-format-attribute"
+                       "-Wunused-local-typedefs"
+                       "-Wunused-macros"
+                       "-Wunused-parameter"
+                       "-Wwrite-strings"
+                       "-Wredundant-decls"
+                       "-Wundef"
+                       "-Wshadow"
+                       "-Wdouble-promotion"
+                       "-Wold-style-definition"
+                       "-Werror=[^ ]+"
+                       "-Werror"
+               )
 
                # negate flags implied by '-Wall'
                add_cc_flag("${CC_REMOVE_STRICT_FLAGS}")
        endif()
 
        if(CMAKE_C_COMPILER_ID MATCHES "Clang")
-               remove_cc_flag("-Wunused-parameter")
-               remove_cc_flag("-Wunused-variable")
-               remove_cc_flag("-Werror=[^ ]+")
-               remove_cc_flag("-Werror")
+               remove_cc_flag(
+                       "-Wunused-parameter"
+                       "-Wunused-variable"
+                       "-Werror=[^ ]+"
+                       "-Werror"
+               )
 
                # negate flags implied by '-Wall'
                add_cc_flag("${CC_REMOVE_STRICT_FLAGS}")
@@ -979,11 +1007,15 @@ endmacro()
 
 macro(remove_extra_strict_flags)
        if(CMAKE_COMPILER_IS_GNUCC)
-               remove_cc_flag("-Wunused-parameter")
+               remove_cc_flag(
+                       "-Wunused-parameter"
+               )
        endif()
 
        if(CMAKE_C_COMPILER_ID MATCHES "Clang")
-               remove_cc_flag("-Wunused-parameter")
+               remove_cc_flag(
+                       "-Wunused-parameter"
+               )
        endif()
 
        if(MSVC)
@@ -1160,7 +1192,7 @@ macro(blender_project_hack_post)
                # MINGW workaround for -ladvapi32 being included which surprisingly causes
                # string formatting of floats, eg: printf("%.*f", 3, value). to crash blender
                # with a meaningless stack trace. by overriding this flag we ensure we only
-               # have libs we define and that cmake & scons builds match.
+               # have libs we define.
                set(CMAKE_C_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
                set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
                mark_as_advanced(
@@ -1250,7 +1282,7 @@ function(data_to_c
        add_custom_command(
                OUTPUT ${file_to}
                COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
-               COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/datatoc ${file_from} ${file_to}
+               COMMAND "$<TARGET_FILE:datatoc>" ${file_from} ${file_to}
                DEPENDS ${file_from} datatoc)
 
        set_source_files_properties(${file_to} PROPERTIES GENERATED TRUE)
@@ -1275,7 +1307,7 @@ function(data_to_c_simple
        add_custom_command(
                OUTPUT  ${_file_to}
                COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
-               COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/datatoc ${_file_from} ${_file_to}
+               COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to}
                DEPENDS ${_file_from} datatoc)
 
        set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
@@ -1308,8 +1340,8 @@ function(data_to_c_simple_icons
                OUTPUT  ${_file_from} ${_file_to}
                COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
                #COMMAND python3 ${CMAKE_SOURCE_DIR}/source/blender/datatoc/datatoc_icon.py ${_path_from_abs} ${_file_from}
-               COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/datatoc_icon ${_path_from_abs} ${_file_from}
-               COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/datatoc ${_file_from} ${_file_to}
+               COMMAND "$<TARGET_FILE:datatoc_icon>" ${_path_from_abs} ${_file_from}
+               COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to}
                DEPENDS
                        ${_icon_files}
                        datatoc_icon
@@ -1378,7 +1410,7 @@ function(msgfmt_simple
        add_custom_command(
                OUTPUT  ${_file_to}
                COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
-               COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/msgfmt ${_file_from} ${_file_to}
+               COMMAND "$<TARGET_FILE:msgfmt>" ${_file_from} ${_file_to}
                DEPENDS msgfmt ${_file_from})
 
        set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
@@ -1418,17 +1450,21 @@ function(find_python_package
                )
 
                 if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}")
-                       message(WARNING "'${package}' path could not be found in:\n"
-                                       "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${package}', "
-                                       "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}', "
-                                       "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', "
-                                       "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', "
-                                       "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python")
+                       message(WARNING
+                               "Python package '${package}' path could not be found in:\n"
+                               "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${package}', "
+                               "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}', "
+                               "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', "
+                               "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', "
+                               "\n"
+                               "The 'WITH_PYTHON_INSTALL_${_upper_package}' option will be ignored when installing Python.\n"
+                               "The build will be usable, only add-ons that depend on this package won't be functional."
+                       )
                        set(WITH_PYTHON_INSTALL_${_upper_package} OFF PARENT_SCOPE)
                else()
                        message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'")
                endif()
-         endif()
+       endif()
 endfunction()
 
 # like Python's 'print(dir())'