check_build_system.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python
  2. # Copyright Hans Dembinski 2019
  3. # Distributed under the Boost Software License, Version 1.0.
  4. # See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
  5. from __future__ import print_function
  6. import sys
  7. import glob
  8. import os
  9. import re
  10. ps = os.path.split
  11. pj = os.path.join
  12. # assumes that check_build_system.py sits in <project_path>/tests
  13. project_path = ps(ps(__file__)[0])[0]
  14. exit_code = 0
  15. for dir in (pj(project_path, "test"), pj(project_path, "examples")):
  16. cpp = set([os.path.basename(x) for x in glob.glob(dir + "/*.cpp")])
  17. for build_file in ("Jamfile", "CMakeLists.txt"):
  18. filename = os.path.join(dir, build_file)
  19. if not os.path.exists(filename):
  20. continue
  21. run = set(re.findall("([a-zA-Z0-9_]+\.cpp)", open(filename).read()))
  22. diff = cpp - run
  23. diff.discard("check_cmake_version.cpp") # ignore
  24. diff.discard("check_build_system.py") # ignore
  25. if diff:
  26. print(
  27. "NOT TESTED in %s\n " % filename
  28. + "\n ".join(["%s/%s" % (dir, x) for x in diff])
  29. )
  30. exit_code = 1
  31. sys.exit(exit_code)