X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=CMakeLists.txt;h=039f619ff9715a85fb84834a99b917e1ea2b53e4;hb=06e16bbec02d289552f942abe7a6353b51cdb5ea;hp=41f41411405427948c4dcabc6fcd59e94b41f707;hpb=5a858e3416b13c2d796dfb9fc31f1e216e0acc2c;p=oota-llvm.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 41f41411405..039f619ff97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,9 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ) -set(PACKAGE_VERSION "2.9") +set(PACKAGE_VERSION "3.0") + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) include(VersionFromVCS) @@ -79,6 +81,9 @@ set(LLVM_ALL_TARGETS XCore ) +# List of targets with JIT support: +set(LLVM_TARGETS_WITH_JIT X86 PowerPC ARM Mips) + if( MSVC ) set(LLVM_TARGETS_TO_BUILD X86 CACHE STRING "Semicolon-separated list of targets to build, or \"all\".") @@ -133,9 +138,15 @@ include(AddLLVMDefinitions) option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON) -include(config-ix) +# MSVC has a gazillion warnings with this. +if( MSVC ) + option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." OFF) +else( MSVC ) + option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON) +endif() -include(HandleLLVMOptions) +option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON) +option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) if( uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" ) option(LLVM_ENABLE_ASSERTIONS "Enable assertions" OFF) @@ -143,6 +154,12 @@ else() option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON) endif() +# All options referred to from HandleLLVMOptions have to be specified +# BEFORE this include, otherwise options will not be correctly set on +# first cmake run +include(config-ix) +include(HandleLLVMOptions) + configure_file( ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake ${LLVM_BINARY_DIR}/include/llvm/Config/config.h) @@ -159,33 +176,20 @@ set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} ) set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib ) set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib ) -# MSVC has a gazillion warnings with this. -if( MSVC ) - option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." OFF) -else( MSVC ) - option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON) -endif() - -option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON) -option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) +set(CMAKE_INCLUDE_CURRENT_DIR ON) include_directories( ${LLVM_BINARY_DIR}/include ${LLVM_MAIN_INCLUDE_DIR}) if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) - SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-include llvm/Support/Solaris.h") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include llvm/Support/Solaris.h") endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) include(AddLLVM) include(TableGen) -if( MINGW ) - get_system_libs(LLVM_SYSTEM_LIBS_LIST) - foreach(l ${LLVM_SYSTEM_LIBS_LIST}) - set(LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS} -l${l}") - endforeach() - set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}${LLVM_SYSTEM_LIBS}") - set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}${LLVM_SYSTEM_LIBS}") -endif() +macro(llvm_tablegen) + tablegen(LLVM ${ARGN}) +endmacro() if( MINGW ) # People report that -O3 is unreliable on MinGW. The traditional @@ -193,44 +197,15 @@ if( MINGW ) llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2") endif() +# Put this before tblgen. Else we have a circular dependence. add_subdirectory(lib/Support) - -# Everything else depends on Support: -set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} ${LLVM_LIBS} ) - -set(LLVM_TABLEGEN "tblgen" CACHE - STRING "Native TableGen executable. Saves building one when cross-compiling.") -# Effective tblgen executable to be used: -set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN}) +add_subdirectory(lib/TableGen) add_subdirectory(utils/TableGen) -if( CMAKE_CROSSCOMPILING ) - # This adds a dependency on target `tblgen', so must go after utils/TableGen - include( CrossCompileLLVM ) -endif( CMAKE_CROSSCOMPILING ) - add_subdirectory(include/llvm) -add_subdirectory(lib/VMCore) -add_subdirectory(lib/CodeGen) -add_subdirectory(lib/CodeGen/SelectionDAG) -add_subdirectory(lib/CodeGen/AsmPrinter) -add_subdirectory(lib/Bitcode/Reader) -add_subdirectory(lib/Bitcode/Writer) -add_subdirectory(lib/Transforms/Utils) -add_subdirectory(lib/Transforms/Instrumentation) -add_subdirectory(lib/Transforms/InstCombine) -add_subdirectory(lib/Transforms/Scalar) -add_subdirectory(lib/Transforms/IPO) -add_subdirectory(lib/Transforms/Hello) -add_subdirectory(lib/Linker) -add_subdirectory(lib/Analysis) -add_subdirectory(lib/Analysis/IPA) -add_subdirectory(lib/MC) -add_subdirectory(lib/MC/MCParser) -add_subdirectory(lib/MC/MCDisassembler) -add_subdirectory(lib/Object) +add_subdirectory(lib) add_subdirectory(utils/FileCheck) add_subdirectory(utils/FileUpdate) @@ -238,61 +213,6 @@ add_subdirectory(utils/count) add_subdirectory(utils/not) add_subdirectory(utils/llvm-lit) -set(LLVM_ENUM_ASM_PRINTERS "") -set(LLVM_ENUM_ASM_PARSERS "") -set(LLVM_ENUM_DISASSEMBLERS "") -foreach(t ${LLVM_TARGETS_TO_BUILD}) - message(STATUS "Targeting ${t}") - add_subdirectory(lib/Target/${t}) - add_subdirectory(lib/Target/${t}/TargetInfo) - set( td ${LLVM_MAIN_SRC_DIR}/lib/Target/${t} ) - file(GLOB asmp_file "${td}/*AsmPrinter.cpp") - if( asmp_file ) - set(LLVM_ENUM_ASM_PRINTERS - "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n") - endif() - if( EXISTS ${td}/InstPrinter/CMakeLists.txt ) - add_subdirectory(lib/Target/${t}/InstPrinter) - endif() - if( EXISTS ${td}/AsmParser/CMakeLists.txt ) - add_subdirectory(lib/Target/${t}/AsmParser) - set(LLVM_ENUM_ASM_PARSERS - "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n") - endif() - if( EXISTS ${td}/Disassembler/CMakeLists.txt ) - add_subdirectory(lib/Target/${t}/Disassembler) - set(LLVM_ENUM_DISASSEMBLERS - "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n") - endif() - set(CURRENT_LLVM_TARGET) -endforeach(t) - -# Produce llvm/Config/AsmPrinters.def -configure_file( - ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmPrinters.def.in - ${LLVM_BINARY_DIR}/include/llvm/Config/AsmPrinters.def - ) - -# Produce llvm/Config/AsmParsers.def -configure_file( - ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmParsers.def.in - ${LLVM_BINARY_DIR}/include/llvm/Config/AsmParsers.def - ) - -# Produce llvm/Config/Disassemblers.def -configure_file( - ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Disassemblers.def.in - ${LLVM_BINARY_DIR}/include/llvm/Config/Disassemblers.def - ) - -add_subdirectory(lib/ExecutionEngine) -add_subdirectory(lib/ExecutionEngine/Interpreter) -add_subdirectory(lib/ExecutionEngine/JIT) -add_subdirectory(lib/ExecutionEngine/MCJIT) -add_subdirectory(lib/Target) -add_subdirectory(lib/AsmParser) -add_subdirectory(lib/Archive) - add_subdirectory(projects) option(LLVM_BUILD_TOOLS @@ -302,6 +222,13 @@ if( LLVM_INCLUDE_TOOLS ) add_subdirectory(tools) endif() +option(LLVM_BUILD_RUNTIME + "Build the LLVM runtime libraries. If OFF, just generate build targets." ON) +option(LLVM_INCLUDE_RUNTIME "Generate build targets for the LLVM runtimes" ON) +if( LLVM_INCLUDE_RUNTIME ) + add_subdirectory(runtime) +endif() + option(LLVM_BUILD_EXAMPLES "Build the LLVM example programs. If OFF, just generate build targets." OFF) option(LLVM_INCLUDE_EXAMPLES "Generate build targets for the LLVM examples" ON) @@ -310,8 +237,7 @@ if( LLVM_INCLUDE_EXAMPLES ) endif() option(LLVM_BUILD_TESTS - "Build LLVM unit tests. If OFF, just generate build targes." OFF) -option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON) + "Build LLVM unit tests. If OFF, just generate build targets." OFF) if( LLVM_INCLUDE_TESTS ) add_subdirectory(test) add_subdirectory(utils/unittest) @@ -332,6 +258,7 @@ install(DIRECTORY include/ PATTERN "*.h" PATTERN "*.td" PATTERN "*.inc" + PATTERN "LICENSE.TXT" PATTERN ".svn" EXCLUDE )