1*e5dd7070Spatrickoption(BUILD_CLANG_FORMAT_VS_PLUGIN "Build clang-format VS plugin" OFF) 2*e5dd7070Spatrickif (BUILD_CLANG_FORMAT_VS_PLUGIN) 3*e5dd7070Spatrick add_custom_target(clang_format_exe_for_vsix 4*e5dd7070Spatrick ${CMAKE_COMMAND} -E copy_if_different 5*e5dd7070Spatrick "${LLVM_TOOLS_BINARY_DIR}/clang-format.exe" 6*e5dd7070Spatrick "${CMAKE_CURRENT_SOURCE_DIR}/ClangFormat/clang-format.exe" 7*e5dd7070Spatrick DEPENDS clang-format) 8*e5dd7070Spatrick 9*e5dd7070Spatrick # Build number added to Clang version to ensure that new VSIX can be upgraded 10*e5dd7070Spatrick string(TIMESTAMP CLANG_FORMAT_VSIX_BUILD %y%m%d%H%M UTC) 11*e5dd7070Spatrick 12*e5dd7070Spatrick if (NOT CLANG_FORMAT_VS_VERSION) 13*e5dd7070Spatrick set(CLANG_FORMAT_VS_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}.${CLANG_FORMAT_VSIX_BUILD}") 14*e5dd7070Spatrick endif() 15*e5dd7070Spatrick 16*e5dd7070Spatrick configure_file("source.extension.vsixmanifest.in" 17*e5dd7070Spatrick "${CMAKE_CURRENT_SOURCE_DIR}/ClangFormat/source.extension.vsixmanifest") 18*e5dd7070Spatrick 19*e5dd7070Spatrick find_program(NUGET_EXE nuget PATHS ${NUGET_EXE_DIR}) 20*e5dd7070Spatrick if (NOT NUGET_EXE) 21*e5dd7070Spatrick message(FATAL_ERROR "Could not find nuget.exe. Download from https://www.nuget.org/nuget.exe" 22*e5dd7070Spatrick " and add parent directory to PATH or pass it via NUGET_EXE_DIR var.") 23*e5dd7070Spatrick endif() 24*e5dd7070Spatrick 25*e5dd7070Spatrick add_custom_target(clang_format_vsix ALL 26*e5dd7070Spatrick COMMAND ${NUGET_EXE} restore "${CMAKE_CURRENT_SOURCE_DIR}/ClangFormat.sln" 27*e5dd7070Spatrick COMMAND devenv "${CMAKE_CURRENT_SOURCE_DIR}/ClangFormat.sln" /Build Release 28*e5dd7070Spatrick DEPENDS clang_format_exe_for_vsix "${CMAKE_CURRENT_SOURCE_DIR}/ClangFormat/source.extension.vsixmanifest" 29*e5dd7070Spatrick COMMAND ${CMAKE_COMMAND} -E copy_if_different 30*e5dd7070Spatrick "${CMAKE_CURRENT_SOURCE_DIR}/ClangFormat/bin/Release/ClangFormat.vsix" 31*e5dd7070Spatrick "${LLVM_TOOLS_BINARY_DIR}/ClangFormat.vsix" 32*e5dd7070Spatrick DEPENDS clang_format_exe_for_vsix) 33*e5dd7070Spatrickendif() 34