xref: /openbsd-src/gnu/llvm/clang/tools/clang-format-vs/CMakeLists.txt (revision e5dd70708596ae51455a0ffa086a00c5b29f8583)
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