[med-svn] [Git][med-team/ngs-sdk][master] 3 commits: Add support for other architectures based on gcc atomic built-ins (Closes: #813559)

Michael R. Crusoe gitlab at salsa.debian.org
Sat Oct 12 07:59:28 BST 2019



Michael R. Crusoe pushed to branch master at Debian Med / ngs-sdk


Commits:
059bf68f by Frédéric Bonnard at 2019-10-11T13:46:24Z
Add support for other architectures based on gcc atomic built-ins (Closes: #813559)

This is based on the existing win/atomic32.h modified with gcc atomic built-ins.
Each unknown architecture in the configuration scripts still needs to be
added.

- - - - -
2253b8d4 by Frédéric Bonnard at 2019-10-11T13:46:32Z
Enable ppc64/ppc64el in configuration scripts

- - - - -
bc239fe9 by Michael R. Crusoe at 2019-10-12T06:59:22Z
Merge branch 'enable-ppc64-ppc64el-and-possibly-others' into 'master'

Enable ppc64 ppc64el and possibly others

See merge request med-team/ngs-sdk!1
- - - - -


5 changed files:

- + debian/atomic32.h
- + debian/patches/enable-ppc64el.patch
- + debian/patches/fallback-on-generic-atomic32.patch
- debian/patches/series
- debian/rules


Changes:

=====================================
debian/atomic32.h
=====================================
@@ -0,0 +1,77 @@
+/*===========================================================================
+*
+*                            PUBLIC DOMAIN NOTICE
+*               National Center for Biotechnology Information
+*
+*  This software/database is a "United States Government Work" under the
+*  terms of the United States Copyright Act.  It was written as part of
+*  the author's official duties as a United States Government employee and
+*  thus cannot be copyrighted.  This software/database is freely available
+*  to the public for use. The National Library of Medicine and the U.S.
+*  Government have not placed any restriction on its use or reproduction.
+*
+*  Although all reasonable efforts have been taken to ensure the accuracy
+*  and reliability of the software and data, the NLM and the U.S.
+*  Government do not and cannot warrant the performance or results that
+*  may be obtained by using this software or data. The NLM and the U.S.
+*  Government disclaim all warranties, express or implied, including
+*  warranties of performance, merchantability or fitness for any particular
+*  purpose.
+*
+*  Please cite the author in any work or product based on this material.
+*
+* ===========================================================================
+*
+*/
+
+#ifndef _h_ngs_engine_atomic32_
+#define _h_ngs_engine_atomic32_
+
+typedef struct atomic32_t atomic32_t;
+struct atomic32_t
+{
+    volatile int counter;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* int atomic32_read ( const atomic32_t *v ); */
+#define atomic32_read( v ) \
+    ( ( v ) -> counter )
+
+/* void atomic32_set ( atomic32_t *v, int i ); */
+#define atomic32_set( v, i ) \
+    ( ( void ) ( ( ( v ) -> counter ) = ( i ) ) )
+
+/* add to v -> counter and return the prior value */
+/* int atomic32_read_and_add ( atomic32_t *v, int i ) */
+#define atomic32_read_and_add( v, i ) \
+    __sync_fetch_and_add ( ( volatile unsigned int * ) & ( v ) -> counter, ( i ) )
+
+/* void atomic32_dec ( atomic32_t *v ) */
+#define atomic32_dec( v ) \
+    __sync_sub_and_fetch ( ( volatile unsigned int * ) & ( v ) -> counter, 1 )
+
+/* int atomic32_test_and_set ( atomic32_t *v, int s, int t ) */
+#define atomic32_test_and_set( v, s, t ) \
+    __sync_val_compare_and_swap ( ( volatile unsigned int * ) & ( v ) -> counter, ( t ), ( s ) )
+
+static __inline int atomic32_read_and_add_gt ( atomic32_t *v, int i, int t )
+{
+	int val, val_intern;
+	for ( val = atomic32_read ( v ); val > t; val = val_intern )
+	{
+		val_intern = atomic32_test_and_set ( v, val + i, val );
+		if ( val_intern == val )
+			break;
+	}
+	return val;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _h_ngs_engine_atomic32_ */


=====================================
debian/patches/enable-ppc64el.patch
=====================================
@@ -0,0 +1,73 @@
+Description: Enable ppc64 and ppc64el
+Handle those architectures in the configuration scripts.
+Author: Frédéric Bonnard <frediz at debian.org>
+--- a/ngs-bam/setup/os-arch.prl
++++ b/ngs-bam/setup/os-arch.prl
+@@ -55,6 +55,9 @@
+             } elsif ($MARCH =~ /sun4v/) {
+                 $HOST_ARCH = 'sparc64';
+                 @ARCHITECTURES = qw(sparc64 sparc32);
++            } elsif ($MARCH =~ /ppc64/) {
++                $HOST_ARCH = $MARCH;
++                @ARCHITECTURES = qw(ppc64 ppc64le);
+             } else {
+                 $HOST_ARCH = $MARCH;
+             }
+--- a/ngs-java/setup/os-arch.prl
++++ b/ngs-java/setup/os-arch.prl
+@@ -55,6 +55,9 @@
+             } elsif ($MARCH =~ /sun4v/) {
+                 $HOST_ARCH = 'sparc64';
+                 @ARCHITECTURES = qw(sparc64 sparc32);
++            } elsif ($MARCH =~ /ppc64/) {
++                $HOST_ARCH = $MARCH;
++                @ARCHITECTURES = qw(ppc64 ppc64le);
+             } else {
+                 $HOST_ARCH = $MARCH;
+             }
+--- a/ngs-python/setup/os-arch.prl
++++ b/ngs-python/setup/os-arch.prl
+@@ -55,6 +55,9 @@
+             } elsif ($MARCH =~ /sun4v/) {
+                 $HOST_ARCH = 'sparc64';
+                 @ARCHITECTURES = qw(sparc64 sparc32);
++            } elsif ($MARCH =~ /ppc64/) {
++                $HOST_ARCH = $MARCH;
++                @ARCHITECTURES = qw(ppc64 ppc64le);
+             } else {
+                 $HOST_ARCH = $MARCH;
+             }
+--- a/ngs-sdk/setup/konfigure.perl
++++ b/ngs-sdk/setup/konfigure.perl
+@@ -313,6 +313,8 @@
+     $BITS = '32_64';
+ } elsif ($MARCH =~ /i?86/i) {
+     $BITS = 32;
++} elsif ($MARCH =~ /ppc64/i) {
++    $BITS = 64;
+ } else {
+     die "unrecognized Architecture '$ARCH'";
+ }
+--- a/ngs-sdk/setup/os-arch.prl
++++ b/ngs-sdk/setup/os-arch.prl
+@@ -55,6 +55,9 @@
+             } elsif ($MARCH =~ /sun4v/) {
+                 $HOST_ARCH = 'sparc64';
+                 @ARCHITECTURES = qw(sparc64 sparc32);
++            } elsif ($MARCH =~ /ppc64/) {
++                $HOST_ARCH = $MARCH;
++                @ARCHITECTURES = qw(ppc64 ppc64le);
+             } else {
+                 $HOST_ARCH = $MARCH;
+             }
+--- a/ngs-java/setup/konfigure.perl
++++ b/ngs-java/setup/konfigure.perl
+@@ -313,6 +313,8 @@
+     $BITS = '32_64';
+ } elsif ($MARCH =~ /i?86/i) {
+     $BITS = 32;
++} elsif ($MARCH =~ /ppc64/i) {
++    $BITS = 64;
+ } else {
+     die "unrecognized Architecture '$ARCH'";
+ }


