diff options
Diffstat (limited to 'build_files/cmake')
-rw-r--r-- | build_files/cmake/Modules/FindEigen3.cmake | 56 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindLLVM.cmake | 94 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindOpenImageIO.cmake | 3 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindPCRE.cmake | 1 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindPythonLibsUnix.cmake | 46 | ||||
-rw-r--r-- | build_files/cmake/buildinfo.cmake | 3 | ||||
-rwxr-xr-x | build_files/cmake/cmake_consistency_check.py | 174 | ||||
-rw-r--r-- | build_files/cmake/cmake_consistency_check_config.py | 3 | ||||
-rwxr-xr-x | build_files/cmake/cmake_netbeans_project.py | 58 | ||||
-rwxr-xr-x | build_files/cmake/cmake_qtcreator_project.py | 42 | ||||
-rw-r--r-- | build_files/cmake/config/blender_lite.cmake | 1 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 347 | ||||
-rw-r--r-- | build_files/cmake/packaging.cmake | 9 | ||||
-rwxr-xr-x | build_files/cmake/project_info.py | 2 |
14 files changed, 543 insertions, 296 deletions
diff --git a/build_files/cmake/Modules/FindEigen3.cmake b/build_files/cmake/Modules/FindEigen3.cmake new file mode 100644 index 00000000000..400e8eb047d --- /dev/null +++ b/build_files/cmake/Modules/FindEigen3.cmake @@ -0,0 +1,56 @@ +# - Find Eigen3 library +# Find the native Eigen3 includes and library +# This module defines +# EIGEN3_INCLUDE_DIRS, where to find spnav.h, Set when +# EIGEN3_INCLUDE_DIR is found. +# EIGEN3_ROOT_DIR, The base directory to search for Eigen3. +# This can also be an environment variable. +# EIGEN3_FOUND, If false, do not try to use Eigen3. +# +#============================================================================= +# Copyright 2015 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If EIGEN3_ROOT_DIR was defined in the environment, use it. +IF(NOT EIGEN3_ROOT_DIR AND NOT $ENV{EIGEN3_ROOT_DIR} STREQUAL "") + SET(EIGEN3_ROOT_DIR $ENV{EIGEN3_ROOT_DIR}) +ENDIF() + +SET(_eigen3_SEARCH_DIRS + ${EIGEN3_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(EIGEN3_INCLUDE_DIR + NAMES + # header has no '.h' suffix + Eigen/Eigen + HINTS + ${_eigen3_SEARCH_DIRS} + PATH_SUFFIXES + include/eigen3 +) + +# handle the QUIETLY and REQUIRED arguments and set EIGEN3_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Eigen3 DEFAULT_MSG + EIGEN3_INCLUDE_DIR) + +IF(EIGEN3_FOUND) + SET(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) +ENDIF(EIGEN3_FOUND) + +MARK_AS_ADVANCED( + EIGEN3_INCLUDE_DIR +) diff --git a/build_files/cmake/Modules/FindLLVM.cmake b/build_files/cmake/Modules/FindLLVM.cmake new file mode 100644 index 00000000000..43791c8df8c --- /dev/null +++ b/build_files/cmake/Modules/FindLLVM.cmake @@ -0,0 +1,94 @@ +# - Find LLVM library +# Find the native LLVM includes and library +# This module defines +# LLVM_INCLUDE_DIRS, where to find LLVM.h, Set when LLVM_INCLUDE_DIR is found. +# LLVM_LIBRARIES, libraries to link against to use LLVM. +# LLVM_ROOT_DIR, The base directory to search for LLVM. +# This can also be an environment variable. +# LLVM_FOUND, If false, do not try to use LLVM. +# +# also defined, but not for general use are +# LLVM_LIBRARY, where to find the LLVM library. + +#============================================================================= +# Copyright 2015 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +if(LLVM_ROOT_DIR) + if(DEFINED LLVM_VERSION) + find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH) + endif() + if(NOT LLVM_CONFIG) + find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH) + endif() +else() + if(DEFINED LLVM_VERSION) + message(running llvm-config-${LLVM_VERSION}) + find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION}) + endif() + if(NOT LLVM_CONFIG) + find_program(LLVM_CONFIG llvm-config) + endif() +endif() + +if(NOT DEFINED LLVM_VERSION) + execute_process(COMMAND ${LLVM_CONFIG} --version + OUTPUT_VARIABLE LLVM_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use") +endif() +if(NOT LLVM_ROOT_DIR) + execute_process(COMMAND ${LLVM_CONFIG} --prefix + OUTPUT_VARIABLE LLVM_ROOT_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(LLVM_ROOT_DIR ${LLVM_ROOT_DIR} CACHE PATH "Path to the LLVM installation") +endif() +if(NOT LLVM_LIBPATH) + execute_process(COMMAND ${LLVM_CONFIG} --libdir + OUTPUT_VARIABLE LLVM_LIBPATH + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path") + mark_as_advanced(LLVM_LIBPATH) +endif() + +if(LLVM_STATIC) + find_library(LLVM_LIBRARY + NAMES LLVMAnalysis # first of a whole bunch of libs to get + PATHS ${LLVM_LIBPATH}) +else() + find_library(LLVM_LIBRARY + NAMES LLVM-${LLVM_VERSION} + PATHS ${LLVM_LIBPATH}) +endif() + + +if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH) + if(LLVM_STATIC) + # if static LLVM libraries were requested, use llvm-config to generate + # the list of what libraries we need, and substitute that in the right + # way for LLVM_LIBRARY. + execute_process(COMMAND ${LLVM_CONFIG} --libfiles + OUTPUT_VARIABLE LLVM_LIBRARY + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}") + endif() +endif() + + +# handle the QUIETLY and REQUIRED arguments and set SDL2_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LLVM DEFAULT_MSG + LLVM_LIBRARY) + +MARK_AS_ADVANCED( + LLVM_LIBRARY +) + diff --git a/build_files/cmake/Modules/FindOpenImageIO.cmake b/build_files/cmake/Modules/FindOpenImageIO.cmake index 5e454b6e5cd..789097dfd51 100644 --- a/build_files/cmake/Modules/FindOpenImageIO.cmake +++ b/build_files/cmake/Modules/FindOpenImageIO.cmake @@ -59,7 +59,8 @@ FIND_LIBRARY(OPENIMAGEIO_LIBRARY FIND_FILE(OPENIMAGEIO_IDIFF NAMES idiff - ${OPENIMAGEIO_ROOT_DIR} + HINTS + ${OPENIMAGEIO_ROOT_DIR} PATH_SUFFIXES bin ) diff --git a/build_files/cmake/Modules/FindPCRE.cmake b/build_files/cmake/Modules/FindPCRE.cmake index 9d73e9200d9..ff4b7261555 100644 --- a/build_files/cmake/Modules/FindPCRE.cmake +++ b/build_files/cmake/Modules/FindPCRE.cmake @@ -40,7 +40,6 @@ FIND_PATH(PCRE_INCLUDE_DIR pcre.h ${_pcre_SEARCH_DIRS} PATH_SUFFIXES include - include ) FIND_LIBRARY(PCRE_LIBRARY diff --git a/build_files/cmake/Modules/FindPythonLibsUnix.cmake b/build_files/cmake/Modules/FindPythonLibsUnix.cmake index 1fb27e7898c..e4236fb4c24 100644 --- a/build_files/cmake/Modules/FindPythonLibsUnix.cmake +++ b/build_files/cmake/Modules/FindPythonLibsUnix.cmake @@ -14,6 +14,7 @@ # PYTHON_INCLUDE_CONFIG_DIRS # PYTHON_LIBRARIES # PYTHON_LIBPATH, Used for installation +# PYTHON_SITE_PACKAGES, Used for installation (as a Python module) # PYTHON_LINKFLAGS # PYTHON_ROOT_DIR, The base directory to search for Python. # This can also be an environment variable. @@ -65,6 +66,14 @@ IF(DEFINED PYTHON_LIBPATH) SET(_IS_LIB_PATH_DEF ON) ENDIF() +STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) + +SET(_python_SEARCH_DIRS + ${PYTHON_ROOT_DIR} + "$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}" + "/opt/py${_PYTHON_VERSION_NO_DOTS}" + "/opt/lib/python-${PYTHON_VERSION}" +) # only search for the dirs if we havn't already IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_LIB_PATH_DEF)) @@ -74,14 +83,7 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_ "dm;dmu;du;d" # debug ) - STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) - SET(_python_SEARCH_DIRS - ${PYTHON_ROOT_DIR} - "$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}" - "/opt/py${_PYTHON_VERSION_NO_DOTS}" - "/opt/lib/python-${PYTHON_VERSION}" - ) FOREACH(_CURRENT_ABI_FLAGS ${_python_ABI_FLAGS}) #IF(CMAKE_BUILD_TYPE STREQUAL Debug) @@ -146,6 +148,7 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_ ENDIF() IF(PYTHON_LIBRARY AND PYTHON_LIBPATH AND PYTHON_INCLUDE_DIR AND PYTHON_INCLUDE_CONFIG_DIR) + SET(_PYTHON_ABI_FLAGS "${_CURRENT_ABI_FLAGS}") break() ELSE() # ensure we dont find values from 2 different ABI versions @@ -168,7 +171,6 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_ UNSET(_CURRENT_PATH) UNSET(_python_ABI_FLAGS) - UNSET(_python_SEARCH_DIRS) ENDIF() UNSET(_IS_INC_DEF) @@ -187,17 +189,41 @@ IF(PYTHONLIBSUNIX_FOUND) SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} ${PYTHON_INCLUDE_CONFIG_DIR}) SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY}) + FIND_FILE(PYTHON_SITE_PACKAGES + NAMES + # debian specific + dist-packages + site-packages + HINTS + ${PYTHON_LIBPATH}/python${PYTHON_VERSION} + ) + # we need this for installation # XXX No more valid with debian-like py3.4 packages... # GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH) - # not used - # SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "") + # not required for build, just used when bundling Python. + FIND_PROGRAM( + PYTHON_EXECUTABLE + NAMES + "python${PYTHON_VERSION}${_PYTHON_ABI_FLAGS}" + "python${PYTHON_VERSION}" + "python" + HINTS + ${_python_SEARCH_DIRS} + PATH_SUFFIXES bin + ) ENDIF() +UNSET(_PYTHON_VERSION_NO_DOTS) +UNSET(_PYTHON_ABI_FLAGS) +UNSET(_python_SEARCH_DIRS) + MARK_AS_ADVANCED( PYTHON_INCLUDE_DIR PYTHON_INCLUDE_CONFIG_DIR PYTHON_LIBRARY PYTHON_LIBPATH + PYTHON_SITE_PACKAGES + PYTHON_EXECUTABLE ) diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake index 8ef29b06213..74c1f8f1f8e 100644 --- a/build_files/cmake/buildinfo.cmake +++ b/build_files/cmake/buildinfo.cmake @@ -60,7 +60,8 @@ if(EXISTS ${SOURCE_DIR}/.git) execute_process(COMMAND git log HEAD..@{u} WORKING_DIRECTORY ${SOURCE_DIR} OUTPUT_VARIABLE _git_below_check - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) if(NOT _git_below_check STREQUAL "") # If there're commits between HEAD and upstream this means # that we're reset-ed to older revision. Use it's hash then. diff --git a/build_files/cmake/cmake_consistency_check.py b/build_files/cmake/cmake_consistency_check.py index 0883bdbf2d7..d0bbdda1870 100755 --- a/build_files/cmake/cmake_consistency_check.py +++ b/build_files/cmake/cmake_consistency_check.py @@ -28,13 +28,17 @@ if not sys.version.startswith("3"): sys.version.partition(" ")[0]) sys.exit(1) -from cmake_consistency_check_config import IGNORE, UTF8_CHECK, SOURCE_DIR +from cmake_consistency_check_config import ( + IGNORE, + UTF8_CHECK, + SOURCE_DIR, + BUILD_DIR, + ) + import os from os.path import join, dirname, normpath, splitext -print("Scanning:", SOURCE_DIR) - global_h = set() global_c = set() global_refs = {} @@ -134,6 +138,7 @@ def cmake_get_src(f): if found: cmake_base = dirname(f) + cmake_base_bin = os.path.join(BUILD_DIR, os.path.relpath(cmake_base, SOURCE_DIR)) while it is not None: i += 1 @@ -154,6 +159,8 @@ def cmake_get_src(f): # replace dirs l = l.replace("${CMAKE_CURRENT_SOURCE_DIR}", cmake_base) + l = l.replace("${CMAKE_CURRENT_BINARY_DIR}", cmake_base_bin) + l = l.strip('"') if not l: pass @@ -193,13 +200,16 @@ def cmake_get_src(f): raise Exception("unknown file type - not c or h %s -> %s" % (f, new_file)) elif context_name == "INC": - if os.path.isdir(new_file): + if new_file.startswith(BUILD_DIR): + # assume generated path + pass + elif os.path.isdir(new_file): new_path_rel = os.path.relpath(new_file, cmake_base) if new_path_rel != l: print("overly relative path:\n %s:%d\n %s\n %s" % (f, i, l, new_path_rel)) - ## Save time. just replace the line + # # Save time. just replace the line # replace_line(f, i - 1, new_path_rel) else: @@ -230,10 +240,6 @@ def cmake_get_src(f): filen.close() -for cmake in source_list(SOURCE_DIR, is_cmake): - cmake_get_src(cmake) - - def is_ignore(f): for ig in IGNORE: if ig in f: @@ -241,73 +247,83 @@ def is_ignore(f): return False -# First do stupid check, do these files exist? -print("\nChecking for missing references:") -is_err = False -errs = [] -for f in (global_h | global_c): - if f.endswith("dna.c"): - continue - - if not os.path.exists(f): - refs = global_refs[f] - if refs: - for cf, i in refs: - errs.append((cf, i)) - else: - raise Exception("CMake referenecs missing, internal error, aborting!") - is_err = True - -errs.sort() -errs.reverse() -for cf, i in errs: - print("%s:%d" % (cf, i)) - # Write a 'sed' script, useful if we get a lot of these - # print("sed '%dd' '%s' > '%s.tmp' ; mv '%s.tmp' '%s'" % (i, cf, cf, cf, cf)) - - -if is_err: - raise Exception("CMake referenecs missing files, aborting!") -del is_err -del errs - -# now check on files not accounted for. -print("\nC/C++ Files CMake doesnt know about...") -for cf in sorted(source_list(SOURCE_DIR, is_c)): - if not is_ignore(cf): - if cf not in global_c: - print("missing_c: ", cf) - - # check if automake builds a corrasponding .o file. - ''' - if cf in global_c: - out1 = os.path.splitext(cf)[0] + ".o" - out2 = os.path.splitext(cf)[0] + ".Po" - out2_dir, out2_file = out2 = os.path.split(out2) - out2 = os.path.join(out2_dir, ".deps", out2_file) - if not os.path.exists(out1) and not os.path.exists(out2): - print("bad_c: ", cf) - ''' - -print("\nC/C++ Headers CMake doesnt know about...") -for hf in sorted(source_list(SOURCE_DIR, is_c_header)): - if not is_ignore(hf): - if hf not in global_h: - print("missing_h: ", hf) - -if UTF8_CHECK: - # test encoding - import traceback - for files in (global_c, global_h): - for f in sorted(files): - if os.path.exists(f): - # ignore outside of our source tree - if "extern" not in f: - i = 1 - try: - for l in open(f, "r", encoding="utf8"): - i += 1 - except UnicodeDecodeError: - print("Non utf8: %s:%d" % (f, i)) - if i > 1: - traceback.print_exc() +def main(): + + print("Scanning:", SOURCE_DIR) + + for cmake in source_list(SOURCE_DIR, is_cmake): + cmake_get_src(cmake) + + # First do stupid check, do these files exist? + print("\nChecking for missing references:") + is_err = False + errs = [] + for f in (global_h | global_c): + if f.startswith(BUILD_DIR): + continue + + if not os.path.exists(f): + refs = global_refs[f] + if refs: + for cf, i in refs: + errs.append((cf, i)) + else: + raise Exception("CMake referenecs missing, internal error, aborting!") + is_err = True + + errs.sort() + errs.reverse() + for cf, i in errs: + print("%s:%d" % (cf, i)) + # Write a 'sed' script, useful if we get a lot of these + # print("sed '%dd' '%s' > '%s.tmp' ; mv '%s.tmp' '%s'" % (i, cf, cf, cf, cf)) + + + if is_err: + raise Exception("CMake referenecs missing files, aborting!") + del is_err + del errs + + # now check on files not accounted for. + print("\nC/C++ Files CMake doesnt know about...") + for cf in sorted(source_list(SOURCE_DIR, is_c)): + if not is_ignore(cf): + if cf not in global_c: + print("missing_c: ", cf) + + # check if automake builds a corrasponding .o file. + ''' + if cf in global_c: + out1 = os.path.splitext(cf)[0] + ".o" + out2 = os.path.splitext(cf)[0] + ".Po" + out2_dir, out2_file = out2 = os.path.split(out2) + out2 = os.path.join(out2_dir, ".deps", out2_file) + if not os.path.exists(out1) and not os.path.exists(out2): + print("bad_c: ", cf) + ''' + + print("\nC/C++ Headers CMake doesnt know about...") + for hf in sorted(source_list(SOURCE_DIR, is_c_header)): + if not is_ignore(hf): + if hf not in global_h: + print("missing_h: ", hf) + + if UTF8_CHECK: + # test encoding + import traceback + for files in (global_c, global_h): + for f in sorted(files): + if os.path.exists(f): + # ignore outside of our source tree + if "extern" not in f: + i = 1 + try: + for l in open(f, "r", encoding="utf8"): + i += 1 + except UnicodeDecodeError: + print("Non utf8: %s:%d" % (f, i)) + if i > 1: + traceback.print_exc() + +if __name__ == "__main__": + main() diff --git a/build_files/cmake/cmake_consistency_check_config.py b/build_files/cmake/cmake_consistency_check_config.py index 729eecce233..1f75b9884bc 100644 --- a/build_files/cmake/cmake_consistency_check_config.py +++ b/build_files/cmake/cmake_consistency_check_config.py @@ -74,3 +74,6 @@ IGNORE = ( UTF8_CHECK = True SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..")))) + +# doesn't have to exist, just use as reference +BUILD_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(SOURCE_DIR, "..", "build")))) diff --git a/build_files/cmake/cmake_netbeans_project.py b/build_files/cmake/cmake_netbeans_project.py index 81b1a460f67..d4cce46434d 100755 --- a/build_files/cmake/cmake_netbeans_project.py +++ b/build_files/cmake/cmake_netbeans_project.py @@ -29,18 +29,20 @@ Example linux usage Windows not supported so far """ -from project_info import (SIMPLE_PROJECTFILE, - SOURCE_DIR, - CMAKE_DIR, - PROJECT_DIR, - source_list, - is_project_file, - is_c_header, - # is_py, - cmake_advanced_info, - cmake_compiler_defines, - project_name_get, - ) +from project_info import ( + SIMPLE_PROJECTFILE, + SOURCE_DIR, + CMAKE_DIR, + PROJECT_DIR, + source_list, + is_project_file, + is_c_header, + # is_py, + cmake_advanced_info, + cmake_compiler_defines, + cmake_cache_var, + project_name_get, + ) import os @@ -70,6 +72,10 @@ def create_nb_project_main(): # be tricky, get the project name from git if we can! PROJECT_NAME = project_name_get() + + make_exe = cmake_cache_var("CMAKE_MAKE_PROGRAM") + make_exe_basename = os.path.basename(make_exe) + # --------------- NB spesific defines = [("%s=%s" % cdef) if cdef[1] else cdef[0] for cdef in defines] defines += [cdef.replace("#define", "").strip() for cdef in cmake_compiler_defines()] @@ -130,9 +136,9 @@ def create_nb_project_main(): f = open(join(PROJECT_DIR_NB, "configurations.xml"), 'w') f.write('<?xml version="1.0" encoding="UTF-8"?>\n') - f.write('<configurationDescriptor version="94">\n') + f.write('<configurationDescriptor version="95">\n') f.write(' <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">\n') - f.write(' <df name="0" root="%s">\n' % SOURCE_DIR) # base_root_rel + f.write(' <df root="%s" name="0">\n' % SOURCE_DIR) # base_root_rel # write files! files_rel_local = [normpath(relpath(join(CMAKE_DIR, path), SOURCE_DIR)) for path in files_rel] @@ -184,16 +190,27 @@ def create_nb_project_main(): f.write(' <toolsSet>\n') f.write(' <compilerSet>default</compilerSet>\n') + f.write(' <dependencyChecking>false</dependencyChecking>\n') + f.write(' <rebuildPropChanged>false</rebuildPropChanged>\n') f.write(' </toolsSet>\n') - f.write(' <dependencyChecking>false</dependencyChecking>\n') - f.write(' <rebuildPropChanged>false</rebuildPropChanged>\n') + f.write(' <codeAssistance>\n') + f.write(' </codeAssistance>\n') f.write(' <makefileType>\n') f.write(' <makeTool>\n') f.write(' <buildCommandWorkingDir>.</buildCommandWorkingDir>\n') - f.write(' <buildCommand>${MAKE} -f Makefile</buildCommand>\n') - f.write(' <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>\n') + + if make_exe_basename == "ninja": + build_cmd = "ninja" + clean_cmd = "ninja -t clean" + else: + build_cmd = "${MAKE} -f Makefile" + clean_cmd = "${MAKE} -f Makefile clean" + + f.write(' <buildCommand>%s</buildCommand>\n' % build_cmd) + f.write(' <cleanCommand>%s</cleanCommand>\n' % clean_cmd) f.write(' <executablePath>./bin/blender</executablePath>\n') + del build_cmd, clean_cmd def write_toolinfo(): f.write(' <incDir>\n') @@ -220,10 +237,11 @@ def create_nb_project_main(): f.write(' \n') for path in files_rel_local: + is_c = path.endswith(".c") f.write(' <item path="%s"\n' % path) f.write(' ex="false"\n') - f.write(' tool="1"\n') - f.write(' flavor2="0">\n') + f.write(' tool="%d"\n' % (0 if is_c else 1)) + f.write(' flavor2="%d">\n' % (3 if is_c else 0)) f.write(' </item>\n') f.write(' <runprofile version="9">\n') diff --git a/build_files/cmake/cmake_qtcreator_project.py b/build_files/cmake/cmake_qtcreator_project.py index 1676d634cf2..67302c89a68 100755 --- a/build_files/cmake/cmake_qtcreator_project.py +++ b/build_files/cmake/cmake_qtcreator_project.py @@ -22,26 +22,27 @@ # <pep8 compliant> -""" +r""" +Example Linux usage: + python ~/blender-git/blender/build_files/cmake/cmake_qtcreator_project.py ~/blender-git/cmake + Example Win32 usage: c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py c:\blender_dev\cmake_build - -example linux usage - python ~/blender-git/blender/build_files/cmake/cmake_qtcreator_project.py ~/blender-git/cmake """ -from project_info import (SIMPLE_PROJECTFILE, - SOURCE_DIR, - # CMAKE_DIR, - PROJECT_DIR, - source_list, - is_project_file, - is_c_header, - is_py, - cmake_advanced_info, - cmake_compiler_defines, - project_name_get, - ) +from project_info import ( + SIMPLE_PROJECTFILE, + SOURCE_DIR, + # CMAKE_DIR, + PROJECT_DIR, + source_list, + is_project_file, + is_c_header, + is_py, + cmake_advanced_info, + cmake_compiler_defines, + project_name_get, + ) import os import sys @@ -63,18 +64,19 @@ def create_qtc_project_main(): if SIMPLE_PROJECTFILE: # --- qtcreator specific, simple format PROJECT_NAME = "Blender" - with open(os.path.join(PROJECT_DIR, "%s.files" % PROJECT_NAME), 'w') as f: + FILE_NAME = PROJECT_NAME.lower() + with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f: f.write("\n".join(files_rel)) - with open(os.path.join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w') as f: + with open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w') as f: f.write("\n".join(sorted(list(set(os.path.dirname(f) for f in files_rel if is_c_header(f)))))) - qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % PROJECT_NAME) + qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME) with open(qtc_prj, 'w') as f: f.write("[General]\n") - qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % PROJECT_NAME) + qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % FILE_NAME) if not os.path.exists(qtc_cfg): with open(qtc_cfg, 'w') as f: f.write("// ADD PREDEFINED MACROS HERE!\n") diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake index 3a702014bae..2a57e4c33d8 100644 --- a/build_files/cmake/config/blender_lite.cmake +++ b/build_files/cmake/config/blender_lite.cmake @@ -16,6 +16,7 @@ set(WITH_CODEC_SNDFILE OFF CACHE BOOL "" FORCE) set(WITH_CYCLES OFF CACHE BOOL "" FORCE) set(WITH_FFTW3 OFF CACHE BOOL "" FORCE) set(WITH_LIBMV OFF CACHE BOOL "" FORCE) +set(WITH_LLVM OFF CACHE BOOL "" FORCE) set(WITH_GAMEENGINE OFF CACHE BOOL "" FORCE) set(WITH_COMPOSITOR OFF CACHE BOOL "" FORCE) set(WITH_FREESTYLE OFF CACHE BOOL "" FORCE) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index b266602fa63..c7398415c59 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -104,21 +104,31 @@ macro(file_list_suffix endmacro() -macro(target_link_libraries_optimized TARGET LIBS) +function(target_link_libraries_optimized + TARGET + LIBS + ) + foreach(_LIB ${LIBS}) target_link_libraries(${TARGET} optimized "${_LIB}") endforeach() - unset(_LIB) -endmacro() +endfunction() + +function(target_link_libraries_debug + TARGET + LIBS + ) -macro(target_link_libraries_debug TARGET LIBS) foreach(_LIB ${LIBS}) target_link_libraries(${TARGET} debug "${_LIB}") endforeach() - unset(_LIB) -endmacro() +endfunction() + +function(target_link_libraries_decoupled + target + libraries_var + ) -macro(target_link_libraries_decoupled target libraries_var) if(NOT MSVC) target_link_libraries(${target} ${${libraries_var}}) else() @@ -127,14 +137,15 @@ macro(target_link_libraries_decoupled target libraries_var) file_list_suffix(_libraries_debug "${${libraries_var}}" "_d") target_link_libraries_debug(${target} "${_libraries_debug}") target_link_libraries_optimized(${target} "${${libraries_var}}") - unset(_libraries_debug) endif() -endmacro() +endfunction() # Nicer makefiles with -I/1/foo/ instead of -I/1/2/3/../../foo/ # use it instead of include_directories() -macro(blender_include_dirs - includes) +function(blender_include_dirs + includes + ) + set(_ALL_INCS "") foreach(_INC ${ARGV}) get_filename_component(_ABS_INC ${_INC} ABSOLUTE) @@ -145,13 +156,12 @@ macro(blender_include_dirs ##endif() endforeach() include_directories(${_ALL_INCS}) - unset(_INC) - unset(_ABS_INC) - unset(_ALL_INCS) -endmacro() +endfunction() + +function(blender_include_dirs_sys + includes + ) -macro(blender_include_dirs_sys - includes) set(_ALL_INCS "") foreach(_INC ${ARGV}) get_filename_component(_ABS_INC ${_INC} ABSOLUTE) @@ -161,13 +171,11 @@ macro(blender_include_dirs_sys ##endif() endforeach() include_directories(SYSTEM ${_ALL_INCS}) - unset(_INC) - unset(_ABS_INC) - unset(_ALL_INCS) -endmacro() +endfunction() -macro(blender_source_group - sources) +function(blender_source_group + sources + ) # Group by location on disk source_group("Source Files" FILES CMakeLists.txt) @@ -177,23 +185,23 @@ macro(blender_source_group if((${_SRC_EXT} MATCHES ".h") OR (${_SRC_EXT} MATCHES ".hpp") OR (${_SRC_EXT} MATCHES ".hh")) - source_group("Header Files" FILES ${_SRC}) + + set(GROUP_ID "Header Files") else() - source_group("Source Files" FILES ${_SRC}) + set(GROUP_ID "Source Files") endif() + source_group("${GROUP_ID}" FILES ${_SRC}) endforeach() - - unset(_SRC) - unset(_SRC_EXT) -endmacro() +endfunction() # only MSVC uses SOURCE_GROUP -macro(blender_add_lib_nolist +function(blender_add_lib_nolist name sources includes - includes_sys) + includes_sys + ) # message(STATUS "Configuring library ${name}") @@ -213,22 +221,24 @@ macro(blender_add_lib_nolist # Not for system includes because they can resolve to the same path # list_assert_duplicates("${includes_sys}") -endmacro() +endfunction() -macro(blender_add_lib +function(blender_add_lib name sources includes - includes_sys) + includes_sys + ) blender_add_lib_nolist(${name} "${sources}" "${includes}" "${includes_sys}") set_property(GLOBAL APPEND PROPERTY BLENDER_LINK_LIBS ${name}) -endmacro() +endfunction() -macro(SETUP_LIBDIRS) +function(SETUP_LIBDIRS) + link_directories(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH}) if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs @@ -288,24 +298,27 @@ macro(SETUP_LIBDIRS) if(WIN32 AND NOT UNIX) link_directories(${PTHREADS_LIBPATH}) endif() -endmacro() +endfunction() -macro(setup_liblinks - target) +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} - ${PNG_LIBRARIES} - ${ZLIB_LIBRARIES} - ${FREETYPE_LIBRARY}) + target_link_libraries( + ${target} + ${PNG_LIBRARIES} + ${ZLIB_LIBRARIES} + ${FREETYPE_LIBRARY} + ) # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs @@ -402,11 +415,13 @@ macro(setup_liblinks unset(EXPAT_LIB_DEBUG) endif() else() - target_link_libraries(${target} - ${OPENCOLLADA_LIBRARIES} - ${PCRE_LIBRARIES} - ${XML2_LIBRARIES} - ${EXPAT_LIB}) + target_link_libraries( + ${target} + ${OPENCOLLADA_LIBRARIES} + ${PCRE_LIBRARIES} + ${XML2_LIBRARIES} + ${EXPAT_LIB} + ) endif() endif() if(WITH_MEM_JEMALLOC) @@ -436,9 +451,11 @@ macro(setup_liblinks ${BLENDER_GL_LIBRARIES}) target_link_libraries(${target} ${PLATFORM_LINKLIBS} ${CMAKE_DL_LIBS}) -endmacro() +endfunction() + + +function(SETUP_BLENDER_SORTED_LIBS) -macro(SETUP_BLENDER_SORTED_LIBS) get_property(BLENDER_LINK_LIBS GLOBAL PROPERTY BLENDER_LINK_LIBS) list(APPEND BLENDER_LINK_LIBS @@ -516,14 +533,15 @@ macro(SETUP_BLENDER_SORTED_LIBS) bf_ikplugin bf_modifiers bf_bmesh + bf_gpu bf_blenkernel bf_physics bf_nodes bf_rna - bf_gpu bf_blenloader bf_imbuf bf_blenlib + bf_depsgraph bf_intern_ghost bf_intern_string bf_avi @@ -673,14 +691,12 @@ macro(SETUP_BLENDER_SORTED_LIBS) message(STATUS "Blender Skipping: (${REM_MSG})") endif() - unset(SEARCHLIB) - unset(SORTLIB) - unset(REMLIB) - unset(REM_MSG) + + set(BLENDER_SORTED_LIBS ${BLENDER_SORTED_LIBS} PARENT_SCOPE) # for top-level tests set_property(GLOBAL PROPERTY BLENDER_SORTED_LIBS_PROP ${BLENDER_SORTED_LIBS}) -endmacro() +endfunction() macro(TEST_SSE_SUPPORT _sse_flags @@ -902,19 +918,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() @@ -928,28 +947,34 @@ 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-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}") @@ -961,6 +986,24 @@ macro(remove_strict_flags) endmacro() +macro(remove_extra_strict_flags) + if(CMAKE_COMPILER_IS_GNUCC) + remove_cc_flag( + "-Wunused-parameter" + ) + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "Clang") + remove_cc_flag( + "-Wunused-parameter" + ) + endif() + + if(MSVC) + # TODO + endif() +endmacro() + # note, we can only append flags on a single file so we need to negate the options. # at the moment we cant shut up ffmpeg deprecations, so use this, but will # probably add more removals here. @@ -989,37 +1032,39 @@ macro(remove_strict_flags_file endmacro() -macro(ADD_CHECK_C_COMPILER_FLAG +function(ADD_CHECK_C_COMPILER_FLAG _CFLAGS _CACHE_VAR - _FLAG) + _FLAG + ) include(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") if(${_CACHE_VAR}) # message(STATUS "Using CFLAG: ${_FLAG}") - set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}") + set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}" PARENT_SCOPE) else() message(STATUS "Unsupported CFLAG: ${_FLAG}") endif() -endmacro() +endfunction() -macro(ADD_CHECK_CXX_COMPILER_FLAG +function(ADD_CHECK_CXX_COMPILER_FLAG _CXXFLAGS _CACHE_VAR - _FLAG) + _FLAG + ) include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") if(${_CACHE_VAR}) # message(STATUS "Using CXXFLAG: ${_FLAG}") - set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}") + set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}" PARENT_SCOPE) else() message(STATUS "Unsupported CXXFLAG: ${_FLAG}") endif() -endmacro() +endfunction() function(get_blender_version) # extracts header vars and defines them in the parent scope: @@ -1169,7 +1214,7 @@ endmacro() # pair of macros to allow libraries to be specify files to install, but to # only install them at the end so the directories don't get cleared with # the files in them. used by cycles to install addon. -macro(delayed_install +function(delayed_install base files destination) @@ -1182,8 +1227,7 @@ macro(delayed_install endif() set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination}) endforeach() - unset(f) -endmacro() +endfunction() # note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir # does not get expanded in calling but is preserved @@ -1202,16 +1246,17 @@ function(delayed_do_install list(GET destinations ${i} d) install(FILES ${f} DESTINATION ${targetdir}/${d}) endforeach() - unset(f) endif() endfunction() -macro(data_to_c - file_from file_to - list_to_add) +function(data_to_c + file_from file_to + list_to_add + ) list(APPEND ${list_to_add} ${file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) get_filename_component(_file_to_path ${file_to} PATH) @@ -1222,21 +1267,21 @@ macro(data_to_c DEPENDS ${file_from} datatoc) set_source_files_properties(${file_to} PROPERTIES GENERATED TRUE) - - unset(_file_to_path) -endmacro() +endfunction() # same as above but generates the var name and output automatic. -macro(data_to_c_simple - file_from - list_to_add) +function(data_to_c_simple + file_from + list_to_add + ) # remove ../'s get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH) list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) get_filename_component(_file_to_path ${_file_to} PATH) @@ -1247,17 +1292,13 @@ macro(data_to_c_simple DEPENDS ${_file_from} datatoc) set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) - - unset(_file_from) - unset(_file_to) - unset(_file_to_path) -endmacro() +endfunction() # macro for converting pixmap directory to a png and then a c file -macro(data_to_c_simple_icons - path_from - list_to_add - ) +function(data_to_c_simple_icons + path_from + list_to_add + ) # Conversion steps # path_from -> _file_from -> _file_to @@ -1269,6 +1310,7 @@ macro(data_to_c_simple_icons get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png.c REALPATH) list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) get_filename_component(_file_to_path ${_file_to} PATH) @@ -1290,27 +1332,22 @@ macro(data_to_c_simple_icons ) set_source_files_properties(${_file_from} ${_file_to} PROPERTIES GENERATED TRUE) - - unset(_path_from_abs) - unset(_file_from) - unset(_file_to) - unset(_file_to_path) - unset(_icon_files) - -endmacro() +endfunction() # XXX Not used for now... -macro(svg_to_png - file_from - file_to - dpi - list_to_add) +function(svg_to_png + file_from + file_to + dpi + list_to_add + ) # remove ../'s get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) get_filename_component(_file_to ${CMAKE_CURRENT_SOURCE_DIR}/${file_to} REALPATH) list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) find_program(INKSCAPE_EXE inkscape) mark_as_advanced(INKSCAPE_EXE) @@ -1333,15 +1370,12 @@ macro(svg_to_png else() message(WARNING "Inkscape not found, could not re-generate ${_file_to} from ${_file_from}!") endif() +endfunction() - unset(_file_from) - unset(_file_to) - -endmacro() - -macro(msgfmt_simple - file_from - list_to_add) +function(msgfmt_simple + file_from + list_to_add + ) # remove ../'s get_filename_component(_file_from_we ${file_from} NAME_WE) @@ -1350,6 +1384,7 @@ macro(msgfmt_simple get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${_file_from_we}.mo REALPATH) list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) get_filename_component(_file_to_path ${_file_to} PATH) @@ -1360,15 +1395,11 @@ macro(msgfmt_simple DEPENDS msgfmt ${_file_from}) set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) +endfunction() - unset(_file_from_we) - unset(_file_from) - unset(_file_to) - unset(_file_to_path) -endmacro() - -macro(find_python_package - package) +function(find_python_package + package + ) string(TOUPPER ${package} _upper_package) @@ -1406,25 +1437,17 @@ macro(find_python_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") - set(WITH_PYTHON_INSTALL_${_upper_package} OFF) + set(WITH_PYTHON_INSTALL_${_upper_package} OFF PARENT_SCOPE) else() message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'") endif() - - unset(_PY_VER_SPLIT) - unset(_PY_VER_MAJOR) endif() - - unset(_upper_package) -endmacro() +endfunction() # like Python's 'print(dir())' -macro(print_all_vars) +function(print_all_vars) get_cmake_property(_vars VARIABLES) foreach(_var ${_vars}) message("${_var}=${${_var}}") endforeach() - unset(_vars) - unset(_var) -endmacro() - +endfunction() diff --git a/build_files/cmake/packaging.cmake b/build_files/cmake/packaging.cmake index 95bbb2b59a8..0cb13e0fc66 100644 --- a/build_files/cmake/packaging.cmake +++ b/build_files/cmake/packaging.cmake @@ -27,7 +27,8 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/.git/) execute_process(COMMAND git rev-parse --short @{u} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE MY_WC_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) endif() endif() set(BUILD_REV ${MY_WC_HASH}) @@ -111,3 +112,9 @@ elseif(UNIX) "tar.bz2") endif() +unset(MAJOR_VERSION) +unset(MINOR_VERSION) +unset(PATCH_VERSION) + +unset(BUILD_REV) + diff --git a/build_files/cmake/project_info.py b/build_files/cmake/project_info.py index fcd4501f231..c9ea2497987 100755 --- a/build_files/cmake/project_info.py +++ b/build_files/cmake/project_info.py @@ -130,7 +130,7 @@ def is_project_file(filename): def cmake_advanced_info(): - """ Extracr includes and defines from cmake. + """ Extract includes and defines from cmake. """ make_exe = cmake_cache_var("CMAKE_MAKE_PROGRAM") |