~ruther/guix-local

2662f074a0d939cd08737b17a8ef0a671c028dec — Antero Mejr 3 years ago 9d7ba42
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>
3 files changed, 115 insertions(+), 0 deletions(-)

M gnu/local.mk
M gnu/packages/parallel.scm
A gnu/packages/patches/clog-fix-shared-build.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 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	\

M gnu/packages/parallel.scm => gnu/packages/parallel.scm +29 -0
@@ 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")

A gnu/packages/patches/clog-fix-shared-build.patch => gnu/packages/patches/clog-fix-shared-build.patch +85 -0
@@ 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 \