From: "Øystein Walle" <oystwa@gmail.com>
To: gitgitgadget@gmail.com
Cc: git@vger.kernel.org, sibisiddharthan.github@gmail.com,
"Øystein Walle" <oystwa@gmail.com>
Subject: Re: [PATCH v4 1/8] Introduce CMake support for configuring Git
Date: Mon, 15 Jun 2020 16:00:49 +0200 [thread overview]
Message-ID: <20200615140049.1647-1-oystwa@gmail.com> (raw)
In-Reply-To: <c4e1ba74464cfae882cde646d3c79778244b8f5e.1591986566.git.gitgitgadget@gmail.com>
Hi,
I haven't been able to pay much attention lately. I see this is v4 of this
patch series and thought I took a quick look and didn't find anything, it's
possible some of this has been addressed already. If so I apologize.
> So let's start building CMake support for Git.
Yay!
> +
> +Instructions to run CMake:
> +
> +cmake `relative-path-to-CMakeLists.txt` -DCMAKE_BUILD_TYPE=Release
> +Eg.
> +From the root of git source tree
> + `cmake contrib/buildsystems/ `
> +This will build the git binaries at the root
> +
> +For out of source builds, say build in 'git/git-build/'
> + `mkdir git-build;cd git-build; cmake ../contrib/buildsystems/`
> +This will build the git binaries in git-build directory
> +
Since the mininum required version is sufficiently high I suggest you
recommend the following as well:
cmake -B build-dir -S contrib/buildsystems
This might be easier for scripted tasks (packaging and whatnot) since cd
and mkdir aren't necessary.
> +#set the source directory to root of git
> +set(CMAKE_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
See if you can avoid this. This this will break if another project includes Git
as part of itself with add_subdirectory() or the ExternalProject module. If all
you use it for is paths to other files then you might as well do this:
set(repo_root "${CMAKE_CURRENT_LIST_DIR}/../..")
and use ${repo_root} the places you use ${CMAKE_SOURCE_DIR} now.
AFAIK the places CMake accepts relative paths it's usually relative to
CMAKE_CURRENT_SOURCE_DIR and not CMAKE_SOURCE_DIR, anyway. I don't think it's
automagically updated when CMAKE_SOURCE_DIR is changed.
> +include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
> +if(CURL_FOUND)
> + include_directories(SYSTEM ${CURL_INCLUDE_DIRS})
> +endif()
This is better handled like this these days:
diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 8367b73e94..ca1f90e58c 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -121,10 +121,6 @@ if(NOT Intl_FOUND)
endif()
endif()
-include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
-if(CURL_FOUND)
- include_directories(SYSTEM ${CURL_INCLUDE_DIRS})
-endif()
if(EXPAT_FOUND)
include_directories(SYSTEM ${EXPAT_INCLUDE_DIRS})
endif()
@@ -606,7 +602,7 @@ endif()
#link all required libraries to common-main
add_library(common-main OBJECT ${CMAKE_SOURCE_DIR}/common-main.c)
-target_link_libraries(common-main libgit xdiff ${ZLIB_LIBRARIES})
+target_link_libraries(common-main libgit xdiff ZLIB::ZLIB)
if(Intl_FOUND)
target_link_libraries(common-main ${Intl_LIBRARIES})
endif()
@@ -659,17 +655,17 @@ if(CURL_FOUND)
add_library(http_obj OBJECT ${CMAKE_SOURCE_DIR}/http.c)
add_executable(git-imap-send ${CMAKE_SOURCE_DIR}/imap-send.c)
- target_link_libraries(git-imap-send http_obj common-main ${CURL_LIBRARIES})
+ target_link_libraries(git-imap-send http_obj common-main CURL::libcurl)
add_executable(git-http-fetch ${CMAKE_SOURCE_DIR}/http-walker.c ${CMAKE_SOURCE_DIR}/http-fetch.c)
- target_link_libraries(git-http-fetch http_obj common-main ${CURL_LIBRARIES})
+ target_link_libraries(git-http-fetch http_obj common-main CURL::libcurl)
add_executable(git-remote-http ${CMAKE_SOURCE_DIR}/http-walker.c ${CMAKE_SOURCE_DIR}/remote-curl.c)
- target_link_libraries(git-remote-http http_obj common-main ${CURL_LIBRARIES} )
+ target_link_libraries(git-remote-http http_obj common-main CURL::libcurl)
if(EXPAT_FOUND)
add_executable(git-http-push ${CMAKE_SOURCE_DIR}/http-push.c)
- target_link_libraries(git-http-push http_obj common-main ${CURL_LIBRARIES} ${EXPAT_LIBRARIES})
+ target_link_libraries(git-http-push http_obj common-main CURL::libcurl ${EXPAT_LIBRARIES})
endif()
endif()
With this change we're feeding proper CMake targets to target_link_libraries()
instead of just a bunch of strings. CMake can know a lot about a target, such
as it's dependencies, required macros and so on[1]. This means some boilerplate
code can be removed: Notice that the manual handling of Zlib's include path is
gone. The same can perhaps be done for the other libraries as well but I
haven't checked that.
> +include_directories(${CMAKE_SOURCE_DIR})
> +(...)
> +include_directories(${CMAKE_BINARY_DIR})
See if CMAKE_INCLUDE_CURRENT_DIR[2] makes this unneeded. It might not since you
overwrite CMAKE_SOURCE_DIR manually.
Øsse
[1]: https://cmake.org/cmake/help/latest/manual/cmake-properties.7.html#properties-on-targets
[2]: https://cmake.org/cmake/help/latest/variable/CMAKE_INCLUDE_CURRENT_DIR.html
next prev parent reply other threads:[~2020-06-15 14:01 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 [this message]
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 ` [PATCH v5 0/8] CMake build system for git Sibi Siddharthan via GitGitGadget
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=20200615140049.1647-1-oystwa@gmail.com \
--to=oystwa@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--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).