git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Sibi Siddharthan via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Sibi Siddharthan <sibisiddharthan.github@gmail.com>
Subject: [PATCH v5 0/8] CMake build system for git
Date: Fri, 26 Jun 2020 16:11:30 +0000	[thread overview]
Message-ID: <pull.614.v5.git.1593187898.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.614.v4.git.1591986566.gitgitgadget@gmail.com>

This is an attempt to build Git using CMake. CMake is cross-platform build
generator which works well on a variety of platforms(primarily Linux and
Windows). Using CMake we can check whether certain headers exist, certain
functions exist, the required libraries are present and configure the build
accordingly. Using CMake we can also build and test Git out of source,
resulting in a clean source tree.

Tested platforms

Ubuntu 18.04 GCC 7.4 Clang 8.0.1

Windows MinGW GCC 9.2 Clang 9 Visual Studio 2015,2017,2019

Changes:

1) The CMake script has been relocated to contrib/buildsystems 2) The CMake
script parses the Makefile for the sources. LIB_OBJS BUILTIN_OBJS XDIFF_OBJS
VCSSVN_OBJS TEST_BUILTINS_OBJS SCRIPT_SH SCRIPT_PERL 3) Philip suggested to
change the error message if sh/bash was not found on windows. 4) CMake now
tests for ICONV_OMITS_BOM, NO_ST_BLOCKS_IN_STRUCT_STAT 5) Renamed the
variable test_helper_sources to test-tool_SOURCES [PATCH 4/8] to be
consistent with the naming of source variables.

Changes v2: Changes 1,2,4 have been rebased to PATCH 01/xx CMake uses
GIT-VERSION-GEN to get the version of Git Fixed a bug where a Windows user
can pose as Linux user and vice versa. [PATCH 6/8]

Changes v3: Patch changes are moved from the commit messages and are placed
here. Code inside check_c_source_(compiles/runs) have been formatted
according to git coding guidelines. [PATCH 1/8] The CMake script parses the
Makefile for SCRIPT_LIB also. [PATCH 2/8] The CMake script globs templates,
po files. Logic has been added to place the template files in their
respective directories instead of hard-coding them. [PATCH 2/8]

Changes v4: Removed EXE_EXTENSION conditional stuff using
CMAKE_EXECUTABLE_SUFFIX [PATCH 4/8] There was an issue in build pipelines
where CMake was not able to find the correct iconv library (caused by an
update that installed PostgreSQL), so we need to manually set the location
of the iconv library and its includes. This issue is extremely rare and is
specific to the implementation of FindIconv.cmake. Other libraries are
unaffected. [PATCH 8/8]

Sibi Siddharthan (8):
  Introduce CMake support for configuring Git
  cmake: generate the shell/perl/python scripts and templates,
    translations
  cmake: installation support for git
  cmake: support for testing git with ctest
  cmake: support for testing git when building out of the source tree
  cmake: support for building git on windows with mingw
  cmake: support for building git on windows with msvc and clang.
  ci: modification of main.yml to use cmake for vs-build job

 .github/workflows/main.yml          |   39 +-
 contrib/buildsystems/CMakeLists.txt | 1000 +++++++++++++++++++++++++++
 2 files changed, 1024 insertions(+), 15 deletions(-)
 create mode 100644 contrib/buildsystems/CMakeLists.txt


base-commit: e8ba1cc988e122f1a74cda161ba3ec1bf22fe88f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-614%2FSibiSiddharthan%2Fgit-og-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-614/SibiSiddharthan/git-og-v5
Pull-Request: https://github.com/gitgitgadget/git/pull/614

