Re: building tog-pegasus on 64-bit ARM

Karl Schopmeyer <[email protected]> Thu, 23 May 2013 13:38:46 -0500
Newsgroups gmane.network.open-pegasus.general
Message-ID <[email protected]>
Thanks for working on this.  There are others who need this support 
and I guess that we are going to find some porting issues as we move 
ahead.  We already have an indication that there may be an issue in 
the CMPI header files (struct padding) but have not confirmed this 
with pegasus.

The big problem here is going to be testing because of the very 
limited availabilty of arm 64 platforms that you can test on.

Karl

Thanks for your message at 01:32 PM 5/21/2013. Your message was:

>The attached patch adds support to build on a 64-bit ARM system 
>(aarch64).  This is only intended to add initial support for 
>building, since hardware is not currently available.
>
>Options CXX_MACHINE_OPTIONS and LINK_MACHINE_OPTIONS were only 
>included as placeholders in platform_LINUX_AARCH64_GNU.mak, since no 
>platform-specific optimizations are currently known.
>
>I successfully completed a test build using a software simulator:
>
>   http://fedoraproject.org/wiki/Architectures/ARM/AArch64/QuickStart
>
>Please let me know if anything else should be needed, or if any 
>changes to this patch are required.
>
>
>Thank you,
>
>d.marlin
>
>
>diff -up pegasus/mak/platform_LINUX_AARCH64_GNU.mak.aarch64 
>pegasus/mak/platform_LINUX_AARCH64_GNU.mak
>--- pegasus/mak/platform_LINUX_AARCH64_GNU.mak.aarch64  2013-05-17 
>12:12:28.757746213 -0500
>+++ pegasus/mak/platform_LINUX_AARCH64_GNU.mak  2013-05-17 
>12:10:16.988671110 -0500
>@@ -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 AARCH64
>+# If you have generic Linux config options, please place them in 
>config-linux.mak
>+
>+include $(ROOT)/mak/config-linux.mak
>+
>+ARCHITECTURE = AARCH64
>+CXX_MACHINE_OPTIONS =
>+LINK_MACHINE_OPTIONS =
>diff -up pegasus/src/Pegasus/Common/Config.h.aarch64 
>pegasus/src/Pegasus/Common/Config.h
>--- pegasus/src/Pegasus/Common/Config.h.aarch64 2013-05-16 
>14:36:05.349633092 -0500
>+++ pegasus/src/Pegasus/Common/Config.h 2013-05-21 13:02:28.801790728 -0500
>@@ -100,6 +100,8 @@
>  # include <Pegasus/Common/Platform_VMS_IA64_DECCXX.h>
>  #elif defined (PEGASUS_PLATFORM_LINUX_XSCALE_GNU)
>  # include <Pegasus/Common/Platform_LINUX_XSCALE_GNU.h>
>+#elif defined (PEGASUS_PLATFORM_LINUX_AARCH64_GNU)
>+# include <Pegasus/Common/Platform_LINUX_AARCH64_GNU.h>
>  #elif defined (PEGASUS_PLATFORM_LINUX_X86_64_CLANG)
>  # include <Pegasus/Common/Platform_LINUX_X86_64_CLANG.h>
>  #elif defined (PEGASUS_PLATFORM_LINUX_IX86_CLANG)
>diff -up 
>pegasus/src/Pegasus/Common/Platform_LINUX_AARCH64_GNU.h.aarch64 
>pegasus/src/Pegasus/Common/Platform_LINUX_AARCH64_GNU.h
>--- 
>pegasus/src/Pegasus/Common/Platform_LINUX_AARCH64_GNU.h.aarch64 
>2013-05-16 14:36:05.535609191 -0500
>+++ 
>pegasus/src/Pegasus/Common/Platform_LINUX_AARCH64_GNU.h 
>2013-05-16 14:36:05.535609191 -0500
>@@ -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_AARCH64_GNU_h
>+#define Pegasus_Platform_LINUX_AARCH64_GNU_h
>+
>+#include <stddef.h>
>+
>+#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 <features.h>
>+#include <stdio.h>
>+#include <stdlib.h>
>+#include <sys/param.h> /* For MAXHOSTNAMELEN */
>+#include <limits.h>    /* _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_AARCH64_GNU_h */

Karl Schopmeyer                   Inova Development Inc.
305 Spring Creek Village, Suite 475 -  Dallas TX, 75248 USA
EMAIL: [email protected]       FAX: 1-972-239-0326
Phone 1-972-814-5581
Skype: kschopmeyer         Skype Phone: (214) 556-5971