Commit Graph

840 Commits

Author SHA1 Message Date
Brad King b06fb16684 No CMAKE_CONFIGURATION_TYPES in single-config generators (#10202)
Factor out reading of CMAKE_CONFIGURATION_TYPES and CMAKE_BUILD_TYPE
into cmMakefile::GetConfigurations.  Read the former only in
multi-config generators.
2010-09-08 14:54:49 -04:00
David Cole e6ac0aacf6 Add FOLDER target property, for IDEs (#3796)
This work was started from a patch by Thomas Schiffer.
Thanks, Thomas!

See the newly added documentation of the FOLDER target
property for details.

Also added global properties, USE_FOLDERS and
PREDEFINED_TARGETS_FOLDER. See new docs here, too.

By default, the FOLDER target property is used to organize
targets into folders in IDEs that have support for such
organization.

This commit adds "solution folder" support to the Visual
Studio generators. Currently works with versions 7 through
10.

Also, use the new FOLDER property in the ExternalProject
test and in the CMake project itself.
2010-09-03 13:53:22 -04:00
Brad King fe971d97ca Add STATIC_LIBRARY_FLAGS_<CONFIG> property (#10768)
This is a per-configuration version of STATIC_LIBRARY_FLAGS.
2010-05-28 11:09:10 -04:00
Alex Neundorf d96371922d -fix typo in HAS_CXX docs (#10578)
Alex
2010-04-21 21:01:06 +02:00
Brad King b05ed46749 Name Cygwin DLLs with SOVERSION, not VERSION
Cygwin versions .dll files by putting the version number in the file
name.  Our fix to issue #3571 taught CMake to do this, but it used the
VERSION target property.  It is better to use the SOVERSION property
since that is the interface (rather than implementation) version.

Change based on patch from issue #10122.
2010-01-13 13:00:29 -05:00
David Cole 19839e96f6 Fix issue #9054 - ensure a valid install name for frameworks.
When the INSTALL_NAME_DIR property is empty, still use a name
of the form <name>.framework/Versions/<version>/<name> for
installed frameworks.
2009-12-14 17:46:29 -05:00
Brad King 74c59a748d Introduce per-config OUTPUT_DIRECTORY properties
We create per-configuration target properties to specify ARCHIVE,
LIBRARY, and RUNTIME output directories.  The properties override the
generic properties for the <CONFIG> configuration:

  ARCHIVE_OUTPUT_DIRECTORY -> ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
  LIBRARY_OUTPUT_DIRECTORY -> LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
  RUNTIME_OUTPUT_DIRECTORY -> RUNTIME_OUTPUT_DIRECTORY_<CONFIG>

For multi-configuration generators, the per-configuration subdirectory
normally appended to the generic output directory is not added to the
configuration-specific property values.  This allows projects to set the
exact location at which binaries will be placed for each configuration.

See issue #9163.
2009-10-28 13:35:25 -04:00
Brad King ba728f911a Consolidate duplicate documentation in cmTarget
The documentation of (ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY was
duplicated.  We consolidate it using a macro.
2009-10-28 13:34:59 -04:00
Brad King 2dc39b8c32 Define per-target OSX_ARCHITECTURES property
The CMAKE_OSX_ARCHITECTURES variable works only as a global setting.
This commit defines target properties

  OSX_ARCHITECTURES
  OSX_ARCHITECTURES_<CONFIG>

to specify OS X architectures on a per-target and per-configuration
basis.  See issue #8725.
2009-10-21 13:00:49 -04:00
Brad King d8f6d3a274 Target copy ctor should initialize internal state
The commit "Target copy ctor should copy internal state" created a new
cmTargetInternals constructor but failed to initialize a POD member that
the original constructor initializes.  This commit fixes it.
2009-10-06 09:59:05 -04:00
Brad King 02f85f98c6 Target copy ctor should copy internal state
Ideally we should never copy cmTarget instances, but it is a pain to
remove current uses of it.  The pimplized portion of cmTarget has mostly
members that cache results, but some are part of the object state.
These should be copied in the copy ctor instead of re-initialized.
2009-10-05 16:14:17 -04:00
Brad King 0fb5b2c88c Invalidate target link info when necessary
In cmTarget we compute the link implementation, link interface, and link
closure structures on-demand and cache the results.  This commit teaches
cmTarget to invalidate results after a LINK_INTERFACE_* property changes
or a new link library is added.  We also clear the results at the end of
the Configure step to ensure the Generate step uses up-to-date results.
2009-10-05 09:06:59 -04:00
Brad King daa2f3aa41 Combine duplicate code in target property methods
In cmTarget::SetProperty and cmTarget::AppendProperty we check whether
changing the property invalidates cached information.  The check was
duplicated in the two methods, so this commit moves the check into a
helper method called from both.
2009-10-05 09:06:44 -04:00
Brad King 78f0811628 Create explicit cmTarget::FinishConfigure step
This method is called during ConfigureFinalPass on every target.  It
gives each target a chance to do some final processing after it is known
that no more commands will affect it.  Currently we just call the old
AnalyzeLibDependencies that used to be called directly.
2009-10-05 09:06:29 -04:00
Brad King 847875bebd Remove unused cmTarget::AddLinkLibrary method 2009-10-05 09:05:57 -04:00
Brad King c513962701 Create INTERPROCEDURAL_OPTIMIZATION build feature
This commit creates target and directory properties to enable the Intel
interprocedural optimization support on Linux.  Enabling it adds the
compiler option '-ipo' and uses 'xiar' to create archives.

See issue #9615.
2009-10-02 13:52:13 -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 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
David Cole f199385605 Fix CMake Internal Error from cmTarget::GetOutputInfo - triggered by calling GetLocation on a utility target - caused by custom command output file with same name as custom target. The fix is to avoid calling GetLocation unless the target is of a type that is expected to have a location... 2009-09-25 13:23:19 -04:00
Brad King 4224513cce Save source dependencies from custom command trace
In each target we trace dependencies among custom commands to pull in
all source files and build rules necessary to complete the target.  This
commit teaches cmTarget to save the inter-source dependencies found
during its analysis.  Later this can be used by generators that need to
topologically order custom command rules.
2009-09-07 10:11:43 -04:00
Brad King 368a18b83c Cleanup source file dependency tracing logic
In cmTarget we trace the dependencies of source files in the target to
bring in all custom commands needed to generate them.  We clean up the
implementation to use simpler logic and better method names.  The new
approach is based on the observation that a source file is actually an
input (dependency) of the rule that it runs (compiler or custom) even in
the case that it is generated (another .rule file has the rule to
generate it).
2009-09-04 12:39:18 -04:00
Brad King 4eb5f1bef6 Cleanup cmTarget source file list representation
This teaches cmTarget to use a set of cmSourceFile pointers to guarantee
unique insertion of source files in a target.  The order of insertion is
still preserved in the SourceFiles vector.
2009-09-04 12:39:05 -04:00
Brad King 69251f7549 Define 'multiplicity' for cyclic dependencies
We create target property "LINK_INTERFACE_MULTIPLICITY" and a per-config
version "LINK_INTERFACE_MULTIPLICITY_<CONFIG>".  It sets the number of
times a linker should scan through a mutually dependent group of static
libraries.  The largest value of this property on any target in the
group is used.  This will help projects link even for extreme cases of
cyclic inter-target dependencies.
2009-09-01 10:37:37 -04:00
Brad King 463b3f03bd Create cmTarget DLL query methods
We creates methods IsDLLPlatform() and HasImportLibrary().  The former
returns true on Windows.  The latter returns whether the target has a
DLL import library.  It is true on Windows for shared libraries and
executables with exports.
2009-08-11 09:07:42 -04:00
Brad King fcab87c9f8 Do not always propagate linker language preference
The commit "Consider link dependencies for link language" taught CMake
to propagate linker language preference from languages compiled into
libraries linked by a target.  It turns out this should only be done for
some languages, such as C++, because normally the language of the
program entry point (main) should be used.

We introduce variable CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES to tell
CMake whether a language should propagate its linker preference across
targets.  Currently it is true only for C++.
2009-07-30 10:59:37 -04:00
Brad King fd633b33cf Refactor target linker language selection
This factors the decision logic out of cmTarget::ComputeLinkClosure into
dedicated class cmTargetSelectLinker.  We replace several local
variables with a single object instance, and organize code into methods.
2009-07-30 10:59:25 -04:00
Brad King f888a0efaf ENH: Export and import link interface languages
Now that languages are part of the link interface of a target we need to
export/import the information.  A new IMPORTED_LINK_INTERFACE_LANGUAGES
property and per-config IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
property specify the information for imported targets.  The export() and
install(EXPORT) commands automatically set the properties.
2009-07-11 10:12:05 -04:00
Brad King bb2228ea1a ENH: Update LINKER_LANGUAGE and HAS_CXX docs
This updates the documentation of these properties to account for the
new automatic linker language computation.
2009-07-10 13:53:48 -04:00
Brad King 19792bf30e ENH: Consider link dependencies for link language
This teaches cmTarget to account for the languages compiled into link
dependencies when determining the linker language for its target.

We list the languages compiled into a static archive in its link
interface.  Any target linking to it knows that the runtime libraries
for the static archive's languages must be available at link time.  For
now this affects only the linker language selection, but later it will
allow CMake to automatically list the language runtime libraries.
2009-07-10 13:53:28 -04:00
Bill Hoffman 5c4208f50e ENH: only 5 failing tests for VS 10 2009-07-10 09:12:39 -04:00
Brad King 99e432508e BUG: Use link language for target name computation
The commit "Do not compute link language for LOCATION" was wrong.  The
variables

  CMAKE_STATIC_LIBRARY_PREFIX_Java
  CMAKE_STATIC_LIBRARY_SUFFIX_Java

are used for building Java .jar files.  This commit re-enables the
feature and documents the variables:

  CMAKE_EXECUTABLE_SUFFIX_<LANG>
  CMAKE_IMPORT_LIBRARY_PREFIX_<LANG>
  CMAKE_IMPORT_LIBRARY_SUFFIX_<LANG>
  CMAKE_SHARED_LIBRARY_PREFIX_<LANG>
  CMAKE_SHARED_LIBRARY_SUFFIX_<LANG>
  CMAKE_SHARED_MODULE_PREFIX_<LANG>
  CMAKE_SHARED_MODULE_SUFFIX_<LANG>
  CMAKE_STATIC_LIBRARY_PREFIX_<LANG>
  CMAKE_STATIC_LIBRARY_SUFFIX_<LANG>

Instead of making separate, repetitive entries for the _<LANG> variable
documentation, we just mention the per-language name in the text of the
platform-wide variable documentation.  Internally we keep undocumented
definitions of these properties to satisfy CMAKE_STRICT mode.
2009-07-08 14:33:08 -04:00
Brad King 173448d988 ENH: Pass config to cmTarget::GetLinkerLanguage
This passes the build configuration to most GetLinkerLanguage calls.  In
the future the linker language will account for targets linked in each
configuration.
2009-07-08 13:04:04 -04:00
Brad King a3a046643a ENH: Pass config to cmTarget RPATH install methods
This passes the build configuration to cmTarget methods IsChrpathUsed
and NeedRelinkBeforeInstall.  Later these methods will use the value.
2009-07-08 13:03:47 -04:00
Brad King 2b5d97419f ENH: Do not compute link language for LOCATION
The LOCATION property requires the full file name of a target to be
computed.  Previously we computed the linker language for a target to
look up variables such as CMAKE_SHARED_LIBRARY_SUFFIX_<LANG>.  This led
to locating all the source files immediately instead of delaying the
search to generation time.  In the future even more computation will be
needed to get the linker language, so it is better to avoid it.

The _<LANG> versions of these variables are undocumented, not set in any
platform file we provide, and do not produce hits in google.  This
change just removes the unused feature outright.
2009-07-08 13:03:22 -04:00
Brad King 7c67524dfa ENH: Introduce cmTarget::LinkImplementation API
The new method centralizes loops that process raw OriginalLinkLibraries
to extract the link implementation (libraries linked into the target)
for each configuration.  Results are computed on demand and then cached.
This simplifies link interface computation because the default case
trivially copies the link implementation.
2009-07-08 12:04:48 -04:00
Brad King aef8fe509b COMP: Pimplize cmTarget ImportInfo and OutputInfo
These member structures are accessed only in the cmTarget implementation
so they do not need to be defined in the header.  This cleanup also aids
Visual Studio 6 in compiling them.
2009-07-08 08:31:30 -04:00
Brad King 2247aca9cf BUG: Do not recompute link interfaces
The config-to-interface map in cmTarget should use case-insensitive
configuration names.  The change avoids repeating work if the given
configuration has a different case than one already computed.
2009-07-07 11:30:36 -04:00
Brad King afbd595e85 BUG: Fix CMP0003 wrong-config link dir support
This fixes a dumb logic error introduced by the centralization of link
interface computation.  It prevented link directories from alternate
configurations from getting listed by the OLD behavior of CMP0003 for
targets linked as transitive dependencies.
2009-07-07 10:57:02 -04:00
Brad King 34f78ee552 ENH: Simplify cmTarget link interface storage
This makes the LinkInterface struct a member of cmTarget, pimplizes the
config-to-interface map, and stores interface instances by value.
2009-07-07 09:45:29 -04:00
Brad King a608467180 ENH: Simpler cmTarget::GetLinkerLanguage signature
This method previously required the global generator to be passed, but
that was left from before cmTarget had its Makefile member.  Now the
global generator can be retrieved automatically, so we can drop the
method argument.
2009-07-07 07:44:12 -04:00
Brad King 06b0a692f4 ENH: Centralize default link interface computation
When LINK_INTERFACE_LIBRARIES is not set we use the link implementation
to implicitly define the link interface.  These changes centralize the
decision so that all linkable targets internally have a link interface.
2009-07-06 16:25:20 -04:00
Brad King 26df00f83a ENH: Move CMP0004 check into cmTarget
This moves code implementing policy CMP0004 into cmTarget::CheckCMP0004.
The implementation is slightly simpler and can be re-used outside of
cmComputeLinkDepends.
2009-07-06 16:24:45 -04:00
Brad King 82a8c6b0c7 ENH: Exception safe link interface computation
This fixes cmTarget::GetLinkInterface to compute and return the link
interface in an exception-safe manner.  We manage the link interface
returned by cmTarget::ComputeLinkInterface using auto_ptr.
2009-07-06 16:24:32 -04:00
Brad King 275c21d351 ENH: Refactor target output dir computation
This creates cmTarget::GetOutputInfo to compute, cache, and lookup
target output directory information on a per-configuration basis.  It
avoids re-computing the information every time it is needed.
2009-07-03 10:33:59 -04:00
Brad King f74b876a58 ENH: Clarify COMPILE_DEFINITIONS separator in docs
The COMPILE_DEFINITIONS properties are semicolon-separated lists.
Make this clear in the documentation.  See issue #9199.
2009-06-24 09:36:29 -04:00
Brad King 516add4d58 ENH: On VMS use _dir and _tmp, not .dir and .tmp
The VMS posix path emulation does not handle multiple '.' characters in
file names in all cases.  This avoids adding extra '.'s to file and
directory names for target directories and generated files.
2009-06-10 13:03:11 -04:00
Brad King 392b38cef7 ENH: Remove cmTarget internal type arguments
Internally cmTarget was passing the target type in several name
computation signatures to support computation of both shared and static
library names for one target.  We no longer need to compute both names,
so this change simplifies the internals by using the GetType method and
dropping the type from method signatures.
2009-05-01 10:39:44 -04:00
Brad King bcb9a479db ENH: Remove cmTarget::GetExecutableCleanNames
This method was redundant with GetExecutableNames.
2009-05-01 10:39:28 -04:00
Brad King 430cc2b4b7 ENH: Always imply CLEAN_DIRECT_OUTPUT target prop
This property was left from before CMake always linked using full path
library names for targets it builds.  In order to safely link with
"-lfoo" we needed to avoid having both shared and static libraries in
the build tree for targets that switch on BUILD_SHARED_LIBS.  This meant
cleaning both shared and static names before creating the library, which
led to the creation of CLEAN_DIRECT_OUTPUT to disable the behavior.

Now that we always link with a full path we do not need to clean old
library names left from an alternate setting of BUILD_SHARED_LIBS.  This
change removes the CLEAN_DIRECT_OUTPUT property and instead uses its
behavior always.  It removes some complexity from cmTarget internally.
2009-05-01 10:38:35 -04:00
Brad King 2740db5ede ENH: Allow more specification of target file names
This creates target properties ARCHIVE_OUTPUT_NAME, LIBRARY_OUTPUT_NAME,
and RUNTIME_OUTPUT_NAME, and per-configuration equivalent properties
ARCHIVE_OUTPUT_NAME_<CONFIG>, LIBRARY_OUTPUT_NAME_<CONFIG>, and
RUNTIME_OUTPUT_NAME_<CONFIG>.  They allow specification of target output
file names on a per-type, per-configuration basis.  For example, a .dll
and its .lib import library may have different base names.

For consistency and to avoid ambiguity, the old <CONFIG>_OUTPUT_NAME
property is now also available as OUTPUT_NAME_<CONFIG>.

See issue #8920.
2009-05-01 09:45:43 -04:00
Brad King 617eb981d4 ENH: Refactor target output file type computation
This creates method cmTarget::GetOutputTargetType to compute the output
file type 'ARCHIVE', 'LIBRARY', or 'RUNTIME' from the platform and
target type.  It factors out logic from the target output directory
computation code for later re-use.
2009-05-01 09:45:19 -04:00
Brad King d05e98f8d7 ENH: Allow IMPORTED_IMPLIB w/o IMPORTED_LOCATION
Linking to a Windows shared library (.dll) requires only its import
library (.lib).  This teaches CMake to recognize SHARED IMPORTED library
targets that set only IMPORTED_IMPLIB and not IMPORTED_LOCATION.
2009-04-08 16:29:04 -04:00
Brad King 5886d10334 BUG: Fix imported target config guess
When an IMPORTED target provides no generic configuration and no match
for a desired configuration then we choose any available configuration.
This change corrects the choice when the first listed available
configuration does not really have a location.
2009-04-08 16:28:55 -04:00
Brad King 4085454658 ENH: Support preprocessor def values in VS6
The add_definitions() command and COMPILE_DEFINITIONS dir/tgt/src
properties support preprocessor definitions with values.  Previously
values were not supported in the VS6 generator even though the native
tool supports them.  It is only values with spaces that VS6 does not
support.  This enables support and instead complains only for values
with spaces.  See issue #8779.
2009-03-23 14:48:09 -04:00
Brad King 6d02ee34c9 ENH: Mention CMAKE_* variables in RPATH properties
The RPATH target properties are initialized by CMAKE_<prop> variables at
target creation time.  This notes the feature in the property
documentation.  It is already noted in the variable documentation.
2009-03-19 10:53:51 -04:00
Brad King b604b98c56 ENH: Define RULE_LAUNCH_* properties
This defines global, directory, and target properties
RULE_LAUNCH_COMPILE, RULE_LAUNCH_LINK, and RULE_LAUNCH_CUSTOM.  Their
values specify 'launcher' command lines which are prefixed to compile,
link, and custom build rules by Makefile generators.
2009-02-10 08:51:15 -05:00
Brad King 13f9bb646d ENH: Define target and source property LABELS
This creates a new LABELS property for targets and source files.  We
write the labels of each target and its source files in target-specific
locations in the build tree for future use.
2009-02-10 08:50:21 -05:00
Brad King d0ed46e3d6 ENH: Define target-specific support directories
This creates method cmTarget::GetSupportDirectory to compute a
target-specific support directory in the build tree.  It uses the
"CMakeFiles/<name>.dir" convention already used by the Makefile
generators.  The method will be useful for any code that needs to
generate per-target information into the build tree for use by CMake
tools that do not run at generate time.
2009-02-10 08:50:09 -05:00
Brad King acb0e8fb85 BUG: Fix LOCATION property for Mac AppBundles
Previously cmTarget::GetLocation and cmTarget::GetFullPath would return
for Mac AppBundles the top-level bundle directory but without the .app
extension.  We worked around this at the call sites.  This fixes the
methods and removes the work-arounds.  See issue #8406.
2009-01-20 15:49:37 -05:00
Brad King d7ddcc214f ENH: Enable LOCATION property for imported targets
Previously we left the LOCATION property undefined for imported targets
since it should no longer be used for non-imported targets.  However, in
the case we do not know the name of an available imported configuration,
it is more readable to get the LOCATION property than LOCATION_<CONFIG>
for a bogus configuration <CONFIG>.  This enables LOCATION for imported
targets and returns an unspecified available imported configuration.
2009-01-05 09:53:14 -05:00
Brad King e4325e7d9c BUG: Fix <CONFIG>_POSTFIX property/variable docs
The CMAKE_<CONFIG>_POSTFIX variable and <CONFIG>_POSTFIX property were
not documented.  This updates the CMAKE_DEBUG_POSTFIX and DEBUG_POSTFIX
documentation to refer to the more general variable/property.  It also
clarifies that the variable is used as the property default only for
non-executable targets.  See issue #7868.
2008-12-15 13:30:09 -05:00
Bill Hoffman 086cf607c3 ENH: add missing property definitions 2008-10-07 16:46:25 -04:00
Alexander Neundorf fc7a017d1a STYLE: add documentation for the "TYPE" target property
Alex
2008-10-02 18:48:06 -04:00
Brad King 4f6137c70c ENH: Allow link line computation for static libs
In some cases it may be useful to compute a "link" line for a static
library even though it will not be put in the generated build system.
This removes the assertion which previously diallowed the case.
2008-09-15 13:30:11 -04:00
Brad King 3c5cf1bb8c ENH: Allow a custom list of debug configurations
Create a DEBUG_CONFIGURATIONS global property as a way for projects to
specify which configuration names are considered to be 'debug'
configurations.
2008-09-04 17:34:25 -04:00
Brad King f89dae7a94 ENH: Create Info.plist files in OS X Frameworks
A Mac OS X Framework should provide a Resources/Info.plist file
containing meta-data about the framework.  This change generates a
default Info.plist for frameworks and provides an interface for users to
customize it.
2008-09-02 12:06:32 -04:00
Brad King fe98e57e38 ENH: Disallow link-type keywords in link interface
The LINK_INTERFACE_LIBRARIES target property may not contain the
"debug", "optimized", or "general" keywords.  These keywords are
supported only by the target_link_libraries (and link_libraries) command
and are not a generic library list feature in CMake.  When a user
attempts to add one of these keywords to the property value, we now
produce an error message that refers users to alternative means.
2008-08-19 11:43:51 -04:00
Brad King 41c5dd13dc ENH: Clarify link interface documentation
The LINK_INTERFACE_LIBRARIES property does not apply for STATIC
libraries.  The IMPORTED_LINK_INTERFACE_LIBRARIES property does apply
for STATIC libraries.  State both explicitly in the documentation.
Also, clarify that the per-configuration version of these properties
completely overrids the generic version.
2008-08-19 10:29:35 -04:00
Brad King 061d20be38 ENH: Add UNKNOWN type for IMPORTED libraries
When creating an IMPORTED target for a library that has been found on
disk, it may not be known whether the library is STATIC or SHARED.
However, the library may still be linked using the file found from disk.
Use of an IMPORTED target is still important to allow per-configuration
files to be specified for the library.

This change creates an UNKNOWN type for IMPORTED library targets.  The
IMPORTED_LOCATION property (and its per-config equivalents) specifies
the location of the library.  CMake makes no assumptions about the
library that cannot be inferred from the file on disk.  This will help
projects and find-modules import targets found on disk or specified by
the user.
2008-08-18 11:39:22 -04:00
Brad King 0bf093fd17 STYLE: Convert unused target type cases to default
In switch statements that deal with only a few target types, use a
'default' case for the remaining target types instead of listing them
explicitly.  This will make it easier to add more types in the future.
2008-08-18 11:26:51 -04:00
Brad King b93f0318fe ENH: Support full-path libs w/out valid names.
This change introduces policy CMP0008 to decide how to treat full path
libraries that do not appear to be valid library file names.  Such
libraries worked by accident in the VS IDE and Xcode generators with
CMake 2.4 and below.  We support them in CMake 2.6 by introducing this
policy.  See policy documentation added by this change for details.
2008-07-23 12:59:14 -04:00
Brad King da4f142cc1 ENH: Add full target version signature cmTarget::GetTargetVersion. 2008-07-09 10:09:00 -04:00
Brad King c1b8ad4e1d ENH: Allow users to specify a custom Info.plist template
- Create MACOSX_BUNDLE_INFO_PLIST target property to specify template.
  - Look for MacOSXBundleInfo.plist.in in CMAKE_MODULE_PATH by default.
  - See issue #6983.
2008-05-17 12:53:56 -04:00
Brad King a1bb7e90ef ENH: Allow users to specify macro-like #include line transforms for dependency scanning.
- Define IMPLICIT_DEPENDS_INCLUDE_TRANSFORM property on targets and directories.
  - Make the directory version inherited.
  - See issue #6648.
2008-05-14 11:54:52 -04:00
Brad King 771bdb7ef8 BUG: Make sure all source files are found before generating.
- Previously this was done implicitly by the check for a target
    link language which checked all source full paths.
  - The recent change to support computing a link language without
    finding all the source files skipped the implicit check.
  - This change adds an explicit check to find all source files.
2008-05-12 17:43:45 -04:00
Brad King 629afe07ce BUG: A per-config target name postfix should be ignored for Mac bundle and framework names. 2008-04-14 15:27:27 -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 1829bed8b5 BUG: Do not create target output directory in cmTarget. Let the generators do it. 2008-04-07 13:39:13 -04:00
Ken Martin 16f1cc9b59 ENH: support unset of properties 2008-04-01 14:22:09 -04:00
Brad King 8c1a743027 ENH: Add note to Fortran_MODULE_DIRECTORY property documentation about using CMAKE_Fortran_MODULE_DIRECTORY to initialize it. 2008-03-28 13:07:03 -04:00
Brad King 133e5b5dd8 STYLE: Fix line-too-long for new INTERNAL_ERROR messages. 2008-03-15 10:00:07 -04:00
Brad King bf4cef9d5c ENH: Add policy CMP_0004 to require library names to have no leading or trailing whitespace. Replace previous check of CMAKE_BACKWARDS_COMPATIBILITY against version 2.4 with the policy. 2008-03-13 16:35:39 -04:00
Brad King d46ff28ac9 ENH: Convert CMAKE_LINK_OLD_PATHS to policy CMP0003.
- Policy is WARN by default so projects will build
    as they did in 2.4 without user intervention
  - Remove CMAKE_LINK_OLD_PATHS variable since it was
    never in a release and the policy supercedes it
  - Report target creation backtrace in warning message
    since policy should be set by that point
2008-03-13 16:23:18 -04:00
Brad King f7f03347a6 ENH: Improve new error/warning message generation
- Add cmListFileBacktrace to record stack traces
  - Move main IssueMessage method to the cmake class instance
    (make the backtrace an explicit argument)
  - Change cmMakefile::IssueMessage to construct a backtrace
    and call the cmake instance version
  - Record a backtrace at the point a target is created
    (useful later for messages issued by generators)
2008-03-13 13:48:57 -04:00
Bill Hoffman 5ab6c0f0ed ENH: remove abort calls and replace with an IssueMessage INTERANL_ERROR, better to not crash on the end user. 2008-03-12 21:06:32 -04:00
Brad King 96ee85d197 BUG: Fix memory leak when cmTarget instances are assigned. We really need to get rid of global targets and their associated assignments. 2008-03-04 13:51:27 -05:00
Brad King 652951b976 ENH: Allow users to work around problems with the builtin chrpath by setting CMAKE_NO_BUILTIN_CHRPATH. 2008-03-02 16:37:34 -05:00
Brad King d732de4a8a ENH: Cleanup builtin chrpath support
- Move computation of extended build-tree rpath
    to cmComputeLinkInformation
  - Only enable the extended build-tree rpath if
    the target will be installed
  - Generalize the interface of file(CHRPATH)
  - When changing the rpath on installation only
    replace the part generated by CMake because
    the native tools (ex SunCC on Linux) might have
    added their own part to the rpath
2008-03-02 14:35:23 -05:00
Brad King 59001281bb BUG: Do not try to change the RPATH when installing a target if CMAKE_SKIP_RPATH is on or the path does not need to be changed. 2008-03-01 13:02:08 -05:00
Brad King 34c76d4304 ENH: Use builtin chrpath instead of relinking ELF targets
- Add cmSystemTools::ChangeRPath method
  - Add undocumented file(CHRPATH) command
  - When installing use file(CHRPATH) to change the rpath
    instead of relinking
  - Remove CMAKE_CHRPATH lookup from CMakeFindBinUtils
  - Remove CMAKE_USE_CHRPATH option since this should
    always work
2008-03-01 12:51:07 -05:00
Brad King dab5ea859a COMP: Fix Borland 5.5 build
- Its <iosfwd> header includes windows.h which
    defines GetCurrentDirectory
  - It defines 'interface' so we cannot use it as
    a variable name.
2008-02-24 14:05:11 -05:00
Brad King fd37a6ec3d ENH: Better linker search path computation.
- Use linker search path -L.. -lfoo for lib w/out soname
    when platform sets CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME
  - Rename cmOrderRuntimeDirectories to cmOrderDirectories
    and generalize it for both soname constraints and link
    library constraints
  - Use cmOrderDirectories to order -L directories based
    on all needed constraints
  - Avoid processing implicit link directories
  - For CMAKE_OLD_LINK_PATHS add constraints from libs
    producing them to produce old ordering
2008-02-21 11:41:11 -05:00
Brad King a3c2d32802 COMP: Fix HP warning about cmTargetInternalPointer::operator= checking for self-assignment. 2008-02-19 09:09:46 -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 67f8c0fd10 ENH: Allow multiple OS X applications bundles to be created in a single build directory. Converted Info.plist files to be generated directly instead of configured with make variables. The MACOSX_BUNDLE_* variables are now properties (and vars for compatibility). 2008-02-14 15:31:08 -05:00
Brad King ac0e58dcfb ENH: Enforce global target name uniqueness.
- Error if imported target is involved in conflict
  - Error for non-imported target conflict unless
    CMAKE_BACKWARDS_COMPATIBILITY <= 2.4
  - Include OUTPUT_NAME property in error message
  - Update add_executable and add_library command documentation
2008-02-11 13:35:39 -05:00
Brad King 410d7b0f36 ENH: Avoid computing link information for static library targets. They do not link. 2008-02-07 16:49:11 -05:00
Brad King afad124313 BUG: Make sure linking to a shared lib on windows uses import library and not the new realname. 2008-02-06 14:19:03 -05:00
Brad King 31a6670e43 BUG: Do not create versioned executable names on Xcode where they are not supported. 2008-02-06 14:06:50 -05:00
Brad King 07be6bb87b ENH: When linking to versioned targets whose real file name is known pass the real name to the linker instead of the symlink name. 2008-02-06 13:34:44 -05:00
Brad King 82fcaebe28 ENH: Pass dependent library search path to linker on some platforms.
- Move runtime path ordering out of cmComputeLinkInformation
    into its own class cmOrderRuntimeDirectories.
  - Create an instance of cmOrderRuntimeDirectories for runtime
    path ordering and another instance for dependent library
    path ordering.
  - Replace CMAKE_DEPENDENT_SHARED_LIBRARY_MODE with explicit
    CMAKE_LINK_DEPENDENT_LIBRARY_FILES boolean.
  - Create CMAKE_LINK_DEPENDENT_LIBRARY_DIRS boolean.
  - Create variables to specify -rpath-link flags:
      CMAKE_SHARED_LIBRARY_RPATH_LINK_<LANG>_FLAG
      CMAKE_EXECUTABLE_RPATH_LINK_<LANG>_FLAG
  - Enable -rpath-link flag on Linux and QNX.
  - Documentation and error message updates
2008-02-01 08:56:00 -05:00
Brad King f28f1585f6 COMP: Fix shadowed local warning. 2008-02-01 08:55:41 -05:00
Brad King 2cff26fa52 ENH: Support linking to shared libs with dependent libs
- Split IMPORTED_LINK_LIBRARIES into two parts:
      IMPORTED_LINK_INTERFACE_LIBRARIES
      IMPORTED_LINK_DEPENDENT_LIBRARIES
  - Add CMAKE_DEPENDENT_SHARED_LIBRARY_MODE to select behavior
  - Set mode to LINK for Darwin (fixes universal binary problem)
  - Update ExportImport test to account for changes
2008-01-31 15:45:31 -05:00
Brad King afd7d4ca4c ENH: Add target property LINK_SEARCH_END_STATIC to help people building static binaries on some platforms. 2008-01-31 08:05:34 -05:00
Brad King 7902bc06aa ENH: Implemented link-interface specification feature.
- Shared libs and executables with exports may now have
    explicit transitive link dependencies specified
  - Created LINK_INTERFACE_LIBRARIES and related properties
  - Exported targets get the interface libraries as their
    IMPORTED_LINK_LIBRARIES property.
  - The export() and install(EXPORT) commands now give
    an error when a linked target is not included since
    the user can change the interface libraries instead
    of adding the target.
2008-01-30 17:25:52 -05:00
Brad King 6066e92ba2 BUG: cmTarget instances should not be copied. Removed pass-by-value arguments from cmLocalVisualStudio7Generator::WriteGroup and cmLocalVisualStudio6Generator::WriteGroup. Updated cmTarget to make this easier to find. 2008-01-29 17:30:34 -05:00
Brad King ffac622a85 ENH: Add cmTarget::GetLinkInformation method to allow several places in the generators to share link information while only computing it once per configuration for a target. Use it to simplify the chrpath feature. 2008-01-29 15:07:33 -05:00
Brad King 64b6c0b950 ENH: Document PRIVATE_HEADER, PUBLIC_HEADER, and RESOURCE target properties and corresponding arguments to INSTALL(TARGETS). 2008-01-28 15:12:12 -05:00
Brad King e3b1bdb058 ENH: Support exporting/importing of AppBundle targets.
- Imported bundles have the MACOSX_BUNDLE property set
  - Added cmTarget::IsAppBundleOnApple method to simplify checks
  - Document BUNDLE keyword in INSTALL command
  - Updated IMPORTED_LOCATION property documentation for bundles
  - Updated ExportImport test to test bundles
2008-01-28 14:46:16 -05:00
Brad King 28ea034737 ENH: Support exporting/importing of Framework targets.
- Imported frameworks have the FRAMEWORK property set
  - Added cmTarget::IsFrameworkOnApple method to simplify checks
  - Also remove separate IMPORTED_ENABLE_EXPORTS property and just use ENABLE_EXPORTS since, like FRAMEWORK, it just represents the target type.
  - Document FRAMEWORK keyword in INSTALL command.
  - Updated IMPORTED_LOCATION property documentation for Frameworks
2008-01-28 13:05:58 -05:00
Brad King 5594ad4885 ENH: Updated exporting and importing of targets to support libraries and configurations.
- Created cmExportFileGenerator hierarchy to implement export file generation
  - Installed exports use per-config import files loaded by a central one.
  - Include soname of shared libraries in import information
  - Renamed PREFIX to NAMESPACE in INSTALL(EXPORT) and EXPORT() commands
  - Move addition of CMAKE_INSTALL_PREFIX to destinations to install generators
  - Import files compute the installation prefix relative to their location when loaded
  - Add mapping of importer configurations to importee configurations
  - Rename IMPORT targets to IMPORTED targets to distinguish from windows import libraries
  - Scope IMPORTED targets within directories to isolate them
  - Place all properties created by import files in the IMPORTED namespace
  - Document INSTALL(EXPORT) and EXPORT() commands.
  - Document IMPORTED signature of add_executable and add_library
  - Enable finding of imported targets in cmComputeLinkDepends
2008-01-28 08:38:36 -05:00
Brad King 99b97dece8 ENH: Created cmComputeLinkDepends to compute link dependencies.
- This will be useful for imported library dependencies
  - Replaces old cmTarget analyze-lib-depends stuff for linking
  - Formalizes graph construction and dump
  - Explicitly represents dependency inferral sets
  - Use BFS of initial dependencies to preserve order
2008-01-27 13:42:49 -05:00
Brad King 96fd5909d9 ENH: Implement linking with paths to library files instead of -L and -l separation. See bug #3832
- This is purely an implementation improvement.  No interface has changed.
  - Create cmComputeLinkInformation class
  - Move and re-implement logic from:
      cmLocalGenerator::ComputeLinkInformation
      cmOrderLinkDirectories
  - Link libraries to targets with their full path (if it is known)
  - Dirs specified with link_directories command still added with -L
  - Make link type specific to library names without paths
    (name libfoo.a without path becomes -Wl,-Bstatic -lfoo)
  - Make directory ordering specific to a runtime path computation feature
    (look for conflicting SONAMEs instead of library names)
  - Implement proper rpath support on HP-UX and AIX.
2008-01-22 09:13:04 -05:00
Brad King 17dbc31ad4 BUG: Added missing documentation of LINK_FLAGS_<CONFIG> property. 2008-01-21 13:59:10 -05:00
Brad King caca9b8065 ENH: Add AppendProperty methods for use by C++ code in CMake. Simplify implementation of SET_PROPERTY command by using them. 2008-01-17 18:13:55 -05:00
Brad King 80c2be45e0 ENH: Renamed <CONFIG>_COMPILE_DEFINITIONS to COMPILE_DEFINITIONS_<CONFIG> for better documentation clarity. 2008-01-15 21:02:00 -05:00
Brad King da335fbd00 ENH: Add explicit documentation entry for configuration-specific <CONFIG>_COMPILE_DEFINITIONS. 2008-01-15 10:49:22 -05:00
Brad King 8262ccfd4e ENH: Create COMPILE_DEFINITIONS property for targets and source files. Create <config>_COMPILE_DEFINITIONS property as per-configuration version. Add Preprocess test to test the feature. Document limitations on Xcode and VS6 generators. 2008-01-14 09:20:58 -05:00
Amitha Perera 4d9259c15b STYLE: Spelling fixes on documentation 2008-01-09 22:09:19 -05:00
Alexander Neundorf 3da6fd9da4 ENH: only allow usage of chrpath if the executable file format is ELF
Alex
2008-01-02 16:53:10 -05:00
Brad King b2e8c07af8 ENH: Implemented Fortran module output directory and search path flags. 2007-12-30 16:11:38 -05:00
Alexander Neundorf 3ae731fab7 ENH: add support for chrpath, so the RPATH in ELF files can be changed when
installing without having to link the target again -> can save a lot of time

chrpath is handled very similar to install_name_tool on the mac. If the
RPATH in the build tree file is to short, it is padded using the separator
character.
This is currently disabled by default, it can be enabled using the option
CMAKE_USE_CHRPATH. There are additional checks whether it is safe to enable
it. I will rework them and use FILE(READ) instead to detect whether the
binaries are actually ELF files.

chrpath is available here
http://www.tux.org/pub/X-Windows/ftp.hungry.com/chrpath/
or kde svn (since a few days): http://websvn.kde.org/trunk/kdesupport/chrpath/

Alex
2007-12-18 17:50:27 -05:00
Brad King 8506938407 ENH: Added SOURCES property to targets. This is based on patch from issues #6137. 2007-12-17 10:12:22 -05:00
Brad King 91f68fc391 BUG: For imported target directory, do not return pointer to freed memory. 2007-11-21 08:59:43 -05:00
Ken Martin 9bd0d0f1ed BUG: fix undefined property FRAMEWORK 2007-10-30 11:03:16 -04:00
David Cole 2458b07464 BUG: Fix the dashboards! Put it back the way it was so it always creates the target directory at configure time. Figure out how to avoid it for the framework case on the Mac/Xcode later... 2007-10-12 11:43:50 -04:00
David Cole 8e4c7b99e1 ENH: Finish up the Framework creation code restructuring. Frameworks build and install now. More work needed on the packaging step. See Tests/Framework for example use. 2007-10-10 11:06:15 -04:00
Brad King f2ac53bb10 ENH: Added XCODE_ATTRIBUTE_<an-attribute> property to allow direct setting of Xcode target attributes in generated projects. For example, one may set the prefix header property and the corresponding precompiled option to do precompiled headers. 2007-09-10 10:22:19 -04:00
Alexander Neundorf 112747e4e2 STYLE: fix typo
Alex
2007-08-09 08:49:49 -04:00
Brad King bffcff4530 ENH: Added warning when an install rule is created from an EXCLUDE_FROM_ALL target. Added a foo/preinstall version of targets that need relinking so that exclude-from-all targets can be manually relinked for installation. 2007-08-03 16:31:08 -04:00
Brad King d7118006de BUG: Target exclusion-from-all tests should always use the root local generator associated with the all target being tested. 2007-08-03 15:44:25 -04:00
Brad King 9f2de08f90 ENH: Added cmTarget::GetLanguages method to centralize computation of the list of languages compiled in a target. 2007-08-02 13:38:39 -04:00
David Cole ee91e25499 BUG: Only pay attention to the FRAMEWORK target property for SHARED library targets 2007-08-01 13:04:45 -04:00
Brad King e0fc8b2995 BUG: <CONFIG>_LOCATION property should use the config name in the directory and not $(OutDir). This addresses bug#5363. 2007-08-01 11:36:35 -04:00
Alexander Neundorf 021ceea1b0 ENH: second try for handling the linker language with integer priority values (returning a pointer to a string on the stack is no good idea)
Alex
2007-07-12 08:37:10 -04:00
Alexander Neundorf 16705a3e87 COMP: revert last commit for now, broke Visual Studio
Alex
2007-07-11 17:29:27 -04:00
Alexander Neundorf bea1a5de77 ENH: CMAKE_<LANG>_LINKER_PREFERENCE is now an integer priority, not a
two-step priority (None or Prefered)
Current order: ASM 0, C 10, Fortran 20, CXX 30, Java 40
This is the same order as automake choses:
http://www.gnu.org/software/automake/manual/html_node/How-the-Linker-is-Chosen.html

This change should be backward compatible:
if there is a project using fortran and CXX, they had to set the
LINKER_LANGUAGE explicitely, otherwise cmake complained (but still generated
the project files). Explicitely setting the linker language still overrides
automatic detection.
If somebody has a custom language for cmake and the PREFERENCE starts with
"P", its changed to 100, which gives it preference over all other languages
(except the other custom languages which have also "Prefered"). "None" is
converted to 0.

Alex
2007-07-11 16:22:04 -04:00
Brad King cac79e92b8 STYLE: Fixed line-too-long, fixed indentation, removed trailing whitespace, added function separator comment lines. 2007-07-02 13:32:41 -04:00
Alexander Neundorf cfe9fda9fe ENH: here we really want only non-imported targets, as discussed with Brad
Alex
2007-06-27 15:42:33 -04:00
Alexander Neundorf e126db1f71 BUG: handle dependencies to imported targets better: don't create a
dependency if the target name was not listed in DEPENDS, if it was listed in
DEPENDS, create a dependency to the file

Seems to work, but have to check with Brad.

Alex
2007-06-21 13:08:22 -04:00
Brad King 35936433e1 ENH: Merging changes from branch CMake-SourceFile2-b between tags
CMake-SourceFile2-bp and CMake-SourceFile2-b-mp1 to trunk.  This
commit is surrounded by tags CMake-SourceFile2-b-mp1-pre and
CMake-SourceFile2-b-mp1-post on the trunk.

The changes re-implement cmSourceFile and the use of it to allow
instances to be created much earlier.  The use of cmSourceFileLocation
allows locating a source file referenced by a user to be much simpler
and more robust.  The two SetName methods are no longer needed so some
duplicate code has been removed.  The strange "SourceName" stuff is
gone.  Code that created cmSourceFile instances on the stack and then
sent them to cmMakefile::AddSource has been simplified and converted
to getting cmSourceFile instances from cmMakefile.  The CPluginAPI has
preserved the old API through a compatibility interface.

Source lists are gone.  Targets now get real instances of cmSourceFile
right away instead of storing a list of strings until the final pass.

TraceVSDependencies has been re-written to avoid the use of
SourceName.  It is now called TraceDependencies since it is not just
for VS.  It is now implemented with a helper object which makes the
code simpler.
2007-06-18 11:59:23 -04:00
Brad King 3d822e3a25 ENH: Moved link library related code from GenerateSourceFilesFromSourceLists to AnalyzeLibDependencies to make the former do no more than what its name says. 2007-05-28 12:05:28 -04:00
Brad King 09289aadb6 ENH: Removed "Used" mark from custom commands. It is no longer needed or checked by any generators. 2007-05-28 11:18:15 -04:00
Brad King 3f2dd9bc54 ENH: Made cmTarget::GetSourceFiles method return reference to const so addition of cmSourceFile pointers must be done with an access method in cmTarget. 2007-05-28 10:25:03 -04:00
Alexander Neundorf 79756b0e67 BUG: don't use non-imported target when cross compiling as commands in custom commands
STYLE: remove now invalid comments, use this->

Alex
2007-05-24 08:43:31 -04:00
Brad King ba7780a3c4 ENH: Fixed INSTALL_FILES and INSTALL_PROGRAMS commands to not create targets. No targets of type cmTarget::INSTALL_FILES or cmTarget::INSTALL_PROGRAMS are created, so we do not need to check for them everywhere anymore. 2007-05-23 15:40:12 -04:00
Brad King c288da754a BUG: Target names in the COMMAND part of a custom command should not create a file-level dependency that forces the command to rerun when the executable target rebuilds, but the target-level dependency should still be created. Target names in a DEPENDS should do both a target-level and file-level dependency. Updated the BuildDepends test to check that this works. 2007-05-23 13:27:00 -04:00
Alexander Neundorf 526b72e12c COMP: don't user string::clear(), fix warnings about unused variables
Alex
2007-05-23 08:24:29 -04:00
Alexander Neundorf 4878c00905 ENH: add the IMPORT keyword to ADD_EXECUTABLE(), which generates an
"imported" executable target. This can then be used e.g. with
ADD_CUSTOM_COMMAND() to generate stuff. It adds a second container for
"imported" targets, and FindTarget() now takes an additional argument bool
useImportedTargets to specify whether you also want to search in the
imported targets or only in the "normal" targets.

Alex
2007-05-22 10:24:59 -04:00
Brad King 51fe906ab7 BUG: An empty configuration name is equivalent to no configuration. 2007-05-17 11:18:23 -04:00
Alexander Neundorf 4b33244ea5 BUG: fix segfault when trying to get the object file for a sourcefile in an
unknown language via GET_TARGET_PROPERTY(), as reported by Trevor Kellaway

Alex
2007-05-15 16:06:18 -04:00
Alexander Neundorf e4b5de6377 STYLE: fix line lengths
Alex
2007-05-14 11:23:37 -04:00
Alexander Neundorf 362f81981e STYLE: fix line length
Alex
2007-05-10 11:38:23 -04:00
Alexander Neundorf e701ef77d8 STYLE: functions use upper case for the first letter
Alex
2007-05-09 09:35:59 -04:00
Alexander Neundorf 7f11536704 ENH: now target names can be used in add_custom_command() and
add_custom_target() as COMMAND, and cmake will recognize them and replace
them with the actual output path of these executables. Also the dependency
will be added automatically. Test included.
ENH: moved TraceVSDependencies() to the end of GlobalGenerator::Configure(),
so it is done now in one central place

Alex
2007-05-09 08:25:45 -04:00
Bill Hoffman 9323a27989 ENH: initial support for creation of frameworks on Mac 2007-05-08 10:32:54 -04:00
Ken Martin 8b0c61c322 ENH: added internal target property for the name of the project file 2007-04-10 09:54:01 -04:00
Brad King af95f61d76 ENH: Created method cmTarget::GetExportMacro to centralize computation of the export symbol name. This removes duplicate code from all the generators. Also enabled the export definition for executable targets with the ENABLE_EXPORTS property set. 2007-03-27 23:13:25 -04:00
Brad King 5a32aa5919 ENH: Added target property ENABLE_EXPORTS for executable targets. It enables the executables for linking by loadable modules that import symbols from the executable. This finishes the executable import library support mentioned in bug #4210. 2007-03-22 09:45:25 -04:00
Brad King fc7c433463 ENH: Added support for import libraries created by executable and module targets. The module import libraries should never be used but some windows compilers always create them for .dll files since there is no distinction from shared libraries on that platform. The executable import libraries may be used to create modules that when loaded bind to symbols from the executables. This is an enhancement related to bug#4210 though not requested by it explicitly. 2007-03-19 10:00:36 -04:00
Bill Hoffman 5891ba16ce ENH: add project to target map, not used yet, but created 2007-03-13 14:23:08 -04:00
Brad King 92ff60b6a6 ENH: Added target properties ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, and RUNTIME_OUTPUT_DIRECTORY. If set these override EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH for a specific target. They can be used to distribute target files in the build tree with the same granularity that the INSTALL command provides for the install tree. This addresses bug#2240 and bug#4210. 2007-03-09 15:14:27 -05:00
Brad King 528f60f4a6 ENH: Added implib option to cmTarget::GetDirectory to support a separate directory containing the import library. This is an incremental step for bug#4210. 2007-03-09 09:30:16 -05:00
Brad King 01dc699d82 ENH: Combined cmTarget::GetDirectory and cmTarget::GetOutputDir since they are nearly the same. This is another step for bug#2240. 2007-03-08 15:33:19 -05:00
Brad King 1a734f238a COMP: Fixed enumeration-not-used warning in switch. 2007-03-08 15:10:20 -05:00
Brad King 33ee83714d ENH: Replaced LibraryOutputPath and ExecutableOutputPath variables in Makefile and VS generators to instead ask each target for its output path. This significantly reduces total code size and centralizes previously duplicate code. It is also a step towards bug#2240. 2007-03-08 14:57:28 -05:00
Andy Cedilnik 8ad3430931 ENH: Make EXCLUDE_FROM_ALL a target and directory properties. Also, make IsInAll use EXCLUDE_FROM_ALL. Also, enable the test that tests this 2007-02-23 09:46:27 -05:00
Ken Martin 84315a7d57 BUG: fix accidental checkin 2007-02-19 14:32:36 -05:00
Ken Martin 09699018cc ENH: turn on spaces in path test 2007-02-19 13:20:27 -05:00
Bill Hoffman f7cd9f76ce STYLE: fix line length issues 2007-02-17 08:46:25 -05:00
Bill Hoffman ca0230a33e ENH: check in initial conv library stuff 2007-02-16 16:12:17 -05:00
Brad King 4bc0fd0941 ENH: Added cmTarget::GetPDBName method to simplify computation of .pdb file name for a target. 2007-02-01 16:54:49 -05:00
Brad King 712345ffc4 BUG: The .pdb file generated for a library or executable should match the real file name used for the target. This addresses bug#3277. 2007-02-01 09:57:24 -05:00
Ken Martin 1dd5db0235 COMP: fix some warnings and style issues 2006-12-08 09:27:52 -05:00
Ken Martin 27379d7b08 ENH: make properties a bit more formal with documentation and chaining 2006-12-07 09:45:32 -05:00
Bill Hoffman 26b527ac0f ENH: fix bug in full path to target depends stuff 2006-12-06 23:05:10 -05:00
Bill Hoffman 5ff037e894 BUG: better fix for .dll.lib problem 2006-11-30 17:32:46 -05:00
Ken Martin 2915f24274 COMP: fix compile issue on Sun hopefully 2006-11-29 17:10:29 -05:00
Ken Martin d6219588c0 COMP: fix compile issue on Sun 2006-11-29 15:45:49 -05:00
Ken Martin daa6d2bc04 ENH: updated handling of debug and optimized target link libraries 2006-11-29 11:00:17 -05:00
Bill Hoffman 0954696e3e ENH: fix line length problem 2006-11-27 12:14:16 -05:00
Bill Hoffman b3d5e0fa2d ENH: fix crash in plplot build 2006-11-27 12:11:27 -05:00
Bill Hoffman 9baa760315 BUG: fix problem when a target name is the same as the output of a custom command 2006-11-25 10:59:26 -05:00
Ken Martin 786fdbc196 ENH: fix a bug with useing debuf optimized libs from other builds 2006-11-16 10:57:00 -05:00
Brad King b155f3aa1c ENH: Adding image version number (major.minor) property to windows binaries. Default is 0.0, but the VERSION target property may change the value. Windows now has first-class support for dll and exe versioning. This addresses bug#1219. 2006-10-16 18:17:14 -04:00
Brad King e0a662a3dd ENH: Adding version number to the name of a DLL built in cygwin but not the import library. This addresses bug#3571. 2006-10-05 16:30:47 -04:00
Brad King fdcc888c56 ENH: Added support for getting a target's location on a per-configuration basis (ex. DEBUG_LOCATION). This does not fix but helps with bug#3250. 2006-09-29 16:42:58 -04:00
Brad King 441d208bb3 ENH: Added target property CLEAN_DIRECT_OUTPUT to not clean all forms of a library name so that static and shared libraries of the same name can coexist in a single build directory. 2006-08-03 09:42:48 -04:00
Brad King ab61137eb1 COMP: Fix and/or disable warnings for Borland 5.6 build. 2006-08-01 11:38:42 -04:00
Brad King b4542762a7 ENH: Added target property INSTALL_RPATH_USE_LINK_PATH to append the linker search path directories not inside the project to the INSTALL_RPATH automatically. The property is initialized by the variable CMAKE_INSTALL_RPATH_USE_LINK_PATH when the target is created. 2006-06-15 10:12:19 -04:00
Brad King 932e3524fc ENH: Changing shared library versioned file names on OSX to conform to that platform's convention. 2006-06-05 13:45:43 -04:00
Bill Hoffman 0f2f074978 ENH: fix for vtk 4.4 and other projects that may try to link to a module 2006-05-19 13:02:12 -04:00
Ken Martin cac30b5ff8 STYLE: fix line length 2006-05-12 14:12:13 -04:00
Brad King 323dc3a89a ENH: Added information about target needing a source file when one cannot be found. 2006-05-05 11:46:20 -04:00
Brad King 392137b6d7 ENH: Added <config>_OUTPUT_NAME target property to allow the output name to be set on a per-configuration basis. 2006-04-18 10:56:28 -04:00
Andy Cedilnik 93f5712a7d COMP: Remove warnings 2006-03-28 16:25:29 -05:00
Ken Martin 3d96e52261 STYLE: some m_ to this-> cleanup 2006-03-15 11:02:08 -05:00
Bill Hoffman 89e5fc63fe STYLE: fix line lengths 2006-03-10 13:54:57 -05:00
Brad King 5792dc8da8 ENH: Replaced UpdateLocation method with call to GetLocation. Added comment about problems with the LOCATION attribute. 2006-03-03 18:06:44 -05:00
Andy Cedilnik bc4e5581ee ENH: Add support for exporting graphviz of the project dependencies 2006-03-03 14:24:31 -05:00
Brad King 93c95f1cc5 BUG: Fixed installation of MacOSX Bundle executables and the corresponding install_name remapping support. Extended the BundleTest test to check that this all works. Part of these fixes required changing the signature of AppendDirectoryForConfig in all generators. It now accepts prefix and suffix strings to deal with whether leading or trailing slashes should be included with the configuration subdirectory. 2006-03-03 12:58:48 -05:00
Brad King 54732b0607 ENH: Finished CMAKE_<CONFIG>_POSTFIX feature and documented it. The value of this variable is used when a library target is created to initialize the <CONFIG>_POSTFIX target property. The value of this property is used (even for executables) to define a per-configuration postfix on the name of the target. Also enabled use of the OUTPUT_NAME property for non-executable targets. 2006-03-01 22:45:13 -05:00
Brad King 586a9427d3 ENH: Created target property INSTALL_NAME_DIR initalized by CMAKE_INSTALL_NAME_DIR specifying the directory portion of the OSX install_name field in shared libraries. This is the OSX equivalent of RPATH. 2006-02-24 13:13:14 -05:00
Andy Cedilnik ea5564624c ENH: Add a notion of a global target 2006-02-23 10:03:24 -05:00
Brad King c21287552b ENH: Switched order of slash and configuration name in cmGlobalGenerator::AppendDirectoryForConfig method to increase flexibility. 2006-02-19 19:28:53 -05:00
Brad King 8dd00d5b1e BUG: Fixed relink with new install framework. 2006-02-19 17:27:47 -05:00
Brad King 81677b3130 ENH: Generate import libraries for DLLs on Cygwin and MinGW. 2006-02-18 15:37:23 -05:00
Brad King 537e2b4ed5 ENH: Implemented RPATH specification support. It is documented by the command SET_TARGET_PROPERTIES. 2006-02-16 15:19:00 -05:00
Brad King afa8367885 BUG: Fixed cmTarget::GetFullPath to not append the configuration name when only one configuration is built. It now asks the generator what subdirectory if any to use for a given configuration name. 2006-02-03 11:36:11 -05:00
Brad King 22c62c9e65 BUG: Sweeping changes to cleanup computation of target names. This should
fix many bugs related to target names being computed inconsistently.

- Centralized computation of a target's file name to a method in
  cmTarget.  Now that global knowledge is always available the
  *_CMAKE_PATH cache variables are no longer needed.

- Centralized computation of link library command lines and link
  directory search order.

- Moved computation of link directories needed to link CMake targets
  to be after evaluation of linking dependencies.

This also removed alot of duplicate code in which each version had its
own bugs.

This commit is surrounded by the tags

  CMake-TargetNameCentralization1-pre

and

  CMake-TargetNameCentralization1-post

so make the large set of changes easy to identify.
2006-01-13 18:18:32 -05:00
Bill Hoffman a91947039a ENH: for all custom commands that can not be given to a target, add them to all targets in the current makefile 2006-01-09 14:40:31 -05:00
Bill Hoffman 86ad253427 BUG: fix for bug 2322, use CMAKE_EXECUTABLE_SUFFIX variable for exe suffix 2006-01-02 13:37:53 -05:00
Andy Cedilnik 416bbaef53 COMP: Remove warnings 2005-12-30 12:58:00 -05:00
Bill Hoffman 452925649a ENH: add better support for framework linking 2005-12-26 13:14:19 -05:00
Brad King 163e3ff56c ENH: Removed cmMakefile arguments from cmTarget methods because cmTarget has the ivar m_Makefile now. Re-implemented cmLocalUnixMakefileGenerator3::AppendAnyDepend to use the new global knowledge and avoid the need to look at the cache for information about other targets. This should fix problems with custom commands and executables with the OUTPUT_NAME set. Also the <target>_LIBRARY_TYPE cache variable is no longer needed at all and has been removed. 2005-12-14 10:47:33 -05:00
Bill Hoffman d0e801247f ENH: executable prefix and post fix variables should not be the same as the executable extension 2005-11-23 10:27:05 -05:00
Brad King 102dd34bdc BUG: Do not expand escape sequences when re-expanding variables in include directories, link directories, and link libraries. 2005-11-22 17:03:07 -05:00
Brad King d392acb4e6 ENH: Added versioned executable support. This partially addresses bug#2143. Also made OUTPUT_NAME work when installing executables. 2005-08-17 16:11:18 -04:00
Bill Hoffman 35e36b5b76 ENH: make sure source file depends are used to determine if custom commands are used 2005-07-26 13:26:37 -04:00
Ken Martin 7f2e7443bf ENH: added Alexander's target property TYPE 2005-07-01 10:57:39 -04:00
Ken Martin 3b66c0a574 ENH: some better checks 2005-06-22 09:12:05 -04:00
Ken Martin 369308ca76 ENH: make LOCATION an computed property of the target and get rid of a bunch of const junk 2005-06-22 09:06:46 -04:00
Ken Martin ea0a77fd81 ENH: removed old 1.2 compatability 2005-06-09 11:33:55 -04:00
Ken Martin 78b5cca6e3 ENH: another step to the next generator still not optimized yet 2005-05-18 13:46:00 -04:00
Brad King b1c5289787 ENH: Created cmTarget::GetLibraryNames to replace cmLocalUnixMakefileGenerator2::GetLibraryNames. Added cmTarget::GetLibraryCleanNames to be used by cmLocalUnixMakefileGenerator2. Now when a library is linked both the shared and static versions are removed from the build tree. In this way we avoid having both kinds of libraries present when the user switches BUILD_SHARED_LIBS on/off. This prevents problems with turning off shared libraries and then expecting the linker to use the static libraries only to find it is using the out-of-date shared versions. 2005-04-22 16:11:00 -04:00
Brad King 1b71f4477b ENH: Added cmTarget::GetBaseName and cmTarget::GetFullName methods and removed cmLocalGenerator::GetFullTargetName and cmLocalUnixMakefileGenerator2::GetBaseTargetName. This functionality is more sensibly implemented in cmTarget. It is also needed for an upcoming feature in which both the shared and static versions of a library will be removed before one is linked. 2005-04-22 15:23:21 -04:00
Andy Cedilnik 030dd4b91e ENH: Speedup by only getting the source once 2005-04-13 16:34:52 -04:00
Brad King 04b5d1613c COMP: Using const_iterator instead of iterator to walk through custom command dependencies. 2005-02-18 16:12:33 -05:00
Bill Hoffman 43bc8a0d63 COMP: remove warnings 2004-10-22 16:58:59 -04:00
Bill Hoffman ab817f2e81 COMP: fix warnings 2004-10-21 15:21:38 -04:00
Bill Hoffman 7cef36c628 ENH: add the ability to generate custom commands for a language that is not supported by an IDE 2004-10-21 14:34:02 -04:00
Bill Hoffman 5bf55d1590 ENH: shorten the symbols a bit and remove maps of std::string for map of cmStdString 2004-09-29 16:07:07 -04:00
Bill Hoffman 8cb20b7052 BUG: fix perfered linker language code 2004-09-22 17:50:36 -04:00
Bill Hoffman 692ba48c4e ENH: major changes to support addition of languages from cmake modules directory. 2004-09-22 14:42:05 -04:00
Bill Hoffman 9655299f08 ENH: initial fortran support 2004-08-06 14:51:41 -04:00
Bill Hoffman c8101e8e47 BUG: fix for bug 998, fix spelling errors 2004-07-26 16:59:55 -04:00
Bill Hoffman 86bf9f396e ENH: add a property for HAS_CXX to a target that will force the use of a c++ compiler in the linking of an executable that contains only c code 2004-04-22 14:38:17 -04:00
Bill Hoffman 1616135d4e ENH: remove warnings on sgi 2004-04-07 09:58:43 -04:00
Brad King 5c9fadee4f BUG: _LINK_TYPE cache variable should never be switched from optimized to debug or vice versa. 2004-04-02 13:21:20 -05:00
Andy Cedilnik c3840b5cc3 BUG: Fix Bug #445 - Same library in multiple projects can cause problems 2003-12-18 13:04:28 -05:00
Bill Hoffman 42b39099a7 ENH: add support for OBJECT_DEPENDS for visual studio 2003-07-31 15:32:53 -04:00
Andy Cedilnik ef20a2a8a9 BUG: Fix copy/paste typo 2003-07-22 13:15:45 -04:00
Ken Martin 117f961a5a moved function into cmTarget 2003-06-24 15:10:47 -04:00
Ken Martin a5a067fa1c removed some no longer required code 2003-06-23 11:16:20 -04:00
Ken Martin 703242071f more crazt changes source files now must match with full path 2003-06-05 14:40:25 -04:00
Bill Hoffman 0876c19dc8 ENH: remove warnings from borland 6 compiler 2003-05-29 09:34:06 -04:00
Bill Hoffman ca773a5d6d ENH: add stdlib.h for portability to borland 6 2003-05-24 10:07:58 -04:00
Bill Hoffman 94c396184e BUG: HasCXX did not use GetFileFormat and was broken 2003-03-15 10:04:37 -05:00
Bill Hoffman 3859417d1a ENH: add target properties 2002-12-20 17:15:45 -05:00
Brad King 4888c088ae ENH: Moved ExpandListVariables out of individual commands. Argument evaluation rules are now very consistent. Double quotes can always be used to create exactly one argument, regardless of contents inside. 2002-12-11 18:13:33 -05:00
Amitha Perera 939035ad91 BUG: the dependency analysis would incorrectly alphabetically re-order the
link lines, which affects external libraries pulled up from deep within
the dependency tree. Fixed by preserving order everywhere.
2002-11-19 18:01:05 -05:00
Brad King 1f6a3c67b1 ENH: Added reference to Copyright.txt. Removed old reference to ITK copyright. Changed program name to CMake instead of Insight in source file header. Also removed tabs. 2002-10-23 18:03:27 -04:00
Andy Cedilnik 9ed93397fb If you specify header file as source, it should still use C compiler and not CXX. Also fix COnly test so that it make sure that this still works... 2002-10-06 12:12:59 -04:00
Ken Martin 7ddb408621 removed some includes 2002-09-27 16:24:10 -04:00
Ken Martin 7b5a8762c6 modified how source files store properties 2002-08-16 11:20:18 -04:00
Ken Martin 44a7cd55ff removed all source lists from the system and made them vectors. Also appended _CMAKE_PATH to the end of the automatic cache entries for executables and libraries. Odds of all these changes working are slim but cmake builds and passes all its tests. VTK40 starts building 2002-06-27 15:57:09 -04:00
Bill Hoffman 32353c55e5 BUG: try to tell the difference between variables with sources and other variables 2002-06-25 09:59:08 -04:00
Ken Martin d1879a77e8 modified to handle src list vectors without proper dollar signs 2002-06-24 16:42:34 -04:00
Ken Martin 38145ad5a4 modified create test source to create a vector 2002-06-19 12:52:16 -04:00
Brad King 28895b0f9f ERR: Fixed compiler warnings. 2002-06-18 17:20:27 -04:00
Bill Hoffman e5668ea656 ENH: only add _LIB_DEPEND information for libraries and modules 2002-06-03 10:25:55 -04:00
Amitha Perera c24c2cca18 BUG: never make a target depend on itself. This was causing unnecessary library duplication, resulting in link errors on some platforms. 2002-05-29 15:00:37 -04:00
Amitha Perera 1c9981eb1d FIX: Remove assert since it was breaking IRIX builds. 2002-05-11 22:28:59 -04:00
Jim Miller de44f1faac FIX: Const reference to a set needs a const_iterator. (.NET build error) 2002-05-10 14:06:34 -04:00
Amitha Perera 0e6b39e52f BUG: Correct some of the dependency analysis code.
- Make sure the original link line is untouched
- Avoid duplicating the link line when supporting version < 1.4
- Make sure the cyclic dependencies and such are output correctly in
  complicated cases.
- Avoid outputing dependencies that are already satisfied on the original
  link line when possible.
2002-05-10 13:35:42 -04:00
Bill Hoffman 6734d3bb88 ENH: change set<string> to set<cmStdString> to avoid long symbols that crash ar on solaris 2002-05-09 09:33:52 -04:00
Bill Hoffman cdf550de13 ENH: rework library depend stuff 2002-05-03 16:34:05 -04:00
Amitha Perera 4bff970413 - bug fix where paths weren't being output when LIB_OUT_PATH *isn't* used
- test case for above mentioned bug
- more comments. Comments are good.
2002-05-03 00:27:34 -04:00
Bill Hoffman 0838265fdc check for optimized or debug library adds 2002-05-02 19:09:12 -04:00
Bill Hoffman 46e9d970e9 remove canonical conversion for lib names 2002-05-02 16:13:18 -04:00
Bill Hoffman a80153b5cb make it backwards compatible with old cmake 2002-05-02 15:56:13 -04:00
Bill Hoffman 2242006ca1 Debug optimized cache fixes 2002-05-02 15:10:19 -04:00
Amitha Perera 4fe8947bcc BUG: The library paths should stay with the libraries during dependency analysis. 2002-05-02 13:41:40 -04:00
Bill Hoffman 27fe57b716 ENH: change LINK_LIBRARY to add to targets 2002-05-02 13:17:10 -04:00
Amitha Perera 3d4230033a BUG: if a_LIBS_DEPENDS exists but is empty, there are no explicit dependencies. 2002-05-02 02:27:26 -04:00
Amitha Perera 099436db26 ENH: Make the LinkLibraries command contribute dependencies towards AddLibraries. 2002-05-01 16:33:27 -04:00
Amitha Perera 1f8df8585e ENH: Add library dependency analysis. 2002-05-01 14:00:21 -04:00
Bill Hoffman 4ea0f6b949 ENH: add enable language support for PROJECT command, this means that a C only project can be built with cmake, even without a cxx compiler 2002-04-02 15:43:23 -05:00
Bill Hoffman 8b3b49a010 ENH: major change, the cmMakefile now contains a master list of cmSourceFile objects, the source lists reference the list via pointers, also you can now set properties on a file, like compile flags, abstract, etc. 2002-03-29 10:06:30 -05:00
Will Schroeder a6a43d5320 ENH:Updated copyright 2002-01-21 15:30:43 -05:00
Brad King cfa25e9e1a ENH: Added INSTALL_PROGRAMS command and corresponding support. This involved splitting cmTarget::INSTALL into INSTALL_FILES and INSTALL_PROGRAMS enum values. INSTALL_FILES no longer adds execute permission. The INSTALL_PROGRAMS commnad takes either a list of explicit names, or a regex. It will not expand source lists like the INSTALL_FILES command will. 2001-07-31 11:29:21 -04:00
Amitha Perera e169953e92 ENH: Source and header file extensions are in variables in cmMakefile.
AUX_SOURCE_DIRECTORY will only add files that have a "source" extension.
2001-07-16 18:40:42 -04:00
Ken Martin 012603c746 duh 2001-06-13 13:53:11 -04:00
Ken Martin 521e301116 minor cvs web changeCMakeLists.txt 2001-06-13 13:49:24 -04:00
Ken Martin dbebd0a276 added install rules 2001-05-23 11:31:43 -04:00
Bill Hoffman e606732b94 ENH: allow duplicate libraries 2001-05-23 09:35:14 -04:00
Ken Martin a15ae83e95 fix for expaning libraries prior to generating dsp 2001-05-10 15:32:49 -04:00
Ken Martin 2da0c57d46 added TARGET_LINK_LIBRARY command and support for debug and release libraries to link against 2001-04-30 10:44:00 -04:00
Will Schroeder 54cfe84f3f ENH:New copyright 2001-04-27 08:01:17 -04:00
Ken Martin 73f04d1409 many fixes and cleanup and features 2001-04-24 16:49:12 -04:00