From 5a71f83f7a23a683b6da7cca2735736db6318353 Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Thu, 6 Jul 2006 16:04:49 -0400 Subject: [PATCH] BUG: Several fixes to handle bundle content on Mac OSX --- Source/cmMakefileExecutableTargetGenerator.cxx | 5 +++++ Source/cmMakefileTargetGenerator.cxx | 11 +++++++++-- Source/cmSetSourceFilesPropertiesCommand.cxx | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index f00105b11..8f82c2583 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -76,6 +76,11 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) obj != this->Objects.end(); ++obj) { objTarget = relPath; + // Handle extra content on Mac bundles + if ( this->ExtraContent.find(*obj) != this->ExtraContent.end() ) + { + objTarget = ""; + } objTarget += *obj; depends.push_back(objTarget); } diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 0f1a087b4..5ca3bb82f 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -309,8 +309,11 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(cmSourceFile& source) this->ExtraContent.insert(obj); } this->Objects.push_back(obj); - std::string relativeObj = this->LocalGenerator->GetHomeRelativeOutputPath(); - relativeObj += obj; + + // TODO: Remove + //std::string relativeObj = this->LocalGenerator->GetHomeRelativeOutputPath(); + //relativeObj += obj; + // we compute some depends when writing the depend.make that we will also // use in the build.make, same with depMakeFile std::vector depends; @@ -346,6 +349,10 @@ cmMakefileTargetGenerator this->WriteObjectDependRules(source, depends); std::string relativeObj = this->LocalGenerator->GetHomeRelativeOutputPath(); + if ( source.GetPropertyAsBool("MACOSX_CONTENT") ) + { + relativeObj = ""; + } relativeObj += obj; if(this->Makefile->GetDefinition("CMAKE_WINDOWS_OBJECT_PATH")) { diff --git a/Source/cmSetSourceFilesPropertiesCommand.cxx b/Source/cmSetSourceFilesPropertiesCommand.cxx index 1884328ae..8c085ffb6 100644 --- a/Source/cmSetSourceFilesPropertiesCommand.cxx +++ b/Source/cmSetSourceFilesPropertiesCommand.cxx @@ -110,6 +110,8 @@ bool cmSetSourceFilesPropertiesCommand::InitialPass( propertyPairs.push_back(*j); propertyPairs.push_back("EXTRA_CONTENT"); propertyPairs.push_back("1"); + propertyPairs.push_back("MACOSX_CONTENT"); + propertyPairs.push_back("1"); propertyPairs.push_back("KEEP_EXTENSION"); propertyPairs.push_back("1"); propertyPairs.push_back("LANGUAGE");