macos: add support for MacOS 11.0 29/14429/6
authorMarcio Barbosa <mbarbosa@sinenomine.net>
Thu, 28 Jan 2021 22:45:10 +0000 (14:45 -0800)
committerBenjamin Kaduk <kaduk@mit.edu>
Sat, 10 Apr 2021 00:16:27 +0000 (20:16 -0400)
This commit introduces the new set of changes / files required to
successfully build the OpenAFS source code on OS X 11.0 "Big Sur".

While here, refactor the code that checks if the "-Xlinker -kext"
system-specific linker option is needed.

Change-Id: I9895ce97143aec500a5bbb4a9502eca19769c85e
Reviewed-on: https://gerrit.openafs.org/14429
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/cf/osconf.m4
src/cf/sysname.m4
src/config/afs_sysnames.h
src/config/param.x86_darwin_200.h [new file with mode: 0644]
src/libafs/MakefileProto.DARWIN.in
src/libafs/afs.x86_darwin_200.plist.in [new file with mode: 0644]

index 21cc385..51bcdb4 100644 (file)
@@ -321,7 +321,7 @@ case $AFS_SYSNAME in
                XLIBS="${LIB_AFSDB} -framework CoreFoundation"
                ;;
 
-       *_darwin_190)
+       *_darwin_190 | *_darwin_200)
                AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
                MT_CFLAGS="-D_REENTRANT"
                MT_LIBS='${XLIBS}'
index 268703b..acc8e71 100644 (file)
@@ -190,6 +190,10 @@ else
                        AFS_SYSNAME="x86_darwin_190"
                        OSXSDK="macosx10.15"
                        ;;
+               x86_64-apple-darwin20.*)
+                       AFS_SYSNAME="x86_darwin_200"
+                       OSXSDK="macosx11.0"
+                       ;;
                 sparc-sun-solaris2.8)
                         AFS_SYSNAME="sun4x_58"
                         ;;
index 1ff0d9c..ae20e3d 100644 (file)
@@ -94,6 +94,9 @@
 #define SYS_NAME_ID_x86_darwin_190       541
 #define SYS_NAME_ID_amd64_darwin_190     542
 #define SYS_NAME_ID_arm_darwin_190       543
+#define SYS_NAME_ID_x86_darwin_200       544
+#define SYS_NAME_ID_amd64_darwin_200     545
+#define SYS_NAME_ID_arm_darwin_200       546
 
 #define SYS_NAME_ID_next_mach20                 601
 #define SYS_NAME_ID_next_mach30                 602
