Commit Graph
9 Commits
Author SHA1 Message Date
Roland Kaufmann d801668c1c Fix logic bug and make language explicit
The operator precedence in CMake can be surprising, so add parenthesis
to make in unambigious. Also, make it more explicit from which language
we get the default options. (They are all set from the settings given
for C++; why would have different optimization options for C and C++?)
2013-09-18 14:07:57 +02:00
Roland Kaufmann aa4b7979a7 Recognize Clang to be a GCC-compatible compiler
Clang aims to be compatible with GCC when it comes to command-line
parameters. Where we enable functionality based on the presence of
a GCC-compiler, we can use the same functionality with Clang.

This patch introduces a new variable CXX_COMPAT_GCC which is true if
the compiler handles the same options as GCC, and this variable is
subsequently used in tests instead of CMAKE_COMPILER_IS_GNUCXX (which
remains if we need to test if we really have GCC, e.g. for version)
2013-08-06 23:06:09 +02:00
Roland Kaufmann bfeac75fa9 Disable link-time, whole program optimization
When using LTO, the linker calls back to the compiler to figure out
where a certain symbol is defined. However, in many versions there
is apparently a bug that is triggered if a template in inlined in
both a used library and in the main program, but with different
versions of the compiler. The Boost exception class is particular
prone for this.

Thus, we disable the -lto from the development builds by default;
if anyone wants to test of the behaviour of their own compiler, they
must now explicitly turn on this flag.
2013-06-13 23:19:27 +02:00
Roland Kaufmann 878fe026f9 Minor refactoring to make code more readable 2013-04-07 00:46:58 +02:00
Roland Kaufmann 0b26514f0f Allow whole program optimization to be switched off 2013-04-05 00:14:26 +02:00
Roland Kaufmann 2386325e57 Allow user to override our non-standard defaults
CMake loads option defaults from the platform file and then usually
proceeds to write these to the cache, so it is not possible to see
if an option was specified by the user, or was the default.

By setting CMAKE_NOT_USING_CONFIG_FLAGS, we regain control over the
options and can then set this to what we think is suitable, provided
that the user hasn't specified something for us.
2013-04-05 00:14:26 +02:00
Roland Kaufmann 7976b95983 Use native instruction set on build system
CMake files are in general not portable between systems anyway, so we
may as well take full advantage of the native instruction set.

There must be a companion option to switch this off in case anyone
wants to build a package for distribution.
2013-02-11 22:37:55 +01:00
Roland Kaufmann 31fae50628 Probe for optimization flags before using them 2013-02-11 22:37:55 +01:00
Roland Kaufmann bed3921212 Turn on optimization flags based on build type 2013-02-11 22:36:49 +01:00