<body class="article">\r
<div id="header">\r
<h1>ccache authors</h1>\r
-<span id="revnumber">version 3.3</span>\r
+<span id="revnumber">version 3.3+5_g3df7836_dirty</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.3<br />\r
+Version 3.3+5_g3df7836_dirty<br />\r
Last updated\r
- 2016-08-27 16:54:44 CEST\r
+ 2016-09-07 21:00:33 CEST\r
</div>\r
</div>\r
</body>\r
<body class="article">\r
<div id="header">\r
<h1>ccache copyright and license</h1>\r
-<span id="revnumber">version 3.2.7+172_g67acac4</span>\r
+<span id="revnumber">version 3.3+5_g3df7836_dirty</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.2.7+172_g67acac4<br />\r
+Version 3.3+5_g3df7836_dirty<br />\r
Last updated\r
- 2016-07-28 15:37:17 CEST\r
+ 2016-09-07 21:00:33 CEST\r
</div>\r
</div>\r
</body>\r
<body class="article">\r
<div id="header">\r
<h1>CCACHE(1)</h1>\r
-<span id="revnumber">version 3.3</span>\r
+<span id="revnumber">version 3.3+5_g3df7836_dirty</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.3<br />\r
+Version 3.3+5_g3df7836_dirty<br />\r
Last updated\r
- 2016-08-27 16:48:16 CEST\r
+ 2016-09-07 21:00:33 CEST\r
</div>\r
</div>\r
</body>\r
<body class="article">\r
<div id="header">\r
<h1>ccache news</h1>\r
-<span id="revnumber">version 3.3</span>\r
+<span id="revnumber">version 3.3.1</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>\r
<div id="content">\r
<div class="sect1">\r
+<h2 id="_ccache_3_3_1">ccache 3.3.1</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-09-07</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed a problem in the “multiple <code>-arch</code> options” support introduced in\r
+ 3.3. When using the direct mode (the default), different combinations of\r
+ <code>-arch</code> options were not detected properly.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed an issue when compiler option <code>-Wp,-MT,path</code> is used instead of <code>-MT\r
+ path</code> (and similar for <code>-MF</code>, <code>-MP</code> and <code>-MQ</code>) and <code>run_second_cpp</code>\r
+ (<code>CCACHE_CPP2</code>) is enabled.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
<h2 id="_ccache_3_3">ccache 3.3</h2>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2016-08-27</p></div>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes">Bug fixes</h3>\r
+<h3 id="_bug_fixes_2">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</div>\r
</div>\r
<div class="sect1">\r
+<h2 id="_ccache_3_2_8">ccache 3.2.8</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-09-07</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_3">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed an issue when compiler option <code>-Wp,-MT,path</code> is used instead of <code>-MT\r
+ path</code> (and similar for <code>-MF</code>, <code>-MP</code> and <code>-MQ</code>) and <code>run_second_cpp</code>\r
+ (<code>CCACHE_CPP2</code>) is enabled.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now understands the undocumented <code>-coverage</code> (only one dash) GCC\r
+ option.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
<h2 id="_ccache_3_2_7">ccache 3.2.7</h2>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2016-07-20</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_2">Bug fixes</h3>\r
+<h3 id="_bug_fixes_4">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2016-07-12</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_3">Bug fixes</h3>\r
+<h3 id="_bug_fixes_5">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_4">Bug fixes</h3>\r
+<h3 id="_bug_fixes_6">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2015-10-08</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_5">Bug fixes</h3>\r
+<h3 id="_bug_fixes_7">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_6">Bug fixes</h3>\r
+<h3 id="_bug_fixes_8">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_7">Bug fixes</h3>\r
+<h3 id="_bug_fixes_9">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2014-12-10</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_8">Bug fixes</h3>\r
+<h3 id="_bug_fixes_10">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_9">Bug fixes</h3>\r
+<h3 id="_bug_fixes_11">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2016-07-12</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_10">Bug fixes</h3>\r
+<h3 id="_bug_fixes_12">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2015-03-07</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_11">Bug fixes</h3>\r
+<h3 id="_bug_fixes_13">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_12">Bug fixes</h3>\r
+<h3 id="_bug_fixes_14">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2013-01-06</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_13">Bug fixes</h3>\r
+<h3 id="_bug_fixes_15">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_14">Bug fixes</h3>\r
+<h3 id="_bug_fixes_16">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2012-01-08</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_15">Bug fixes</h3>\r
+<h3 id="_bug_fixes_17">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_16">Bug fixes</h3>\r
+<h3 id="_bug_fixes_18">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_17">Bug fixes</h3>\r
+<h3 id="_bug_fixes_19">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2011-01-09</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_18">Bug fixes</h3>\r
+<h3 id="_bug_fixes_20">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-11-28</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_19">Bug fixes</h3>\r
+<h3 id="_bug_fixes_21">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-11-21</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_20">Bug fixes</h3>\r
+<h3 id="_bug_fixes_22">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-11-07</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_21">Bug fixes</h3>\r
+<h3 id="_bug_fixes_23">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_22">Bug fixes</h3>\r
+<h3 id="_bug_fixes_24">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-07-15</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_23">Bug fixes</h3>\r
+<h3 id="_bug_fixes_25">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_24">Bug fixes</h3>\r
+<h3 id="_bug_fixes_26">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.3<br />\r
+Version 3.3.1<br />\r
Last updated\r
- 2016-08-27 16:52:44 CEST\r
+ 2016-09-07 21:19:19 CEST\r
</div>\r
</div>\r
</body>\r
ccache news
===========
+ccache 3.3.1
+------------
+Release date: 2016-09-07
+
+Bug fixes
+~~~~~~~~~
+
+- Fixed a problem in the ``multiple `-arch` options'' support introduced in
+ 3.3. When using the direct mode (the default), different combinations of
+ `-arch` options were not detected properly.
+
+- Fixed an issue when compiler option `-Wp,-MT,path` is used instead of `-MT
+ path` (and similar for `-MF`, `-MP` and `-MQ`) and `run_second_cpp`
+ (`CCACHE_CPP2`) is enabled.
+
ccache 3.3
----------
- Fixed build and test for MinGW32 and Windows.
+ccache 3.2.8
+------------
+Release date: 2016-09-07
+
+Bug fixes
+~~~~~~~~~
+
+- Fixed an issue when compiler option `-Wp,-MT,path` is used instead of `-MT
+ path` (and similar for `-MF`, `-MP` and `-MQ`) and `run_second_cpp`
+ (`CCACHE_CPP2`) is enabled.
+
+- ccache now understands the undocumented `-coverage` (only one dash) GCC
+ option.
+
+
ccache 3.2.7
------------
Release date: 2016-07-20
.\" Title: ccache
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 08/27/2016
+.\" Date: 09/07/2016
.\" Manual: ccache Manual
-.\" Source: ccache 3.3
+.\" Source: ccache 3.3.1
.\" Language: English
.\"
-.TH "CCACHE" "1" "08/27/2016" "ccache 3\&.3" "ccache Manual"
+.TH "CCACHE" "1" "09/07/2016" "ccache 3\&.3\&.1" "ccache Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
free(gcda_name);
}
+ // Adding -arch to hash since cpp output is affected.
+ for (size_t i = 0; i < arch_args_size; ++i) {
+ hash_delimiter(hash, "-arch");
+ hash_string(hash, arch_args[i]);
+ }
+
struct file_hash *object_hash = NULL;
if (direct_mode) {
// Hash environment variables that affect the preprocessor output.
} else if (str_startswith(argv[i], "-Wp,-D")
&& !strchr(argv[i] + 6, ',')) {
// Treat it like -D.
- args_add(dep_args, argv[i] + 4);
+ args_add(cpp_args, argv[i] + 4);
+ continue;
+ } else if (str_startswith(argv[i], "-Wp,-M")) {
+ // -MF, -MP, -MQ, -MT, etc. TODO: Make argument to MF/MQ/MT relative.
+ args_add(dep_args, argv[i]);
continue;
} else if (conf->direct_mode) {
// -Wp, can be used to pass too hard options to the preprocessor.
cc_log("Unsupported compiler option for direct mode: %s", argv[i]);
conf->direct_mode = false;
}
+
+ // Any other -Wp,* arguments are only relevant for the preprocessor.
+ args_add(cpp_args, argv[i]);
+ continue;
}
if (str_eq(argv[i], "-MP")) {
args_add(dep_args, argv[i]);
fi
}
+SUITE_multi_arch_SETUP() {
+ generate_code 1 test1.c
+ unset CCACHE_NODIRECT
+}
+
SUITE_multi_arch() {
# -------------------------------------------------------------------------
- TEST "cache hit"
+ TEST "cache hit, direct mode"
- generate_code 1 test1.c
+ # Different arches shouldn't affect each other
+ $CCACHE_COMPILE -arch i386 -c test1.c
+ expect_stat 'cache hit (direct)' 0
+ expect_stat 'cache miss' 1
+
+ $CCACHE_COMPILE -arch x86_64 -c test1.c
+ expect_stat 'cache hit (direct)' 0
+ expect_stat 'cache miss' 2
+ $CCACHE_COMPILE -arch i386 -c test1.c
+ expect_stat 'cache hit (direct)' 1
+ expect_stat 'cache miss' 2
+
+ # Multiple arches should be cached too
$CCACHE_COMPILE -arch i386 -arch x86_64 -c test1.c
+ expect_stat 'cache hit (direct)' 1
+ expect_stat 'cache miss' 3
+
+ $CCACHE_COMPILE -arch i386 -arch x86_64 -c test1.c
+ expect_stat 'cache hit (direct)' 2
+ expect_stat 'cache miss' 3
+
+ # -------------------------------------------------------------------------
+ TEST "cache hit, preprocessor mode"
+
+ export CCACHE_NODIRECT=1
+
+ $CCACHE_COMPILE -arch i386 -c test1.c
expect_stat 'cache hit (preprocessed)' 0
expect_stat 'cache miss' 1
+ $CCACHE_COMPILE -arch x86_64 -c test1.c
+ expect_stat 'cache hit (preprocessed)' 0
+ expect_stat 'cache miss' 2
+
+ $CCACHE_COMPILE -arch i386 -c test1.c
+ expect_stat 'cache hit (preprocessed)' 1
+ expect_stat 'cache miss' 2
+
+ # Multiple arches should be cached too
$CCACHE_COMPILE -arch i386 -arch x86_64 -c test1.c
expect_stat 'cache hit (preprocessed)' 1
- expect_stat 'cache miss' 1
+ expect_stat 'cache miss' 3
+
+ $CCACHE_COMPILE -arch i386 -arch x86_64 -c test1.c
+ expect_stat 'cache hit (preprocessed)' 2
+ expect_stat 'cache miss' 3
}
# =============================================================================
{
#define CMD \
"cc -MD -MMD -MP -MF foo.d -MT mt1 -MT mt2 -MQ mq1 -MQ mq2" \
- " -Wp,-MD,wpmd -Wp,-MMD,wpmmd"
+ " -Wp,-MD,wpmd -Wp,-MMD,wpmmd -Wp,-MP -Wp,-MT,wpmt -Wp,-MQ,wpmq -Wp,-MF,wpf"
struct args *orig = args_init_from_string(CMD " -c foo.c -o foo.o");
struct args *exp_cpp = args_init_from_string(CMD);
#undef CMD
" -include test.h -include-pch test.pch -iprefix . -iquote ." \
" -isysroot . -isystem . -iwithprefix . -iwithprefixbefore ." \
" -DTEST_MACRO -DTEST_MACRO2=1 -F. -trigraphs -fworking-directory" \
- " -fno-working-directory -MD -MMD -MP -MF foo.d -MT mt1 -MT mt2 " \
- " -MQ mq1 -MQ mq2 -Wp,-MD,wpmd -Wp,-MMD,wpmmd"
+ " -fno-working-directory -MD -MMD -MP -MF foo.d -MT mt1 -MT mt2" \
+ " -MQ mq1 -MQ mq2 -Wp,-MD,wpmd -Wp,-MMD,wpmmd -Wp,-MP -Wp,-MT,wpmt" \
+ " -Wp,-MQ,wpmq -Wp,-MF,wpf"
struct args *orig = args_init_from_string(CMD " -c foo.c -o foo.o");
struct args *exp_cpp = args_init_from_string(CMD);
#undef CMD
-const char CCACHE_VERSION[] = "3.3";
+const char CCACHE_VERSION[] = "3.3.1";