summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)