Commit Graph

57 Commits

Author SHA1 Message Date
Brad King b0cd630521 Refactor find_* command final path list computation
All find_* commands re-root the list of paths and then add trailing
slashes.  Factor this pair of calls out into a dedicated method.  The
new method would be the only caller to AddTrailingSlashes, so subsume
that method into it.
2011-09-23 14:36:27 -04:00
Brad King b41ad3b399 Teach find_(library|package) about Linux multiarch ()
Implement support for multiarch as specified here:

  http://wiki.debian.org/Multiarch
  https://wiki.ubuntu.com/MultiarchSpec

Detect the <arch> part of <prefix>/lib/<arch> from the implicit library
search path from each compiler to set CMAKE_<lang>_LIBRARY_ARCHITECTURE.
Define CMAKE_LIBRARY_ARCHITECTURE using one of these values (they should
all be the same).  Teach the find_library and find_package commands to
search <prefix>/lib/<arch> whenever they would search <prefix>/lib.
2011-06-08 10:04:44 -04:00
Brad King 183d261b11 Fix find_* argument parsing crash ()
Previously the command

  find_path(VAR DOC "")

would crash because the argument pre-processing removed the DOC ""
arguments but the rest of the parsing assumes at least 2 arguments.
Reject the call with an error instead.
2010-11-30 08:39:16 -05:00
Brad King 5303fbf09e Speedup find_* commands ()
Delay computation of the command documentation until it is needed.
It is wasteful to do it in the constructor on every call.

Inspired-By: Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
2010-11-12 10:47:28 -05:00
Todd Gamblin 1221581aa8 Teach find_* commands to ignore some paths
Add platform configuration variable CMAKE_SYSTEM_IGNORE_PATH and user
configuration variable CMAKE_IGNORE_PATH.  These specify a set of
directories that will be ignored by all the find commands.  Update
FindPackageTest so that several cases will fail without a functioning
CMAKE_IGNORE_PATH.
2010-08-13 11:53:28 -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 9b8d30081c ENH: Clarify PATH_SUFFIXES documentation
This clarifies documentation of the find_* commands' PATH_SUFFIXES
option.  The option adds paths with the suffixes but does not remove the
paths without the suffixes.
2008-10-14 08:43:19 -04:00
Brad King c1075aef7b BUG: Fix find_* search order with path suffixes
In cmFindBase we were searching all path suffixes appended to all paths
before considering the paths without any suffixes.  Instead we should
consider each path with and without suffixes before moving to the next
path.  See issue .
2008-10-13 09:58:22 -04:00
Brad King 4543a3ea05 BUG: In find_* commands support NO_* options in short-hand
- The short-hand forms do not document the NO_* options.
  - CMake 2.4 and 2.6.0 accepted them accidentally, but also
    treated the options as paths.
  - Now the options are accepted but do not become paths.
2008-06-10 13:22:18 -04:00
Brad King d50785e26e ENH: Make find_* command search order more intuitive.
- The CMAKE_PREFIX_PATH and similar variables have both
    environment and CMake cache versions.
  - Previously the environment value was checked before the
    cache value.
  - Now the cache value is favored because it is more specific.
2008-06-09 15:22:09 -04:00
Brad King 5b406c9044 ENH: Add HINTS option to find_* commands.
- Hints are searched after user locations but before system locations
  - The HINTS option should have paths provided by system introspection
  - The PATHS option should have paths that are hard-coded guesses
2008-06-09 15:08:59 -04:00
Brad King 6706f84cd9 ENH: Refactor find_* command framework/appbundle search order impl.
- CMAKE_FIND_FRAMEWORK and CMAKE_FIND_APPBUNDLE are supposed to specify
    whether to find frameworks/appbundles FIRST, LAST, ONLY, or NEVER.
  - Previously this affected only the placement of CMAKE_FRAMEWORK_PATH
    and CMAKE_APPBUNDLE_PATH with respect to the other path specifiers.
  - Now it behaves as documented.  The entire search path is inspected for
    each kind of program, library, or header before trying the next kind.
  - Additionally the ONLY mode is now honored for headers so that users
    do not end up with a library in framework and a header from elsewhere.
2008-06-09 11:58:29 -04:00
Brad King d53e5dec37 ENH: In find_* implementation centralize addition of trailing slashes
- Create cmFindCommon::AddTrailingSlashes
  - Use it in cmFindBase and cmFindPackageCommand
  - Remove duplication from other find commands
2008-06-09 11:57:56 -04:00
Brad King abb1c0e25e BUG: Fix find_* command calls with no PATHS but new-style options.
- In cmFindBase when CheckCommonArgument returns true, set newStyle
  - Otherwise if there are no PATHS then the ancient-style compatibility
    mode is enabled and the common argument is treated as a path.
