guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

08/08: gnu: Add libobjc2.


From: guix-commits
Subject: 08/08: gnu: Add libobjc2.
Date: Fri, 20 May 2022 14:28:12 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 31a9003d4f47fe54df61d2313728bc09a21f20d0
Author: Zhu Zihao <all_but_last@163.com>
AuthorDate: Sun Mar 27 01:11:15 2022 +0800

    gnu: Add libobjc2.
    
    * gnu/packages/patches/libobjc2-unbundle-robin-map.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add corresponding file entry.
    * gnu/packages/gnustep.scm (libobjc2): New variable.
    
    Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 gnu/local.mk                                       |  1 +
 gnu/packages/gnustep.scm                           | 47 ++++++++++++++++++++++
 .../patches/libobjc2-unbundle-robin-map.patch      | 47 ++++++++++++++++++++++
 3 files changed, 95 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index 21b8a9758d..37e0107e4a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1335,6 +1335,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch       \
   %D%/packages/patches/libffi-3.3-powerpc-fixes.patch          \
   %D%/packages/patches/libffi-float128-powerpc64le.patch       \
+  %D%/packages/patches/libobjc2-unbundle-robin-map.patch       \
   %D%/packages/patches/librime-fix-build-with-gcc10.patch      \
   %D%/packages/patches/libvirt-add-install-prefix.patch        \
   %D%/packages/patches/libziparchive-add-includes.patch                \
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index a6c7c800a8..0314983559 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -22,15 +22,21 @@
 
 (define-module (gnu packages gnustep)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages datastructures)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages libffcall)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages glib)
@@ -65,6 +71,47 @@ configuration, building, installation, and packaging.  It 
also allows the user
 to easily create cross-compiled binaries.")
     (license license:gpl3+)))
 
+(define-public libobjc2
+  (package
+    (name "libobjc2")
+    (version "2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/gnustep/libobjc2";)
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1zjryzvy06gjf36gz6zrkg9icwz6wsf80mp94x6bq1109vkl40b5"))
+              (file-name (git-file-name name version))
+              (patches
+               (search-patches "libobjc2-unbundle-robin-map.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      ;; XXX: Cannot use GCC to compile ObjC code due to
+      ;; https://issues.guix.gnu.org/29644.
+      #:configure-flags #~(list "-DCMAKE_C_COMPILER=clang"
+                                "-DCMAKE_CXX_COMPILER=clang++")))
+    (inputs
+     (list clang robin-map))
+    (home-page "http://www.gnustep.org/";)
+    (synopsis "Objective-C runtime library for Clang")
+    (description "Libobjc2 is an Objective-C runtime library designed as a
+drop-in replacment for GCC runtime.  It supports following features beyond
+GCC runtime.
+
+@itemize
+@item Modern Objective-C runtime APIs.
+@item Blocks (Closures).
+@item Synthesised property accessors.
+@item Efficient support for @code{@@synchronized()}.
+@item Type-dependent dispatch.
+@item Associated reference API.
+@item Automatic Reference Counting.
+@end itemize")
+    (license license:expat)))
+
 (define-public windowmaker
   (package
     (name "windowmaker")
diff --git a/gnu/packages/patches/libobjc2-unbundle-robin-map.patch 
b/gnu/packages/patches/libobjc2-unbundle-robin-map.patch
new file mode 100644
index 0000000000..b828a64221
--- /dev/null
+++ b/gnu/packages/patches/libobjc2-unbundle-robin-map.patch
@@ -0,0 +1,47 @@
+From 2c5b0d5d6eba3bda4e83f489da546060fa8f3a2b Mon Sep 17 00:00:00 2001
+From: Zhu Zihao <all_but_last@163.com>
+Date: Sat, 26 Mar 2022 16:54:43 +0800
+Subject: [PATCH] Unbundle robin-map.
+
+This patch makes libobjc2 use robin-map header from system instead of cloning
+from submodule.
+---
+ CMakeLists.txt | 8 --------
+ arc.mm         | 2 +-
+ 2 files changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e2746e9..cf731f1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -86,14 +86,6 @@ else ()
+       list(APPEND libobjc_C_SRCS eh_personality.c)
+ endif (WIN32)
+ 
+-if (NOT EXISTS 
"${CMAKE_SOURCE_DIR}/third_party/robin-map/include/tsl/robin_map.h")
+-      message(FATAL_ERROR "Git submodules not present, please run:\n\n"
+-                                              " $ git submodule init && git 
submodule update\n\n"
+-                                              "If you did not checkout via 
git, you will need to"
+-                                              "fetch the submodule's contents 
from"
+-                                              
"https://github.com/Tessil/robin-map/";)
+-endif ()
+-
+ # For release builds, we disable spamming the terminal with warnings about
+ # selector type mismatches
+ if (CMAKE_BUILD_TYPE STREQUAL Release)
+diff --git a/arc.mm b/arc.mm
+index c96681f..cc93e7f 100644
+--- a/arc.mm
++++ b/arc.mm
+@@ -3,7 +3,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <assert.h>
+-#include "third_party/robin-map/include/tsl/robin_map.h"
++#include <tsl/robin_map.h>
+ #import "lock.h"
+ #import "objc/runtime.h"
+ #import "objc/blocks_runtime.h"
+-- 
+2.34.0
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]