Commit Graph

302 Commits

Author SHA1 Message Date
Brad King b237dbd8c3 Xcode: Fix object library references in multi-project trees (#13452)
In cmGlobalXCodeGenerator::Generate we generate a .xcodeproj for each
directory in the tree containing a project() command.  First we
iteratively use SetGenerationRoot to add "ALL_BUILD" and other targets
to each project.  This leaves "CurrentProject" set to the last project
when we invoke cmGlobalGenerator::Generate, which is not the same as the
top-level project if any subdirectories invoke the project() command.

When cmGlobalGenerator::Generate reaches CreateGeneratorTargets it
constructs cmGeneratorTarget and calls ComputeTargetObjects exactly once
per target.  In this context the value of CurrentProject is undefined so
we cannot pass it to GetObjectsNormalDirectory.  Use "$(PROJECT_NAME)"
instead so it will adapt automatically to each project.

Also teach Tests/ObjectLibrary to cover this case.
2012-08-03 10:17:49 -04:00
Stephen Kelly bd34963002 Refactor generation of shared library flags
CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a
variety of purposes that are correlated with shared libraries but not
exclusive to them.  Refactor generation of these flags to use new
purpose-specific platform variables

  CMAKE_<lang>_COMPILE_OPTIONS_DLL
  CMAKE_<lang>_COMPILE_OPTIONS_PIC
  CMAKE_<lang>_COMPILE_OPTIONS_PIE

Activate the DLL flags specifically for shared libraries.  Add a new
POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and
default to true for shared libraries to preserve default behavior.
Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to
allow easy global configuration in projects.

Although the default behavior is unchanged by this refactoring, the new
approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely.  We must
leave it set in case projects reference the value.  Furthermore, if a
project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new
value to be used.  Add policy CMP0018 to handle compatibility with
projects that modify this platform variable.

Add a PositionIndependentCode test on platforms where we can get
meaningful results.
2012-06-12 15:38:48 -04:00
Jan Schaffmeister d59ba0c591 Xcode: Recognize storyboard source files (#13214) 2012-05-14 14:56:20 -04:00
David Cole 0579fa045c Xcode: Pay attention to custom configuration types (#13082)
Previously, we were setting the default configuration for a generated
Xcode project to the hard-coded string "Debug" even in cases where users
customized their configuration types such that the list did not contain
"Debug". Now, we use the first string listed in CMAKE_CONFIGURATION_TYPES
as the default config for generated Xcode projects.
2012-04-02 15:50:37 -04:00
David Cole 31c0bc0219 Merge topic 'object-library'
93d5509 Merge branch 'ninja-object-library' into object-library
821037c Merge branch 'xcode-object-library' into object-library
eb24c99 Merge branch 'object-library' into xcode-object-library
63d1be8 Xcode: Honor $<TARGET_OBJECTS:...> source expressions
020ba38 Merge branch 'object-library' into xcode-object-library
e8ea615 Build object library targets in Xcode
8045e17 Pre-compute object file names before Xcode generation
247a132 Allow txt files as ExtraSources in object library targets
b063599 Add a default source group for object files.
be01f3b Xcode: Re-factor some existing methods into "FromPath" variants
2693dbe Merge branch 'object-library' into ninja-object-library
51997cb Ninja: Honor $<TARGET_OBJECTS:...> source expressions
23ec258 Merge branch 'object-library' into ninja-object-library
61124de Build object library targets in Ninja
f5b06cd Pre-compute object file names before Ninja generation
a2514f1 Simplify cmNinjaTargetGenerator using cmGeneratorTarget
...
2012-03-20 09:34:35 -04:00
Brad King bfc8d137c5 Merge topic 'fix-12621-xcode43'
0f4dfa6 CPack: Use real path to PackageMaker to find its version file (#12621)
4693cf8 Xcode: Detect new default locations of Xcode 4.3 bits and pieces (#12621)
2012-03-19 14:41:43 -04:00
David Cole 63d1be8b00 Xcode: Honor $<TARGET_OBJECTS:...> source expressions
Add objects from object libraries referenced using this syntax to the
set of objects linked in a target.
2012-03-19 11:53:29 -04:00
David Cole e8ea615874 Build object library targets in Xcode
Treat OBJECT libraries as STATIC libraries. The Xcode project file
format provides no way to avoid running the libtool so hide the
resulting .a away next to the object files as it should never be
referenced.  The object files will be left behind for reference by other
targets later.
2012-03-19 11:53:04 -04:00
David Cole 8045e17119 Pre-compute object file names before Xcode generation 2012-03-19 11:52:40 -04:00
David Cole be01f3b098 Xcode: Re-factor some existing methods into "FromPath" variants
...to avoid depending on cmSourceFile instances. Prep work for supporting
OBJECT_LIBRARY in the Xcode generator.
2012-03-16 14:23:13 -04:00
David Cole 34e4985eed Xcode: Re-factor code into GetObjectsNormalDirectory method
...in preparation for calling it from more than one location.
Required to support OBJECT_LIBRARY targets in Xcode.
2012-03-16 10:05:46 -04:00
Brad King 1ee4b65a7f Merge topic 'cleanup-object-file-names'
0996f2a Hide Makefile local object info inside local generator
67734be VS: Simplify object name computation
4ae7f36 Remove unused partial OBJECT_FILES property implementation
2012-03-13 11:53:28 -04:00
Brad King 9c0a00d6dd Rename/constify build-time config placeholder lookup
Rename cmGlobalGenerator::GetCMakeCFG{InitDirectory => IntDir} to
have a shorter name without a typo.  Add a 'const' qualifier since
the method is only for lookup and never needs to modify anything.
2012-03-09 15:16:03 -05:00
Brad King 51b67366ed Merge branch 'cleanup-object-file-names' into object-library 2012-03-09 15:15:37 -05:00
David Cole 4693cf8492 Xcode: Detect new default locations of Xcode 4.3 bits and pieces (#12621)
Xcode 4.3 installs into "/Applications" by default, from the Mac App Store.

Also, the paths to the available SDKs changed: they are now within the
Xcode.app bundle.

PackageMaker is installed as a separate program, and may be installed
anywhere. It is not installed with Xcode 4.3 by default anymore.
Download the "Auxiliary Tools for Xcode" to get PackageMaker.
Put PackageMaker inside the Xcode.app bundle, in its nested Applications
folder, or put it alongside Xcode in "/Applications" and CMake will find
it.

Update references to "find" paths: add new possible locations for finding
Xcode.app and PackageMaker.app. Prefer the most recent version's locations
first, but keep the old locations as fallback search paths, too.

Thanks to all the contributors who provided and tested out various patches
for fixing this issue. Especially, but by no means limited to:
Francisco Requena Espí, Jamie Kirkpatrick and drfrogsplat.
2012-03-08 22:43:19 -05:00
Brad King 4ae7f3656b Remove unused partial OBJECT_FILES property implementation
Remove partial implementation added by commit ca0230a3 (check in initial
conv library stuff, 2007-02-16) since it was never finished.  It does
not make sense for multi-configuration generators since no specific
build configuration is processed at CMake time.
2012-03-06 13:20:17 -05:00
Stephen Kelly 9106b564ae Extract and use the INCLUDE_DIRECTORIES target properties.
Eliminate callers of cmMakefile::GetIncludeDirectories.

All callers of GetIncludeDirectories should go through the local generator
object.

Only the local generator calls cmTarget::GetIncludeDirectories directly.
2012-02-22 06:31:50 -05:00
Brad King e8b8f0eda8 Xcode: Create separate rerun dependencies for subprojects (#12616)
Generate the rerun dependency file for the top-level project() and each
subdirectory project() into the corresponding build directory.  Do not
clobber them all with the one for the last subproject.  This mistake was
left from when the Xcode generator did not produce subprojects.
2011-12-09 13:00:22 -05:00
Johan Bjork 5a94d099dd Xcode: Avoid spewing the environment on every script run (#12522)
This is the prefered way to get rid of the 'setenv XXX' output,
instead of stripping it in the cmakexbuild wrapper.
2011-10-20 19:14:28 -04:00
David Cole fde0a4ddd1 Merge topic 'fix-12377-xcode-honor-g0'
cb22afc Xcode: Honor -g0 to disable debugging (#12377)
2011-09-07 15:39:15 -04:00
David Cole db4154661c Merge topic 'fix-12370-no-space-in-target-name'
e05e0f1 Xcode: No spaces in makefile target names (#12370)
2011-09-07 15:38:16 -04:00
David Cole d9ad72542a Merge topic 'fortran-format'
90efed6 Xcode: Honor Fortran_FORMAT target and source file property
5c0c635 Fortran: Add support for free- and fixed-form flags
47a0c75 VS: Map Fortran free- and fixed-format flags to IDE options
d6e2a06 VS: Map per-source Fortran flags to IDE options
2011-09-07 15:37:27 -04:00
David Cole 103ab60dd7 Merge topic 'fix-zero-check-mistake'
57bc42a Xcode: Do not emit the ZERO_CHECK target more than once
2011-09-07 15:37:15 -04:00
Johan Bjork cb22afc02c Xcode: Honor -g0 to disable debugging (#12377)
This commit changes ExtractFlag to remove all occurences
of a flag, and only save the last one. (i.e., the dominant
one according to GCC rules)
2011-09-06 15:04:58 -04:00
Johan Björk e05e0f1d2c Xcode: No spaces in makefile target names (#12370)
Don't use spaces for target names in the makefiles.
2011-09-05 12:20:19 -04:00
David Cole 925af96eda Merge topic 'fix-xcode4-test-failures'
0cf4fa5 Xcode4: Requires more quoting of single quote char
2011-09-01 15:12:31 -04:00
Brad King 90efed6ee6 Xcode: Honor Fortran_FORMAT target and source file property
Convert the target property to the IFORT_LANG_SRCFMT build setting.
Convert the source property to the per-source COMPILER_FLAGS setting.
2011-09-01 10:54:12 -04:00
Johan Bjork 57bc42ae91 Xcode: Do not emit the ZERO_CHECK target more than once 2011-09-01 09:59:44 -04:00
David Cole 0cf4fa578a Xcode4: Requires more quoting of single quote char
Specifically in per-target and per-file compiler definition
string values.

The Preprocessor test now passes on Xcode 4 builds after
this commit.
2011-08-25 18:39:21 -04:00
David Cole 9d8b025b5f Merge topic 'fix-11690-preserve-xcode-objectids'
1834f23 Xcode: Save object id values in CMakeCache.txt (#11690)
2011-08-25 15:41:13 -04:00
David Cole 1834f232a7 Xcode: Save object id values in CMakeCache.txt (#11690)
For project and target objects, save their ids in CMakeCache.txt.

Hopefully, that will be enough to allow user settings to be saved
across multiple CMake generate operations. Other object types may
also need their ids saved: if so, more code than this commit
will be necessary...
2011-08-24 18:11:32 -04:00
Johan Bjork bda4148a57 Xcode: Remove PREBINDING attribute for Xcode 4 and above
PREBINDING is obsolete in Xcode 4 and causes warnings if present.
Do not emit it for Xcode >= 4.0
2011-08-19 11:27:26 -04:00
Johan Björk 312d68d5b1 Xcode: Rearrange CMakeReRun to enable parallel builds
by isolating the CMakeReRun steps to a ZERO_CHECK target, as
in the Visual Studio generators. Also, honor the value of
CMAKE_SUPPRESS_REGENERATION.
2011-08-04 16:31:45 -04:00
David Cole 74c73d5fa0 Correct KWStyle line too long error 2011-07-19 11:33:01 -04:00
David Cole 0c030ef72c Add use of EFFECTIVE_PLATFORM_NAME to generated Xcode projects.
Facilitates building iOS projects, enabling switching back and forth
between simulator and device builds at development time.
2011-07-18 16:37:06 -04:00
Brad King 98dc13e513 Merge topic 'xcode-source_groups-folders-issue-10039'
f09ba0f Fix style errors added by parent and grandparent
eeeeca1 XCode: Support target folders on XCode.
59ed84e Xcode: Support multiple level nesting of XCode folders (#10039)
d0a403f CMake: Move tokenize to cmSystemTools
2011-06-08 15:44:44 -04:00
Brad King f09ba0f1a2 Fix style errors added by parent and grandparent 2011-06-08 07:54:33 -04:00
Johan Björk eeeeca1082 XCode: Support target folders on XCode. 2011-06-07 10:44:27 -04:00
Johan Björk 59ed84e032 Xcode: Support multiple level nesting of XCode folders (#10039) 2011-06-07 10:21:49 -04:00
Brad King 44cdae921d Xcode: Fix parallel build depends with universal binaries (#11844)
A post-build phase of each target invokes the XCODE_DEPEND_HELPER.make
file to erase any targets that link to it.  Narrow the set of targets
tested by each post-build phase to those that depend on the newly
completed target.  This avoids removing files from partially built
unrelated targets that happen to be building in parallel.
2011-06-06 17:44:11 -04:00
Sean McBride a27edd8a05 Fix XCode -> Xcode typos, notably in man page (#12231) 2011-05-31 09:13:00 -04:00
Brad King 554641f320 Merge topic 'fix-8914-allow-config-types-override'
e6221ed Xcode: Allow override of CMAKE_CONFIGURATION_TYPES (#8914)
2011-02-22 14:31:26 -05:00
Brad King 64d997a78c Merge topic 'fix-11295-support-plugin-bundles-on-mac'
cabc407 CFBundle Test: Add PATHS for finding Rez (#11295)
5457b82 Add support for CFBundle targets on the Mac (#11295)
2011-02-22 14:30:58 -05:00
David Cole e6221ed2c4 Xcode: Allow override of CMAKE_CONFIGURATION_TYPES (#8914) 2011-01-28 09:52:47 -05:00
David Cole b08657cf0f Xcode: Fix crash: avoid strlen call on NULL char *
Thanks to Johan Björk for the report on the CMake mailing list.
2011-01-27 06:57:12 -05:00
Brad King 20d11b9a33 Merge topic 'xcode-subdir-regen-dependencies'
809ef30 Xcode: Make generation depend on all input directories
2011-01-19 14:28:15 -05:00
Brad King 809ef3086d Xcode: Make generation depend on all input directories
Previously the Xcode generator would rerun CMake only if input file
dependencies in the top-level directory changed.  Teach it to depend on
input files from all directories.  Other generators already do this.

Reported-by: Johan Björk <phb@spotify.com>
2011-01-13 12:07:23 -05:00
David Cole 66d9cd8351 Xcode: Disable implicit make rules in custom rules makefiles.
With apologies to the suggester for not accenting the surname
vowel properly.

Suggested-By: Johan Bjork
2011-01-11 17:57:55 -05:00
Richard Bateman 5457b8254c Add support for CFBundle targets on the Mac (#11295)
This commit enables building, for example, plugin bundles
to be loaded by web browsers.
2011-01-11 12:54:44 -05:00
Brad King 533f5a2037 Merge topic 'custom-command-refactor'
53ea8b3 Merge branch 'imported-target-dependencies' into custom-command-refactor
1a29cca Remove cmLocalGenerator::GetRealLocation
542b517 Factor out common custom command generator
6fe5b3d Simplify VS generator ConstructScript interface
2010-12-21 14:03:02 -05:00