2008-06-08 11:41:08 -04:00
Brad King 3c8ed0d600 BUG: Fix cmFindBase::AddMacPath to actually use its arguments after previous refactoring commit. 2008-06-06 09:06:27 -04:00
Brad King 789c167b6f ENH: Refactor cmFindCommon, cmFindBase, and cmFindPackageCommand
- Add each part of the search order in a separate method.
  - Collect added paths in an ivar in cmFindCommon.
  - Move user path storage up to cmFindCommon and share
    between cmFindBase and cmFindPackageCommand.
  - Expand user path registry values up in cmFindCommon
    - Enables 32-/64-bit registry view for find_package
    - Disables registry expansion for paths not specified
      with the PATHS argument, which is not expected.
2008-06-05 18:20:16 -04:00
Brad King a9a33a5c5e BUG: Fix 64-bit build of CMake so it can find 32-bit VS install.
- cmFindBase should search both 32-bit and 64-bit registry views
    for FIND_PROGRAM even if CMAKE_SIZEOF_VOID_P is not set.
  - Needed because the variable is not available when CMAKE_MAKE_PROGRAM
    is to be found.
2008-06-05 09:54:28 -04:00
Brad King 3571198ea8 BUG: Fix previous registry lookup change for executables.
- The target platform does not matter for finding executables
    so find_program should expand to both 32-bit and 64-bit registry
    values.
  - See issue .
2008-05-27 16:50:04 -04:00
Brad King 41ceabb60f BUG: Fix registry lookups for FIND commands to use view of target platform.
- See issue .
2008-05-27 14:47:46 -04:00
Bill Hoffman 60e0c7ed9c ENH: better fix for not adding / 2008-05-23 15:52:15 -04:00
Bill Hoffman 2218d1527f BUG: 7011 findqt hangs because of glob with find_path and framework header serach 2008-05-23 15:25:04 -04:00
Bill Hoffman d7e50fb271 BUG: fix network path by mistake in search 2008-04-06 22:19:06 -04:00
Brad King 5233b75a77 ENH: Improve handling of old-style compatibility.
- Remove CMP_0001 (no slash in target name) and restore
    old CMAKE_BACKWARDS_COMPATIBILITY check for it
  - Replace all checks of CMAKE_BACKWARDS_COMPATIBILITY
    with cmLocalGenerator::NeedBackwardsCompatibility calls
  - Create new CMP_0001 to determine whether or not
    CMAKE_BACKWARDS_COMPATIBILITY is used.
    (old = use, new = ignore)
  - Show CMAKE_BACKWARDS_COMPATIBILITY in cache only when
    CMP_0001 is set to OLD or WARN
  - Update documentation of cmake_policy and cmake_minimum_required
    to indicate their relationship and the 2.4 version boundary
  - When no cmake policy version is set in top level makefile
    implicitly call cmake_policy(VERSION 2.4) which restores
    CMAKE_BACKWARDS_COMPATIBILITY and other 2.4 compatibility
  - Fix tests MakeClean and Preprocess to call
    cmake_policy(VERSION 2.6) because they depend on new policies
2008-03-07 15:30:35 -05:00
Alexander Neundorf 9e8a1c639a STYLE: PATHS is optional ()
Alex
2008-01-17 17:49:30 -05:00
Alexander Neundorf eccee212e1 STYLE: fix typo ()
Alex
2008-01-17 17:43:04 -05:00
Brad King b424df917d ENH: Major improvements to the FIND_PACKAGE command. See bug .
- Use CMAKE_PREFIX_PATH and CMAKE_SYSTEM_PREFIX_PATH among other means
    to locate package configuration files.
  - Create cmFindCommon as base for cmFindBase and cmFindPackageCommand
  - Move common functionality up to cmFindCommon
  - Improve documentation of FIND_* commands.
  - Fix FIND_* commands to not add framework/app paths in wrong place.
2008-01-17 09:02:31 -05:00
Amitha Perera 4d9259c15b STYLE: Spelling fixes on documentation 2008-01-09 22:09:19 -05:00
Alexander Neundorf 9aeffa6e11 BUG: fix , if a directory inside CMAKE_FIND_ROOT_PATH is given to a
FIND_XXX() command, don't prepend the root to it (since it is already in
this root)

Alex
2008-01-06 17:18:15 -05:00
Brad King 0a7bb41129 ENH: Make FIND_* commands look in the CMAKE_PREFIX_PATH directories directly after looking in each command's specific subdirectory (/include, /lib, or /bin). This may be useful on Windows where projects could be installed in a single directory. See issue . 2007-12-28 12:01:37 -05:00
Brad King 07db9b83a7 ENH: Renamed CMAKE_FIND_PREFIX_PATH to CMAKE_PREFIX_PATH for brevity and consistency with other find path variable names. 2007-12-19 11:06:47 -05:00
Brad King d1fdc38c68 ENH: Added CMAKE_SYSTEM_PREFIX_PATH variable. 2007-12-19 10:34:43 -05:00
Brad King 540a98aa45 STYLE: Fixed terminology to avoid confusion between roots and prefixes. 2007-12-15 14:14:05 -05:00
Alexander Neundorf e22f6b7f05 STYLE: change wording of FIND_XXX() docs to be more correct
Alex
2007-10-26 13:36:46 -04:00
Alexander Neundorf 0398d8ad38 ENH: add support for CMAKE_FIND_PREFIX_PATH as discussed with Brad.
CMAKE_FIND_PREFIX_PATH is both an environment variable and a cmake variable,
which is a list of base directories where FIND_PATH, FIND_FILE, FIND_PROGRAM
and FIND_LIBRARY will search in the respective subdirectories

