Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-06-22 09:30:06 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-06-22 09:30:06 +0400
commitbe94dc10c1720b0c1584e8de60f8359dd3c43840 (patch)
tree6b4499fea13d87a0bcc443d418fd8a9302ee9003 /build_files/cmake/cmake_consistency_check.py
parent3c8056a40bf687fd07abbeb8ab889b84e01243a6 (diff)
split cmake check configuration out
Diffstat (limited to 'build_files/cmake/cmake_consistency_check.py')
-rwxr-xr-xbuild_files/cmake/cmake_consistency_check.py133
1 files changed, 65 insertions, 68 deletions
diff --git a/build_files/cmake/cmake_consistency_check.py b/build_files/cmake/cmake_consistency_check.py
index ebcc75ade2b..b0fd242db4a 100755
--- a/build_files/cmake/cmake_consistency_check.py
+++ b/build_files/cmake/cmake_consistency_check.py
@@ -23,61 +23,16 @@
# <pep8 compliant>
-IGNORE = (
- "/test/",
- "/decimate_glut_test/",
- "/BSP_GhostTest/",
- "/release/",
- "/xembed/",
- "/decimation/intern/future/",
- "/TerraplayNetwork/",
- "/ik_glut_test/",
-
- # specific source files
- "extern/Eigen2/Eigen/src/Cholesky/CholeskyInstantiations.cpp",
- "extern/Eigen2/Eigen/src/Core/CoreInstantiations.cpp",
- "extern/Eigen2/Eigen/src/QR/QrInstantiations.cpp",
- "extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp",
- "extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp",
- "extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp",
- "extern/bullet2/src/BulletCollision/CollisionShapes/btBox2dShape.cpp",
- "extern/bullet2/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp",
- "extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp",
- "extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp",
- "extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp",
- "extern/eltopo/common/meshes/ObjLoader.cpp",
- "extern/eltopo/common/meshes/meshloader.cpp",
- "extern/eltopo/common/openglutils.cpp",
- "extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp",
- "source/blender/imbuf/intern/imbuf_cocoa.m",
-
- "extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h",
- "extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h",
- "extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h",
- "extern/bullet2/src/BulletCollision/CollisionShapes/btBox2dShape.h",
- "extern/bullet2/src/BulletCollision/CollisionShapes/btConvex2dShape.h",
- "extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.h",
- "extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h",
- "extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h",
- "extern/eltopo/common/meshes/Edge.hpp",
- "extern/eltopo/common/meshes/ObjLoader.hpp",
- "extern/eltopo/common/meshes/TriangleIndex.hpp",
- "extern/eltopo/common/meshes/meshloader.h",
- "extern/eltopo/eltopo3d/broadphase_blenderbvh.h"
- )
-
+from cmake_consistency_check_config import IGNORE, UTF8_CHECK, SOURCE_DIR
import os
from os.path import join, dirname, normpath, abspath, splitext
-base = join(os.path.dirname(__file__), "..", "..")
-base = normpath(base)
-base = abspath(base)
-
-print("Scanning:", base)
+print("Scanning:", SOURCE_DIR)
global_h = set()
global_c = set()
+global_refs = {}
def source_list(path, filename_check=None):
@@ -180,11 +135,17 @@ def cmake_get_src(f):
if is_c_header(new_file):
sources_h.append(new_file)
+ global_refs.setdefault(new_file, []).append((f, i))
elif is_c(new_file):
sources_c.append(new_file)
+ global_refs.setdefault(new_file, []).append((f, i))
elif l in ("PARENT_SCOPE", ):
# cmake var, ignore
pass
+ elif new_file.endswith(".list"):
+ pass
+ elif new_file.endswith(".def"):
+ pass
else:
raise Exception("unknown file type - not c or h %s -> %s" % (f, new_file))
@@ -209,7 +170,7 @@ def cmake_get_src(f):
filen.close()
-for cmake in source_list(base, is_cmake):
+for cmake in source_list(SOURCE_DIR, is_cmake):
cmake_get_src(cmake)
@@ -219,39 +180,75 @@ def is_ignore(f):
return True
return False
+
# First do stupid check, do these files exist?
+print("\nChecking for missing references:")
+import sys
+is_err = False
+errs = []
for f in (global_h | global_c):
if f.endswith("dna.c"):
continue
if not os.path.exists(f):
- raise Exception("CMake referenced file missing: " + 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(base, is_c)):
+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(base, is_c_header)):
+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)
-# 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:
- print("Non utf8: %s:%d" % (f, i))
- if i > 1:
- traceback.print_exc()
+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:
+ print("Non utf8: %s:%d" % (f, i))
+ if i > 1:
+ traceback.print_exc()