summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileTargetGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'tru64-make-includes'Brad King2010-06-151-3/+6
|\
| * Tru64: Use full-path include directives in Makefiles (#10569)Brad King2010-06-141-3/+6
| | | | | | | | | | | | | | | | Tru64's make(1) resolves relative paths in "include" directives with respect to the includer. This is inconsistent with all other known make tools. Note that this make tool treats the path literally so we cannot use our standard FULL path code which escapes spaces. Instead qualify the paths with $(CMAKE_BINARY_DIR) to avoid the problem.
* | Merge branch 'mingw-response-files'Brad King2010-06-151-2/+13
|\ \ | |/ |/|
| * Use platform variable for response file flagBrad King2010-03-111-1/+12
| | | | | | | | | | | | | | | | Create platform variable "CMAKE_<LANG>_RESPONSE_FILE_LINK_FLAG" to specify an alternative to "@" for referencing response files. It applies specifically to response files with linker options. See issue #10401.
| * Use forward slashes for objects in response filesBrad King2010-03-111-1/+1
| | | | | | | | | | | | | | | | | | | | Response files are parsed by tools, not by shells. We teach cmLocalGenerator::Convert() a new "RESPONSE" output format and use it for objects listed in response files. It does not do special slash or MSYS root translation like the "SHELL" format does. This is necessary for GNU tools on Windows to understand response file content. See issue #10401.
* | -fix GetFrameworkFlags() for Mac, which was broken with my last commitAlex Neundorf2010-05-031-2/+1
| | | | | | | | Alex
* | -improve crosscompiling from Linux to iphone (#10526)Alex Neundorf2010-05-011-6/+8
|/ | | | | | Patch by Karol Krizka Alex
* Fix line-too-long style violationsBrad King2009-10-231-1/+2
| | | | | The commit "Define per-target OSX_ARCHITECTURES property" introduced some long lines. This wraps them into multiple shorter lines.
* Define per-target OSX_ARCHITECTURES propertyBrad King2009-10-211-0/+4
| | | | | | | | | | | 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.
* remove unused variables, reported by icpcAlexander Neundorf2009-10-031-3/+0
| | | | Alex
* Create INTERPROCEDURAL_OPTIMIZATION build featureBrad King2009-10-021-0/+5
| | | | | | | | 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.
* Introduce "build feature" lookup frameworkBrad King2009-10-021-0/+12
| | | | | | | 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.
* Centralize language flag addition for MakefilesBrad King2009-10-021-4/+11
| | | | | | We create cmMakefileTargetGenerator::AddFeatureFlags to consolidate addition of language flags. Currently it just adds the flags from generic per-language flag variables (AddLanguageFlags).
* Fix module definition file reference for VS6 NMakeBrad King2009-09-301-4/+4
| | | | | | When building through NMake with VS 6, the module definition file must be passed without spaces in the path. This is because 'cl -link' does not escape the spaces when passing the value on to the linker.
* Fix use of module .def files for MS toolsBrad King2009-09-291-0/+28
| | | | | | | 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.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-14/+9
| | | | | | | 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.
* Do not call CollapseFullPath for PDB file namesBrad King2009-09-171-1/+1
| | | | | | | | | | | | | | | | Some vendor tools convert PDB file names given on the command line to lower-case before creating the file. When CMake places a mixed-case PDB file name into the build system, the file does not exist the first time and it is written with mixed case. After the first build though the native tool has created a lower-case version of the file. If CMake does CollapseFullPath again, the file exists so the actual-case lookup gets the lower-case name. This causes the build files to change so the project rebuilds. The solution is to avoid calling CollapseFullPath for files generated by the build. In the case of PDB files we already construct them from paths that have been collapsed, so we can just skip the call altogether. See issue #9350.
* ENH: Pass config to cmTarget::GetDirectory()Brad King2009-07-031-1/+1
| | | | | | | This teaches the makefile generators to always pass the configuration name to the cmTarget::GetDirectory method. Later this will allow per-configuration target output directories, and it cleans up use of the current API.
* ENH: Create cmMakefileTargetGenerator::ConfigNameBrad King2009-07-031-2/+2
| | | | | | 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.
* ENH: Cleanup make progress rule generation codeBrad King2009-06-251-39/+0
| | | | | | | | 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.
* ENH: Allow projects to disable per-rule echo linesBrad King2009-03-161-14/+20
| | | | | | | | | 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.
* ENH: Allow projects to disable per-rule progressBrad King2009-03-161-9/+22
| | | | | | | | 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.
* ENH: Factor out makefile progress rule commandsBrad King2009-03-161-24/+18
| | | | This factors duplicate progress rule code into a common method.
* BUG: Pass shared library export symbol in DEFINESBrad King2009-02-271-2/+1
| | | | | | | The <target>_EXPORTS macro defined for object files when built in a shared library <target> should be put in the <DEFINES> make rule replacement and not <FLAGS>. Also, it should honor the platform variable CMAKE_<LANG>_DEFINE_FLAG. See issue #8107.
* ENH: Define RULE_LAUNCH_* propertiesBrad King2009-02-101-0/+2
| | | | | | | 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.
* ENH: Give target in which custom commands buildBrad King2009-02-101-1/+1
| | | | | | This gives the cmTarget instance for which custom command rules are being generated to cmLocalUnixMakefileGenerator3::AppendCustomCommands. It will be useful in the future.
* BUG: Fix preprocess and assembly rule expansionBrad King2009-02-021-12/+12
| | | | | | The recent change to avoid expanding rule variables in informational and 'cd' commands broke the logical order in generation of preprocess and assembly rules. This corrects the order.
* BUG: Do not expand rule variables in info rulesBrad King2009-02-021-33/+36
| | | | | | | Previously the makefile generator would expand rule variables even on its progress and echo commands for object compilation rules (but not for link rules). This fixes the implementation to only expand rule variables on user-specified rules.
* ENH: Refactor custom command rule hashingBrad King2009-02-021-6/+5
| | | | | | | | | | This simplifies computation of custom command rule hashes to hash content exactly chosen as the custom commands are generated. Unfortunately this will change the hashes of existing build trees from earlier CMake versions, but this is not a big deal. The change is necessary so that in the future we can make optional adjustments to custom command lines at generate time without changing the hashes every time the option is changed.
* BUG: Fix color check for dependency scanningBrad King2008-10-151-2/+5
| | | | | Generation of color rules for dependency scanning messages did not account for disabling color at generation time. See issue #7814.
* ENH: Support object lists longer than 128K on MSVCBrad King2008-10-151-8/+29
| | | | | | We use response files to list object files for the MSVC linker. The linker complains if any response file is greater than 128K, so we split the object file lists into multiple response files.
* ENH: Factor out listing of objects on command lineBrad King2008-10-151-0/+38
| | | | | | Previously generation of object file lists for linker and cleaning command lines was duplicated for library and executable target generators. This combines the implementations.
* ENH: Fix optional use of relative paths.Brad King2008-10-091-5/+5
| | | | | | | These changes refactor cmLocalGenerator methods Convert and ConvertToOutputForExisting to support references inside the build tree using relative paths. After this commit, all tests pass with Makefile generators when relative paths are enabled by default. See issue #7779.
* ENH: Simplify framework -F flag generationBrad King2008-10-091-1/+3
| | | | | This removes an unnecessary use of ConvertToOutputForExisting which is needed only on Windows to consider short-pathing.
* ENH: Use new link info during dependency scanningBrad King2008-09-151-7/+7
| | | | This removes another use of the old-style link line computation.
* BUG: Include less content as input to "rule hash" computation.Brad King2008-06-031-1/+7
| | | | | | | - The rule hash should use only commands specified by the user. - No make output (echo and progress) rules should be included. - No outputs or dependencies need be included. The native build tool will take care of them.
* ENH: Introduce "rule hashes" to help rebuild files when rules change.Brad King2008-06-021-7/+6
| | | | | | | | | | | | | | - In CMake 2.4 custom commands would not rebuild when rules changed. - In CMake 2.6.0 custom commands have a dependency on build.make which causes them to rebuild when changed, but also when any source is added or removed. This is too often. - We cannot have a per-rule file because Windows filesystems do not deal well with lots of small files. - Instead we add a persistent CMakeFiles/CMakeRuleHashes.txt file at the top of the build tree that is updated during each CMake Generate step. It records a hash of the build rule for each file to be built. When the hash changes the file is removed so that it will be rebuilt.
* BUG: Fix makefile generator to have link rules depend on all full path ↵Brad King2008-05-211-38/+7
| | | | libraries that appear on the link line. This allows projects to relink when imported targets have changed.
* ENH: Add SKIP_RULE_DEPENDS option for add_custom_command()Brad King2008-05-141-2/+5
| | | | | | - Allows make rules to be created with no dependencies. - Such rules will not re-run even if the commands themselves change. - Useful to create rules that run only if the output is missing.
* BUG: Fix generation of some paths into .cmake files in the build tree to ↵Brad King2008-05-101-2/+4
| | | | escape strings for the CMake language. This fix allows users to put double quotes in the SOVERSION of a shared library.
* BUG: fix for bug 6834 RC should not get all COMPILE_FLAGS from a target and ↵Bill Hoffman2008-04-221-2/+27
| | | | should work the same way as it does in the vs ide
* BUG: When MACOSX_PACKAGE_LOCATION specifies Headers/foo we must still create ↵Brad King2008-04-141-2/+7
| | | | the Headers symlink.
* BUG: make sure OBJECT_DIR is in the path of the SHELLBill Hoffman2008-04-111-0/+3
|
* BUG: Correct Mac OS X framework behaviorBrad King2008-04-081-5/+5
| | | | | | | | | | | | - 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
* BUG: response file must be a copy if different or you get relinks every time ↵Bill Hoffman2008-04-031-0/+1
| | | | you run cmake
* ENH: Handle large object file lists on some platformsBrad King2008-02-271-0/+24
| | | | | | | - 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)
* ENH: Simplify make build rule generation by removing use of OBJECTS_QUOTED ↵Brad King2008-02-241-14/+4
| | | | and TARGET_QUOTED rule variables and updating the generation of OBJECTS to always use the newer cmLocalGenerator::Convert method.
* BUG: Link scripts should be generated with copy-if-different and included as ↵Brad King2008-02-201-1/+4
| | | | a dependency of the link rule.
* ENH: Cleanup impl of PUBLIC_HEADER, PRIVATE_HEADER, and RESOURCE propertiesBrad King2008-02-181-32/+26
|
* ENH: Cleanup building of OS X bundle contentBrad King2008-02-151-16/+68
| | | | | | | | | | - 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