diff --git a/run_unittests.py b/run_unittests.py index 0814b3432..25fa26368 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -2393,19 +2393,35 @@ class WindowsTests(BasePlatformTests): def test_rc_depends_files(self): testdir = os.path.join(self.platform_test_dir, '5 resources') + + # resource compiler depfile generation is not yet implemented for msvc + env = Environment(testdir, self.builddir, get_fake_options(self.prefix), []) + depfile_works = env.detect_c_compiler(False).get_id() != 'msvc' + self.init(testdir) self.build() # Immediately rebuilding should not do anything self.assertBuildIsNoop() + # Test compile_resources(depend_file:) # Changing mtime of sample.ico should rebuild prog self.utime(os.path.join(testdir, 'res', 'sample.ico')) self.assertRebuiltTarget('prog') + # Test depfile generation by compile_resources # Changing mtime of resource.h should rebuild myres.rc and then prog - # (resource compiler depfile generation is not yet implemented for msvc) - env = Environment(testdir, self.builddir, get_fake_options(self.prefix), []) - if env.detect_c_compiler(False).get_id() != 'msvc': + if depfile_works: self.utime(os.path.join(testdir, 'inc', 'resource', 'resource.h')) self.assertRebuiltTarget('prog') + self.wipe() + + if depfile_works: + testdir = os.path.join(self.platform_test_dir, '13 resources with custom targets') + self.init(testdir) + self.build() + # Immediately rebuilding should not do anything + self.assertBuildIsNoop() + # Changing mtime of resource.h should rebuild myres_1.rc and then prog_1 + self.utime(os.path.join(testdir, 'res', 'resource.h')) + self.assertRebuiltTarget('prog_1') class LinuxlikeTests(BasePlatformTests): diff --git a/test cases/windows/13 resources with custom targets/res/meson.build b/test cases/windows/13 resources with custom targets/res/meson.build index c15bd92d2..97976370b 100644 --- a/test cases/windows/13 resources with custom targets/res/meson.build +++ b/test cases/windows/13 resources with custom targets/res/meson.build @@ -10,9 +10,10 @@ foreach id : [1, 2] output : 'myres_@0@.rc'.format(id), command : [rc_writer, '@INPUT@', '@OUTPUT@', files('sample.ico')], install : false, - build_always : true) + build_always : false) endforeach rc_sources += files('myres_static.rc') -res = win.compile_resources(rc_sources) +res = win.compile_resources(rc_sources, + include_directories: include_directories('.')) diff --git a/test cases/windows/13 resources with custom targets/res/myres.rc.in b/test cases/windows/13 resources with custom targets/res/myres.rc.in index 6899bc8f3..0cff642ba 100644 --- a/test cases/windows/13 resources with custom targets/res/myres.rc.in +++ b/test cases/windows/13 resources with custom targets/res/myres.rc.in @@ -1,3 +1,4 @@ #include +#include 1 ICON "{icon}" diff --git a/test cases/windows/13 resources with custom targets/res/resource.h b/test cases/windows/13 resources with custom targets/res/resource.h new file mode 100644 index 000000000..e69de29bb