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