summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntero Mejr <antero@mailbox.org>2023-04-07 01:06:20 +0000
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2023-04-21 10:50:55 +0200
commit2662f074a0d939cd08737b17a8ef0a671c028dec (patch)
treef837d41479320600dd3bf5a8f778e0059b6a18b5
parent9d7ba42dbf376ff8e971103bd92b8db1b0116e9c (diff)
gnu: Add clog.
* gnu/packages/parallel.scm (clog): New variable. * gnu/packages/patches/clog-fix-shared-build.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/parallel.scm29
-rw-r--r--gnu/packages/patches/clog-fix-shared-build.patch85
3 files changed, 115 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 01ffe3fdb6..b631fa6d5a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1002,6 +1002,7 @@ dist_patch_DATA = \
%D%/packages/patches/classpath-aarch64-support.patch \
%D%/packages/patches/classpath-miscompilation.patch \
%D%/packages/patches/cling-use-shared-library.patch \
+ %D%/packages/patches/clog-fix-shared-build.patch \
%D%/packages/patches/clucene-pkgconfig.patch \
%D%/packages/patches/cmake-curl-certificates.patch \
%D%/packages/patches/cmake-curl-certificates-3.24.patch \
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 60bf8409ee..bc3edf9122 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -500,6 +500,35 @@ obtain information about the CPU being used: supported instruction set,
processor name, cache information, and topology information.")
(license license:bsd-2))))
+(define-public clog
+ (package
+ (inherit cpuinfo) ;distributed with cpuinfo but not built by it
+ (name "clog")
+ (source (origin
+ (inherit (package-source cpuinfo))
+ (patches (search-patches "clog-fix-shared-build.patch"))))
+ (arguments
+ (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "deps/clog"))))))
+ (native-inputs (list googletest))
+ (inputs '())
+ (synopsis "C-style logging library based on printf")
+ (description
+ "This package provides a C-style library for logging errors,
+warnings, information notes, and debug information. Its features are:
+@itemize
+@item printf-style interface for formatting variadic parameters.
+@item Separate functions for logging errors, warnings, information notes, and
+debug information.
+@item Independent logging settings for different modules.
+@item Logging to logcat on Android and stderr/stdout on other platforms.
+@item Compatible with C99 and C++.
+@item Covered with unit tests.
+@end itemize")))
+
(define-public psimd
;; There is currently no tag in this repo.
(let ((commit "072586a71b55b7f8c584153d223e95687148a900")
diff --git a/gnu/packages/patches/clog-fix-shared-build.patch b/gnu/packages/patches/clog-fix-shared-build.patch
new file mode 100644
index 0000000000..bf80544b90
--- /dev/null
+++ b/gnu/packages/patches/clog-fix-shared-build.patch
@@ -0,0 +1,85 @@
+Author: Antero Mejr <antero@mailbox.org>
+Notes: Disabled function visibility hacks and googletest download. Enabled
+non-static builds.
+
+diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
+index 083f519..b7b225a 100644
+--- a/deps/clog/CMakeLists.txt
++++ b/deps/clog/CMakeLists.txt
+@@ -38,20 +38,8 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
+ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
+ CACHE PATH "Confu-style dependencies binary directory")
+
+-IF(CLOG_BUILD_TESTS)
+- IF(NOT DEFINED GOOGLETEST_SOURCE_DIR)
+- MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
+- CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
+- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
+- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
+- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
+- SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
+- ENDIF()
+-ENDIF()
+-
+ # ---[ clog library
+-ADD_LIBRARY(clog STATIC src/clog.c)
++ADD_LIBRARY(clog src/clog.c)
+ SET_TARGET_PROPERTIES(clog PROPERTIES
+ C_STANDARD 99
+ C_EXTENSIONS NO)
+@@ -74,16 +62,6 @@ INSTALL(TARGETS clog
+
+ # ---[ clog tests
+ IF(CLOG_BUILD_TESTS)
+- # ---[ Build google test
+- IF(NOT TARGET gtest)
+- IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static")
+- SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+- ENDIF()
+- ADD_SUBDIRECTORY(
+- "${GOOGLETEST_SOURCE_DIR}"
+- "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
+- ENDIF()
+-
+ ADD_EXECUTABLE(clog-test test/clog.cc)
+ SET_TARGET_PROPERTIES(clog-test PROPERTIES
+ CXX_STANDARD 11
+diff --git a/deps/clog/include/clog.h b/deps/clog/include/clog.h
+index 4143761..aa9000f 100644
+--- a/deps/clog/include/clog.h
++++ b/deps/clog/include/clog.h
+@@ -11,16 +11,6 @@
+ #define CLOG_INFO 4
+ #define CLOG_DEBUG 5
+
+-#ifndef CLOG_VISIBILITY
+- #if defined(__ELF__)
+- #define CLOG_VISIBILITY __attribute__((__visibility__("internal")))
+- #elif defined(__MACH__)
+- #define CLOG_VISIBILITY __attribute__((__visibility__("hidden")))
+- #else
+- #define CLOG_VISIBILITY
+- #endif
+-#endif
+-
+ #ifndef CLOG_ARGUMENTS_FORMAT
+ #if defined(__GNUC__)
+ #define CLOG_ARGUMENTS_FORMAT __attribute__((__format__(__printf__, 1, 2)))
+@@ -33,11 +23,11 @@
+ extern "C" {
+ #endif
+
+-CLOG_VISIBILITY void clog_vlog_debug(const char* module, const char* format, va_list args);
+-CLOG_VISIBILITY void clog_vlog_info(const char* module, const char* format, va_list args);
+-CLOG_VISIBILITY void clog_vlog_warning(const char* module, const char* format, va_list args);
+-CLOG_VISIBILITY void clog_vlog_error(const char* module, const char* format, va_list args);
+-CLOG_VISIBILITY void clog_vlog_fatal(const char* module, const char* format, va_list args);
++void clog_vlog_debug(const char* module, const char* format, va_list args);
++void clog_vlog_info(const char* module, const char* format, va_list args);
++void clog_vlog_warning(const char* module, const char* format, va_list args);
++void clog_vlog_error(const char* module, const char* format, va_list args);
++void clog_vlog_fatal(const char* module, const char* format, va_list args);
+
+ #define CLOG_DEFINE_LOG_DEBUG(log_debug_function_name, module, level) \
+ CLOG_ARGUMENTS_FORMAT \