=====================================
debian/patches/fallback-on-generic-atomic32.patch
=====================================
@@ -0,0 +1,21 @@
+Description: Fallback on generic atomic32.h
+Author: Frédéric Bonnard <frediz at debian.org>
+Bug-Debian: https://bugs.debian.org/813559
+--- a/ngs-sdk/setup/konfigure.perl
++++ b/ngs-sdk/setup/konfigure.perl
+@@ -910,8 +910,13 @@
+     }
+     if ($PIC) {
+         if (PACKAGE_NAMW() eq 'NGS') {
+-            L($F, "INCDIRS = \$(SRCINC) $INC\$(TOP) "
+-                .        "$INC\$(TOP)/ngs/\$(OSINC)/\$(ARCH)")
++            if ( -d "ngs/unix/$MARCH" ) {
++                L($F, "INCDIRS = \$(SRCINC) $INC\$(TOP) "
++                    .        "$INC\$(TOP)/ngs/\$(OSINC)/\$(ARCH)")
++            } else {
++                L($F, "INCDIRS = \$(SRCINC) $INC\$(TOP) "
++                    .        "$INC\$(TOP)/ngs/\$(OSINC)/generic")
++            }
+         } elsif (PACKAGE_NAMW() eq 'NGS_BAM') {
+             L($F, "INCDIRS = \$(SRCINC) $INC\$(TOP) "
+                 . "$INC\$(NGS_INCDIR)/ngs/\$(OSINC)/\$(ARCH)")


=====================================
debian/patches/series
=====================================
@@ -1,2 +1,4 @@
 fix_jni.patch
 do_not_exclude_certain_architectures_explicitly.patch
+fallback-on-generic-atomic32.patch
+enable-ppc64el.patch


=====================================
debian/rules
=====================================
@@ -28,11 +28,13 @@ override_dh_auto_clean:
 	rm -f ngs-bam/Makefile.config.install.linux.x86_64.prl
 	rm -f ngs-bam/Makefile.config.linux.x86_64
 	rm -f ngs-bam/reconfigure
+	rm -rf ngs-sdk/ngs/unix/generic
 
 	rm -rf $(DEB_SOURCE)/$(MULTIARCH)
 	rm -rf ngs-python/build
 
 override_dh_auto_configure:
+	mkdir ngs-sdk/ngs/unix/generic && cp debian/atomic32.h ngs-sdk/ngs/unix/generic/
 	# # that's no standard configure script lacking support of default options \
 	./configure --build=$(MULTIARCH) --prefix=/usr -- --source=1.7
 



View it on GitLab: https://salsa.debian.org/med-team/ngs-sdk/compare/7aacb2e730139b19dcfcd794ed8d058a3e771c32...bc239fe9c79c6e862aa0cc4e43bb0d9b9a8d6748

-- 
View it on GitLab: https://salsa.debian.org/med-team/ngs-sdk/compare/7aacb2e730139b19dcfcd794ed8d058a3e771c32...bc239fe9c79c6e862aa0cc4e43bb0d9b9a8d6748
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20191012/8018d964/attachment-0001.html>


More information about the debian-med-commit mailing list