diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2021-11-10 08:14:11 -0500 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2021-11-11 15:56:11 -0500 |
commit | 19e99de0540f4117d5ffdfbc058a406b376ec5ad (patch) | |
tree | 2dd3cded0ae8e07b9d76c468ede2898be0b09625 | |
parent | d3a7a352d59e4075e979bfe9aea73f0f531c32eb (diff) | |
download | libgit2-19e99de0540f4117d5ffdfbc058a406b376ec5ad.tar.gz |
cmake: qsort detection in features.h
-rw-r--r-- | src/CMakeLists.txt | 15 | ||||
-rw-r--r-- | src/features.h.in | 4 | ||||
-rw-r--r-- | src/util.c | 16 |
3 files changed, 15 insertions, 20 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e7801165e..f3830efe5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -50,22 +50,13 @@ add_feature_info(futimens GIT_USE_FUTIMENS "futimens support") check_prototype_definition(qsort_r "void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, int (*compar)(void *, const void *, const void *))" - "" "stdlib.h" HAVE_QSORT_R_BSD) -if(HAVE_QSORT_R_BSD) - target_compile_definitions(git2internal PRIVATE HAVE_QSORT_R_BSD) -endif() + "" "stdlib.h" GIT_QSORT_R_BSD) check_prototype_definition(qsort_r "void qsort_r(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *arg)" - "" "stdlib.h" HAVE_QSORT_R_GNU) -if(HAVE_QSORT_R_GNU) - target_compile_definitions(git2internal PRIVATE HAVE_QSORT_R_GNU) -endif() + "" "stdlib.h" GIT_QSORT_R_GNU) -check_function_exists(qsort_s HAVE_QSORT_S) -if(HAVE_QSORT_S) - target_compile_definitions(git2internal PRIVATE HAVE_QSORT_S) -endif() +check_function_exists(qsort_s GIT_QSORT_S) # Find required dependencies diff --git a/src/features.h.in b/src/features.h.in index a40b6085e..81a8ae023 100644 --- a/src/features.h.in +++ b/src/features.h.in @@ -24,6 +24,10 @@ #cmakedefine GIT_REGEX_PCRE2 #cmakedefine GIT_REGEX_BUILTIN 1 +#cmakedefine GIT_QSORT_R_BSD +#cmakedefine GIT_QSORT_R_GNU +#cmakedefine GIT_QSORT_S + #cmakedefine GIT_SSH 1 #cmakedefine GIT_SSH_MEMORY_CREDENTIALS 1 diff --git a/src/util.c b/src/util.c index 2b1dadfe8..e06d4ca09 100644 --- a/src/util.c +++ b/src/util.c @@ -18,7 +18,7 @@ # endif # include <windows.h> -# ifdef HAVE_QSORT_S +# ifdef GIT_QSORT_S # include <search.h> # endif #endif @@ -673,7 +673,7 @@ size_t git__unescape(char *str) return (pos - str); } -#if defined(HAVE_QSORT_S) || defined(HAVE_QSORT_R_BSD) +#if defined(GIT_QSORT_S) || defined(GIT_QSORT_R_BSD) typedef struct { git__sort_r_cmp cmp; void *payload; @@ -688,9 +688,9 @@ static int GIT_LIBGIT2_CALL git__qsort_r_glue_cmp( #endif -#if !defined(HAVE_QSORT_R_BSD) && \ - !defined(HAVE_QSORT_R_GNU) && \ - !defined(HAVE_QSORT_S) +#if !defined(GIT_QSORT_R_BSD) && \ + !defined(GIT_QSORT_R_GNU) && \ + !defined(GIT_QSORT_S) static void swap(uint8_t *a, uint8_t *b, size_t elsize) { char tmp[256]; @@ -721,12 +721,12 @@ static void insertsort( void git__qsort_r( void *els, size_t nel, size_t elsize, git__sort_r_cmp cmp, void *payload) { -#if defined(HAVE_QSORT_R_BSD) +#if defined(GIT_QSORT_R_BSD) git__qsort_r_glue glue = { cmp, payload }; qsort_r(els, nel, elsize, &glue, git__qsort_r_glue_cmp); -#elif defined(HAVE_QSORT_R_GNU) +#elif defined(GIT_QSORT_R_GNU) qsort_r(els, nel, elsize, cmp, payload); -#elif defined(HAVE_QSORT_S) +#elif defined(GIT_QSORT_S) git__qsort_r_glue glue = { cmp, payload }; qsort_s(els, nel, elsize, git__qsort_r_glue_cmp, &glue); #else |