diff --git a/src/config/param.x86_darwin_200.h b/src/config/param.x86_darwin_200.h
new file mode 100644 (file)
index 0000000..8aa63e7
--- /dev/null
@@ -0,0 +1,293 @@
+#ifndef UKERNEL
+/* This section for kernel libafs compiles only */
+
+#ifndef AFS_PARAM_H
+#define AFS_PARAM_H
+
+#define AFS_ENV                 1
+#define AFS_64BIT_ENV           1      /* Defines afs_int32 as int, not long. */
+#define AFS_64BIT_CLIENT        1
+#define AFS_64BIT_IOPS_ENV     1
+#if defined(__ppc__)
+#define AFS_PPC_ENV            1
+#elif defined(__i386__) || defined(__amd64__)
+#define AFS_X86_ENV            1
+#else
+#error Unsupported architecture
+#endif
+#ifdef __amd64__
+#define AFS_64BITUSERPOINTER_ENV 1
+#endif
+#define AFS_64BIT_SIZEOF 1 /* seriously? */
+#include <afs/afs_sysnames.h>
+
+#define AFS_DARWIN_ENV
+#define AFS_DARWIN70_ENV
+#define AFS_DARWIN80_ENV
+#define AFS_DARWIN90_ENV
+#define AFS_DARWIN100_ENV
+#define AFS_DARWIN110_ENV
+#define AFS_DARWIN120_ENV
+#define AFS_DARWIN130_ENV
+#define AFS_DARWIN140_ENV
+#define AFS_DARWIN150_ENV
+#define AFS_DARWIN160_ENV
+#define AFS_DARWIN170_ENV
+#define AFS_DARWIN180_ENV
+#define AFS_DARWIN190_ENV
+#define AFS_DARWIN200_ENV
+#undef  AFS_NONFSTRANS
+#define AFS_NONFSTRANS
+#define AFS_SYSCALL             230
+#define AFS_NAMEI_ENV 1
+#define DARWIN_REFBASE 3
+#define AFS_WARNUSER_MARINER_ENV 1
+#define AFS_CACHE_VNODE_PATH
+#define AFS_NEW_BKG 1
+#define NEED_IOCTL32
+
+/* File system entry (used if mount.h doesn't define MOUNT_AFS */
+#define AFS_MOUNT_AFS    "afs"
+
+/* Machine / Operating system information */
+#if defined(__ppc__)
+#define sys_ppc_darwin_12      1
+#define sys_ppc_darwin_13      1
+#define sys_ppc_darwin_14      1
+#define sys_ppc_darwin_60      1
+#define sys_ppc_darwin_70      1
+#define sys_ppc_darwin_80      1
+#define sys_ppc_darwin_90      1
+#define sys_ppc_darwin_100     1
+#define SYS_NAME               "ppc_darwin_100"
+#define SYS_NAME_ID            SYS_NAME_ID_ppc_darwin_100
+#define AFSBIG_ENDIAN          1
+#elif defined(__ppc64__)
+#define sys_ppc_darwin_12      1
+#define sys_ppc_darwin_13      1
+#define sys_ppc_darwin_14      1
+#define sys_ppc_darwin_60      1
+#define sys_ppc_darwin_70      1
+#define sys_ppc_darwin_80      1
+#define sys_ppc_darwin_90      1
+#define sys_ppc_darwin_100     1
+#define sys_ppc64_darwin_100   1
+#define SYS_NAME               "ppc64_darwin_100"
+#define SYS_NAME_ID            SYS_NAME_ID_ppc64_darwin_100
+#define AFSBIG_ENDIAN          1
+#elif defined(__i386__)
+#define sys_x86_darwin_12      1
+#define sys_x86_darwin_13      1
+#define sys_x86_darwin_14      1
+#define sys_x86_darwin_60      1
+#define sys_x86_darwin_70      1
+#define sys_x86_darwin_80      1
+#define sys_x86_darwin_90      1
+#define sys_x86_darwin_100     1
+#define sys_x86_darwin_110      1
+#define sys_x86_darwin_120      1
+#define sys_x86_darwin_130      1
+#define sys_x86_darwin_140     1
+#define sys_x86_darwin_150     1
+#define sys_x86_darwin_160     1
+#define sys_x86_darwin_170     1
+#define sys_x86_darwin_180     1
+#define sys_x86_darwin_190     1
+#define sys_x86_darwin_200     1
+#define SYS_NAME               "x86_darwin_200"
+#define SYS_NAME_ID            SYS_NAME_ID_x86_darwin_200
+#define AFSLITTLE_ENDIAN       1
+#elif defined(__amd64__)
+#define sys_x86_darwin_12      1
+#define sys_x86_darwin_13      1
+#define sys_x86_darwin_14      1
+#define sys_x86_darwin_60      1
+#define sys_x86_darwin_70      1
+#define sys_x86_darwin_80      1
+#define sys_x86_darwin_90      1
+#define sys_x86_darwin_100     1
+#define sys_amd64_darwin_100   1
+#define sys_amd64_darwin_110      1
+#define sys_amd64_darwin_120      1
+#define sys_amd64_darwin_130      1
+#define sys_amd64_darwin_140     1
+#define sys_amd64_darwin_150     1
+#define sys_amd64_darwin_160     1
+#define sys_amd64_darwin_170     1
+#define sys_amd64_darwin_180     1
+#define sys_amd64_darwin_190     1
+#define sys_amd64_darwin_200     1
+#define SYS_NAME               "amd64_darwin_200"
+#define SYS_NAME_ID            SYS_NAME_ID_amd64_darwin_200
+#define AFSLITTLE_ENDIAN       1
+#else
+#error Unsupported architecture
+#endif
+#define AFS_HAVE_FFS    1      /* Use system's ffs. */
+
+#define AFS_GCPAGS               0
+#define RXK_UPCALL_ENV         1
+#define RXK_TIMEDSLEEP_ENV       1
+
+#ifdef KERNEL
+#undef MACRO_BEGIN
+#undef MACRO_END
+#include <kern/macro_help.h>
+#define AFS_GLOBAL_SUNLOCK        1
+#define AFS_VFS34       1      /* What is VFS34??? */
+#define afsio_iov       uio_iov
+#define afsio_iovcnt    uio_iovcnt
+#define afsio_offset    uio_offset
+#define afsio_seg       uio_segflg
+#define afsio_resid     uio_resid
+#define AFS_UIOSYS      UIO_SYSSPACE
+#define AFS_UIOUSER     UIO_USERSPACE
+#define AFS_CLBYTES     CLBYTES
+#define AFS_KALLOC(x)   _MALLOC(x, M_TEMP, M_WAITOK)
+#define AFS_KFREE(x,y)  _FREE(x,M_TEMP)
+#define v_count         v_usecount
+#define v_vfsp          v_mount
+#define vfs_bsize       mnt_stat.f_bsize
+#define vfs_fsid        mnt_stat.f_fsid
+#define va_nodeid       va_fileid
+#define vfs_vnodecovered mnt_vnodecovered
+#define direct          dirent
+
+#define BIND_8_COMPAT
+
+#endif
+#endif /* AFS_PARAM_H */
+
+#else /* !defined(UKERNEL) */
+
+/* This section for user space compiles only */
+
+#ifndef AFS_PARAM_H
+#define AFS_PARAM_H
+
+#define AFS_ENV                 1
+#define AFS_64BIT_ENV           1      /* Defines afs_int32 as int, not long. */
+#define AFS_64BIT_CLIENT        1
+#if defined(__ppc__)
+#define AFS_PPC_ENV            1
+#elif defined(__i386__) || defined(__amd64__)
+#define AFS_X86_ENV            1
+#else
+#error Unsupported architecture
+#endif
+#ifdef __amd64__
+#define AFS_64BITUSERPOINTER_ENV 1
+#endif
+
+#include <afs/afs_sysnames.h>
+#define AFS_USERSPACE_ENV
+#define AFS_USR_DARWIN_ENV
+#define AFS_USR_DARWIN70_ENV
+#define AFS_USR_DARWIN80_ENV
+#define AFS_USR_DARWIN90_ENV
+#define AFS_USR_DARWIN100_ENV
+#define AFS_USR_DARWIN110_ENV
+#define AFS_USR_DARWIN120_ENV
+#define AFS_USR_DARWIN130_ENV
+#define AFS_USR_DARWIN140_ENV
+#define AFS_USR_DARWIN150_ENV
+#define AFS_USR_DARWIN160_ENV
+#define AFS_USR_DARWIN170_ENV
+#define AFS_USR_DARWIN180_ENV
+#define AFS_USR_DARWIN190_ENV
+#define AFS_USR_DARWIN200_ENV
+#undef  AFS_NONFSTRANS
+#define AFS_NONFSTRANS
+#define AFS_SYSCALL             230
+#define DARWIN_REFBASE 0
+#define AFS_WARNUSER_MARINER_ENV 1
+
+/* File system entry (used if mount.h doesn't define MOUNT_AFS */
+#define AFS_MOUNT_AFS    "afs"
+
+/* Machine / Operating system information */
+#if defined(__ppc__)
+#define sys_ppc_darwin_12      1
+#define sys_ppc_darwin_13      1
+#define sys_ppc_darwin_14      1
+#define sys_ppc_darwin_60      1
+#define sys_ppc_darwin_70      1
+#define sys_ppc_darwin_80      1
+#define sys_ppc_darwin_90      1
+#define sys_ppc_darwin_100     1
+#define SYS_NAME               "ppc_darwin_100"
+#define SYS_NAME_ID            SYS_NAME_ID_ppc_darwin_100
+#define AFSBIG_ENDIAN          1
+#elif defined(__i386__)
+#define sys_x86_darwin_12      1
+#define sys_x86_darwin_13      1
+#define sys_x86_darwin_14      1
+#define sys_x86_darwin_60      1
+#define sys_x86_darwin_70      1
+#define sys_x86_darwin_80      1
+#define sys_x86_darwin_100     1
+#define sys_x86_darwin_110     1
+#define sys_x86_darwin_120     1
+#define sys_x86_darwin_130      1
+#define sys_x64_darwin_140     1
+#define sys_x64_darwin_150     1
+#define sys_x64_darwin_160     1
+#define sys_x64_darwin_170     1
+#define sys_x64_darwin_180     1
+#define sys_x64_darwin_190     1
+#define sys_x64_darwin_200     1
+#define SYS_NAME               "x86_darwin_200"
+#define SYS_NAME_ID            SYS_NAME_ID_x86_darwin_200
+#define AFSLITTLE_ENDIAN       1
+#elif defined(__amd64__)
+#define sys_x86_darwin_12      1
+#define sys_x86_darwin_13      1
+#define sys_x86_darwin_14      1
+#define sys_x86_darwin_60      1
+#define sys_x86_darwin_70      1
+#define sys_x86_darwin_80      1
+#define sys_x86_darwin_100     1
+#define sys_amd64_darwin_100   1
+#define sys_amd64_darwin_110   1
+#define sys_amd64_darwin_120   1
+#define sys_amd64_darwin_130    1
+#define sys_amd64_darwin_140   1
+#define sys_amd64_darwin_150   1
+#define sys_amd64_darwin_160   1
+#define sys_amd64_darwin_170   1
+#define sys_amd64_darwin_180   1
+#define sys_amd64_darwin_190   1
+#define sys_amd64_darwin_200   1
+#define SYS_NAME               "amd64_darwin_200"
+#define SYS_NAME_ID            SYS_NAME_ID_amd64_darwin_200
+#define AFSLITTLE_ENDIAN       1
+#else
+#error Unsupported architecture
+#endif
+#define AFS_HAVE_FFS    1      /* Use system's ffs. */
+
+#define AFS_UIOSYS      UIO_SYSSPACE
+#define AFS_UIOUSER     UIO_USERSPACE
+
+#define AFS_GCPAGS                0    /* if nonzero, garbage collect PAGs */
+#define RXK_LISTENER_ENV          1
+
+#define AFS_VFS34       1      /* What is VFS34??? */
+#define afsio_iov       uio_iov
+#define afsio_iovcnt    uio_iovcnt
+#define afsio_offset    uio_offset
+#define afsio_seg       uio_segflg
+#define afsio_resid     uio_resid
+#define AFS_UIOSYS      UIO_SYSSPACE
+#define AFS_UIOUSER     UIO_USERSPACE
+#define        VATTR_NULL      usr_vattr_null
+
+#define AFS_DIRENT
+#ifndef CMSERVERPREF
+#define CMSERVERPREF
+#endif
+
+#define BIND_8_COMPAT
+#endif /* AFS_PARAM_H */
+
+#endif /* !defined(UKERNEL) */
index fc09454..3ee238a 100644 (file)
@@ -58,10 +58,11 @@ OBJ_ppc=$(shell echo "${ARCH_ppc}" | grep -q -w yes && echo "$@.ppc")
 OBJ_x86=$(shell echo "${ARCH_x86}" | grep -q -w yes && echo "$@.x86")
 OBJ_amd64=$(shell echo "${ARCH_amd64}" | grep -q -w yes && echo "$@.amd64")
 
