Hi Matt, On Sun, 6 Jun 2021, Matthew Rogers via GitGitGadget wrote: > This pull request comes from our discussion here[1], and I think these > patches provide a good compromise around the concerns discussed there > > 1: > https://lore.kernel.org/git/CAOjrSZusMSvs7AS-ZDsV8aQUgsF2ZA754vSDjgFKMRgi_oZAWw@xxxxxxxxxxxxxx/ > > CCing the people involved in the original discussion. cc: Philip Oakley > philipoakley@iee.email cc: Sibi Siddharthan > sibisiddharthan.github@xxxxxxxxx, cc: Johannes Schindelin > johannes.schindelin@xxxxxx, cc: Danh Doan congdanhqx@xxxxxxxxx Just in case that a v3 is needed, I fixed the PR description so that these "Cc:"s are interpreted correctly again by GitGitGadget. But from a brief glance over v2, all patches look good to me. Thanks, Dscho > > Matthew Rogers (3): > cmake: add knob to disable vcpkg > cmake: create compile_commands.json by default > cmake: add warning for ignored MSGFMT_EXE > > contrib/buildsystems/CMakeLists.txt | 37 ++++++++++++++++++++++------- > 1 file changed, 28 insertions(+), 9 deletions(-) > > > base-commit: c09b6306c6ca275ed9d0348a8c8014b2ff723cfb > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-970%2FROGERSM94%2Ffix-cmake-v2 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-970/ROGERSM94/fix-cmake-v2 > Pull-Request: https://github.com/gitgitgadget/git/pull/970 > > Range-diff vs v1: > > 1: 3170f78daa5f ! 1: 485254b49de8 cmake: add knob to disable vcpkg > @@ Commit message > generators. > > - Some versions of Visual Studio 2019 moved away from using the > - VS 2019 by default, making it impossible for Visual Studio to > - configure the project in the likely event that it couldn't find the > - dependencies. > + VS 2019 generator by default, making it impossible for Visual > + Studio to configure the project in the likely event that it couldn't > + find the dependencies. > > - Inexperienced users of CMake are very likely to get tripped up by > the errors caused by a lack of vcpkg, making the above bullet point > both annoying and hard to debug. > > - As such, lets make using vcpkg the default on windows. Users who want > + As such, let's make using vcpkg the default on windows. Users who want > to avoid using vcpkg can disable it by passing -DNO_VCPKG=TRUE. > > Signed-off-by: Matthew Rogers <mattr94@xxxxxxxxx> > @@ contrib/buildsystems/CMakeLists.txt: NOTE: By default CMake uses Makefile as the > set(CMAKE_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..) > -if(WIN32) > + > -+if (WIN32 AND NOT NO_VCPKG) > -+ set(USING_VCPKG TRUE) > -+else() > -+ set(USING_VCPKG FALSE) > ++option(USE_VCPKG "Whether or not to use vcpkg for obtaining dependencies. Only applicable to Windows platforms" ON) > ++if(NOT WIN32) > ++ set(USE_VCPKG OFF CACHE BOOL FORCE) > +endif() > + > -+if(USING_VCPKG) > ++if(USE_VCPKG) > set(VCPKG_DIR "${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg") > - if(MSVC AND NOT EXISTS ${VCPKG_DIR}) > + if(NOT EXISTS ${VCPKG_DIR}) > @@ contrib/buildsystems/CMakeLists.txt: endif() > find_program(MSGFMT_EXE msgfmt) > if(NOT MSGFMT_EXE) > - set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe) > -+ if (USING_VCPKG) > ++ if (USE_VCPKG) > + set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe) > + endif() > if(NOT EXISTS ${MSGFMT_EXE}) > @@ contrib/buildsystems/CMakeLists.txt: file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-O > file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PYTHON='${NO_PYTHON}'\n") > file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "SUPPORTS_SIMPLE_IPC='${SUPPORTS_SIMPLE_IPC}'\n") > -if(WIN32) > -+if(USING_VCPKG) > ++if(USE_VCPKG) > file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n") > endif() > > 2: c3bf266cf03a ! 2: a3b5eef54188 cmake: create compile_commands.json by default > @@ Commit message > time of this writing, and no real negative consequences that I can find > with my search-skills. > > - NOTE: That the comppile_commands.json is currenntly produced only when > + NOTE: That the compile_commands.json is currently produced only when > using the Ninja and Makefile generators. See The CMake documentation[3] > for more info. > > @@ Commit message > Signed-off-by: Matthew Rogers <mattr94@xxxxxxxxx> > > ## contrib/buildsystems/CMakeLists.txt ## > -@@ contrib/buildsystems/CMakeLists.txt: else() > - set(USING_VCPKG FALSE) > +@@ contrib/buildsystems/CMakeLists.txt: if(NOT WIN32) > + set(USE_VCPKG OFF CACHE BOOL FORCE) > endif() > > -+if (NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS) > -+ SET(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) > ++if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS) > ++ set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) > +endif() > + > - if(USING_VCPKG) > + if(USE_VCPKG) > set(VCPKG_DIR "${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg") > if(NOT EXISTS ${VCPKG_DIR}) > 3: 07763a9de723 ! 3: 2110c8ffa423 cmake: add warning for ignored MSGFMT_EXE > @@ Commit message > configured, as such add a check for NO_GETTEXT before attempting to set > it. > > - suggested-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > + Suggested-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > Signed-off-by: Matthew Rogers <mattr94@xxxxxxxxx> > > ## contrib/buildsystems/CMakeLists.txt ## > @@ contrib/buildsystems/CMakeLists.txt: if(WIN32 AND NOT MSVC)#not required for vis > > -find_program(MSGFMT_EXE msgfmt) > -if(NOT MSGFMT_EXE) > -- if (USING_VCPKG) > +- if (USE_VCPKG) > - set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe) > - endif() > - if(NOT EXISTS ${MSGFMT_EXE}) > @@ contrib/buildsystems/CMakeLists.txt: if(WIN32 AND NOT MSVC)#not required for vis > +else() > + find_program(MSGFMT_EXE msgfmt) > + if(NOT MSGFMT_EXE) > -+ if (USING_VCPKG) > ++ if(USE_VCPKG) > + set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe) > + endif() > + if(NOT EXISTS ${MSGFMT_EXE}) > > -- > gitgitgadget >