if(llvm_vc AND LLVM_APPEND_VC_REV)
set(llvm_source_dir ${LLVM_MAIN_SRC_DIR})
endif()
+if (LLVM_VC_REPOSITORY AND LLVM_VC_REVISION)
+ set(llvm_source_dir ${LLVM_SOURCE_DIR})
+ set(llvm_vc_repository ${LLVM_VC_REPOSITORY})
+ set(llvm_vc_revision ${LLVM_VC_REVISION})
+endif()
if(clang_vc AND LLVM_APPEND_VC_REV)
set(clang_source_dir ${CLANG_SOURCE_DIR})
endif()
+if (CLANG_VC_REPOSITORY AND CLANG_VC_REVISION)
+ set(clang_source_dir ${CLANG_SOURCE_DIR})
+ set(clang_vc_repository ${CLANG_VC_REPOSITORY})
+ set(clang_vc_revision ${CLANG_VC_REVISION})
+endif()
# Create custom target to generate the VC revision include.
add_custom_command(OUTPUT "${version_inc}"
COMMAND ${CMAKE_COMMAND} "-DNAMES=\"LLVM;CLANG\""
"-DLLVM_SOURCE_DIR=${llvm_source_dir}"
"-DCLANG_SOURCE_DIR=${clang_source_dir}"
+ "-DCLANG_VC_REPOSITORY=${clang_vc_repository}"
+ "-DCLANG_VC_REVISION=${clang_vc_revision}"
"-DHEADER_FILE=${version_inc}"
+ "-DLLVM_VC_REPOSITORY=${llvm_vc_repository}"
+ "-DLLVM_VC_REVISION=${llvm_vc_revision}"
-P "${generate_vcs_version_script}")
# Mark the generated header as being generated.
# Handle strange terminals
set(ENV{TERM} "dumb")
-function(append_info name path)
- if(path)
- get_source_info("${path}" revision repository)
- endif()
+function(append_info name revision repository)
if(revision)
file(APPEND "${HEADER_FILE}.tmp"
"#define ${name}_REVISION \"${revision}\"\n")
endfunction()
foreach(name IN LISTS NAMES)
- if(NOT DEFINED ${name}_SOURCE_DIR)
+ if(${name}_VC_REPOSITORY AND ${name}_VC_REVISION)
+ set(revision ${${name}_VC_REVISION})
+ set(repository ${${name}_VC_REPOSITORY})
+ elseif(DEFINED ${name}_SOURCE_DIR)
+ if (${name}_SOURCE_DIR)
+ get_source_info("${${name}_SOURCE_DIR}" revision repository)
+ endif()
+ else()
message(FATAL_ERROR "${name}_SOURCE_DIR is not defined")
endif()
- append_info(${name} "${${name}_SOURCE_DIR}")
+ append_info(${name} "${revision}" "${repository}")
endforeach()
# Copy the file only if it has changed.