-<all -ppc_darwin_70 -ppc_darwin_80 -x86_darwin_80 -ppc_darwin_90 -x86_darwin_90 -x86_darwin_160 -x86_darwin_170 -x86_darwin_180 -x86_darwin_190>
-MODLD=$(CC) -static $(KOPTS_DBUG) -nostdlib $(ARCHFLAGS) -Xlinker -kext
-<ppc_darwin_70 ppc_darwin_80 x86_darwin_80 ppc_darwin_90 x86_darwin_90 x86_darwin_160 x86_darwin_170 x86_darwin_180 x86_darwin_190>
+<all -ppc_darwin_70 -ppc_darwin_80 -x86_darwin_80 -ppc_darwin_90 -x86_darwin_90>
+KLINKER=-Xlinker -kext
+<all>
 MODLD=$(CC) -static $(KOPTS_DBUG) -nostdlib $(ARCHFLAGS)
+
 <all>
 
 CFLAGS_ppc=${KINCLUDES} -I. -I.. -I${TOP_OBJDIR}/src/config $(DEFINES) $(KDEFS) $(KOPTS_ppc) $(KOPTS_DBUG)
@@ -166,17 +167,14 @@ dest_libafs: $(LIBAFSNONFS) $(LIBAFSNONFSDSYM) ;
        -mkdir -p ${DEST_LIBAFSNONFSDSYM}/Contents/Resources/DWARF
        $(INSTALL) ${LIBAFSNONFSDSYM}/Contents/Info.plist ${DEST_LIBAFSNONFSDSYM}/Contents
        $(INSTALL) ${LIBAFSNONFSDSYM}/Contents/Resources/DWARF/${LIBAFSNONFS} ${DEST_LIBAFSNONFSDSYM}/Contents/Resources/DWARF
