Andrew Johnson has proposed merging lp:~epics-core/epics-base/apple-ios into lp:epics-base.
Requested reviews:
Janet B. Anderson (jba-aps)
Build configuration and libCom OSD files for Apple iOS, as used on the iPad and iPhone.
--
https://code.launchpad.net/~epics-core/epics-base/apple-ios/+merge/36391
Your team EPICS Core Developers is subscribed to branch lp:~epics-core/epics-base/apple-ios.
=== added file 'configure/os/CONFIG.Common.ios-arm'
--- configure/os/CONFIG.Common.ios-arm 1970-01-01 00:00:00 +0000
+++ configure/os/CONFIG.Common.ios-arm 2010-09-22 21:35:00 +0000
@@ -0,0 +1,22 @@
+# CONFIG.Common.ios-arm
+#
+# This file is maintained by the build community.
+#
+# Definitions for ios-arm target builds
+#-------------------------------------------------------
+
+IOS_PLATFORM = iPhoneOS
+
+#
+# Architecture-specific information
+#
+ARCH_CLASS = armv6
+
+OP_SYS_CFLAGS += -fno-inline-functions
+
+# iOS optimization flags for arm architecture
+OPT_CFLAGS_YES = -O2
+OPT_CXXFLAGS_YES = -O2
+
+# Include definitions common to all iphone targets
+include $(CONFIG)/os/CONFIG.Common.iosCommon
=== added file 'configure/os/CONFIG.Common.ios-x86'
--- configure/os/CONFIG.Common.ios-x86 1970-01-01 00:00:00 +0000
+++ configure/os/CONFIG.Common.ios-x86 2010-09-22 21:35:00 +0000
@@ -0,0 +1,16 @@
+# CONFIG.Common.ios-x86
+#
+# This file is maintained by the build community.
+#
+# Definitions for ios-x86 target builds
+#-------------------------------------------------------
+
+IOS_PLATFORM = iPhoneSimulator
+
+#
+# Architecture-specific information
+#
+ARCH_CLASS = i386
+
+# Include definitions common to all iOS targets
+include $(CONFIG)/os/CONFIG.Common.iosCommon
=== added file 'configure/os/CONFIG.Common.iosCommon'
--- configure/os/CONFIG.Common.iosCommon 1970-01-01 00:00:00 +0000
+++ configure/os/CONFIG.Common.iosCommon 2010-09-22 21:35:00 +0000
@@ -0,0 +1,86 @@
+# CONFIG.Common.iosCommon
+#
+# $Id$
+# This file is maintained by the build community.
+#
+# Definitions for iOS target archs
+# Sites may override these definitions in CONFIG_SITE.Common.iosCommon
+# or CONFIG_SITE.<host>.iosCommon
+#-------------------------------------------------------
+
+# Include definitions common to all Unix targets
+include $(CONFIG)/os/CONFIG.Common.UnixCommon
+
+# Include common gnu compiler definitions
+include $(CONFIG)/CONFIG.gnuCommon
+
+#-------------------------------------------------------
+# Valid build types
+VALID_BUILDS = Ioc
+
+#-------------------------------------------------------
+# operating system class (include/os/<os_class>)
+OS_CLASS = iOS
+
+#--------------------------------------------------
+# GNU and SDK directories
+GNU_DIR = $(PLATFORM_DIR)/Developer/usr
+SDK_DIR = $(PLATFORM_DIR)/Developer/SDKs/$(IOS_PLATFORM)$(IOS_VERSION).sdk
+
+#-------------------------------------------------------
+# Build architecture flags
+ARCH_DEP_CFLAGS += -arch $(ARCH_CLASS)
+ARCH_DEP_LDFLAGS += -arch $(ARCH_CLASS)
+
+#--------------------------------------------------
+# Operating system flags
+OP_SYS_CFLAGS += -isysroot $(SDK_DIR) -D__IPHONE_OS_VERSION_MIN_REQUIRED=30200
+
+#--------------------------------------------------
+# Don't try to use precompiled headers when converting sequencer files
+CPPSNCFLAGS += -no-cpp-precomp
+
+#--------------------------------------------------
+# Always compile in debugging symbol table information
+#
+OPT_CFLAGS_YES += -g
+OPT_CXXFLAGS_YES += -g
+
+#-------------------------------------------------------
+# Compiler definitions:
+# Use clang instead of gcc
+# Must use g++ still
+CC = $(GNU_BIN)/clang
+CCC = $(GNU_BIN)/c++
+
+#-------------------------------------------------------
+# Linker flags
+OP_SYS_LDFLAGS += -dynamic -Z -L$(SDK_DIR)/usr/lib
+
+#-------------------------------------------------------
+# Shared libraries
+SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
+SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
+ -install_name $(shell perl $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
+ -compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
+ -current_version $(SHRLIB_VERSION)
+SHRLIB_SUFFIX = .$(SHRLIB_VERSION).dylib
+
+LOADABLE_SHRLIB_LDFLAGS = -bundle -flat_namespace -undefined suppress
+
+#--------------------------------------------------
+# code flags
+CODE_CFLAGS = -fno-common -Wno-unused-value
+CODE_CXXFLAGS = -fno-common
+
+#
+# Add support for Objective-C source
+#
+vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
+%.o: %.m
+ $(COMPILE.c) -c $<
+
+#--------------------------------------------------
+# Allow site overrides
+-include $(CONFIG)/os/CONFIG_SITE.Common.iosCommon
+-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).iosCommon
=== added file 'configure/os/CONFIG_SITE.Common.iosCommon'
--- configure/os/CONFIG_SITE.Common.iosCommon 1970-01-01 00:00:00 +0000
+++ configure/os/CONFIG_SITE.Common.iosCommon 2010-09-22 21:35:00 +0000
@@ -0,0 +1,24 @@
+# CONFIG_SITE.Common.iosCommon
+#
+# $Id$
+# This file is maintained by the build community.
+#
+# Site-specific settings for Apple iOS builds
+#-------------------------------------------------------
+
+# iOS Version number
+
+#IOS_VERSION = 3.2
+IOS_VERSION = 4.1
+
+
+# Most sites will want shared libraries
+
+STATIC_BUILD=NO
+SHARED_LIBRARIES=YES
+
+
+# Platform path, this is probably correct
+
+XCODE_PATH := $(shell xcode-select -print-path)
+PLATFORM_DIR = $(XCODE_PATH)/Platforms/$(IOS_PLATFORM).platform
=== modified file 'configure/os/CONFIG_SITE.darwin-x86.Common'
--- configure/os/CONFIG_SITE.darwin-x86.Common 2009-05-06 17:25:01 +0000
+++ configure/os/CONFIG_SITE.darwin-x86.Common 2010-09-22 21:35:00 +0000
@@ -1,7 +1,11 @@
# CONFIG_SITE.darwin-x86.Common
#
+# This file is maintained by the build community.
+#
# $Id$
-# This file is maintained by the build community.
-#
# Site override definitions for darwin-x86 host builds
#-------------------------------------------------------
+
+# Uncomment the following line to cross-compile the
+# iOS device (arm) and simulator (x86) binaries
+#CROSS_COMPILER_TARGET_ARCHS = ios-arm ios-x86
=== modified file 'documentation/RELEASE_NOTES.html'
--- documentation/RELEASE_NOTES.html 2010-09-20 19:41:33 +0000
+++ documentation/RELEASE_NOTES.html 2010-09-22 21:35:00 +0000
@@ -12,9 +12,20 @@
<h2 align="center">Changes between 3.14.11 and 3.14.12</h2>
<!-- Insert new items immediately below here ... -->
+<h4>Added Apple iOS target architectures</h4>
+
+<p>Tom Pelaia II and Mark Engbretson contributed build configuration files to
+cross-compile Base for Apple's iOS operating system as used in the iPhone and
+iPad. The target architecture for these is ios-arm, and there is also an ios-x86
+target which compiles for the iPhone Simulator running on darwin-x86.</p>
+
+<p>To build these for iOS, uncomment the <tt>CROSS_COMPILER_TARGET_ARCHS</tt>
+definition in <tt>configure/os/CONFIG_SITE.darwin-x86.Common</tt> and check the
+settings in <tt>configure/os/CONFIG_SITE.Common.iosCommon</tt>.</p>
+
<h4>Dynamic arrays over CA</h4>
-<p>Dymanic array sizing was developed by Michael Abbott at the 2010 EPICS
+<p>Dynamic array sizing was developed by Michael Abbott at the 2010 EPICS
Codeathon. It permits a CA client to fetch only the currently valid elements of
an array by specifying a COUNT of zero to either of the ca_array_get_callback()
or ca_create_subscription() routines. It has never before been legal to pass a
=== added directory 'src/libCom/osi/os/iOS'
=== added file 'src/libCom/osi/os/iOS/epicsMath.h'
--- src/libCom/osi/os/iOS/epicsMath.h 1970-01-01 00:00:00 +0000
+++ src/libCom/osi/os/iOS/epicsMath.h 2010-09-22 21:35:00 +0000
@@ -0,0 +1,27 @@
+/*************************************************************************\
+* Copyright (c) 2010 UChicago Argonne LLC, as Operator of Argonne
+* National Laboratory.
+* EPICS BASE is distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+#ifndef epicsMathh
+#define epicsMathh
+
+#include <math.h>
+#include <shareLib.h>
+
+#define finite(x) isfinite(x)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+epicsShareExtern float epicsNAN;
+epicsShareExtern float epicsINF;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* epicsMathh */
=== added file 'src/libCom/osi/os/iOS/osdEnv.c'
--- src/libCom/osi/os/iOS/osdEnv.c 1970-01-01 00:00:00 +0000
+++ src/libCom/osi/os/iOS/osdEnv.c 2010-09-22 21:35:00 +0000
@@ -0,0 +1,78 @@
+/*************************************************************************\
+* Copyright (c) 2002 The University of Saskatchewan
+* EPICS BASE is distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+/* osdEnv.c */
+/*
+ * $Id$
+ *
+ * Author: Eric Norum
+ * Date: May 7, 2001
+ *
+ * Routines to modify/display environment variables and EPICS parameters
+ *
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <errno.h>
+
+#define epicsExportSharedSymbols
+#include <epicsStdioRedirect.h>
+#include <errlog.h>
+#include <cantProceed.h>
+#include <envDefs.h>
+#include <osiUnistd.h>
+#include "epicsFindSymbol.h"
+
+
+/*
+ * Set the value of an environment variable
+ * Leaks memory, but the assumption is that this routine won't be
+ * called often enough for the leak to be a problem.
+ */
+epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *value)
+{
+ char *cp;
+
+ cp = mallocMustSucceed (strlen (name) + strlen (value) + 2, "epicsEnvSet");
+ strcpy (cp, name);
+ strcat (cp, "=");
+ strcat (cp, value);
+ if (putenv (cp) < 0) {
+ errPrintf(
+ -1L,
+ __FILE__,
+ __LINE__,
+ "Failed to set environment parameter \"%s\" to \"%s\": %s\n",
+ name,
+ value,
+ strerror (errno));
+ free (cp);
+ }
+}
+
+/*
+ * Show the value of the specified, or all, environment variables
+ */
+epicsShareFunc void epicsShareAPI epicsEnvShow (const char *name)
+{
+ if (name == NULL) {
+ extern char **environ;
+ char **sp;
+
+ for (sp = environ ; (sp != NULL) && (*sp != NULL) ; sp++)
+ printf ("%s\n", *sp);
+ }
+ else {
+ const char *cp = getenv (name);
+ if (cp == NULL)
+ printf ("%s is not an environment variable.\n", name);
+ else
+ printf ("%s=%s\n", name, cp);
+ }
+}
=== added file 'src/libCom/osi/os/iOS/osdSock.h'
--- src/libCom/osi/os/iOS/osdSock.h 1970-01-01 00:00:00 +0000
+++ src/libCom/osi/os/iOS/osdSock.h 2010-09-22 21:35:00 +0000
@@ -0,0 +1,82 @@
+/*************************************************************************\
+* Copyright (c) 2002 The University of Saskatchewan
+* EPICS BASE is distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+/*
+ * $Id$
+ *
+ * Author: Eric Norum
+ */
+
+#ifndef osdSockH
+#define osdSockH
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <errno.h>
+
+#include <sys/types.h>
+#include <sys/param.h> /* for MAXHOSTNAMELEN */
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+/*#include <sys/filio.h>
+#include <sys/sockio.h>*/
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <arpa/inet.h>
+#include <net/if.h>
+#include <netdb.h>
+#include <unistd.h> /* close() and others */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+typedef int SOCKET;
+#define INVALID_SOCKET (-1)
+#define SOCKERRNO errno
+#define socket_ioctl(A,B,C) ioctl(A,B,C)
+typedef int osiSockIoctl_t;
+typedef socklen_t osiSocklen_t;
+
+#define FD_IN_FDSET(FD) ((FD)<FD_SETSIZE)
+
+#define SOCK_EWOULDBLOCK EWOULDBLOCK
+#define SOCK_ENOBUFS ENOBUFS
+#define SOCK_ECONNRESET ECONNRESET
+#define SOCK_ETIMEDOUT ETIMEDOUT
+#define SOCK_EADDRINUSE EADDRINUSE
+#define SOCK_ECONNREFUSED ECONNREFUSED
+#define SOCK_ECONNABORTED ECONNABORTED
+#define SOCK_EINPROGRESS EINPROGRESS
+#define SOCK_EISCONN EISCONN
+#define SOCK_EALREADY EALREADY
+#define SOCK_EINVAL EINVAL
+#define SOCK_EINTR EINTR
+#define SOCK_EPIPE EPIPE
+#define SOCK_EMFILE EMFILE
+#define SOCK_SHUTDOWN ESHUTDOWN
+#define SOCK_ENOTSOCK ENOTSOCK
+#define SOCK_EBADF EBADF
+
+#ifndef SHUT_RD
+#define SHUT_RD 0
+#endif
+
+#ifndef SHUT_WR
+#define SHUT_WR 1
+#endif
+
+#ifndef SHUT_RDWR
+#define SHUT_RDWR 2
+#endif
+
+#define ifreq_size(pifreq) ((pifreq)->ifr_addr.sa_len + sizeof((pifreq)->ifr_name))
+
+#endif /*osdSockH*/
=== added file 'src/libCom/osi/os/iOS/osdSockAddrReuse.cpp'
--- src/libCom/osi/os/iOS/osdSockAddrReuse.cpp 1970-01-01 00:00:00 +0000
+++ src/libCom/osi/os/iOS/osdSockAddrReuse.cpp 2010-09-22 21:35:00 +0000
@@ -0,0 +1,48 @@
+/*************************************************************************\
+* Copyright (c) 2010 UChicago Argonne LLC, as Operator of Argonne
+* National Laboratory.
+* Copyright (c) 2002 The Regents of the University of California, as
+* Operator of Los Alamos National Laboratory.
+* EPICS BASE is distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+/*
+ * $Id$
+ * Author: Jeff Hill
+ */
+
+#define epicsExportSharedSymbols
+#include "osiSock.h"
+#include "errlog.h"
+
+epicsShareFunc void epicsShareAPI
+ epicsSocketEnableAddressReuseDuringTimeWaitState ( SOCKET s )
+{
+ int yes = true;
+ int status;
+ status = setsockopt ( s, SOL_SOCKET, SO_REUSEADDR,
+ (char *) & yes, sizeof ( yes ) );
+ if ( status < 0 ) {
+ errlogPrintf (
+ "epicsSocketEnablePortUseForDatagramFanout: "
+ "unable to set SO_REUSEADDR?\n");
+ }
+}
+
+/*
+ * SO_REUSEPORT is not in POSIX
+ */
+epicsShareFunc void epicsShareAPI
+ epicsSocketEnableAddressUseForDatagramFanout ( SOCKET s )
+{
+ int yes = true;
+ int status;
+ status = setsockopt ( s, SOL_SOCKET, SO_REUSEPORT,
+ (char *) & yes, sizeof ( yes ) );
+ if ( status < 0 ) {
+ errlogPrintf (
+ "epicsSocketEnablePortUseForDatagramFanout: "
+ "unable to set SO_REUSEPORT?\n");
+ }
+}
=== added file 'src/libCom/osi/os/iOS/osdTime.h'
--- src/libCom/osi/os/iOS/osdTime.h 1970-01-01 00:00:00 +0000
+++ src/libCom/osi/os/iOS/osdTime.h 2010-09-22 21:35:00 +0000
@@ -0,0 +1,30 @@
+/*************************************************************************\
+* Copyright (c) 2002 The University of Saskatchewan
+* EPICS BASE is distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+/*
+ * $Id$
+ *
+ * Author: Eric Norum
+ */
+
+#ifndef osdTimeh
+#define osdTimeh
+
+#include <sys/time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+epicsShareFunc void convertDoubleToWakeTime(double timeout,
+ struct timespec *wakeTime);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ifndef osdTimeh */
+
=== added file 'src/libCom/osi/os/iOS/osiFileName.h'
--- src/libCom/osi/os/iOS/osiFileName.h 1970-01-01 00:00:00 +0000
+++ src/libCom/osi/os/iOS/osiFileName.h 2010-09-22 21:35:00 +0000
@@ -0,0 +1,18 @@
+/*************************************************************************\
+* Copyright (c) 2002 The University of Saskatchewan
+* EPICS BASE is distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+/*
+ * $Id$
+ *
+ * Author: Eric Norum
+ */
+
+#ifndef osiFileNameH
+#define osiFileNameH
+
+#include "unixFileName.h"
+
+#endif /* osiFileNameH */
- Replies:
- Re: [Merge] lp:~epics-core/epics-base/apple-ios into lp:epics-base Janet B. Anderson
- [Merge] lp:~epics-core/epics-base/apple-ios into lp:epics-base noreply
- Navigate by Date:
- Prev:
Re: sequencer beta release Ben Franksen
- Next:
Re: msi again Goetz Pfeiffer
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
<2010>
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: softIOC and SIGHUP Andrew Johnson
- Next:
Re: [Merge] lp:~epics-core/epics-base/apple-ios into lp:epics-base Janet B. Anderson
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
<2010>
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|