summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Parker <danny@ninjakiwi.com>2021-05-03 14:10:05 (GMT)
committerDanny Parker <danny@ninjakiwi.com>2021-05-05 13:38:33 (GMT)
commitdfaf55fbfd72e9706461592933df8686067b0e5f (patch)
treea499d6a83ebcc1deec5013c83a483d41670adbb2
parent4df3f5300a13827336ca5329b53834cf0fb63a7d (diff)
downloadCMake-dfaf55fbfd72e9706461592933df8686067b0e5f.zip
CMake-dfaf55fbfd72e9706461592933df8686067b0e5f.tar.gz
CMake-dfaf55fbfd72e9706461592933df8686067b0e5f.tar.bz2
Xcode: add extra '$(inherited)' entries using InheritBuildSettingAttribute.
These have been added to: GCC_PREPROCESSOR_DEFINITIONS OTHER_CFLAGS OTHER_LDFLAGS This is to allow Cocoapods to work correctly as it uses xcconfig files to alter build settings in Xcode, and requires these build settings to inherit from their parent, not overwrite.
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx3
-rw-r--r--Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake49
-rw-r--r--Tests/RunCMake/XcodeProject/InheritedParameters.cmake8
-rw-r--r--Tests/RunCMake/XcodeProject/RunCMakeTest.cmake1
4 files changed, 61 insertions, 0 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index d6909c3..3ed5ee3 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -4318,6 +4318,9 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
this->InheritBuildSettingAttribute(t, "SYSTEM_FRAMEWORK_SEARCH_PATHS");
this->InheritBuildSettingAttribute(t, "LIBRARY_SEARCH_PATHS");
this->InheritBuildSettingAttribute(t, "LD_RUNPATH_SEARCH_PATHS");
+ this->InheritBuildSettingAttribute(t, "GCC_PREPROCESSOR_DEFINITIONS");
+ this->InheritBuildSettingAttribute(t, "OTHER_CFLAGS");
+ this->InheritBuildSettingAttribute(t, "OTHER_LDFLAGS");
}
if (this->XcodeBuildSystem == BuildSystem::One) {
diff --git a/Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake b/Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake
new file mode 100644
index 0000000..4fe42ac
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake
@@ -0,0 +1,49 @@
+set(xcProjectFile "${RunCMake_TEST_BINARY_DIR}/InheritedParameters.xcodeproj/project.pbxproj")
+if(NOT EXISTS "${xcProjectFile}")
+ set(RunCMake_TEST_FAILED "Project file ${xcProjectFile} does not exist.")
+ return()
+endif()
+
+set(found_inherited_GCC_PREPROCESSOR_DEFINITIONS 1)
+set(found_inherited_OTHER_CFLAGS 1)
+set(found_inherited_OTHER_LDFLAGS 1)
+
+file(STRINGS "${xcProjectFile}" lines)
+foreach(line IN LISTS lines)
+
+ if(line MATCHES [[GCC_PREPROCESSOR_DEFINITIONS]])
+ if(NOT line MATCHES [["\$\(inherited\)"]])
+ string(APPEND relevant_lines " ${line}\n")
+ set(found_inherited_GCC_PREPROCESSOR_DEFINITIONS 0)
+ endif()
+ endif()
+
+ if(line MATCHES [[OTHER_CFLAGS]])
+ if(NOT line MATCHES [["\$\(inherited\)"]])
+ string(APPEND relevant_lines " ${line}\n")
+ set(found_inherited_OTHER_CFLAGS 0)
+ endif()
+ endif()
+
+ if(line MATCHES [[OTHER_LDFLAGS]])
+ if(NOT line MATCHES [["\$\(inherited\)"]])
+ string(APPEND relevant_lines " ${line}\n")
+ set(found_inherited_OTHER_LDFLAGS 0)
+ endif()
+ endif()
+
+endforeach()
+
+if(NOT found_inherited_GCC_PREPROCESSOR_DEFINITIONS)
+ string(APPEND RunCMake_TEST_FAILED "Found missing inherited value for GCC_PREPROCESSOR_DEFINITIONS in\n ${xcProjectFile}\n")
+endif()
+if(NOT found_inherited_OTHER_CFLAGS)
+ string(APPEND RunCMake_TEST_FAILED "Found missing inherited value for OTHER_CFLAGS in\n ${xcProjectFile}\n")
+endif()
+if(NOT found_inherited_OTHER_LDFLAGS)
+ string(APPEND RunCMake_TEST_FAILED "Found missing inherited value for OTHER_LDFLAGS in\n ${xcProjectFile}\n")
+endif()
+
+if(RunCMake_TEST_FAILED)
+ string(APPEND RunCMake_TEST_FAILED "Relevant lines include\n${relevant_lines}")
+endif()
diff --git a/Tests/RunCMake/XcodeProject/InheritedParameters.cmake b/Tests/RunCMake/XcodeProject/InheritedParameters.cmake
new file mode 100644
index 0000000..5b8ec71
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject/InheritedParameters.cmake
@@ -0,0 +1,8 @@
+enable_language(C)
+
+add_compile_definitions(TEST_INHERITTEST)
+string(APPEND CMAKE_C_FLAGS " -DTESTFLAG=\\\"TEST_INHERITTEST\\\"")
+
+add_executable(inherit_test main.c)
+
+target_link_libraries(inherit_test PRIVATE "TEST_INHERITTEST")
diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
index c8b75eb..26714c4 100644
--- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
+++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
@@ -4,6 +4,7 @@ run_cmake(ExplicitCMakeLists)
run_cmake(ImplicitCMakeLists)
run_cmake(InterfaceLibSources)
run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
+run_cmake(InheritedParameters)
run_cmake(XcodeFileType)
run_cmake(XcodeAttributeLocation)