Commit Graph

50 Commits

Author SHA1 Message Date
Brad King
2e13c36211 OS X: Encode -F framework search flag in per-language platform variable
Compilers for languages other than C and C++ on OS X may not understand
the -F framework search flag.  Create a new platform information
variable CMAKE_<LANG>_FRAMEWORK_SEARCH_FLAG to hold the flag, and set it
for C and CXX lanugages in the Platform/Darwin module.

Reported-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2013-10-10 08:33:25 -04:00
Clinton Stimpson
373faae5e1 Refactor how bundles and frameworks are supported.
Make handling of directory separators consistent between
non-bundle and bundle code.

Remove xcode specific flag from cmTarget when getting install_name.

Add (more) consistent convenience functions in cmTarget to get
directories inside of bundles and frameworks to add files to.

This refactor also fixes bug #12263 where frameworks
had the wrong install name when SKIP_BUILD_RPATH.

Also make install_name for frameworks consistent between Makefile
and Xcode generator.
2013-05-23 10:42:49 -04:00
Peter Kümmel
56aeac6e64 Ninja: fixes for bcc 2012-07-18 13:39:14 +02:00
Peter Kümmel
44ba4cfdb6 Ninja: remove warnings 2012-07-18 12:17:39 +02:00
Nicolas Despres
5d885db416 Re-factor bundle content copying rules generation. 2012-07-17 14:03:10 +02:00
Brad King
470f39cf4e VS: Restore header files marked as OS X Framework content (#13196)
Header files listed in a target's PUBLIC_HEADER or similar properties
are marked as OS X Framework content.  Refactoring performed by

 commit 11d9b211 (Add cmGeneratorTarget to represent a target during generation, 2012-03-07)
 commit 45c2f932 (Simplify cmMakefileTargetGenerator using cmGeneratorTarget, 2012-03-07)
 commit 328c0f65 (Simplify cmVisualStudio10TargetGenerator source classification, 2012-03-19)

and related commits accidentally removed such files from treatment as
normal header files by the VS generator (generators other than Makefiles
and Xcode).  Move handling of such files out of cmGeneratorTarget and
back to cmMakefileTargetGenerator.  The central cmGeneratorTarget
classification will always treat them as header or extra sources.
2012-05-07 15:28:19 -04:00
Brad King
3aa741acb6 Build object library targets in Makefiles
Treat OBJECT libraries as STATIC libraries but leave out the archive
step.  The object files will be left behind for reference by other
targets later.
2012-03-13 14:38:02 -04:00
Brad King
45c2f93240 Simplify cmMakefileTargetGenerator using cmGeneratorTarget
Replace the classification of source files in this generator
using that computed by cmGeneratorTarget.
2012-03-09 15:16:02 -05:00
Brad King
61e862986a Factor makefile generator link rule lookup into helper function
This provides a place in the makefile generators to adjust the link
rules for both libraries and executables.
2011-12-05 16:37:43 -05:00
Brad King
5c0c635a09 Fortran: Add support for free- and fixed-form flags
Define a "Fortran_FORMAT" target and source file property.  Initialize
the target property from a "CMAKE_Fortran_FORMAT" variable.  Interpret
values "FIXED" and "FREE" to indicate the source file format.  Append
corresponding flags to the compiler command line.
2011-08-31 10:24:43 -04:00
Brad King
4e2185cbd0 Make std::map usage more portable in language=>flags/defines maps
Older versions of GCC, the HP compiler, and the SGI MIPSpro compiler do
not like the use of make_pair in this case and the conversions it
requires:

  a value of type "const char *" cannot be used to initialize an entity
  of type "char [1]"

  /usr/include/g++-3/stl_pair.h:68: assignment of read-only location

Instead use a map lookup pattern already used throughout the rest of our
source tree.
2011-05-17 08:50:55 -04:00
Manuel Klimek
65c0c24a29 cache flags and defines 2011-04-25 13:27:58 -04:00
Manuel Klimek
3f064efe40 refactor flags and defines 2011-04-25 13:27:58 -04:00
Brad King
9a0b9bc8b7 Optionally pass include directories with response files
Create platform option CMAKE_<lang>_USE_RESPONSE_FILE_FOR_INCLUDES to
enable use of response files for passing the list of include directories
to compiler command lines.
2011-03-17 17:56:13 -04:00
Brad King
07cfa57ec5 Consolidate duplicate link rule make dependency code
Factor code previously duplicated for library and executable rules into
a common method.
2010-11-05 08:33:47 -04:00
Brad King
1e48243591 Introduce "build feature" lookup framework
This creates cmTarget::GetFeature and cmMakefile::GetFeature methods to
query "build feature" properties.  These methods handle local-to-global
scope and per-configuration property lookup.  Specific build features
will be defined later.
2009-10-02 13:52:01 -04:00
Brad King
57df2abca8 Centralize language flag addition for Makefiles
We create cmMakefileTargetGenerator::AddFeatureFlags to consolidate
addition of language flags.  Currently it just adds the flags from
generic per-language flag variables (AddLanguageFlags).
2009-10-02 13:51:49 -04:00
Brad King
024d05adad Fix use of module .def files for MS tools
We recognize .def source files and map them to the /DEF:<file> option in
the MSVC tools.  Previously this worked only for shared libraries.  This
commit cleans up the implementation and makes it work for executables
too.  See issue #9613.
2009-09-29 16:39:07 -04:00
Brad King
96afb12087 Convert CMake to OSI-approved BSD License
This converts the CMake license to a pure 3-clause OSI-approved BSD
License.  We drop the previous license clause requiring modified
versions to be plainly marked.  We also update the CMake copyright to
cover the full development time range.
2009-09-28 11:43:28 -04:00
Brad King
11d1063452 ENH: Create cmMakefileTargetGenerator::ConfigName
This member stores the build configuration for which Makefiles are being
generated.  It saves repeated lookup of the equivalent member from
cmLocalUnixMakefileGenerator3, making code shorter and more readable.
2009-07-03 08:41:10 -04:00
Brad King
cd83f1979d ENH: Cleanup make progress rule generation code
This cleans up the Makefile generator's progress rule code.  Instead of
keeping every cmMakefileTargetGenerator instance alive to generate
progress, we keep only the information necessary in a single table.
This approach keeps most of the code in cmGlobalUnixMakefileGenerator3,
thus simplifying its public interface.
2009-06-25 09:58:51 -04:00
Brad King
493f88ce55 ENH: Allow projects to disable per-rule echo lines
This creates global property RULE_MESSAGES which can be set to disbale
per-rule progress and action reporting.  On Windows, these reports may
cause a noticable delay due to the cost of starting extra processes.
This feature will allow scripted builds to avoid the cost since they do
not need detailed information anyway.  This replaces the RULE_PROGRESS
property created earlier as it is more complete.  See issue #8726.
2009-03-16 16:55:58 -04:00
Brad King
2f651c2e59 ENH: Allow projects to disable per-rule progress
This creates global property RULE_PROGRESS which can be set to disbale
per-rule progress reporting.  On Windows, progress reports may cause a
noticable delay due to the cost of starting an extra process.  This
feature will allow scripted builds to avoid the cost since they do not
need detailed progress anyway.  See issue #8726.
2009-03-16 16:22:19 -04:00
Brad King
741ae600c4 ENH: Factor out makefile progress rule commands
This factors duplicate progress rule code into a common method.
2009-03-16 16:22:13 -04:00
Brad King
07454a39f1 ENH: Factor out listing of objects on command line
Previously generation of object file lists for linker and cleaning
command lines was duplicated for library and executable target
generators.  This combines the implementations.
2008-10-15 10:21:14 -04:00
Brad King
67834f2d53 BUG: Correct Mac OS X framework behavior
- Place the built library in foo.framework/Versions/A/foo
  - Do not create unused content symlinks (like PrivateHeaders)
  - Do not use VERSION/SOVERSION properties for frameworks
  - Make cmTarget::GetDirectory return by value
  - Remove the foo.framework part from cmTarget::GetDirectory
  - Correct install_name construction and conversion on install
  - Fix MACOSX_PACKAGE_LOCATION under Xcode to use the
    Versions/<version> directory for frameworks
  - Update the Framework test to try these things
2008-04-08 00:06:47 -04:00
Brad King
dfe2ea6406 ENH: Handle large object file lists on some platforms
- Use a response file when enabled by
    CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_OBJECTS
  - Enable for C and CXX with cl (MSVC)
  - Enable for Fortran with ifort (Intel Fortran)
2008-02-27 17:10:45 -05:00
Brad King
454da64c99 BUG: Link scripts should be generated with copy-if-different and included as a dependency of the link rule. 2008-02-20 14:56:29 -05:00
Brad King
9ed4266306 ENH: Cleanup impl of PUBLIC_HEADER, PRIVATE_HEADER, and RESOURCE properties 2008-02-18 16:38:34 -05:00
Brad King
ed76198b84 ENH: Cleanup building of OS X bundle content
- Fixes repeated rebuild of bundles by Makefile generators
 - Add special rules to copy sources to their
   MACOSX_PACKAGE_LOCATION bundle directory
 - Remove MacOSX_Content language hack
   - Remove EXTRA_CONTENT property
   - Remove MACOSX_CONTENT
   - Remove corresponding special cases in object names
2008-02-15 11:22:23 -05:00
Brad King
66e0b4212f ENH: Added build rule variables CMAKE_<LANG>_ARCHIVE_CREATE, CMAKE_<LANG>_ARCHIVE_APPEND, and CMAKE_<LANG>_ARCHIVE_FINISH to support creation of static archive libraries out of a large number of objects. See bug #6284. 2008-01-29 20:46:25 -05:00
Brad King
b2e8c07af8 ENH: Implemented Fortran module output directory and search path flags. 2007-12-30 16:11:38 -05:00
Brad King
59aa144516 ENH: Simplified and moved link script implementation up from cmMakefileLibraryTargetGenerator to cmMakefileTargetGenerator and use for cmMakefileExecutableTargetGenerator too. This addresses bug #6192. 2007-12-28 14:59:06 -05:00
Brad King
d83b4cd255 ENH: Add a depends check step to custom targets. Add support for the IMPLICIT_DEPENDS feature of custom commands when building in custom targets. Convert multiple-output pair checks to be per-target instead of global. 2007-12-21 12:22:12 -05:00
Brad King
dfb79bea23 STYLE: Removed unused reference to cmMakeDepend. 2007-06-11 12:40:41 -04:00
Brad King
c51c245efa BUG: A utility target should not run the custom commands from its source files directly. The target-level rule must add dependencies on the file-level custom commands to drive them. This bug was introduced by the "fix" to bug 4377. This also restores the documented behavior that PRE_BUILD rules are treated as PRE_LINK rules on non-VS generators. Also fixed custom command dependencies on the rule file build.make so that custom commands re-run when the commands themselves change. 2007-05-01 13:51:25 -04:00
Brad King
31637efbfb ENH: Added cmMakefileTargetGenerator::GenerateExtraOutput to wrap up creation of rules to drive creation of extra outputs generated as side effects of another rule. Reimplemented generation of custom command multiple output rules to use it. Reimplemented soname symlink output dependencies to use it. Now if a symlink is deleted the library will be recreated with the symlink. 2007-03-09 11:29:15 -05:00
Bill Hoffman
ca0230a33e ENH: check in initial conv library stuff 2007-02-16 16:12:17 -05:00
Brad King
f7611f167c ENH: Made cmMakefileTargetGenerator::GlobalGenerator have full type cmGlobalUnixMakefileGenerator3 to give access to all methods. Fixed broken custom targets with no commands for Borland makefiles when CMAKE_SKIP_RULE_DEPENDENCY is set. 2006-12-14 14:30:41 -05:00
Brad King
9a1d4e92eb BUG: Fix/cleanup custom commands and custom targets. Make empty comment strings work. Fix ZERO_CHECK target always out of date for debugging. Fix Makefile driving of custom commands in a custom target. Fix dependencies on custom targets not in ALL in VS generators. 2006-09-28 16:40:35 -04:00
Ken Martin
8ace577a2a BUG: reduce the number of file handles kept open 2006-07-12 14:15:06 -04:00
Ken Martin
f1dfa7e78f BUG: changed to progress to make it more flexible and to no relink targets as often 2006-07-11 09:55:27 -04:00
Brad King
0bbcb49f65 ENH: Added generation of link rules into script files executed by a cmake -E command in order to support longer link lines. This is needed only on platforms without response file support and that may have weak shells. 2006-06-15 16:17:11 -04:00
Brad King
4189370497 BUG: Custom command outputs listed explicitly as source files in a target should be generated whether or not an object file in the target needs them. This useful and makes Makefile builds more consistent with VS IDE builds. 2006-06-01 11:45:51 -04:00
Andy Cedilnik
40272a16bd ENH: Add support for adding content to bundles 2006-03-28 08:54:01 -05:00
Ken Martin
3d96e52261 STYLE: some m_ to this-> cleanup 2006-03-15 11:02:08 -05:00
Bill Hoffman
88bd3b5281 ENH: add support for removing language flags from shared library and shared module link commands 2006-03-14 14:03:16 -05:00
Ken Martin
38c3145ce1 COMP: fix compiler warning 2006-02-15 12:32:43 -05:00
Ken Martin
141ad7645e ENH: some reorg of the unix makefile generator 2006-02-15 10:34:11 -05:00
Ken Martin
7740ccd1a4 ENH: some cleanup of the makefile generator 2006-02-14 10:36:04 -05:00