summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/manual/cmake-packages.7.rst15
-rw-r--r--Modules/FindImageMagick.cmake10
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/cmMakefile.cxx2
-rw-r--r--Source/cmSystemTools.cxx42
5 files changed, 52 insertions, 19 deletions
diff --git a/Help/manual/cmake-packages.7.rst b/Help/manual/cmake-packages.7.rst
index 5badd48..c4cca6d 100644
--- a/Help/manual/cmake-packages.7.rst
+++ b/Help/manual/cmake-packages.7.rst
@@ -385,12 +385,9 @@ In this case, the ``ClimbingStatsConfig.cmake`` file could be as simple as:
.. code-block:: cmake
- if(NOT TARGET Upstream::ClimbingStats)
- include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
- endif()
+ include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
-This allows downstreams to use the ``IMPORTED`` targets, and guards
-against importing the targets more than once. If any macros
+As this allows downstreams to use the ``IMPORTED`` targets. If any macros
should be provided by the ``ClimbingStats`` package, they should
be in a separate file which is installed to the same location as the
``ClimbingStatsConfig.cmake`` file, and included from there.
@@ -457,9 +454,7 @@ dependencies of a package should be found in the ``Config.cmake`` file:
include(CMakeFindDependencyMacro)
find_dependency(Stats 2.6.4)
- if(NOT TARGET Upstream::ClimbingStats)
- include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
- endif()
+ include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake")
The ``find_dependency`` macro also sets ``ClimbingStats_FOUND`` to ``False`` if
@@ -476,9 +471,7 @@ be true. This can be tested with logic in the package configuration file:
include(CMakeFindDependencyMacro)
find_dependency(Stats 2.6.4)
- if(NOT TARGET Upstream::ClimbingStats)
- include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
- endif()
+ include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake")
set(_supported_components Plot Table)
diff --git a/Modules/FindImageMagick.cmake b/Modules/FindImageMagick.cmake
index 4f0e687..f6c8b3a 100644
--- a/Modules/FindImageMagick.cmake
+++ b/Modules/FindImageMagick.cmake
@@ -95,14 +95,21 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
+find_package(PkgConfig QUIET)
+
#---------------------------------------------------------------------
# Helper functions
#---------------------------------------------------------------------
function(FIND_IMAGEMAGICK_API component header)
set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE)
+ pkg_check_modules(PC_${component} QUIET ${component})
+
find_path(ImageMagick_${component}_INCLUDE_DIR
NAMES ${header}
+ HINTS
+ ${PC_${component}_INCLUDEDIR}
+ ${PC_${component}_INCLUDE_DIRS}
PATHS
${ImageMagick_INCLUDE_DIRS}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/include"
@@ -112,6 +119,9 @@ function(FIND_IMAGEMAGICK_API component header)
)
find_library(ImageMagick_${component}_LIBRARY
NAMES ${ARGN}
+ HINTS
+ ${PC_${component}_LIBDIR}
+ ${PC_${component}_LIB_DIRS}
PATHS
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/lib"
DOC "Path to the ImageMagick Magick++ library."
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 0de45a0..9a1bcdd 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,5 +1,5 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 0)
-set(CMake_VERSION_PATCH 20140714)
+set(CMake_VERSION_PATCH 20140715)
#set(CMake_VERSION_RC 1)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 2218e2f..d3ca34a 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1042,8 +1042,8 @@ cmMakefile::AddCustomCommandToOutput(const std::vector<std::string>& outputs,
if (!file)
{
file = this->CreateSource(outName, true);
- file->SetProperty("__CMAKE_RULE", "1");
}
+ file->SetProperty("__CMAKE_RULE", "1");
}
// Always create the output sources and mark them generated.
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index 12a63b0..444e143 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -384,14 +384,28 @@ bool cmSystemTools::IsOn(const char* val)
{
return false;
}
- std::basic_string<char> v = val;
+ size_t len = strlen(val);
+ if (len > 4)
+ {
+ return false;
+ }
+ std::basic_string<char> v(val, len);
+ static std::set<std::string> onValues;
+ if(onValues.empty())
+ {
+ onValues.insert("ON");
+ onValues.insert("1");
+ onValues.insert("YES");
+ onValues.insert("TRUE");
+ onValues.insert("Y");
+ }
for(std::basic_string<char>::iterator c = v.begin();
c != v.end(); c++)
{
*c = static_cast<char>(toupper(*c));
}
- return (v == "ON" || v == "1" || v == "YES" || v == "TRUE" || v == "Y");
+ return (onValues.count(v) > 0);
}
bool cmSystemTools::IsNOTFOUND(const char* val)
@@ -406,19 +420,35 @@ bool cmSystemTools::IsNOTFOUND(const char* val)
bool cmSystemTools::IsOff(const char* val)
{
- if (!val || strlen(val) == 0)
+ if (!val || !*val)
{
return true;
}
- std::basic_string<char> v = val;
+ size_t len = strlen(val);
+ // Try and avoid toupper() for large strings.
+ if (len > 6)
+ {
+ return cmSystemTools::IsNOTFOUND(val);
+ }
+ static std::set<std::string> offValues;
+ if(offValues.empty())
+ {
+ offValues.insert("OFF");
+ offValues.insert("0");
+ offValues.insert("NO");
+ offValues.insert("FALSE");
+ offValues.insert("N");
+ offValues.insert("IGNORE");
+ }
+ // Try and avoid toupper().
+ std::basic_string<char> v(val, len);
for(std::basic_string<char>::iterator c = v.begin();
c != v.end(); c++)
{
*c = static_cast<char>(toupper(*c));
}
- return (v == "OFF" || v == "0" || v == "NO" || v == "FALSE" ||
- v == "N" || cmSystemTools::IsNOTFOUND(v.c_str()) || v == "IGNORE");
+ return (offValues.count(v) > 0);
}
//----------------------------------------------------------------------------