From 10956721fb12470e19b3ff34992c008a918ea94a Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Tue, 25 Mar 2008 12:25:34 +0000 Subject: [PATCH] example_app: Create Mac makefile and build script to demonstrate building project applications for the Mac using makefiles. svn path=/trunk/boinc_samples/; revision=14959 --- checkin_notes | 8 ++ example_app/MakeMacExample.sh | 145 ++++++++++++++++++++++++++++++++++ example_app/Makefile_mac | 38 +++++++++ 3 files changed, 191 insertions(+) create mode 100644 example_app/MakeMacExample.sh create mode 100644 example_app/Makefile_mac diff --git a/checkin_notes b/checkin_notes index 9f8c299a84..26bfa4df93 100644 --- a/checkin_notes +++ b/checkin_notes @@ -622,3 +622,11 @@ David 20 Mar 2008 multi_thread.C win_build/ multi_thread.vcproj + +Charlie 25 Mar 2008 + - example_app: Create Mac makefile and build script to demonstrate + building project applications for the Mac using makefiles. + + example_app/ + Makefile_mac (new) + MakeMacExample.sh (new) diff --git a/example_app/MakeMacExample.sh b/example_app/MakeMacExample.sh new file mode 100644 index 0000000000..e022027b38 --- /dev/null +++ b/example_app/MakeMacExample.sh @@ -0,0 +1,145 @@ +#!/bin/sh + +# Berkeley Open Infrastructure for Network Computing +# http://boinc.berkeley.edu +# Copyright (C) 2005 University of California +# +# This is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; +# either version 2.1 of the License, or (at your option) any later version. +# +# This software 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 Lesser General Public License for more details. +# +# To view the GNU Lesser General Public License visit +# http://www.gnu.org/copyleft/lesser.html +# or write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# +# Script to build Macintosh example_app using Makefile +# +# by Charlie Fenton 3/25/08 +# +## In Terminal, CD to the example_app/Mac directory. +## cd [path]/example_app/Mac/ +## then run this script: +## source [path]/MakeMacExample.sh [ -clean ] +## +## the -clean argument will force a full rebuild. +# + +rm -fR ppc i386 x86_64 + +if [ ! -d /Developer/SDKs/MacOSX10.3.9.sdk/ ]; then + echo "ERROR: System 10.3.9 SDK is missing. For details, see build instructions at" + echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild" + return 1 +fi + +if [ ! -d /Developer/SDKs/MacOSX10.4u.sdk/ ]; then + echo "ERROR: System 10.4u SDK is missing. For details, see build instructions at" + echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild" + return 1 +fi + +echo +echo "***************************************************" +echo "********** Building PowerPC Application ***********" +echo "***************************************************" +echo + +## PowerPC build for OS 10.3.0 must use GCC-3.3 and MacOSX10.3.9 SDK +export PATH=/usr/local/bin:$PATH +export SDKROOT="/Developer/SDKs/MacOSX10.3.9.sdk" +export MACOSX_DEPLOYMENT_TARGET=10.3 +export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3 +export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch ppc" +## If your make file passes LDFLAGS directly to ld instead of to gcc, use the following instead: +## export LDFLAGS="-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch ppc" +export VARIANTFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk" +##export VARIANTFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk/usr/include/gcc/darwin/3.3" + +make -f Makefile_mac clean +make -f Makefile_mac all + +if [ $? -ne 0 ]; then return 1; fi + +mkdir ppc +mv uc2 ppc/ +mv uc2_graphics ppc/ + +echo +echo "***************************************************" +echo "******* Building 32-bit Intel Application *********" +echo "***************************************************" +echo + +## 32-bit Intel build for OS 10.4 must use GCC-4.0 and MacOSX10.4u SDK + +export SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk" +export MACOSX_DEPLOYMENT_TARGET=10.4 +export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0 +export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch i386" +## If your make file passes LDFLAGS directly to ld instead of to gcc, use the following instead: +## export LDFLAGS="-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch i386" +export VARIANTFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386" +export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386" + +make -f Makefile_mac clean +make -f Makefile_mac all + +if [ $? -ne 0 ]; then return 1; fi + +mkdir i386 +mv uc2 i386/ +mv uc2_graphics i386/ + +## 64-bit Intel build for OS 10.5 must use GCC-4.0 and MacOSX10.5 SDK + +# Build for x86_64 architecture only if OS 10.5 SDK is present +if [ -d /Developer/SDKs/MacOSX10.5.sdk/ ]; then + + echo + echo "***************************************************" + echo "******* Building 64-bit Intel Application *********" + echo "***************************************************" + echo + + export SDKROOT="/Developer/SDKs/MacOSX10.5.sdk" + export MACOSX_DEPLOYMENT_TARGET=10.5 + export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0 + export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch x86_64" + ## If your make file passes LDFLAGS directly to ld instead of to gcc, use the following instead: + ## export LDFLAGS="-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch x86_64" + export VARIANTFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch x86_64 -fvisibility=hidden -fvisibility-inlines-hidden" + export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch x86_64" + + make -f Makefile_mac clean + make -f Makefile_mac all + + if [ $? -ne 0 ]; then return 1; fi + + mkdir x86_64 + mv uc2 x86_64/ + mv uc2_graphics x86_64/ + +fi + +echo +echo "***************************************************" +echo "**************** Build Succeeded! *****************" +echo "***************************************************" +echo + +export CC="";export CXX="" +export LDFLAGS="" +export CPPFLAGS="" +export CFLAGS="" +export SDKROOT="" + +return 0 + diff --git a/example_app/Makefile_mac b/example_app/Makefile_mac new file mode 100644 index 0000000000..3531d55744 --- /dev/null +++ b/example_app/Makefile_mac @@ -0,0 +1,38 @@ +# makefile for uc2 BOINC example application on Macintosh. + +BOINC_DIR = ../../boinc +BOINC_API_DIR = $(BOINC_DIR)/api +BOINC_LIB_DIR = $(BOINC_DIR)/lib +BOINC_LIB_LINK_DIR = $(BOINC_DIR)/mac_build/build/Deployment +FRAMEWORKS_DIR = /System/Library/Frameworks + +CXXFLAGS = $(VARIANTFLAGS) \ + -g \ + -DAPP_GRAPHICS \ + -I$(BOINC_DIR) \ + -I$(BOINC_DIR)/clientgui/mac/ \ + -I$(BOINC_LIB_DIR) \ + -I$(BOINC_API_DIR) \ + -L$(BOINC_LIB_LINK_DIR) \ + -L. + +LIBJPEG = ../../jpeg-6b/libjpeg.a + +OBJ = \ + uc2.o \ + uc2_graphics.o + +PROGS = uc2 uc2_graphics + +all: $(PROGS) + +clean: + /bin/rm -f $(PROGS) $(OBJ) + +uc2: uc2.o $(BOINC_LIB_LINK_DIR)/libboinc_api.a $(BOINC_LIB_LINK_DIR)/libboinc.a + $(CXX) $(VARIANTFLAGS) $(CXXFLAGS) -o uc2 uc2.o -lboinc_api -lboinc + +uc2_graphics: uc2_graphics.o $(BOINC_LIB_LINK_DIR)/libboinc.a $(BOINC_LIB_LINK_DIR)/libboinc_graphics2.a + $(CXX) $(VARIANTFLAGS) $(CXXFLAGS) -o uc2_graphics uc2_graphics.o\ + -lboinc_graphics2 -lboinc_api -lboinc \ + -framework AppKit -framework GLUT -framework OpenGL $(LIBJPEG) \ No newline at end of file