X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=cmake%2Fmodules%2FAddLLVM.cmake;h=30351ee92ad924ff04e588044536337730740349;hb=87a13599bb036b93dd8a5c0a98efde09e62f7198;hp=ebd17a0cf8562ab4d166890d8d64dff2253c2360;hpb=8d539b551932f5794b612510f5037283d23e7bbc;p=oota-llvm.git diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index ebd17a0cf85..30351ee92ad 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -563,6 +563,20 @@ endmacro(add_llvm_loadable_module name) macro(add_llvm_executable name) llvm_process_sources( ALL_FILES ${ARGN} ) + + # Generate objlib + if(LLVM_ENABLE_OBJLIB) + # Generate an obj library for both targets. + set(obj_name "obj.${name}") + add_library(${obj_name} OBJECT EXCLUDE_FROM_ALL + ${ALL_FILES} + ) + llvm_update_compile_flags(${obj_name}) + set(ALL_FILES "$") + + set_target_properties(${obj_name} PROPERTIES FOLDER "Object Libraries") + endif() + add_windows_version_resource_file(ALL_FILES ${ALL_FILES}) if( EXCLUDE_FROM_ALL ) @@ -694,16 +708,37 @@ macro(add_llvm_external_project name) set(add_llvm_external_dir ${name}) endif() canonicalize_tool_name(${name} nameUPPER) - if (LLVM_TOOL_${nameUPPER}_BUILD) - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir} ${add_llvm_external_dir}) - set(LLVM_TOOL_${nameUPPER}_BUILD Off) - elseif(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR) - set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR - "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" - CACHE PATH "Path to ${name} source directory") - mark_as_advanced(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR) - add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir}) + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt) + # Treat it as in-tree subproject. + option(LLVM_TOOL_${nameUPPER}_BUILD + "Whether to build ${name} as part of LLVM" On) + mark_as_advanced(LLVM_TOOL_${name}_BUILD) + if(LLVM_TOOL_${nameUPPER}_BUILD) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir} ${add_llvm_external_dir}) + # Don't process it in add_llvm_implicit_projects(). + set(LLVM_TOOL_${nameUPPER}_BUILD OFF) + endif() + else() + set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR + "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" + CACHE PATH "Path to ${name} source directory") + set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT ON) + if(NOT LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR OR NOT EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}) + set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT OFF) + endif() + if("${LLVM_EXTERNAL_${nameUPPER}_BUILD}" STREQUAL "OFF") + set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT OFF) + endif() + option(LLVM_TOOL_${nameUPPER}_BUILD + "Whether to build ${name} as part of LLVM" + ${LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT}) + if (LLVM_TOOL_${nameUPPER}_BUILD) + if(EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}) + add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir}) + elseif(NOT "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" STREQUAL "") + message(WARNING "Nonexistent directory for ${name}: ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}") + endif() + # FIXME: It'd be redundant. set(LLVM_TOOL_${nameUPPER}_BUILD Off) endif() endif() @@ -733,15 +768,6 @@ function(create_llvm_tool_options) mark_as_advanced(LLVM_TOOL_${name}_BUILD) endif() endforeach() - get_cmake_property(variableNames VARIABLES) - foreach (variableName ${variableNames}) - get_project_name_from_src_var(${variableName} projectName) - if(projectName) - option(LLVM_TOOL_${projectName}_BUILD - "Whether to build ${name} as part of LLVM" On) - mark_as_advanced(LLVM_TOOL_${name}_BUILD) - endif() - endforeach() endfunction(create_llvm_tool_options) function(add_llvm_implicit_projects) @@ -757,16 +783,6 @@ function(add_llvm_implicit_projects) endif() endforeach() - get_cmake_property(variableNames VARIABLES) - foreach (variableName ${variableNames}) - get_project_name_from_src_var(${variableName} projectName) - if(projectName) - string(TOLOWER ${projectName} projectName) - list(APPEND list_of_implicit_subdirs ${projectName}) - endif() - endforeach() - - list(REMOVE_DUPLICATES list_of_implicit_subdirs) foreach(external_proj ${list_of_implicit_subdirs}) add_llvm_external_project("${external_proj}") endforeach() @@ -821,7 +837,7 @@ function(llvm_add_go_executable binary pkgpath) endforeach(d) set(ldflags "${CMAKE_EXE_LINKER_FLAGS}") add_custom_command(OUTPUT ${binpath} - COMMAND ${CMAKE_BINARY_DIR}/bin/llvm-go "cc=${cc}" "cxx=${cxx}" "cppflags=${cppflags}" "ldflags=${ldflags}" + COMMAND ${CMAKE_BINARY_DIR}/bin/llvm-go "go=${GO_EXECUTABLE}" "cc=${cc}" "cxx=${cxx}" "cppflags=${cppflags}" "ldflags=${ldflags}" ${ARG_GOFLAGS} build -o ${binpath} ${pkgpath} DEPENDS llvm-config ${CMAKE_BINARY_DIR}/bin/llvm-go${CMAKE_EXECUTABLE_SUFFIX} ${llvmlibs} ${ARG_DEPENDS}