Teach CMakePlatformId.h to construct an "INFO:compiler_version[]" string
literal from macros COMPILER_VERSION_(MAJOR|MINOR|PATCH|TWEAK) to be
defined in CMake(C|CXX)CompilerId.(c|cpp) for each compiler. Provide
conversion macros DEC() and HEX() to decode decimal or hex digits from
integer values. Parse the version out of the compiler id binary along
with the other INFO values already present.
Store the result in variable CMAKE_<LANG>_COMPILER_VERSION in the format
"major[.minor[.patch[.tweak]]]". Save the value persistently in
CMake(C|CXX)Compiler.cmake in the build tree. Document the variable for
internal use since we do not set it everywhere yet.
Report the compiler version on the compiler id result line e.g.
The C compiler identification is GNU 4.5.2
Report CMAKE_(C|CXX)_COMPILER_(ID|VERSION) in SystemInformation test.
ae62a1c Test CMAKE_GNUtoMS option in ExportImport on MinGW and MSys
afb00fe Add CMAKE_GNUtoMS option to convert GNU .dll.a to MS .lib
61e8629 Factor makefile generator link rule lookup into helper function
a603250 Load platform files that need to know the ABI when possible
ecd8414 Fortran: Detect pointer size in gfortran on MinGW
Teach the Windows-GNU.cmake platform file to look for Visual Studio
tools matching the target ABI. Add an extra step to the link command
for shared libraries and executables that export symbols and on which a
new GNUtoMS property is set (initialized by the CMAKE_GNUtoMS option).
Tell the GNU linker to output a module definition (.def) file listing
exported symbols in addition to the GNU-format import library (.dll.a).
Pass the .def file to the MS "lib" tool to construct a MS-format DLL
import library (.lib).
Teach the install(TARGETS) command to install the MS import library next
to the GNU one. Teach the install(EXPORT) and export() command to set
the IMPORTED_IMPLIB property pointing at the import library to use the
import library matching the tools in the importing project.
Load platform files named in CMAKE_<lang>_ABI_FILES for each language
once the ABI sizeof(void*) is known. During the first configuration
this is after the test for working compiler and ABI detection checks.
During later configurations the ABI information is immediately available
because it has been saved in CMake<lang>Compiler.cmake.
ParseCppFile() is the one which is automoc4/KDE4-compatible, and which
becomes a bit crowded. By separating these two it is easier to ensure
that the strict one doesn't get broken accidentially.
Alex
Since the export() command needs to know the final location of a target
in the build tree we cannot allow properties affecting the location or
name of a target file to be set after the target is passed to export().
Fix a violation of this rule in the SimpleInstall test.
ac2e45d Provide std::ios_base typedef on GCC < 3
28c46ca cmNewLineStyle: Use cmStandardIncludes.h
75e83e9 cmNewLineStyle: Remove trailing comma in enum
be6502c bootstrap: Include cmNewLineStyle in build
a087490 Add NEWLINE_STYLE option to configure_file (#3957)
This ensures that stl types are compiled consistently with
the reset of CMake. Otherwise one may get errors like
Undefined symbol: .cmNewLineStyle::ReadFromArguments(
const std::vector<std::_LFS_ON::basic_string ...)
due to inconsistent large file support definitions.
This is again for KDE4 compatiblity. If foo.moc is included, in general
moc should run on foo.cpp. Usually this can't cause problems.
It can only cause problems if moc must run on the header, and the resulting
file must be included in the cpp file, which is the case with the
Q_PRIVATE_SLOT macro.
This makes the test added by Stephen pass.
Alex
VS_GLOBAL_PROJECT_TYPES: A string containing UUIDs to embed in the
Visual Studio project file under <ProjectTypes>.
VS_GLOBAL_KEYWORD: Allows specification of a keyword like "ManagedCProj"
instead of the default "Win32Proj", under <Keyword>
VS_DOTNET_REFERENCES: Semicolon-delimited list of .NET references to add
to the project, which creates a new <ItemGroup>.
Remove extra parens in test for not handling LINK_INTERFACE_LIBRARIES.
Remove redundant test for equality with ProcessingPrivateInterface
subsumed by test for inequality with ProcessingPublicInterface.
982b766 Eclipse: use new variable CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
1110e45 Eclipse: create links to subprojects also in the source-project (#12579)
Typical <package>Config.cmake files for find_package() rely only on the
files generated by install(EXPORT). They might be wrong, for whatever
reasons, like people manually deleted files, projects were packaged
wrong by distributions, whatever. To protect against this, add checks
that the file locations we are importing actually exist on disk.
Alex
Up to 100 completion strings for the names of added variables
are saved in the settings, so it will remember the variables
you are usually adding.
It also ensures that CMAKE_INSTALL_PREFIX is always there, since
this is maybe the one which is set most often.
Alex
Previously ECLIPSE_CDT4_GENERATE_SOURCE_PROJECT was used, but the
new name CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT is more in line with
the general naming conventions in cmake, and, more importantly IMO,
in cmake-gui it now appears right next to the other eclipse-related
variables, which all start with CMAKE_ECLIPSE_.
A warning is printed if the old variable is TRUE and the new one isn't,
so users should notice that they have to enable the new one.
Alex
Similar fix to commit d093abef for the Makefile generators. Prevents
premature exit from sequence of commands. Even when no errors occur,
the previous construct without "call " was exiting the sequence before
executing the full set of commands...
Add a cast to lines converting "uint64_t" to "unsigned int" that are
known safe due to use of modulus with a small integer. This avoids
compiler warnings such as
conversion from 'cm_sha2_uint64_t' to 'unsigned int',
possible loss of data
from MSVC.
-enable the KDE4-compatiblity mode only when using Qt4
-always (except in the KDE4 compat mode) error out if a cpp-file
contains "Q_OBJECT", but does not include filename.moc
Alex
Define an abstract API around the backend hash algorithm. Expose
ifstream errors to HashFile callers. Always try opening the file.
Succeed only if the end of file is reached without error.
537020f Tests: Nudge MFC test to pass on VS 6 dashboards (#11213)
51f442e VS11: Update InstallRequiredSystemLibraries.cmake for VS11 (#11213)
d85ab7a Tests: Add environment logging to the MFC test (#11213)
011694c VS10: Use expected values for UseOfMfc (#11213)
a2e6d24 Tests: Fix MFC test to work with VS 10 and later (#11213)
Since the parent commit the local generator Version ivar may be
compared for ordering. Convert comparisons:
"==VS10" becomes ">=VS10"
"!=VS10" becomes "< VS10"
to support an explicit enumeration value for VS11 with no change
in behavior.
Move the Version member to the top cmLocalVisualStudioGenerator class
and set it consistently for instances created by all the global
generator versions. Use an enumeration type with values scaled by a
factor of 10 so we can handle VS 7.1 without out-of-order numbers.
VS 7.1 support for SuppressStartupBanner was broken by commit 25116a3c
(Fix CMAKE_VERBOSE_MAKEFILE for VS10 vcxproj files, 2011-10-11) because
it assumed comparison of VS version numbers works. Now it does.
Handing th std::string instead the char* to the find()
reduces the time from 17 to 15 seconds (for a 1000 times loop of a
relatively small file), which is around 10 percent.
Alex
There are multiple/many places in KDE where the developer includes
moc_foo.cpp, and expects moc to run on foo.cpp, instead of foo.h.
He should use foo.moc, but right now this is handled by automoc4,
so we must stay compatible. So support this too, but warn about
it.
Alex
Use expected values for the UseOfMfc xml element in
VS 10 .vcxproj files.
CMAKE_MFC_FLAG=1 maps to "Static"
CMAKE_MFC_FLAG=2 maps to "Dynamic"
all other values map to "false"
Thanks to Randy Schott and McBen for their patches which
served as inspiration and motivation for getting this done.
See also http://public.kitware.com/Bug/view.php?id=11224
The Watcom WMake tool has trouble running commands in paths that have
parentheses. We already convert most commands to a shortpath for Watcom
if the path contains a space, but the use of $(CMAKE_COMMAND) hides the
true path from that conversion. Factor the shortpath conversion code
out into a new ConvertShellCommand method. Teach it to convert paths
that contain parentheses as well as spaces. Use the new method to
convert the value of $(CMAKE_COMMAND) and other helper variables.
Teach cmComputeLinkInformation to generate the "-framework" option as a
separate link item preceding the actual framework name. Then escape the
framework name to pass as an argument through a shell. This fixes the
link line for frameworks with spaces in the name.
The build system generators that call cli.GetItems() and generate the
final list of items on the link line already handle escaping correctly
for items that are paths. However, for raw link items like "-lfoo" they
just pass through to the command line verbatim. This is incorrect. The
generators should escape these items too. Unfortunately we cannot fix
that without introducing a new CMake Policy because projects may already
be passing raw link flags with their own escapes to work around this
bug. Therefore we punt on this bug for now and go with the above fix.
Eclipse doesn't handle this case well. When doing out-of-source builds
we create a linked resource which points to CMAKE_SOURCE_DIR, so the
user can browse the source dir in Eclipse. This is not possible
when the build dir is a subdir of the source dir.
Alex
CommandLineArguments.cxx:
remark #181: argument is incompatible with corresponding format
string conversion
SystemInformation.cxx:
remark #193: zero used for undefined preprocessing identifier "_WIN32"
warning #177: variable "Regebx" was declared but never referenced
SystemTools.cxx(375):
remark #444: destructor for base class "std::vector<char*>" is not virtual
class kwsysDeletingCharVector : private kwsys_stl::vector<char*>
Author: Hans Johnson <hans-johnson@uiowa.edu>
Change-Id: Ibc899c3ba14990158ef7bbabace4b435b22495c3
This commit adds a new target property AUTOMOC_MOC_OPTIONS, which
can be set to add extra options for the moc invocations done via automoc.
This is equivalent to the OPTIONS parameter in the qt4_wrap_cpp() macro.
Alex