summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/manual/cmake.1.rst2
-rw-r--r--Help/release/dev/macos-hidpi-qt-dialog.rst5
-rw-r--r--Modules/FindPythonInterp.cmake7
-rw-r--r--Modules/MacOSXBundleInfo.plist.in4
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/cmGlobalGenerator.cxx9
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx78
-rw-r--r--Source/cmGlobalXCodeGenerator.h5
-rw-r--r--Utilities/KWIML/test/CMakeLists.txt2
9 files changed, 79 insertions, 35 deletions
diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst
index b2e2828..ba925e8 100644
--- a/Help/manual/cmake.1.rst
+++ b/Help/manual/cmake.1.rst
@@ -227,7 +227,7 @@ Available commands are:
``copy <file>... <destination>``
Copy files to ``<destination>`` (either file or directory).
If multiple files are specified, the ``<destination>`` must be
- directory and it must exist.
+ directory and it must exist. Wildcards are not supported.
``copy_directory <dir>... <destination>``
Copy directories to ``<destination>`` directory.
diff --git a/Help/release/dev/macos-hidpi-qt-dialog.rst b/Help/release/dev/macos-hidpi-qt-dialog.rst
new file mode 100644
index 0000000..263d405
--- /dev/null
+++ b/Help/release/dev/macos-hidpi-qt-dialog.rst
@@ -0,0 +1,5 @@
+macos-hidpi-qt-dialog
+---------------------
+
+* On macOS the default application bundle ``Info.plist`` file now enables
+ Hi-DPI support.
diff --git a/Modules/FindPythonInterp.cmake b/Modules/FindPythonInterp.cmake
index f255246..64b98a8 100644
--- a/Modules/FindPythonInterp.cmake
+++ b/Modules/FindPythonInterp.cmake
@@ -91,12 +91,15 @@ unset(_PYTHON3_VERSIONS)
if(NOT PYTHON_EXECUTABLE)
foreach(_CURRENT_VERSION IN LISTS _Python_VERSIONS)
set(_Python_NAMES python${_CURRENT_VERSION})
- if(WIN32)
+ if(CMAKE_HOST_WIN32)
list(APPEND _Python_NAMES python)
endif()
find_program(PYTHON_EXECUTABLE
NAMES ${_Python_NAMES}
- PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
+ PATHS
+ [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
+ [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-32\\InstallPath]
+ [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-64\\InstallPath]
)
endforeach()
endif()
diff --git a/Modules/MacOSXBundleInfo.plist.in b/Modules/MacOSXBundleInfo.plist.in
index a4009bc..e06b17e 100644
--- a/Modules/MacOSXBundleInfo.plist.in
+++ b/Modules/MacOSXBundleInfo.plist.in
@@ -30,5 +30,9 @@
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+ <key>NSHighResolutionCapable</key>
+ <string>True</string>
</dict>
</plist>
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 08baa99..8e5c743 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 8)
-set(CMake_VERSION_PATCH 20170410)
+set(CMake_VERSION_PATCH 20170412)
#set(CMake_VERSION_RC 1)
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index ce83e2e..a9243eb 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1347,10 +1347,11 @@ void cmGlobalGenerator::Generate()
for (std::map<std::string, cmExportBuildFileGenerator*>::iterator it =
this->BuildExportSets.begin();
it != this->BuildExportSets.end(); ++it) {
- if (!it->second->GenerateImportFile() &&
- !cmSystemTools::GetErrorOccuredFlag()) {
- this->GetCMakeInstance()->IssueMessage(cmake::FATAL_ERROR,
- "Could not write export file.");
+ if (!it->second->GenerateImportFile()) {
+ if (!cmSystemTools::GetErrorOccuredFlag()) {
+ this->GetCMakeInstance()->IssueMessage(cmake::FATAL_ERROR,
+ "Could not write export file.");
+ }
return;
}
}
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index febe95d..d07cc3d 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -152,6 +152,9 @@ cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm,
this->CurrentLocalGenerator = 0;
this->XcodeBuildCommandInitialized = false;
+ this->ObjectDirArchDefault = "$(CURRENT_ARCH)";
+ this->ComputeObjectDirArch();
+
cm->GetState()->SetIsGeneratorMultiConfig(true);
}
@@ -282,13 +285,7 @@ void cmGlobalXCodeGenerator::EnableLanguage(
}
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
this->cmGlobalGenerator::EnableLanguage(lang, mf, optional);
- const char* osxArch = mf->GetDefinition("CMAKE_OSX_ARCHITECTURES");
- const char* sysroot = mf->GetDefinition("CMAKE_OSX_SYSROOT");
- if (osxArch && sysroot) {
- this->Architectures.clear();
- cmSystemTools::ExpandListArgument(std::string(osxArch),
- this->Architectures);
- }
+ this->ComputeArchitectures(mf);
}
void cmGlobalXCodeGenerator::GenerateBuildCommand(
@@ -3089,23 +3086,16 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
this->CreateString(defaultConfigName));
cmXCodeObject* buildSettings =
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- const char* osxArch =
- this->CurrentMakefile->GetDefinition("CMAKE_OSX_ARCHITECTURES");
const char* sysroot =
this->CurrentMakefile->GetDefinition("CMAKE_OSX_SYSROOT");
const char* deploymentTarget =
this->CurrentMakefile->GetDefinition("CMAKE_OSX_DEPLOYMENT_TARGET");
- std::string archs;
if (sysroot) {
- if (osxArch) {
- // recompute this as it may have been changed since enable language
- this->Architectures.clear();
- cmSystemTools::ExpandListArgument(std::string(osxArch),
- this->Architectures);
- archs = cmJoin(this->Architectures, " ");
- }
buildSettings->AddAttribute("SDKROOT", this->CreateString(sysroot));
}
+ // recompute this as it may have been changed since enable language
+ this->ComputeArchitectures(this->CurrentMakefile);
+ std::string const archs = cmJoin(this->Architectures, " ");
if (archs.empty()) {
// Tell Xcode to use NATIVE_ARCH instead of ARCHS.
buildSettings->AddAttribute("ONLY_ACTIVE_ARCH", this->CreateString("YES"));
@@ -3212,6 +3202,48 @@ std::string cmGlobalXCodeGenerator::GetObjectsNormalDirectory(
return dir;
}
+void cmGlobalXCodeGenerator::ComputeArchitectures(cmMakefile* mf)
+{
+ this->Architectures.clear();
+ const char* osxArch = mf->GetDefinition("CMAKE_OSX_ARCHITECTURES");
+ const char* sysroot = mf->GetDefinition("CMAKE_OSX_SYSROOT");
+ if (osxArch && sysroot) {
+ cmSystemTools::ExpandListArgument(std::string(osxArch),
+ this->Architectures);
+ }
+
+ if (this->Architectures.empty()) {
+ // With no ARCHS we use ONLY_ACTIVE_ARCH.
+ // Look up the arch that Xcode chooses in this case.
+ if (const char* arch = mf->GetDefinition("CMAKE_XCODE_CURRENT_ARCH")) {
+ this->ObjectDirArchDefault = arch;
+ }
+ }
+
+ this->ComputeObjectDirArch();
+}
+
+void cmGlobalXCodeGenerator::ComputeObjectDirArch()
+{
+ if (this->XcodeVersion >= 21) {
+ if (this->Architectures.size() > 1) {
+ this->ObjectDirArch = "$(CURRENT_ARCH)";
+ } else if (!this->Architectures.empty()) {
+ this->ObjectDirArch = this->Architectures[0];
+ } else {
+ this->ObjectDirArch = this->ObjectDirArchDefault;
+ }
+ } else {
+#if defined(__ppc__)
+ this->ObjectDirArch = "ppc";
+#elif defined(__i386)
+ this->ObjectDirArch = "i386";
+#else
+ this->ObjectDirArch = "";
+#endif
+ }
+}
+
void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
std::vector<cmXCodeObject*>& targets)
{
@@ -3721,15 +3753,7 @@ void cmGlobalXCodeGenerator::ComputeTargetObjectDirectory(
std::string configName = this->GetCMakeCFGIntDir();
std::string dir =
this->GetObjectsNormalDirectory("$(PROJECT_NAME)", configName, gt);
- if (this->XcodeVersion >= 21) {
- dir += "$(CURRENT_ARCH)/";
- } else {
-#ifdef __ppc__
- dir += "ppc/";
-#endif
-#ifdef __i386
- dir += "i386/";
-#endif
- }
+ dir += this->ObjectDirArch;
+ dir += "/";
gt->ObjectDirectory = dir;
}
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index 172e414..7921842 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -240,6 +240,9 @@ private:
const std::string& configName,
const cmGeneratorTarget* t) const;
+ void ComputeArchitectures(cmMakefile* mf);
+ void ComputeObjectDirArch();
+
void addObject(cmXCodeObject* obj);
std::string PostBuildMakeTarget(std::string const& tName,
std::string const& configName);
@@ -261,6 +264,8 @@ private:
std::map<std::string, cmXCodeObject*> FileRefs;
std::map<cmGeneratorTarget const*, cmXCodeObject*> XCodeObjectMap;
std::vector<std::string> Architectures;
+ std::string ObjectDirArchDefault;
+ std::string ObjectDirArch;
std::string GeneratorToolset;
};
diff --git a/Utilities/KWIML/test/CMakeLists.txt b/Utilities/KWIML/test/CMakeLists.txt
index 1bf93bb..40fe62f 100644
--- a/Utilities/KWIML/test/CMakeLists.txt
+++ b/Utilities/KWIML/test/CMakeLists.txt
@@ -38,6 +38,8 @@ endif()
add_executable(kwiml_test ${test_srcs})
set_property(TARGET kwiml_test PROPERTY COMPILE_DEFINITIONS ${test_defs})
+set_property(TARGET kwiml_test PROPERTY C_INCLUDE_WHAT_YOU_USE "")
+set_property(TARGET kwiml_test PROPERTY CXX_INCLUDE_WHAT_YOU_USE "")
set_property(TARGET kwiml_test PROPERTY
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_test(NAME ${KWIML_TEST_PREFIX}.test COMMAND kwiml_test)