Hello,

attach is git patch which provides basic OpenBSD support to the RTEMS source builder. The only issue so far (and I've not got that far) is that rtems tools, precisely libelf is broken and compilation fails because of it with:

[  7/235] Compiling rtemstoolkit/elftoolchain/libelf/elf_end.c
In file included from ../rtemstoolkit/elftoolchain/libelf/elf.c:27:
/home/karel/development/rtems/rtems-source-builder/rtems/sources/git/rtems-tools.git/rtemstoolkit/elftoolchain/libelf/libelf.h:121: error: expected specifier-qualifier-list before 'STAILQ_ENTRY'
In file included from ../rtemstoolkit/elftoolchain/libelf/elf.c:29:
../rtemstoolkit/elftoolchain/libelf/_libelf.h:123: error: expected specifier-qualifier-list before 'STAILQ_HEAD' ../rtemstoolkit/elftoolchain/libelf/_libelf.h:136: error: expected specifier-qualifier-list before 'STAILQ_HEAD' ../rtemstoolkit/elftoolchain/libelf/elf.c:31: error: expected declaration specifiers or '...' before string constant ../rtemstoolkit/elftoolchain/libelf/elf.c:31: warning: data definition has no type or storage class ../rtemstoolkit/elftoolchain/libelf/elf.c:34: error: 'LIBELF_ARCH' undeclared here (not in a function) ../rtemstoolkit/elftoolchain/libelf/elf.c:35: error: 'LIBELF_BYTEORDER' undeclared here (not in a function) ../rtemstoolkit/elftoolchain/libelf/elf.c:36: error: 'LIBELF_CLASS' undeclared here (not in a function)


positive thing is that upstream version of elftoolchain project already supports OpenBSD and I've tested the libelf is buildable on it, so it's perhaps "just" of the matter of updating to what upstream provides?

To reacap current status: iconv is not used in newlib due to issue with big5 encoding (configure complains about it). GDB is build w/o python since linking against libpython on OpenBSD fails for so far to me unknown reason. I hope both those limitations are not show-stoppers so when elftoolchain issue is solved I'd rather continue to see if I'm able to build whole RTEMS tool chain.

Thanks,
Karel
>From 1ac2a3ad4198e864125094996329c83bad712cbd Mon Sep 17 00:00:00 2001
From: Karel Gardas <karel.gar...@centrum.cz>
Date: Fri, 19 Jun 2015 12:12:16 +0200
Subject: [PATCH] add basic support for OpenBSD

---
 source-builder/sb/openbsd.py | 92 ++++++++++++++++++++++++++++++++++++++++++++
 source-builder/sb/options.py |  3 ++
 2 files changed, 95 insertions(+)
 create mode 100644 source-builder/sb/openbsd.py

diff --git a/source-builder/sb/openbsd.py b/source-builder/sb/openbsd.py
new file mode 100644
index 0000000..2443e49
--- /dev/null
+++ b/source-builder/sb/openbsd.py
@@ -0,0 +1,92 @@
+#
+# RTEMS Tools Project (http://www.rtems.org/)
+# Copyright 2010-2012 Chris Johns (chr...@rtems.org)
+# All rights reserved.
+#
+# This file is part of the RTEMS Tools package in 'rtems-tools'.
+#
+# RTEMS Tools is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# RTEMS Tools is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with RTEMS Tools.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+#
+# This code is based on what ever doco about spec files I could find and
+# RTEMS project's spec files.
+#
+
+import pprint
+import os
+
+import check
+import execute
+
+def load():
+    uname = os.uname()
+    sysctl = '/sbin/sysctl '
+    e = execute.capture_execution()
+    exit_code, proc, output = e.shell(sysctl + 'hw.ncpu')
+    if exit_code == 0:
+        ncpus = output.split('=')[1].strip()
+    else:
+        ncpus = '1'
+    if uname[4] == 'amd64':
+        cpu = 'x86_64'
+    else:
+        cpu = uname[4]
+    version = uname[2]
+    if version.find('-') > 0:
+        version = version.split('-')[0]
+    defines = {
+        '_ncpus':            ('none',    'none',     ncpus),
+        '_os':               ('none',    'none',     'openbsd'),
+        '_host':             ('triplet', 'required', cpu + '-openbsd' + 
version),
+        '_host_vendor':      ('none',    'none',     'pc'),
+        '_host_os':          ('none',    'none',     'openbsd'),
+        '_host_os_version':  ('none',    'none',     version),
+        '_host_cpu':         ('none',    'none',     cpu),
+        '_host_alias':       ('none',    'none',     '%{nil}'),
+        '_host_arch':        ('none',    'none',     cpu),
+        '_usr':              ('dir',     'required', '/usr'),
+        '_var':              ('dir',     'optional', '/var'),
+        'optincludes_build': ('none',    'none',     '-I/usr/local/include 
-L/usr/local/lib'),
+        '__chgrp':           ('exe',     'required', '/bin/chgrp'),
+        '__tar':             ('exe',     'required', '/bin/tar'),
+        '__bash':            ('exe',     'optional', '/usr/local/bin/bash'),
+        '__bison':           ('exe',     'required', '/usr/local/bin/bison'),
+        '__git':             ('exe',     'required', '/usr/local/bin/git'),
+        '__svn':             ('exe',     'required', '/usr/local/bin/svn'),
+        '__xz':              ('exe',     'optional', '/usr/local/bin/xz'),
+        '__bzip2':           ('exe',     'required', '/usr/local/bin/bzip2'),
+        '__unzip':           ('exe',     'required', '/usr/local/bin/unzip'),
+        '__make':            ('exe',     'required', 'gmake'),
+        '__m4':              ('exe',     'required', '/usr/local/bin/gm4'),
+        '__awk':             ('exe',     'required', '/usr/local/bin/gawk'),
+        '__sed':             ('exe',     'required', '/usr/local/bin/gsed'),
+        '__patch':           ('exe',     'required', '/usr/local/bin/gpatch'),
+        '__python':          ('exe',     'required', 
'/usr/local/bin/python2.7'),
+        '__patch_opts':      ('none',    'none',     '-E'),
+        'with_iconv':        ('none',    'none',     '0'),
+        'without_python':    ('none',    'none',     '1')
+        }
+
+    defines['_build']        = defines['_host']
+    defines['_build_vendor'] = defines['_host_vendor']
+    defines['_build_os']     = defines['_host_os']
+    defines['_build_cpu']    = defines['_host_cpu']
+    defines['_build_alias']  = defines['_host_alias']
+    defines['_build_arch']   = defines['_host_arch']
+
+    return defines
+
+if __name__ == '__main__':
+    pprint.pprint(load())
diff --git a/source-builder/sb/options.py b/source-builder/sb/options.py
index e4964f0..cddacfe 100644
--- a/source-builder/sb/options.py
+++ b/source-builder/sb/options.py
@@ -580,6 +580,9 @@ def load(args, optargs = None, defaults = 
'%{_sbdir}/defaults.mc'):
             elif uname[0] == 'SunOS':
                 import solaris
                 overrides = solaris.load()
+            elif uname[0] == 'OpenBSD':
+                import openbsd
+                overrides = openbsd.load()
         except:
             raise error.general('failed to load %s host support' % (uname[0]))
     else:
-- 
2.3.0

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to