1#!/bin/sh 2# 3# This script makes a Apple Mac OS X framework for PETSc 4# 5# ./systems/Apple/OSX/bin/arch-OSX.py 6# make cmake test 7# ./systems/Apple/OSX/bin/makeframework 8# 9# To use the framework: 10# 11# 1) replace all #include <petscXXX.h> in application with #import <PETSc/petscXXX.h> 12# 2a) compile in src/snes/examples/tutorials, cc -v ex19.c -o ex19 -DPETSC_APPLE_FRAMEWORK=1 -F ${PETSC_DIR}/${PETSC_ARCH} -framework PETSc or 13# 2b) copy ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework to /System/Library/Frameworks/ then you do not need the -F option or 14# 3) you can also use the framework inside Xcode by simply indicating the targets dependence on the PETSc framework 15# 16# 17rm -rf ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework 18 19mkdir ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework 20mkdir ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework/Versions 21mkdir ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework/Versions/A 22cd ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework/Versions/ 23ln -s A Current 24 25cd A 26mkdir Headers 27cp ${PETSC_DIR}/include/*.h Headers 28cp ${PETSC_DIR}/${PETSC_ARCH}/include/*.h Headers 29cp -r ${PETSC_DIR}/include/petsc-private Headers 30cd Headers 31sed -i "" "s?#include [ ]*<petsc-private?#import <PETSc/petsc-private?g" *.h petsc-private/*.h 32sed -i "" "s?#include [ ]*<petsc?#import <PETSc/petsc?g" *.h petsc-private/*.h 33sed -i "" "s?#include [ ]*<mpi?#import <PETSc/mpi?g" *.h petsc-private/*.h 34cd .. 35 36cp ${PETSC_DIR}/${PETSC_ARCH}/lib/libpetsc.dylib PETSc 37mkdir Resources 38cd Resources 39cat <<EOF > Info.plist 40<?xml version="1.0" encoding="UTF-8"?> 41<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 42<plist version="1.0"> 43<dict> 44 <key>BuildMachineOSBuild</key> 45 <string>12A269</string> 46 <key>CFBundleDevelopmentRegion</key> 47 <string>English</string> 48 <key>CFBundleExecutable</key> 49 <string>PETSc</string> 50 <key>CFBundleIdentifier</key> 51 <string>gov.anl.mcs.PETSc</string> 52 <key>CFBundleInfoDictionaryVersion</key> 53 <string>6.0</string> 54 <key>CFBundleName</key> 55 <string>PETSc</string> 56 <key>CFBundlePackageType</key> 57 <string>FMWK</string> 58 <key>CFBundleShortVersionString</key> 59 <string>1.0</string> 60 <key>CFBundleSignature</key> 61 <string>????</string> 62 <key>CFBundleVersion</key> 63 <string>1</string> 64 <key>DTCompiler</key> 65 <string></string> 66 <key>DTPlatformBuild</key> 67 <string>4F250</string> 68 <key>DTPlatformVersion</key> 69 <string>GM</string> 70 <key>DTSDKBuild</key> 71 <string>12A264</string> 72 <key>DTSDKName</key> 73 <string>macosx10.8</string> 74 <key>DTXcode</key> 75 <string>0440</string> 76 <key>DTXcodeBuild</key> 77 <string>4F250</string> 78 <key>NSHumanReadableCopyright</key> 79 <string>Copyright © 2012 Argonne National Laboratory. All rights reserved.</string> 80</dict> 81</plist> 82EOF 83 84cd ${PETSC_DIR}/${PETSC_ARCH}/PETSc.framework 85ln -s Versions/Current/Headers Headers 86ln -s Versions/Current/PETSc PETSc 87ln -s Versions/Current/Resources Resources 88 89