Alex
2007-10-26 09:55:40 -04:00
Brad King 546d7e72d9 BUG: Fixed spelling and formatting of new documentation. 2007-06-08 13:43:17 -04:00
Alexander Neundorf e737d7d07a STYLE: add documentation for CMAKE_FIND_ROOT_PATH
Alex
2007-06-07 14:57:32 -04:00
Alexander Neundorf aee311a89d STYLE: fix line lengths
Alex
2007-05-18 08:49:06 -04:00
Alexander Neundorf 61d3444f93 ENH: merge CMake-CrossCompileBasic to HEAD
-add a RESULT_VARIABLE to INCLUDE()
-add CMAKE_TOOLCHAIN_FILE for specifiying your (potentially crosscompiling) toolchain
-have TRY_RUN() complain if you try to use it in crosscompiling mode (which were compiled but cannot run on this system)
-use CMAKE_EXECUTABLE_SUFFIX in TRY_RUN(), probably TRY_RUN won't be able to
run the executables if they have a different suffix because they are
probably crosscompiled, but nevertheless it should be able to find them
-make several cmake variables presettable by the user: CMAKE_C/CXX_COMPILER, CMAKE_C/CXX_OUTPUT_EXTENSION, CMAKE_SYSTEM_NAME, CMAKE_SYSTEM_INFO_FILE
-support prefix for GNU toolchains (arm-elf-gcc, arm-elf-ar, arm-elf-strip etc.)
-move ranlib on OSX from the file command to a command in executed in cmake_install.cmake
-add support for stripping during install in cmake_install.cmake
-split out cl.cmake from Windows-cl.cmake, first (very incomplete) step to support MS crosscompiling tools
-remove stdio.h from the simple C program which checks if the compiler works, since this may not exist for some embedded platforms
-create a new CMakeFindBinUtils.cmake which collects the search fro ar, ranlib, strip, ld, link, install_name_tool and other tools like these
-add support for CMAKE_FIND_ROOT_PATH for all FIND_XXX commands, which is a
list of directories which will be prepended to all search directories, right
now as a cmake variable, turning it into a global cmake property may need
some more work
-remove cmTestTestHandler::TryExecutable(), it's unused
-split cmFileCommand::HandleInstall() into slightly smaller functions

Alex
2007-05-17 13:20:44 -04:00
Bill Hoffman 255a4b966e BUG: fix problem with path suffix and mac frameworks and find stuff, showed up in FindPythonLibs.cmake 2006-12-28 15:31:47 -05:00
Bill Hoffman 93002a4400 BUG: fix for 4009 lib64 should work with path suffix 2006-11-11 14:06:38 -05:00
Brad King bfe885f6ef ENH: Clarified search behavior when the objective is not found. 2006-10-19 09:18:59 -04:00
Brad King ec637248da BUG: If the user specifies a cache entry on the command line without a type, the FIND_* commands should add the type and docstring to the given value and put it back in the cache. 2006-07-18 15:21:26 -04:00
Ken Martin 2af4710525 STYLE: fix line length 2006-05-10 15:46:45 -04:00
Bill Hoffman cae4e6b37a ENH: add patch for finding applications on OSX 2006-04-13 11:00:52 -04:00
Bill Hoffman 3cf3fc510f ENH: make sure framework search order is correct 2006-03-30 11:55:19 -05:00
Bill Hoffman 4fd3292d04 ENH: add a test for find framework stuff in find_library, and fix the framework search stuff 2006-03-29 13:33:49 -05:00
Brad King 2b197edb8a ENH: Added check of CMAKE_BACKWARDS_COMPATIBILITY to skip the CMake system path search when simulating CMake 2.2 and earlier. 2006-03-28 14:45:22 -05:00
Brad King 3731dff127 ENH: Added NO_CMAKE_ENVIRONMENT_PATH, NO_CMAKE_PATH, NO_SYSTEM_ENVIRONMENT_PATH, and NO_CMAKE_SYSTEM_PATH options back to allow more granularity than NO_DEFAULT_PATH. 2006-03-24 14:16:31 -05:00
Bill Hoffman 0fa30e1a69 ENH: clean up find stuff so that NO_SYSTEM_PATH is backwards compatible and you get put system env variables in the find commands 2006-03-16 17:49:16 -05:00
Ken Martin 3d96e52261 STYLE: some m_ to this-> cleanup 2006-03-15 11:02:08 -05:00