compiletools 7.0.0__tar.gz → 7.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {compiletools-7.0.0 → compiletools-7.0.2}/PKG-INFO +3 -3
- {compiletools-7.0.0 → compiletools-7.0.2}/pyproject.toml +3 -3
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-cake.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-cleanup-locks.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-commandline.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-compilation-database.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-config.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-cppdeps.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-doc.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-filelist.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-findtargets.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-gitroot.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-headertree.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-jobs.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-list-variants.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-magicflags.rst +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/apptools.py +63 -11
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/file_analyzer.py +15 -8
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/magicflags.py +19 -11
- compiletools-7.0.2/src/compiletools/samples/header_guard_bug/README.md +57 -0
- compiletools-7.0.2/src/compiletools/samples/header_guard_bug/header_a.hpp +34 -0
- compiletools-7.0.2/src/compiletools/samples/header_guard_bug/header_b.hpp +32 -0
- compiletools-7.0.2/src/compiletools/samples/header_guard_bug/main.cpp +17 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_deps/feature_header.hpp +1 -1
- compiletools-7.0.2/src/compiletools/samples/macro_deps/feature_y_impl.cpp +5 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magic_processing_order/complex_test.cpp +1 -1
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_findtargets.py +1 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_magicflags.py +51 -5
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_magicpkgconfig.py +52 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/version.py +1 -1
- compiletools-7.0.0/src/compiletools/samples/macro_deps/feature_y_impl.cpp +0 -5
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/create-documentation +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-build +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-build-dynamic-library +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-build-static-library +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-lock-helper +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-lock-helper-py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-release +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/ct-watch-build +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/scripts/profile-ct-cake-worktree +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.cleanup-remote-locks.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.create-documentation.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-build-dynamic-library.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-build-static-library.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-build.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-create-makefile.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-git-sha-report.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-lock-helper.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-release.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.ct-watch-build.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/README.profile-ct-cake-worktree.rst +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/__init__.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/cake.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/cleanup_locks.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/cleanup_locks_main.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/compilation_database.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/compiler_macros.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/config.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/configutils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/conftest.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/cppdeps.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/blank.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/blank.release.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/clang.debug.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/clang.release.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/ct.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/gcc.debug.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/ct.conf.d/gcc.release.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/doc.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/filelist.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/filesystem_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/findtargets.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/git_sha_report.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/git_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/global_hash_registry.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/headerdeps.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/headertree.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/hunter.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/jobs.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/listvariants.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/lock_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/locking.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/makefile.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/namer.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/preprocessing_cache.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/preprocessor.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/calculator/add.C +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/calculator/add.H +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/calculator/calculator.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/calculator/calculator.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/calculator/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/conditional_includes/linux_header.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/conditional_includes/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/conditional_includes/windows_header.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/aarch64_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/advanced_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/advanced_preprocessor_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/advanced_preprocessor_test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/alt_form_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/arm_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/armcc_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/avx2_optimization.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/basic_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/cache_profiler.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/certificate_validation.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/cflags_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/clang_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/combined_features.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/compiler_builtin_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/compiler_builtin_test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/conditional_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/cppflags_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/cpu_profiler.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/custom_allocator.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/cxxflags_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/default_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/detailed_profiler.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/elif_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/elif_test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/emscripten_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/expert_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/expert_mode_base.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/fma_optimization.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/gcc_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/high_optimization.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/intel_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/leak_detector.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/linux_advanced.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/linux_epoll_threading.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/linux_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/memory_profiler.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/memory_tracker.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/msvc_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/multi_flag_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/multi_flag_test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/nested_macros_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/nested_macros_test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/networking_base.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/numa_threading.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/partial_features.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/profiling_base.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/riscv_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/simd_optimization.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/ssl_networking.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/stack_tracer.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/strict_cert_validation.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/tcc_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/temp_defined.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/temp_still_defined.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/version1_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/version2_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/version3_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/version_205_plus.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/version_ge_2_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/windows_advanced.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/windows_iocp.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/windows_iocp_threading.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cppflags_macros/x86_64_feature.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cross_platform/cross_platform.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cross_platform/cross_platform.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cross_platform/cross_platform_lin.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cross_platform/cross_platform_win.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cross_platform/test_source.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cycle/cycle_a.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cycle/cycle_b.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/cycle/cycle_c.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/dottypaths/d1/d1.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/dottypaths/d1/d1.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/dottypaths/d2/d2.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/dottypaths/d2/d2.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/dottypaths/dottypaths.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/duplicate_flags/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/empty_macro_bug/README.md +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/empty_macro_bug/libs/base.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/empty_macro_bug/libs/conditional.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/empty_macro_bug/libs/dependency.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/empty_macro_bug/libs/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/a_widget.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/a_widget.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/red_herring_c_style_2.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/test_factory.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/widget.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/widget_factory.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/widget_factory.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/z_widget.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/factory/z_widget.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/feature_headers/database.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/feature_headers/feature_config.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/feature_headers/graphics.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/feature_headers/logging.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/feature_headers/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/feature_headers/networking.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/hunter_macro_propagation/README.md +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/hunter_macro_propagation/app.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/hunter_macro_propagation/config.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/hunter_macro_propagation/renderer.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/isystem_include_bug/fake_system_include/system/version.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/isystem_include_bug/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/ldflags/conditional_ldflags_test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/ldflags/version_dependent_ldflags.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/ldflags/version_macro.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/build.sh +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/mylib/get_double.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/mylib/get_double.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/mylib/get_int.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/mylib/get_int.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/mylib/get_numbers.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/library/mylib/get_numbers.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/lotsofmagic/lotsofmagic.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_deps/feature_x_impl.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_deps/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/README.md +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/clean_main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/config.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/core.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/debug.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/feature.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/module_b.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/release.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/macro_state_dependency/sample.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magic_processing_order/complex_header.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magic_processing_order/macro_header.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magic_processing_order/test_macro_transform.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magic_processing_order/traits_header.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicinclude/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicinclude/subdir/important.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicinclude/subdir2/important2.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicinclude/subdir3/important3.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicpkgconfig/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicpkgconfig_fake/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicsourceinheader/include_dir/some_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicsourceinheader/include_dir/sub_dir/another_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicsourceinheader/include_dir/sub_dir/the_code_lin.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicsourceinheader/include_dir/sub_dir/the_code_win.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/magicsourceinheader/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/movingheaders/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/movingheaders/someheader.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/nestedconfig/gcc.debug.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/nestedconfig/nc.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/nestedconfig/subdir/gcc.debug.conf +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/nestedconfig/subdir/nc.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/get_double.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/get_double.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/get_int.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/get_int.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/get_numbers.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/get_numbers.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/test_direct_include.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/numbers/test_library.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/common_file.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/conditional_include.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/entry_point_1.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/entry_point_2.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/hash_map.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/hash_utility.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/parse_order_macro_bug/libs/intermediate.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkg_config_header_deps/README.md +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkg_config_header_deps/libs/header_with_macros.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkg_config_header_deps/libs/header_with_pkgconfig.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkg_config_header_deps/libs/main_header.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkg_config_header_deps/src/test.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkgconfig/main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkgs/conditional.pc +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkgs/modified.pc +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/pkgs/nested.pc +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/README.txt +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/createfile.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/createfile.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/filename.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/obtainlock.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/obtainlock.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/test_flock_1.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/serialise_tests/test_flock_2.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/simple/helloworld_c.c +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/simple/helloworld_cpp.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/simple/test_cflags.c +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/README.md +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/a-game.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/b-game.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/core/background_task.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/core/event_handler.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/core/memory_buffer.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/event_loop.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/event_loop.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/audio_system.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/audio_system.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/input_system.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/input_system.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/render_system.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/render_system.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/task_scheduler.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/transitive_cache_bug/engine/systems/task_scheduler.hpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/version_dependent_api/api_config.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/version_dependent_api/api_config_new.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/version_dependent_api/test_main.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/version_dependent_api/test_main_new.cpp +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/version_dependent_api/version.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/samples/version_dependent_api/version_new.h +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/simple_preprocessor.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/stringzilla_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_apptools.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_base.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_cake.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_cap.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_cleanup_locks.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_compilation_database.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_compiler_macros.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_configutils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_cppdeps.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_ct_lock_helper.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_ct_lock_helper_py.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_empty_macro_bug.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_environment_assumptions.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_fd_fix_integration.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_file_analyzer.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_file_analyzer_integration.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_file_locking.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_file_open_efficiency.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_filelist_sample_output.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_filesystem_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_global_hash_registry.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_headerdeps.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_hunter.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_hunter_macro_propagation.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_library.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_listvariants.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_locking_contract.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_macro_state_dependency.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_macro_state_isolation.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_macro_state_pollution.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_magicinclude.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_makefile.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_movingheaders.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_multiuser_cache.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_namer.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_parse_order_macro_bug.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_pkg_config_header_deps.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_preprocessing_cache.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_serialisetests.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_shared_cache_low_mtime_resolution.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_simple_preprocessor.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_stringzilla_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_transitive_cache_bug.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/test_utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/testhelper.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/tree.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/utils.py +0 -0
- {compiletools-7.0.0 → compiletools-7.0.2}/src/compiletools/wrappedos.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: compiletools
|
|
3
|
-
Version: 7.0.
|
|
3
|
+
Version: 7.0.2
|
|
4
4
|
Summary: Tools to make compiling C/C++ projects easy
|
|
5
5
|
Keywords: c++,make,development
|
|
6
6
|
Author: DrGeoff
|
|
@@ -24,7 +24,7 @@ Requires-Dist: rich-rst>=1.1.7
|
|
|
24
24
|
Requires-Dist: stringzilla>=3.0.0
|
|
25
25
|
Requires-Dist: bump-my-version>=0.26.0 ; extra == 'dev'
|
|
26
26
|
Requires-Dist: twine>=5.0.0 ; extra == 'dev'
|
|
27
|
-
Requires-Dist: pytest>=7.0.
|
|
27
|
+
Requires-Dist: pytest>=7.0.2 ; extra == 'dev'
|
|
28
28
|
Requires-Dist: pytest-xdist>=3.5 ; extra == 'dev'
|
|
29
29
|
Requires-Dist: ruff>=0.12.9 ; extra == 'dev'
|
|
30
30
|
Requires-Python: >=3.9
|
|
@@ -50,7 +50,7 @@ C/C++ build tools that requires almost no configuration.
|
|
|
50
50
|
|
|
51
51
|
:Author: drgeoffathome@gmail.com
|
|
52
52
|
:Date: 2025-12-17
|
|
53
|
-
:Version: 7.0.
|
|
53
|
+
:Version: 7.0.2
|
|
54
54
|
:Manual section: 1
|
|
55
55
|
:Manual group: developers
|
|
56
56
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "compiletools"
|
|
3
|
-
version = "7.0.
|
|
3
|
+
version = "7.0.2"
|
|
4
4
|
description = "Tools to make compiling C/C++ projects easy"
|
|
5
5
|
readme = "src/compiletools/README.ct-doc.rst"
|
|
6
6
|
requires-python = ">=3.9"
|
|
@@ -34,7 +34,7 @@ dependencies = [
|
|
|
34
34
|
dev = [
|
|
35
35
|
"bump-my-version>=0.26.0",
|
|
36
36
|
"twine>=5.0.0",
|
|
37
|
-
"pytest>=7.0.
|
|
37
|
+
"pytest>=7.0.2",
|
|
38
38
|
"pytest-xdist>=3.5",
|
|
39
39
|
"ruff>=0.12.9",
|
|
40
40
|
]
|
|
@@ -79,7 +79,7 @@ include = [
|
|
|
79
79
|
]
|
|
80
80
|
|
|
81
81
|
[tool.bumpversion]
|
|
82
|
-
current_version = "7.0.
|
|
82
|
+
current_version = "7.0.2"
|
|
83
83
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
84
84
|
serialize = ["{major}.{minor}.{patch}"]
|
|
85
85
|
search = "{current_version}"
|
|
@@ -9,7 +9,7 @@ This document describes the command line arguments that are common across ct-* p
|
|
|
9
9
|
:Author: drgeoffathome@gmail.com
|
|
10
10
|
:Date: 2017-07-06
|
|
11
11
|
:Copyright: Copyright (C) 2011-2016 Zomojo Pty Ltd
|
|
12
|
-
:Version: 7.0.
|
|
12
|
+
:Version: 7.0.2
|
|
13
13
|
:Manual section: 1
|
|
14
14
|
:Manual group: developers
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ Determine header and source dependencies of a C/C++ file by following headers an
|
|
|
9
9
|
:Author: drgeoffathome@gmail.com
|
|
10
10
|
:Date: 2017-07-06
|
|
11
11
|
:Copyright: Copyright (C) 2011-2016 Zomojo Pty Ltd
|
|
12
|
-
:Version: 7.0.
|
|
12
|
+
:Version: 7.0.2
|
|
13
13
|
:Manual section: 1
|
|
14
14
|
:Manual group: developers
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ Create a tree of header dependencies starting at the given C/C++ file
|
|
|
9
9
|
:Author: drgeoffathome@gmail.com
|
|
10
10
|
:Date: 2018-07-26
|
|
11
11
|
:Copyright: Copyright (C) 2011-2018 Zomojo Pty Ltd
|
|
12
|
-
:Version: 7.0.
|
|
12
|
+
:Version: 7.0.2
|
|
13
13
|
:Manual section: 1
|
|
14
14
|
:Manual group: developers
|
|
15
15
|
|
|
@@ -579,7 +579,6 @@ def extract_command_line_macros_sz(args, flag_sources_sz, verbose=0):
|
|
|
579
579
|
def clear_cache():
|
|
580
580
|
"""Clear any caches for macro extraction and pkg-config."""
|
|
581
581
|
cached_pkg_config.cache_clear()
|
|
582
|
-
cached_pkg_config_sz.cache_clear()
|
|
583
582
|
_get_functional_cxx_compiler_cached.cache_clear()
|
|
584
583
|
|
|
585
584
|
|
|
@@ -772,20 +771,73 @@ def cached_pkg_config(package, option):
|
|
|
772
771
|
return result.stdout.rstrip()
|
|
773
772
|
|
|
774
773
|
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
774
|
+
def filter_pkg_config_cflags(cflags_str, verbose=0):
|
|
775
|
+
"""
|
|
776
|
+
Process pkg-config cflags output.
|
|
777
|
+
Converts -I to -isystem, except for default system include paths
|
|
778
|
+
which are dropped to prevent include order issues (e.g. with libc++).
|
|
779
|
+
Uses shlex for robust shell tokenization and quoting.
|
|
780
|
+
"""
|
|
781
|
+
if not cflags_str:
|
|
782
|
+
return ""
|
|
783
|
+
|
|
784
|
+
# Standard system include paths
|
|
785
|
+
system_include_paths = set(['/usr/include'])
|
|
786
|
+
prefix = os.environ.get('PREFIX')
|
|
787
|
+
if prefix:
|
|
788
|
+
system_include_paths.add(os.path.normpath(os.path.join(prefix, 'include')))
|
|
789
|
+
|
|
790
|
+
# Use shlex to correctly handle quoted paths in flags
|
|
791
|
+
try:
|
|
792
|
+
flags = split_command_cached(cflags_str)
|
|
793
|
+
except ValueError:
|
|
794
|
+
# Fallback for malformed strings
|
|
795
|
+
flags = cflags_str.split()
|
|
796
|
+
|
|
797
|
+
flag_iter = iter(flags)
|
|
798
|
+
processed_flags = []
|
|
799
|
+
|
|
800
|
+
for flag in flag_iter:
|
|
801
|
+
if flag.startswith("-I"):
|
|
802
|
+
path = None
|
|
803
|
+
if flag == "-I":
|
|
804
|
+
# Detached -I
|
|
805
|
+
try:
|
|
806
|
+
path = next(flag_iter)
|
|
807
|
+
except StopIteration:
|
|
808
|
+
# Trailing -I at end of string, preserve as-is
|
|
809
|
+
processed_flags.append(shlex.quote(flag))
|
|
810
|
+
break
|
|
811
|
+
else:
|
|
812
|
+
# Attached -Ipath
|
|
813
|
+
path = flag[2:]
|
|
814
|
+
|
|
815
|
+
# Normalize and check
|
|
816
|
+
normalized_path = os.path.normpath(path)
|
|
817
|
+
is_system = False
|
|
818
|
+
for sys_path in system_include_paths:
|
|
819
|
+
if normalized_path == sys_path:
|
|
820
|
+
is_system = True
|
|
821
|
+
break
|
|
822
|
+
|
|
823
|
+
if is_system:
|
|
824
|
+
if verbose >= 6:
|
|
825
|
+
print(f"Dropping default system include path from pkg-config: {path}")
|
|
826
|
+
continue
|
|
827
|
+
|
|
828
|
+
# Reconstruct as -isystem, quoting path for shell safety
|
|
829
|
+
processed_flags.append(f"-isystem {shlex.quote(path)}")
|
|
830
|
+
else:
|
|
831
|
+
# Re-quote other flags to preserve them correctly in the output string
|
|
832
|
+
processed_flags.append(shlex.quote(flag))
|
|
833
|
+
|
|
834
|
+
return " ".join(processed_flags)
|
|
781
835
|
|
|
782
836
|
|
|
783
837
|
def _add_flags_from_pkg_config(args):
|
|
784
838
|
for pkg in args.pkg_config:
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
.replace("-I", "-isystem ")
|
|
788
|
-
) # This helps the CppHeaderDeps avoid searching packages
|
|
839
|
+
raw_cflags = cached_pkg_config(pkg, "--cflags")
|
|
840
|
+
cflags = filter_pkg_config_cflags(raw_cflags, args.verbose)
|
|
789
841
|
|
|
790
842
|
if cflags:
|
|
791
843
|
args.CPPFLAGS += f" {cflags}"
|
|
@@ -594,8 +594,13 @@ def analyze_file(content_hash: str) -> 'FileAnalysisResult':
|
|
|
594
594
|
'value': value_trimmed
|
|
595
595
|
})
|
|
596
596
|
|
|
597
|
+
# Sort directives by line number for correct guard detection
|
|
598
|
+
# The directives list is built by iterating directive_positions.items()
|
|
599
|
+
# which processes by directive TYPE, not line number order
|
|
600
|
+
directives_sorted = sorted(directives, key=lambda d: d.line_num)
|
|
601
|
+
|
|
597
602
|
# Detect include guard first so we can exclude it from defines
|
|
598
|
-
include_guard = detect_include_guard(
|
|
603
|
+
include_guard = detect_include_guard(directives_sorted)
|
|
599
604
|
|
|
600
605
|
# Extract defines with full information (excluding include guard)
|
|
601
606
|
defines = []
|
|
@@ -922,14 +927,16 @@ def detect_include_guard(directives: List[PreprocessorDirective]) -> Optional['s
|
|
|
922
927
|
|
|
923
928
|
guard_candidate = directive.macro_name
|
|
924
929
|
|
|
925
|
-
#
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
directives[
|
|
930
|
+
# Look ahead up to 5 positions for the matching #define
|
|
931
|
+
# This handles cases where comments or other directives appear between
|
|
932
|
+
# the #ifndef and the matching #define
|
|
933
|
+
for j in range(i + 1, min(i + 6, len(directives))):
|
|
934
|
+
if (directives[j].directive_type == 'define' and
|
|
935
|
+
directives[j].macro_name and
|
|
936
|
+
directives[j].macro_name == guard_candidate):
|
|
930
937
|
|
|
931
|
-
|
|
932
|
-
|
|
938
|
+
# guard_candidate is already sz.Str from PreprocessorDirective.macro_name
|
|
939
|
+
return guard_candidate
|
|
933
940
|
|
|
934
941
|
return None
|
|
935
942
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import sys
|
|
2
|
+
import os
|
|
2
3
|
import re
|
|
3
4
|
import functools
|
|
4
5
|
from collections import defaultdict
|
|
@@ -16,7 +17,6 @@ import compiletools.apptools
|
|
|
16
17
|
import compiletools.compiler_macros
|
|
17
18
|
import compiletools.namer
|
|
18
19
|
from compiletools.preprocessing_cache import get_or_compute_preprocessing, MacroState
|
|
19
|
-
from compiletools.apptools import cached_pkg_config_sz
|
|
20
20
|
from compiletools.stringzilla_utils import strip_sz
|
|
21
21
|
from compiletools.file_analyzer import FileAnalysisResult
|
|
22
22
|
|
|
@@ -211,22 +211,30 @@ class MagicFlagsBase:
|
|
|
211
211
|
|
|
212
212
|
def _handle_pkg_config(self, flag):
|
|
213
213
|
flagsforfilename = defaultdict(list)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
|
|
215
|
+
# Convert to string for splitting, as we need to iterate over packages
|
|
216
|
+
flag_str = str(flag)
|
|
217
|
+
|
|
218
|
+
for pkg in flag_str.split():
|
|
219
|
+
# pkg is str. Call cached_pkg_config directly to avoid unnecessary sz conversions
|
|
220
|
+
cflags_raw = compiletools.apptools.cached_pkg_config(pkg, "--cflags")
|
|
221
|
+
|
|
222
|
+
# Use the shared filtering logic from apptools
|
|
223
|
+
cflags_str = compiletools.apptools.filter_pkg_config_cflags(cflags_raw, self._args.verbose)
|
|
224
|
+
cflags_list = compiletools.utils.split_command_cached_sz(sz.Str(cflags_str))
|
|
225
|
+
|
|
226
|
+
libs_raw = compiletools.apptools.cached_pkg_config(pkg, "--libs")
|
|
227
|
+
libs_list = compiletools.utils.split_command_cached_sz(sz.Str(libs_raw))
|
|
220
228
|
|
|
221
229
|
# Add cflags to all C/C++ flag categories
|
|
222
230
|
for key in (sz.Str("CPPFLAGS"), sz.Str("CFLAGS"), sz.Str("CXXFLAGS")):
|
|
223
|
-
flagsforfilename[key].
|
|
224
|
-
flagsforfilename[sz.Str("LDFLAGS")].
|
|
231
|
+
flagsforfilename[key].extend(cflags_list)
|
|
232
|
+
flagsforfilename[sz.Str("LDFLAGS")].extend(libs_list)
|
|
225
233
|
|
|
226
234
|
if self._args.verbose >= 9:
|
|
227
235
|
print(f"Magic PKG-CONFIG = {pkg}:")
|
|
228
|
-
print(f"\tadded {
|
|
229
|
-
print(f"\tadded {
|
|
236
|
+
print(f"\tadded {cflags_list} to CPPFLAGS, CFLAGS, and CXXFLAGS")
|
|
237
|
+
print(f"\tadded {libs_list} to LDFLAGS")
|
|
230
238
|
return flagsforfilename
|
|
231
239
|
|
|
232
240
|
def _resolve_readmacros_path(self, flag, source_filename):
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Accurate Header Guard Detection
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This sample demonstrates a bug in ct-magicflags where non-standard header guards
|
|
6
|
+
cause Pass 2 to skip transitive dependencies, resulting in missing magic flags.
|
|
7
|
+
|
|
8
|
+
## The Bug
|
|
9
|
+
|
|
10
|
+
### Pass 1: Initial Discovery
|
|
11
|
+
- Processes main.cpp → header_a.hpp → header_b.hpp
|
|
12
|
+
- Discovers all dependencies (2 headers)
|
|
13
|
+
- Macro convergence defines HEADER_A_HPP_GUARD (non-standard pattern prevents detection)
|
|
14
|
+
|
|
15
|
+
### Pass 2: Re-discovery with Converged Macros
|
|
16
|
+
- FileAnalyzer fails to detect HEADER_A_HPP_GUARD as a header guard
|
|
17
|
+
- Guard macro enters Pass 2 macro state
|
|
18
|
+
- Preprocessor evaluates `#ifndef HEADER_A_HPP_GUARD` as FALSE
|
|
19
|
+
- Skips entire header_a.hpp contents (including `#include "header_b.hpp"`)
|
|
20
|
+
- Only discovers 1 header instead of 2
|
|
21
|
+
|
|
22
|
+
### Result
|
|
23
|
+
- header_b.hpp not rediscovered in Pass 2
|
|
24
|
+
- Magic flags lost: `//#PKG-CONFIG=zlib`, `//#LDFLAGS=-lm`
|
|
25
|
+
- Game engine missing critical dependencies
|
|
26
|
+
|
|
27
|
+
## Non-Standard Guard Pattern
|
|
28
|
+
|
|
29
|
+
header_a.hpp uses a guard pattern that breaks FileAnalyzer detection:
|
|
30
|
+
|
|
31
|
+
```cpp
|
|
32
|
+
#ifndef HEADER_A_HPP_GUARD
|
|
33
|
+
#define SOME_OTHER_MACRO 1 // This breaks detection!
|
|
34
|
+
#define HEADER_A_HPP_GUARD
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
FileAnalyzer expects `#define HEADER_A_HPP_GUARD` immediately after `#ifndef`,
|
|
38
|
+
but the intermediate `#define SOME_OTHER_MACRO 1` causes it to miss the guard.
|
|
39
|
+
|
|
40
|
+
## Testing
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
cd /home/gericksson/compiletools
|
|
44
|
+
pytest src/compiletools/test_magicflags.py::TestMagicFlagsModule::test_header_guard_bug_transitive_magic_flags -v
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Before fix**: Test FAILS (weapon dependencies missing)
|
|
48
|
+
**After fix**: Test PASSES (all dependencies discovered)
|
|
49
|
+
|
|
50
|
+
## Fix
|
|
51
|
+
|
|
52
|
+
**File**: `/home/gericksson/compiletools/src/compiletools/file_analyzer.py`
|
|
53
|
+
|
|
54
|
+
1. **Line ~598**: Sort directives by line number before guard detection
|
|
55
|
+
2. **Line ~930-939**: Look ahead 5 positions for matching #define (not just next)
|
|
56
|
+
|
|
57
|
+
This allows FileAnalyzer to correctly detect non-standard guard patterns.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Player entity for game engine
|
|
2
|
+
//
|
|
3
|
+
// This header demonstrates the guard bug:
|
|
4
|
+
// - Has a non-standard guard pattern (SOME_OTHER_MACRO between #ifndef and #define)
|
|
5
|
+
// - Includes header_b.hpp for weapon equipment system
|
|
6
|
+
// - After Pass 1, HEADER_A_HPP_GUARD is defined in macro state
|
|
7
|
+
// - Pass 2 skips this header's contents, missing header_b.hpp and its dependencies
|
|
8
|
+
|
|
9
|
+
#ifndef HEADER_A_HPP_GUARD
|
|
10
|
+
#define SOME_OTHER_MACRO 1 // Breaks FileAnalyzer guard detection. A comment also broke the pattern.
|
|
11
|
+
#define HEADER_A_HPP_GUARD
|
|
12
|
+
|
|
13
|
+
// Feature macro to trigger Pass 2 analysis (macro convergence)
|
|
14
|
+
#define PLAYER_HAS_INVENTORY 1
|
|
15
|
+
|
|
16
|
+
// Include weapon system - this will be SKIPPED in Pass 2 due to guard bug
|
|
17
|
+
#include "header_b.hpp"
|
|
18
|
+
|
|
19
|
+
namespace game {
|
|
20
|
+
|
|
21
|
+
class player {
|
|
22
|
+
public:
|
|
23
|
+
void equip_weapon();
|
|
24
|
+
void attack();
|
|
25
|
+
void take_damage(int amount);
|
|
26
|
+
|
|
27
|
+
private:
|
|
28
|
+
int health_;
|
|
29
|
+
int damage_;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
} // namespace game
|
|
33
|
+
|
|
34
|
+
#endif // HEADER_A_HPP_GUARD
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Weapon system for game engine
|
|
2
|
+
//
|
|
3
|
+
// This header contains magic flags for external dependencies:
|
|
4
|
+
// - zlib: Compress weapon asset data
|
|
5
|
+
// - libm: Math library for damage calculations
|
|
6
|
+
//
|
|
7
|
+
// Bug: These magic flags are NOT discovered when Pass 2 skips header_a.hpp
|
|
8
|
+
|
|
9
|
+
#ifndef HEADER_B_HPP_GUARD
|
|
10
|
+
// Break guard detection pattern
|
|
11
|
+
#define HEADER_B_HPP_GUARD
|
|
12
|
+
|
|
13
|
+
// Magic flags that should be discovered by ct-magicflags
|
|
14
|
+
//#PKG-CONFIG=zlib
|
|
15
|
+
//#LDFLAGS=-lm
|
|
16
|
+
|
|
17
|
+
namespace game {
|
|
18
|
+
|
|
19
|
+
class weapon {
|
|
20
|
+
public:
|
|
21
|
+
void deal_damage();
|
|
22
|
+
int calculate_critical_strike();
|
|
23
|
+
void compress_weapon_data(); // Requires zlib
|
|
24
|
+
|
|
25
|
+
private:
|
|
26
|
+
int base_damage_;
|
|
27
|
+
float critical_multiplier_; // Requires libm for calculations
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
} // namespace game
|
|
31
|
+
|
|
32
|
+
#endif // HEADER_B_HPP_GUARD
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Game engine initialization test
|
|
2
|
+
//
|
|
3
|
+
// This test demonstrates a header guard bug where Pass 2 macro convergence
|
|
4
|
+
// causes transitive dependencies to be missed in the game's equipment system.
|
|
5
|
+
//
|
|
6
|
+
// Bug Impact: Weapon system dependencies (zlib compression, math library) are
|
|
7
|
+
// not discovered because Pass 2 skips header_a.hpp after its guard is defined.
|
|
8
|
+
|
|
9
|
+
#include "header_a.hpp"
|
|
10
|
+
|
|
11
|
+
int main() {
|
|
12
|
+
// Initialize game with player and equipment
|
|
13
|
+
game::player hero;
|
|
14
|
+
hero.equip_weapon();
|
|
15
|
+
hero.attack();
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
@@ -49,6 +49,7 @@ class TestFindTargetsModule:
|
|
|
49
49
|
"parse_order_macro_bug/libs/entry_point_2.cpp",
|
|
50
50
|
"transitive_cache_bug/engine/a-game.cpp",
|
|
51
51
|
"transitive_cache_bug/engine/b-game.cpp",
|
|
52
|
+
"header_guard_bug/main.cpp",
|
|
52
53
|
}
|
|
53
54
|
relativeexpectedtests = {
|
|
54
55
|
"cross_platform/test_source.cpp",
|
|
@@ -90,7 +90,7 @@ class TestMagicFlagsModule(tb.BaseCompileToolsTestCase):
|
|
|
90
90
|
assert sz.Str("CXXFLAGS") in result
|
|
91
91
|
|
|
92
92
|
@uth.requires_functional_compiler
|
|
93
|
-
def test_direct_and_cpp_magic_generate_same_results(self):
|
|
93
|
+
def test_direct_and_cpp_magic_generate_same_results(self, pkgconfig_env):
|
|
94
94
|
"""Test that DirectMagicFlags and CppMagicFlags produce identical results on conditional compilation samples"""
|
|
95
95
|
|
|
96
96
|
# Test files with optional expected values for correctness verification
|
|
@@ -156,7 +156,7 @@ class TestMagicFlagsModule(tb.BaseCompileToolsTestCase):
|
|
|
156
156
|
fail_msg = "\n\nDirectMagicFlags vs CppMagicFlags equivalence failures:\n" + "\n".join(failures)
|
|
157
157
|
assert False, fail_msg
|
|
158
158
|
|
|
159
|
-
def test_macro_deps_cross_file(self):
|
|
159
|
+
def test_macro_deps_cross_file(self, pkgconfig_env):
|
|
160
160
|
"""Test that macros defined in source files affect header magic flags"""
|
|
161
161
|
source_file = "macro_deps/main.cpp"
|
|
162
162
|
|
|
@@ -169,7 +169,7 @@ class TestMagicFlagsModule(tb.BaseCompileToolsTestCase):
|
|
|
169
169
|
# Should only contain feature X dependencies, not feature Y
|
|
170
170
|
assert sz.Str("PKG-CONFIG") in result_direct
|
|
171
171
|
assert "zlib" in [str(x) for x in result_direct[sz.Str("PKG-CONFIG")]]
|
|
172
|
-
assert "
|
|
172
|
+
assert "nested" not in [str(x) for x in result_direct.get(sz.Str("PKG-CONFIG"), [])]
|
|
173
173
|
|
|
174
174
|
assert sz.Str("SOURCE") in result_direct
|
|
175
175
|
feature_x_source = self._get_sample_path("macro_deps/feature_x_impl.cpp")
|
|
@@ -256,7 +256,7 @@ class TestMagicFlagsModule(tb.BaseCompileToolsTestCase):
|
|
|
256
256
|
"All versions should have common MYAPP flags"
|
|
257
257
|
|
|
258
258
|
@uth.requires_functional_compiler
|
|
259
|
-
def test_magic_processing_order_bug(self):
|
|
259
|
+
def test_magic_processing_order_bug(self, pkgconfig_env):
|
|
260
260
|
"""Test that DirectMagicFlags and CppMagicFlags produce identical results - should expose the processing order bug"""
|
|
261
261
|
|
|
262
262
|
source_file = "magic_processing_order/complex_test.cpp"
|
|
@@ -282,7 +282,7 @@ class TestMagicFlagsModule(tb.BaseCompileToolsTestCase):
|
|
|
282
282
|
f"This indicates a magic processing order bug in DirectMagicFlags!"
|
|
283
283
|
|
|
284
284
|
@uth.requires_functional_compiler
|
|
285
|
-
def test_conditional_magic_comments_with_complex_headers(self):
|
|
285
|
+
def test_conditional_magic_comments_with_complex_headers(self, pkgconfig_env):
|
|
286
286
|
"""Test conditional magic comments work correctly with header dependencies"""
|
|
287
287
|
|
|
288
288
|
source_file = "magic_processing_order/complex_test.cpp"
|
|
@@ -681,3 +681,49 @@ class TestMagicFlagsModule(tb.BaseCompileToolsTestCase):
|
|
|
681
681
|
# Verify results are identical
|
|
682
682
|
assert sz.Str('-ltest') in result2.get(sz.Str("LDFLAGS"), [])
|
|
683
683
|
|
|
684
|
+
def test_header_guard_bug_transitive_magic_flags(self):
|
|
685
|
+
"""Test for include guard detection with non-standard guard patterns.
|
|
686
|
+
|
|
687
|
+
This test verifies the fix for a bug where include guards were not detected
|
|
688
|
+
when other directives appeared between #ifndef and #define. The sample uses
|
|
689
|
+
header_a.hpp with a non-standard pattern:
|
|
690
|
+
#ifndef HEADER_A_HPP_GUARD
|
|
691
|
+
#define SOME_OTHER_MACRO 1 // Breaks simple sequential detection
|
|
692
|
+
#define HEADER_A_HPP_GUARD
|
|
693
|
+
|
|
694
|
+
File structure:
|
|
695
|
+
main.cpp -> header_a.hpp (non-standard guard) -> header_b.hpp (has magic flags)
|
|
696
|
+
|
|
697
|
+
The bug: directives were processed by TYPE (all #ifndef, then all #define, etc.)
|
|
698
|
+
rather than by LINE NUMBER, causing guard detection to fail. This resulted in:
|
|
699
|
+
- Guard macro incorrectly included in defines list
|
|
700
|
+
- Transitive dependencies possibly missing due to stale guard macros in cache
|
|
701
|
+
|
|
702
|
+
Fixed in file_analyzer.py by:
|
|
703
|
+
- Sorting directives by line number before guard detection (line 597-603)
|
|
704
|
+
- Robust lookahead pattern (up to 5 directives) instead of strict next-directive check
|
|
705
|
+
|
|
706
|
+
This test now passes and validates magic flags are correctly discovered from
|
|
707
|
+
transitive headers even with non-standard guard patterns.
|
|
708
|
+
"""
|
|
709
|
+
|
|
710
|
+
source_file = "header_guard_bug/main.cpp"
|
|
711
|
+
|
|
712
|
+
# Parse with DirectMagicFlags
|
|
713
|
+
result = self._parse_with_magic("direct", source_file)
|
|
714
|
+
|
|
715
|
+
# Verify magic flags from transitive header (header_b.hpp) are discovered
|
|
716
|
+
assert sz.Str("PKG-CONFIG") in result, \
|
|
717
|
+
"PKG-CONFIG not found - transitive header magic flags not discovered"
|
|
718
|
+
|
|
719
|
+
pkg_config_values = [str(x) for x in result.get(sz.Str("PKG-CONFIG"), [])]
|
|
720
|
+
assert "zlib" in pkg_config_values, \
|
|
721
|
+
f"Expected zlib in PKG-CONFIG from header_b.hpp, got: {pkg_config_values}"
|
|
722
|
+
|
|
723
|
+
assert sz.Str("LDFLAGS") in result, \
|
|
724
|
+
"LDFLAGS not found - transitive header magic flags not discovered"
|
|
725
|
+
|
|
726
|
+
ldflags_values = [str(x) for x in result.get(sz.Str("LDFLAGS"), [])]
|
|
727
|
+
assert "-lm" in ldflags_values, \
|
|
728
|
+
f"Expected -lm in LDFLAGS from header_b.hpp, got: {ldflags_values}"
|
|
729
|
+
|