+
 <all>
 
 ${LIBAFS}: $(AFSAOBJS) $(AFSNFSOBJS)
-       $(MODLD) -r -o ${LIBAFS} ${AFSAOBJS} ${AFSNFSOBJS} -lcc_kext
+       $(MODLD) -r -o ${LIBAFS} ${AFSAOBJS} ${AFSNFSOBJS} -lcc_kext ${KLINKER}
 
-<all -x86_darwin_160 -x86_darwin_170 -x86_darwin_180 -x86_darwin_190>
-${LIBAFSNONFS}:  $(AFSAOBJS) $(AFSNONFSOBJS)
-       $(MODLD) -r -o ${LIBAFSNONFS} ${AFSAOBJS} ${AFSNONFSOBJS} -lcc_kext
-<x86_darwin_160 x86_darwin_170 x86_darwin_180 x86_darwin_190>
 ${LIBAFSNONFS}:  $(AFSAOBJS) $(AFSNONFSOBJS)
-       $(MODLD) -r -o ${LIBAFSNONFS} ${AFSAOBJS} ${AFSNONFSOBJS} -lcc_kext -Xlinker -kext
+       $(MODLD) -r -o ${LIBAFSNONFS} ${AFSAOBJS} ${AFSNONFSOBJS} -lcc_kext ${KLINKER}
 
 <all -ppc_darwin_70 -ppc_darwin_80 -x86_darwin_80>
 $(LIBAFSDSYM): ${LIBAFS}
diff --git a/src/libafs/afs.x86_darwin_200.plist.in b/src/libafs/afs.x86_darwin_200.plist.in
new file mode 100644 (file)
index 0000000..a138571
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+       <key>CFBundleDevelopmentRegion</key>
+       <string>English</string>
+       <key>CFBundleExecutable</key>
+       <string>afs</string>
+       <key>CFBundleIdentifier</key>
+       <string>org.openafs.filesystems.afs</string>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>8.0</string>
+       <key>CFBundleName</key>
+       <string>afs</string>
+       <key>CFBundlePackageType</key>
+       <string>KEXT</string>
+       <key>CFBundleShortVersionString</key>
+       <string>@MACOS_VERSION@</string>
+       <key>CFBundleSignature</key>
+       <string>????</string>
+       <key>CFBundleVersion</key>
+       <string>@MACOS_VERSION@</string>
+       <key>OSBundleLibraries</key>
+       <dict>
+               <key>com.apple.kpi.bsd</key>
+               <string>8.0.0</string>
+               <key>com.apple.kpi.mach</key>
+               <string>8.0.0</string>
+               <key>com.apple.kpi.libkern</key>
+               <string>8.0</string>
+       </dict>
+</dict>
+</plist>