Kaynağa Gözat

Merge branch 'bugfix/make_ccache_opt_in' into 'master'

cmake: make use of ccache opt-in

See merge request idf/esp-idf!5368
Angus Gratton 6 yıl önce
ebeveyn
işleme
9ef37270f6
3 değiştirilmiş dosya ile 23 ekleme ve 11 silme
  1. 7 4
      tools/ci/test_build_system_cmake.sh
  2. 3 2
      tools/cmake/project.cmake
  3. 13 5
      tools/idf.py

+ 7 - 4
tools/ci/test_build_system_cmake.sh

@@ -428,11 +428,14 @@ endmenu\n" >> ${IDF_PATH}/Kconfig;
     print_status "Confserver can be invoked by idf.py"
     echo '{"version": 1}' | idf.py confserver || failure "Couldn't load confserver"
 
-    print_status "Check ccache is used to build when present"
+    print_status "Check ccache is used to build"
     touch ccache && chmod +x ccache  # make sure that ccache is present for this test
-    (export PATH=$PWD:$PATH && idf.py reconfigure | grep "ccache will be used for faster builds") || failure "ccache should be used when present"
-    (export PATH=$PWD:$PATH && idf.py  --no-ccache reconfigure| grep -c "ccache will be used for faster builds" | grep -wq 0) \
-        || failure "ccache should not be used even when present if --no-ccache is specified"
+    (export PATH=$PWD:$PATH && idf.py --ccache reconfigure | grep "ccache will be used for faster builds") || failure "ccache should be used when --cache is specified"
+    idf.py fullclean
+    (export PATH=$PWD:$PATH && idf.py reconfigure| grep -c "ccache will be used for faster builds" | grep -wq 0) \
+        || failure "ccache should not be used even when present if --ccache is not specified"
+    (export PATH=$PWD:$PATH && idf.py --no-ccache reconfigure| grep -c "ccache will be used for faster builds" | grep -wq 0) \
+        || failure "--no-ccache causes no issue for backward compatibility"
     rm -f ccache
 
     print_status "Custom bootloader overrides original"

+ 3 - 2
tools/cmake/project.cmake

@@ -244,12 +244,13 @@ macro(project project_name)
 
     __target_set_toolchain()
 
-    # Enable ccache if it's on the path
-    if(NOT CCACHE_DISABLE)
+    if(CCACHE_ENABLE)
         find_program(CCACHE_FOUND ccache)
         if(CCACHE_FOUND)
             message(STATUS "ccache will be used for faster builds")
             set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
+        else()
+            message(WARNING "enabled ccache in build but ccache program not found")
         endif()
     endif()
 

+ 13 - 5
tools/idf.py

@@ -235,8 +235,8 @@ def _ensure_build_directory(args, always_run_cmake=False):
             ]
             if not args.no_warnings:
                 cmake_args += ["--warn-uninitialized"]
-            if args.no_ccache:
-                cmake_args += ["-DCCACHE_DISABLE=1"]
+            if args.ccache:
+                cmake_args += ["-DCCACHE_ENABLE=1"]
             if args.define_cache_entry:
                 cmake_args += ["-D" + d for d in args.define_cache_entry]
             cmake_args += [project_dir]
@@ -305,7 +305,7 @@ def build_target(target_name, ctx, args):
     _ensure_build_directory(args)
     generator_cmd = GENERATOR_CMDS[args.generator]
 
-    if not args.no_ccache:
+    if args.ccache:
         # Setting CCACHE_BASEDIR & CCACHE_NO_HASHDIR ensures that project paths aren't stored in the ccache entries
         # (this means ccache hits can be shared between different projects. It may mean that some debug information
         # will point to files in another project, if these files are perfect duplicates of each other.)
@@ -960,11 +960,19 @@ def init_cli():
                 "default": False,
             },
             {
-                "names": ["--no-ccache"],
-                "help": "Disable ccache. Otherwise, if ccache is available on the PATH then it will be used for faster builds.",
+                "names": ["--ccache"],
+                "help": "Use ccache in build",
                 "is_flag": True,
                 "default": False,
             },
+            {
+                # This is unused/ignored argument, as ccache use was originally opt-out.
+                # Use of ccache has been made opt-in using --cache arg.
+                "names": ["--no-ccache"],
+                "default": True,
+                "is_flag": True,
+                "hidden": True,
+            },
             {
                 "names": ["-G", "--generator"],
                 "help": "CMake generator.",