From f2b7b490090fb2919010bbcab0181e1f2cf69824 Mon Sep 17 00:00:00 2001 From: misaka00251 Date: Fri, 28 Jul 2023 14:52:59 +0800 Subject: [PATCH] Add riscv64 support --- add-riscv64-support.patch | 184 ++++++++++++++++++++++++++++++++++++++ tog-pegasus.spec | 10 ++- 2 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 add-riscv64-support.patch diff --git a/add-riscv64-support.patch b/add-riscv64-support.patch new file mode 100644 index 0000000..44803c9 --- /dev/null +++ b/add-riscv64-support.patch @@ -0,0 +1,184 @@ +From 72c24c5bd151177f1da5e54c1e9950f4bcc3e5b2 Mon Sep 17 00:00:00 2001 +From: misaka00251 +Date: Fri, 28 Jul 2023 12:36:55 +0800 +Subject: [PATCH] Add riscv64 support + +--- + mak/platform_LINUX_RISCV64_GNU.mak | 36 ++++++ + src/Pegasus/Common/Config.h | 2 + + .../Common/Platform_LINUX_RISCV64_GNU.h | 108 ++++++++++++++++++ + 3 files changed, 146 insertions(+) + create mode 100644 mak/platform_LINUX_RISCV64_GNU.mak + create mode 100644 src/Pegasus/Common/Platform_LINUX_RISCV64_GNU.h + +diff --git a/mak/platform_LINUX_RISCV64_GNU.mak b/mak/platform_LINUX_RISCV64_GNU.mak +new file mode 100644 +index 0000000..21b3351 +--- /dev/null ++++ b/mak/platform_LINUX_RISCV64_GNU.mak +@@ -0,0 +1,36 @@ ++#//%LICENSE//////////////////////////////////////////////////////////////// ++#// ++#// Licensed to The Open Group (TOG) under one or more contributor license ++#// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with ++#// this work for additional information regarding copyright ownership. ++#// Each contributor licenses this file to you under the OpenPegasus Open ++#// Source License; you may not use this file except in compliance with the ++#// License. ++#// ++#// Permission is hereby granted, free of charge, to any person obtaining a ++#// copy of this software and associated documentation files (the "Software"), ++#// to deal in the Software without restriction, including without limitation ++#// the rights to use, copy, modify, merge, publish, distribute, sublicense, ++#// and/or sell copies of the Software, and to permit persons to whom the ++#// Software is furnished to do so, subject to the following conditions: ++#// ++#// The above copyright notice and this permission notice shall be included ++#// in all copies or substantial portions of the Software. ++#// ++#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++#// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++#// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++#// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++#// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ++#// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ++#// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++#// ++#////////////////////////////////////////////////////////////////////////// ++# Platform Configuration for Linux on PPC ++# If you have generic Linux config options, please place them in config-linux.mak ++ ++include $(ROOT)/mak/config-linux.mak ++ ++ARCHITECTURE = RISCV64 ++CXX_MACHINE_OPTIONS = ++LINK_MACHINE_OPTIONS = +diff --git a/src/Pegasus/Common/Config.h b/src/Pegasus/Common/Config.h +index afe1224..0f400c5 100644 +--- a/src/Pegasus/Common/Config.h ++++ b/src/Pegasus/Common/Config.h +@@ -100,6 +100,8 @@ + # include + #elif defined (PEGASUS_PLATFORM_LINUX_LOONGARCH64_GNU) + # include ++#elif defined (PEGASUS_PLATFORM_LINUX_RISCV64_GNU) ++# include + #elif defined (PEGASUS_PLATFORM_LINUX_X86_64_CLANG) + # include + #elif defined (PEGASUS_PLATFORM_LINUX_IX86_CLANG) +diff --git a/src/Pegasus/Common/Platform_LINUX_RISCV64_GNU.h b/src/Pegasus/Common/Platform_LINUX_RISCV64_GNU.h +new file mode 100644 +index 0000000..b2dcfce +--- /dev/null ++++ b/src/Pegasus/Common/Platform_LINUX_RISCV64_GNU.h +@@ -0,0 +1,108 @@ ++//%LICENSE//////////////////////////////////////////////////////////////// ++// ++// Licensed to The Open Group (TOG) under one or more contributor license ++// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with ++// this work for additional information regarding copyright ownership. ++// Each contributor licenses this file to you under the OpenPegasus Open ++// Source License; you may not use this file except in compliance with the ++// License. ++// ++// Permission is hereby granted, free of charge, to any person obtaining a ++// copy of this software and associated documentation files (the "Software"), ++// to deal in the Software without restriction, including without limitation ++// the rights to use, copy, modify, merge, publish, distribute, sublicense, ++// and/or sell copies of the Software, and to permit persons to whom the ++// Software is furnished to do so, subject to the following conditions: ++// ++// The above copyright notice and this permission notice shall be included ++// in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ++// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ++// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++////////////////////////////////////////////////////////////////////////// ++// ++//%///////////////////////////////////////////////////////////////////////////// ++ ++/***************************************************************************** ++ The platform configuration files in pegasus/src/Pegasus/Common/Platform_*.h ++ are intended to normalize platform/compiler differences so that Pegasus code ++ can be written to work on all platforms without requiring platform ifdefs. ++ Since these files are part of the Pegasus SDK, their contents should be ++ the minimum that achieves the stated purpose. ++ ++ Examples of differences that are normalized here are support for C++ ++ namespaces, 64-bit integer type, support for C++ template specialization. ++ ++ Examples of things that are not appropriate in these files are the enablement ++ of Pegasus features for a specific platform and other build configuration. ++******************************************************************************/ ++ ++#ifndef Pegasus_Platform_LINUX_RISCV64_GNU_h ++#define Pegasus_Platform_LINUX_RISCV64_GNU_h ++ ++#include ++ ++#define PEGASUS_OS_TYPE_UNIX ++ ++#ifndef PEGASUS_PLATFORM_LINUX_GENERIC_GNU ++#define PEGASUS_PLATFORM_LINUX_GENERIC_GNU ++#endif ++ ++#define PEGASUS_OS_LINUX ++ ++#define PEGASUS_POINTER_64BIT ++ ++#define PEGASUS_COMPILER_GNU ++ ++#define PEGASUS_UINT64 unsigned long long ++ ++#define PEGASUS_SINT64 long long ++ ++#define PEGASUS_HAVE_NAMESPACES ++ ++#define PEGASUS_HAVE_FOR_SCOPE ++ ++#define PEGASUS_HAVE_TEMPLATE_SPECIALIZATION ++ ++#ifndef _GNU_SOURCE ++#define _GNU_SOURCE ++#endif ++#ifndef _REENTRANT ++#define _REENTRANT ++#endif ++#define _THREAD_SAFE ++#include ++#include ++#include ++#include /* For MAXHOSTNAMELEN */ ++#include /* _POSIX_HOST_NAME_MAX */ ++ ++#if (__GNUC__ >= 4) ++# define PEGASUS_EXPORT __attribute__ ((visibility("default"))) ++# define PEGASUS_IMPORT __attribute__ ((visibility("default"))) ++# define PEGASUS_HIDDEN_LINKAGE __attribute__((visibility("hidden"))) ++#endif ++ ++#define PEGASUS_HAVE_PTHREADS ++ ++#define PEGASUS_HAVE_NANOSLEEP ++ ++#define PEGASUS_HAS_SIGNALS ++ ++#define PEGASUS_INTEGERS_BOUNDARY_ALIGNED ++ ++/* getifaddrs() avilable in gcc version >= 3.4 */ ++#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)) ++# define PEGASUS_HAS_GETIFADDRS ++#endif ++ ++/* use POSIX read-write locks on this platform */ ++#define PEGASUS_USE_POSIX_RWLOCK ++ ++#endif /* Pegasus_Platform_LINUX_RISCV64_GNU_h */ +-- +2.37.1 (Apple Git-137.1) diff --git a/tog-pegasus.spec b/tog-pegasus.spec index a0f6a3b..e43103c 100644 --- a/tog-pegasus.spec +++ b/tog-pegasus.spec @@ -6,7 +6,7 @@ Name: tog-pegasus Version: %{major_ver}.1 -Release: 53 +Release: 54 Epoch: 2 Summary: OpenPegasus WBEM Services for Linux License: MIT @@ -38,6 +38,7 @@ Patch17: pegasus-2.14.1-ssl-include.patch Patch18: pegasus-2.14.1-openssl-1.1-fix.patch Patch19: add-loongarch64-support.patch Patch20: 0001-Fixes-issue-8-gcc-catch-by-value-and-implicit-fallth.patch +Patch21: add-riscv64-support.patch BuildRequires: procps libstdc++ pam-devel openssl openssl-devel BuildRequires: bash sed grep coreutils procps gcc gcc-c++ libstdc++ @@ -82,6 +83,9 @@ Header files for tog-pegasus %ifarch loongarch64 %global PEGASUS_HARDWARE_PLATFORM LINUX_LOONGARCH64_GNU %endif +%ifarch riscv64 +%global PEGASUS_HARDWARE_PLATFORM LINUX_RISCV64_GNU +%endif %global PEGASUS_ARCH_LIB %{_lib} %global OPENSSL_HOME %{_prefix} @@ -132,6 +136,7 @@ yes | mak/CreateDmtfSchema 238 %{SOURCE4} cim_schema_2.38.0 %patch18 -p1 -b .openssl-1.1-fix %patch19 -p1 -b .add-loongarch64-support %patch20 -p1 +%patch21 -p1 -b .add-riscv64-support %build cp -fp %SOURCE3 rpm @@ -372,6 +377,9 @@ fi %{_mandir}/man1/* %changelog +* Fri Jul 28 2023 misaka00251 - 2:2.14.1-54 +- Add riscv64 support + * Tue Jul 04 2023 chenchen - 2:2.14.1-53 - fix build error for gcc-12