X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FCMake.html;h=0bafedd9b0930254569a67348b90efe9fde7885c;hb=a75ce9f5d2236d93c117e861e60e6f3f748c9555;hp=ef50f5279eb66c5dcda5371e5c547ba8a4d7c2ce;hpb=25f1d0310c522482a417785ae53bd92680dde48c;p=oota-llvm.git diff --git a/docs/CMake.html b/docs/CMake.html index ef50f5279eb..0bafedd9b09 100644 --- a/docs/CMake.html +++ b/docs/CMake.html @@ -15,17 +15,21 @@
  • Quick start
  • Basic CMake usage
  • Options and variables -
    -

    Written by Óscar Fuentes

    +

    Written by Oscar Fuentes

    @@ -41,7 +45,14 @@ the files needed by your build tool (GNU make, Visual Studio, etc) for building LLVM.

    -

    If you are really anxious +

    If you are really anxious about getting a functional LLVM build, + go to the Quick start section. If you + are a CMake novice, start on Basic CMake + usage and then go back to the Quick + start once you know what you are + doing. The Options and variables section + is a reference for customizing your build. If you already have + experience with CMake, this is the recommended starting point. @@ -56,8 +67,8 @@

      -
    1. Download - and install CMake. Version 2.6.2 is the minimum required.

      +
    2. Download + and install CMake. Version 2.8 is the minimum required.

    3. Open a shell. Your development tools must be reachable from this shell through the PATH environment variable.

      @@ -105,7 +116,43 @@
      -

      TODO

      +

      This section explains basic aspects of CMake, mostly for + explaining those options which you may need on your day-to-day + usage.

      + +

      CMake comes with extensive documentation in the form of html + files and on the cmake executable itself. Execute cmake + --help for further help options.

      + +

      CMake requires to know for which build tool it shall generate + files (GNU make, Visual Studio, Xcode, etc). If not specified on + the command line, it tries to guess it based on you + environment. Once identified the build tool, CMake uses the + corresponding Generator for creating files for your build + tool. You can explicitly specify the generator with the command + line option -G "Name of the generator". For knowing the + available generators on your platform, execute

      + +
      +

      cmake --help

      +
      + +

      This will list the generator's names at the end of the help + text. Generator's names are case-sensitive. Example:

      + +
      +

      cmake -G "Visual Studio 8 2005" path/to/llvm/source/root

      +
      + +

      For a given development platform there can be more than one + adequate generator. If you use Visual Studio "NMake Makefiles" + is a generator you can use for building with NMake. By default, + CMake chooses the more specific generator supported by your + development environment. If you want an alternative generator, + you must tell this to CMake with the -G option.

      + +

      TODO: explain variables and cache. Move explanation here from + #options section.

      @@ -133,7 +180,7 @@

      Variables are stored on the CMake cache. This is a file - named CMakeCache.txt on the root of the build + named CMakeCache.txt on the root of the build directory. Do not hand-edit it.

      Variables are listed here appending its type after a colon. It is @@ -156,13 +203,13 @@

      Here are listed some of the CMake variables that are used often, along with a brief explanation and LLVM-specific notes. For full documentation, check the CMake docs or execute cmake - --help-variable VARIABLE_NAME. + --help-variable VARIABLE_NAME.

      CMAKE_BUILD_TYPE:STRING
      Sets the build type for make based generators. Possible - values are Release, Debug, RelWithDebInfo and MiniSizeRel. On + values are Release, Debug, RelWithDebInfo and MinSizeRel. On systems like Visual Studio the user sets the build type with the IDE settings.
      @@ -170,6 +217,17 @@
      Path where LLVM will be installed if "make install" is invoked or the "INSTALL" target is built.
      +
      LLVM_LIBDIR_SUFFIX:STRING
      +
      Extra suffix to append to the directory where libraries are to + be installed. On a 64-bit architecture, one could use + -DLLVM_LIBDIR_SUFFIX=64 to install libraries to /usr/lib64.
      + +
      CMAKE_C_FLAGS:STRING
      +
      Extra flags to use when compiling C source files.
      + +
      CMAKE_CXX_FLAGS:STRING
      +
      Extra flags to use when compiling C++ source files.
      +
      BUILD_SHARED_LIBS:BOOL
      Flag indicating is shared libraries will be built. Its default value is OFF. Shared libraries are not supported on Windows and @@ -192,27 +250,94 @@ to X86. On the other cases defaults to all. Example: -DLLVM_TARGETS_TO_BUILD="X86;PowerPC;Alpha".
      +
      LLVM_BUILD_TOOLS:BOOL
      +
      Build LLVM tools. Defaults to ON. Targets for building each tool + are generated in any case. You can build an tool separately by + invoking its target. For example, you can build llvm-as + with a makefile-based system executing make llvm-as on the + root of your build directory.
      + +
      LLVM_INCLUDE_TOOLS:BOOL
      +
      Generate build targets for the LLVM tools. Defaults to + ON. You can use that option for disabling the generation of build + targets for the LLVM tools.
      + +
      LLVM_BUILD_EXAMPLES:BOOL
      +
      Build LLVM examples. Defaults to OFF. Targets for building each + example are generated in any case. See documentation + for LLVM_BUILD_TOOLS above for more details.
      + +
      LLVM_INCLUDE_EXAMPLES:BOOL
      +
      Generate build targets for the LLVM examples. Defaults to + ON. You can use that option for disabling the generation of build + targets for the LLVM examples.
      + +
      LLVM_BUILD_TESTS:BOOL
      +
      Build LLVM unit tests. Defaults to OFF. Targets for building + each unit test are generated in any case. You can build a specific + unit test with the target UnitTestNameTests (where at this + time UnitTestName can be ADT, Analysis, ExecutionEngine, + JIT, Support, Transform, VMCore; see the subdirectories + of unittests for an updated list.) It is possible to build + all unit tests with the target UnitTests.
      + +
      LLVM_INCLUDE_TESTS:BOOL
      +
      Generate build targets for the LLVM unit tests. Defaults to + ON. You can use that option for disabling the generation of build + targets for the LLVM unit tests.
      + +
      LLVM_APPEND_VC_REV:BOOL
      +
      Append version control revision info (svn revision number or git + revision id) to LLVM version string (stored in the PACKAGE_VERSION + macro). For this to work cmake must be invoked before the + build. Defaults to OFF.
      +
      LLVM_ENABLE_THREADS:BOOL
      Build with threads support, if available. Defaults to ON.
      +
      LLVM_ENABLE_ASSERTIONS:BOOL
      +
      Enables code assertions. Defaults to OFF if and only if + CMAKE_BUILD_TYPE is Release.
      +
      LLVM_ENABLE_PIC:BOOL
      -
      Add the -fPIC flag to the compiler command-line, if the - compiler supports this flag. Some systems, like Windows, does not - need this flag. Defaults to OFF.
      +
      Add the -fPIC flag for the compiler command-line, if the + compiler supports this flag. Some systems, like Windows, do not + need this flag. Defaults to ON.
      + +
      LLVM_ENABLE_WARNINGS:BOOL
      +
      Enable all compiler warnings. Defaults to ON.
      + +
      LLVM_ENABLE_PEDANTIC:BOOL
      +
      Enable pedantic mode. This disable compiler specific extensions, is + possible. Defaults to ON.
      + +
      LLVM_ENABLE_WERROR:BOOL
      +
      Stop and fail build, if a compiler warning is + triggered. Defaults to OFF.
      LLVM_BUILD_32_BITS:BOOL
      Build 32-bits executables and libraries on 64-bits systems. This - option is available only on some 64-bits unix systems. Defaults to - OFF.
      + option is available only on some 64-bits unix systems. Defaults to + OFF. -
      LLVM_PLO_FLAGS:STRING
      -
      Extra flags for creating partially linked objects. Visual C++ - does not use this.
      +
      LLVM_TARGET_ARCH:STRING
      +
      LLVM target to use for native code generation. This is required + for JIT generation. It defaults to "host", meaning that it shall + pick the architecture of the machine where LLVM is being built. If + you are cross-compiling, set it to the target architecture + name.
      LLVM_TABLEGEN:STRING
      Full path to a native TableGen executable (usually named tblgen). This is intented for cross-compiling: if the user sets this variable, no native TableGen will be created.
      + +
      LLVM_LIT_ARGS:STRING
      +
      Arguments given to lit. + make check and make clang-test are affected. + By default, "-sv --no-progress-bar" + on Visual C++ and Xcode, + "-sv" on others.
      @@ -225,7 +350,15 @@
      -

      TODO

      +

      Testing is performed when the check target is built. For + instance, if you are using makefiles, execute this command while on + the top level of your build directory:

      + +
      +

      make check

      +
      + +

      Testing is not supported on Visual Studio.

      @@ -237,7 +370,16 @@
      -

      TODO

      +

      See this + wiki page for generic instructions on how to cross-compile + with CMake. It goes into detailed explanations and may seem + daunting, but it is not. On the wiki page there are several + examples including toolchain files. Go directly to + this + section for a quick solution.

      + +

      Also see the LLVM-specific variables + section for variables used when cross-compiling.

      @@ -249,7 +391,52 @@
      -

      TODO

      +

      The most difficult part of adding LLVM to the build of a project + is to determine the set of LLVM libraries corresponding to the set + of required LLVM features. What follows is an example of how to + obtain this information:

      + +
      +
      +    # A convenience variable:
      +    set(LLVM_ROOT "" CACHE PATH "Root of LLVM install.")
      +    # A bit of a sanity check:
      +    if( NOT EXISTS ${LLVM_ROOT}/include/llvm )
      +    message(FATAL_ERROR "LLVM_ROOT (${LLVM_ROOT}) is not a valid LLVM install")
      +    endif()
      +    # We incorporate the CMake features provided by LLVM:
      +    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LLVM_ROOT}/share/llvm/cmake")
      +    include(LLVM)
      +    # Now set the header and library paths:
      +    include_directories( ${LLVM_ROOT}/include )
      +    link_directories( ${LLVM_ROOT}/lib )
      +    # Let's suppose we want to build a JIT compiler with support for
      +    # binary code (no interpreter):
      +    llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native)
      +    # Finally, we link the LLVM libraries to our executable:
      +    target_link_libraries(mycompiler ${REQ_LLVM_LIBRARIES})
      +    
      +
      + +

      This assumes that LLVM_ROOT points to an install of LLVM. The + procedure works too for uninstalled builds although we need to take + care to add an include_directories for the location of the + headers on the LLVM source directory (if we are building + out-of-source.)

      + +
      + + + + + + + +
      + +

      Notes for specific compilers and/or platforms.

      @@ -258,13 +445,13 @@
      Valid CSS! + src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"> Valid HTML 4.01! + src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> - Óscar Fuentes
      + Oscar Fuentes
      LLVM Compiler Infrastructure
      - Last modified: $Date: 2008-10-27 00:59:36 +0100 (Mon, 27 Oct 2008) $ + Last modified: $Date: 2010-08-09 03:59:36 +0100 (Mon, 9 Aug 2010) $