Range-diff vs v4:

 1:  c4e1ba7446 = 1:  07ae9f0a49 Introduce CMake support for configuring Git
 2:  abb9e6e1d5 ! 2:  74358b389d cmake: generate the shell/perl/python scripts and templates, translations
     @@ contrib/buildsystems/CMakeLists.txt: add_custom_command(OUTPUT ${git_links} ${gi
      +list(TRANSFORM templates REPLACE "${CMAKE_SOURCE_DIR}/templates/" "")
      +list(REMOVE_ITEM templates ".gitignore")
      +list(REMOVE_ITEM templates "Makefile")
     ++list(REMOVE_ITEM templates "blt")# Prevents an error when reconfiguring for in source builds
      +
      +list(REMOVE_ITEM templates "branches--")
      +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/templates/blt/branches) #create branches
 3:  4a0dd23cbb = 3:  a60e7472d3 cmake: installation support for git
 4:  db05180e98 = 4:  fedda55fc2 cmake: support for testing git with ctest
 5:  17e7f3e9de = 5:  398a578558 cmake: support for testing git when building out of the source tree
 6:  549f0cd5ff ! 6:  10acdbf5e4 cmake: support for building git on windows with mingw
     @@ contrib/buildsystems/CMakeLists.txt: add_compile_definitions(PAGER_ENV="LESS=FRX
      +	set(FALLBACK_RUNTIME_PREFIX /home/$ENV{USER})
      +	add_compile_definitions(FALLBACK_RUNTIME_PREFIX="${FALLBACK_RUNTIME_PREFIX}")
      +endif()
     - 
     --add_compile_definitions(PROCFS_EXECUTABLE_PATH="/proc/self/exe" HAVE_DEV_TTY )
     --list(APPEND compat_SOURCES unix-socket.c)
     ++
      +
      +#Platform Specific
      +if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
     @@ contrib/buildsystems/CMakeLists.txt: add_compile_definitions(PAGER_ENV="LESS=FRX
      +	add_compile_definitions(PROCFS_EXECUTABLE_PATH="/proc/self/exe" HAVE_DEV_TTY )
      +	list(APPEND compat_SOURCES unix-socket.c)
      +endif()
     -+
     -+if(WIN32)
     -+	set(EXE_EXTENSION .exe)
     -+else()
     -+	set(EXE_EXTENSION)
     -+endif()
     + 
     +-add_compile_definitions(PROCFS_EXECUTABLE_PATH="/proc/self/exe" HAVE_DEV_TTY )
     +-list(APPEND compat_SOURCES unix-socket.c)
     ++set(EXE_EXTENSION ${CMAKE_EXECUTABLE_SUFFIX})
       
       #header checks
       check_include_file(libgen.h HAVE_LIBGEN_H)
 7:  f85ea0ac0c = 7:  0b921545d2 cmake: support for building git on windows with msvc and clang.
 8:  2f7cf41e08 ! 8:  3cdefab43a ci: modification of main.yml to use cmake for vs-build job
     @@ .github/workflows/main.yml: jobs:
      +        if (!$?) { exit(1) }
      +    - name: generate Visual Studio solution
      +      shell: bash
     -+      run: cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows -DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
     ++      run: |
     ++        cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \
     ++        -DIconv_LIBRARY=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/lib/libiconv.lib -DIconv_INCLUDE_DIR=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/include \
     ++        -DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
           - name: MSBuild
             run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
           - name: bundle artifact tar

-- 
gitgitgadget

  parent reply	other threads:[~2020-06-26 16:11 UTC|newest]

Thread overview: 179+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24  4:01 [PATCH 0/8] CMake build system for git Sibi Siddharthan via GitGitGadget
2020-04-24  4:01 ` [PATCH 1/8] Introduce CMake support for configuring Git on Linux Sibi Siddharthan via GitGitGadget
2020-04-24 17:05   ` Danh Doan
2020-04-24 21:06     ` Sibi Siddharthan
2020-04-24 22:56       ` Danh Doan
2020-04-25  3:50         ` Sibi Siddharthan
2020-04-25 13:34     ` Johannes Schindelin
2020-04-25 17:07   ` brian m. carlson
2020-04-25 17:36     ` Randall S. Becker
2020-04-25 18:01       ` Philip Oakley
2020-04-25 18:11     ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 2/8] cmake: generate the shell/perl/python scripts and templates, translations Sibi Siddharthan via GitGitGadget
2020-04-24 17:19   ` Danh Doan
2020-04-24 21:19     ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 3/8] cmake: installation support for git Sibi Siddharthan via GitGitGadget
2020-04-24 17:23   ` Danh Doan
2020-04-24 21:24     ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 4/8] cmake: support for testing git with ctest Sibi Siddharthan via GitGitGadget
2020-04-24 17:28   ` Danh Doan
2020-04-24 21:26     ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 5/8] cmake: support for testing git when building out of the source tree Sibi Siddharthan via GitGitGadget
2020-04-24 17:34   ` Danh Doan
2020-04-24 21:32     ` Sibi Siddharthan
2020-04-24 23:09       ` Danh Doan
2020-04-25  3:57         ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 6/8] cmake: support for building git on windows with mingw Sibi Siddharthan via GitGitGadget
2020-04-24 17:39   ` Philip Oakley
2020-04-24 20:29     ` Sibi Siddharthan
2020-04-25 11:37       ` Philip Oakley
2020-04-25 12:09         ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 7/8] cmake: support for building git on windows with msvc and clang Sibi Siddharthan via GitGitGadget
2020-04-24 17:39   ` Danh Doan
2020-04-24 21:35     ` Sibi Siddharthan
2020-04-24  4:01 ` [PATCH 8/8] ci: modification of main.yml to use cmake for vs-build job Sibi Siddharthan via GitGitGadget
2020-04-24 17:45   ` Danh Doan
2020-04-24 21:41     ` Sibi Siddharthan
2020-04-24 21:44     ` Johannes Schindelin
2020-04-24 18:56 ` [PATCH 0/8] CMake build system for git Junio C Hamano
2020-04-24 19:50   ` Sibi Siddharthan
2020-04-24 21:43     ` Junio C Hamano
2020-04-25  4:09       ` Sibi Siddharthan
2020-04-25 12:56         ` Philip Oakley
2020-04-25 13:29           ` Johannes Schindelin
2020-04-25 14:12             ` Sibi Siddharthan
2020-04-25 14:28               ` Johannes Schindelin
2020-04-25 14:38                 ` Sibi Siddharthan
2020-04-25 14:49                   ` Johannes Schindelin
2020-04-25 14:57                     ` Sibi Siddharthan
2020-04-26  0:41                       ` Danh Doan
2020-04-26  4:30                         ` Sibi Siddharthan
2020-04-25 12:24       ` Johannes Schindelin
2020-04-27 20:08         ` Jeff King
2020-04-27 20:12           ` Jeff King
2020-04-28 13:52             ` Danh Doan
2020-04-28 21:07               ` Jeff King
2020-04-29  8:42                 ` Sibi Siddharthan
2020-05-01 19:32                   ` Johannes Schindelin
2020-05-02 14:31                     ` Sibi Siddharthan
2020-05-02 14:58                       ` Randall S. Becker
2020-05-02 15:48                       ` Junio C Hamano
2020-05-03 15:33                         ` Sibi Siddharthan
2020-05-03 17:21                           ` Junio C Hamano
2020-05-03 19:42                             ` Konstantin Tokarev
2020-05-03 19:50                               ` Junio C Hamano
2020-05-04 14:31                               ` Johannes Schindelin
2020-05-04 21:59                                 ` Konstantin Tokarev
2020-05-05  4:16                                   ` Sibi Siddharthan
2020-05-05  6:16                                     ` Junio C Hamano
2020-05-05 16:23                                       ` Sibi Siddharthan
2020-05-05 18:17                                         ` Junio C Hamano
2020-05-06 18:43                                           ` Sibi Siddharthan
2020-05-07 11:48                                             ` Đoàn Trần Công Danh
2020-05-06 21:27                                         ` Johannes Schindelin
2020-05-07 20:54                                   ` Johannes Schindelin
2020-05-02 13:21                   ` Danh Doan
2020-05-02 14:50                     ` Sibi Siddharthan
2020-05-02 15:02                       ` Danh Doan
2020-05-02 15:16                         ` Sibi Siddharthan
2020-04-27 21:17           ` Junio C Hamano
2020-04-27 21:56             ` Michal Suchánek
2020-04-27 22:09             ` Jeff King
2020-04-27 22:23               ` Elijah Newren
2020-04-27 23:16                 ` Junio C Hamano
2020-04-28  5:36                 ` Jeff King
2020-05-12 16:50 ` [PATCH v2 00/11] " Sibi Siddharthan via GitGitGadget
2020-05-12 16:50   ` [PATCH v2 01/11] Introduce CMake support for configuring Git on Linux Sibi Siddharthan via GitGitGadget
2020-05-12 20:59     ` Junio C Hamano
2020-05-13 20:21       ` Sibi Siddharthan
2020-05-12 16:50   ` [PATCH v2 02/11] cmake: generate the shell/perl/python scripts and templates, translations Sibi Siddharthan via GitGitGadget
2020-05-12 21:19     ` Junio C Hamano
2020-05-13 20:07       ` Sibi Siddharthan
2020-05-12 16:50   ` [PATCH v2 03/11] cmake: installation support for git Sibi Siddharthan via GitGitGadget
2020-05-12 16:50   ` [PATCH v2 04/11] cmake: support for testing git with ctest Sibi Siddharthan via GitGitGadget
2020-05-12 16:50   ` [PATCH v2 05/11] cmake: support for testing git when building out of the source tree Sibi Siddharthan via GitGitGadget
2020-05-12 16:50   ` [PATCH v2 06/11] cmake: support for building git on windows with mingw Sibi Siddharthan via GitGitGadget
2020-05-14 15:25     ` Đoàn Trần Công Danh
2020-05-14 18:27       ` Sibi Siddharthan
2020-05-12 16:50   ` [PATCH v2 07/11] cmake: support for building git on windows with msvc and clang Sibi Siddharthan via GitGitGadget
2020-05-12 16:50   ` [PATCH v2 08/11] cmake: added checks for struct stat and libiconv Sibi Siddharthan via GitGitGadget
2020-05-12 21:16     ` Junio C Hamano
2020-05-13 20:05       ` Sibi Siddharthan
2020-05-14  2:00         ` Junio C Hamano
2020-05-14 15:31     ` Đoàn Trần Công Danh
2020-05-14 18:31       ` Sibi Siddharthan
2020-05-12 16:50   ` [PATCH v2 09/11] cmake: relocated script file contrib/buildsystems Sibi Siddharthan via GitGitGadget
2020-05-12 21:09     ` Junio C Hamano
2020-05-13 20:08       ` Sibi Siddharthan
2020-05-12 16:50   ` [PATCH v2 10/11] cmake: parse the makefile for the sources Sibi Siddharthan via GitGitGadget
2020-05-12 21:03     ` Junio C Hamano
2020-05-13 19:57       ` Sibi Siddharthan
2020-05-13 20:23         ` Junio C Hamano
2020-05-12 16:50   ` [PATCH v2 11/11] ci: modification of main.yml to use cmake for vs-build job Sibi Siddharthan via GitGitGadget
2020-05-12 21:27     ` Junio C Hamano
2020-05-13 19:45       ` Sibi Siddharthan
2020-05-25 19:16         ` Sibi Siddharthan
2020-05-25 20:03           ` Junio C Hamano
2020-05-25 20:56             ` Sibi Siddharthan
2020-05-25 21:40               ` Johannes Schindelin
2020-05-29 13:40   ` [PATCH v3 0/8] CMake build system for git Sibi Siddharthan via GitGitGadget
2020-05-29 13:40     ` [PATCH v3 1/8] Introduce CMake support for configuring Git Sibi Siddharthan via GitGitGadget
2020-05-29 19:27       ` Junio C Hamano
2020-05-30 18:50         ` Sibi Siddharthan
2020-05-31 16:17           ` Junio C Hamano
2020-05-30  8:00             ` Johannes Schindelin
2020-05-30 13:17       ` Đoàn Trần Công Danh
2020-05-29 13:40     ` [PATCH v3 2/8] cmake: generate the shell/perl/python scripts and templates, translations Sibi Siddharthan via GitGitGadget
2020-05-29 19:27       ` Junio C Hamano
2020-05-30 18:56         ` Sibi Siddharthan
2020-06-08 20:07           ` Sibi Siddharthan
2020-06-08 22:10             ` Junio C Hamano
2020-05-29 13:40     ` [PATCH v3 3/8] cmake: installation support for git Sibi Siddharthan via GitGitGadget
2020-05-29 13:40     ` [PATCH v3 4/8] cmake: support for testing git with ctest Sibi Siddharthan via GitGitGadget
2020-05-30 13:49       ` Đoàn Trần Công Danh
2020-05-30 19:04         ` Sibi Siddharthan
2020-05-31  1:28           ` Đoàn Trần Công Danh
2020-05-29 13:40     ` [PATCH v3 5/8] cmake: support for testing git when building out of the source tree Sibi Siddharthan via GitGitGadget
2020-05-29 13:40     ` [PATCH v3 6/8] cmake: support for building git on windows with mingw Sibi Siddharthan via GitGitGadget
2020-05-29 13:40     ` [PATCH v3 7/8] cmake: support for building git on windows with msvc and clang Sibi Siddharthan via GitGitGadget
2020-05-30 14:08       ` Đoàn Trần Công Danh
2020-05-30 19:08         ` Sibi Siddharthan
2020-05-29 13:40     ` [PATCH v3 8/8] ci: modification of main.yml to use cmake for vs-build job Sibi Siddharthan via GitGitGadget
2020-05-30 14:14       ` Đoàn Trần Công Danh
2020-05-30 19:13         ` Sibi Siddharthan
2020-06-12 18:29     ` [PATCH v4 0/8] CMake build system for git Sibi Siddharthan via GitGitGadget
2020-06-12 18:29       ` [PATCH v4 1/8] Introduce CMake support for configuring Git Sibi Siddharthan via GitGitGadget
2020-06-15 14:00         ` Øystein Walle
2020-06-15 20:04           ` Sibi Siddharthan
2020-06-12 18:29       ` [PATCH v4 2/8] cmake: generate the shell/perl/python scripts and templates, translations Sibi Siddharthan via GitGitGadget
2020-06-12 18:29       ` [PATCH v4 3/8] cmake: installation support for git Sibi Siddharthan via GitGitGadget
2020-06-12 18:29       ` [PATCH v4 4/8] cmake: support for testing git with ctest Sibi Siddharthan via GitGitGadget
2020-06-15 14:02         ` Øystein Walle
2020-06-15 19:45           ` Sibi Siddharthan
2020-06-12 18:29       ` [PATCH v4 5/8] cmake: support for testing git when building out of the source tree Sibi Siddharthan via GitGitGadget
2020-06-12 18:29       ` [PATCH v4 6/8] cmake: support for building git on windows with mingw Sibi Siddharthan via GitGitGadget
2020-06-15 14:03         ` Øystein Walle
2020-06-15 19:47           ` Sibi Siddharthan
2020-06-18  4:43             ` Junio C Hamano
2020-06-18 19:55               ` Sibi Siddharthan
2020-06-18 20:08                 ` Junio C Hamano
2020-06-18 20:40                   ` Sibi Siddharthan
2020-06-18 21:00                     ` Junio C Hamano
2020-06-19 17:15                       ` Sibi Siddharthan
2020-06-19 17:29                         ` Junio C Hamano
2020-06-12 18:29       ` [PATCH v4 7/8] cmake: support for building git on windows with msvc and clang Sibi Siddharthan via GitGitGadget
2020-06-15 14:04         ` Øystein Walle
2020-06-15 19:56           ` Sibi Siddharthan
2020-06-12 18:29       ` [PATCH v4 8/8] ci: modification of main.yml to use cmake for vs-build job Sibi Siddharthan via GitGitGadget
2020-06-26 16:11       ` Sibi Siddharthan via GitGitGadget [this message]
2020-06-26 16:11         ` [PATCH v5 1/8] Introduce CMake support for configuring Git Sibi Siddharthan via GitGitGadget
2020-06-26 16:11         ` [PATCH v5 2/8] cmake: generate the shell/perl/python scripts and templates, translations Sibi Siddharthan via GitGitGadget
2020-06-26 16:11         ` [PATCH v5 3/8] cmake: installation support for git Sibi Siddharthan via GitGitGadget
2020-06-26 16:11         ` [PATCH v5 4/8] cmake: support for testing git with ctest Sibi Siddharthan via GitGitGadget
2020-06-26 16:11         ` [PATCH v5 5/8] cmake: support for testing git when building out of the source tree Sibi Siddharthan via GitGitGadget
2020-06-26 16:11         ` [PATCH v5 6/8] cmake: support for building git on windows with mingw Sibi Siddharthan via GitGitGadget
2020-06-30  7:25           ` David Aguilar
2020-07-01 17:45             ` Sibi Siddharthan
2020-07-01 17:49               ` Sibi Siddharthan
2020-06-26 16:11         ` [PATCH v5 7/8] cmake: support for building git on windows with msvc and clang Sibi Siddharthan via GitGitGadget
2020-06-26 16:11         ` [PATCH v5 8/8] ci: modification of main.yml to use cmake for vs-build job Sibi Siddharthan via GitGitGadget

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.614.v5.git.1593187898.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=sibisiddharthan.github@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).