From 9810379e0525e922f341b1e0d18078f03a6c54ef Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sat, 24 Oct 2009 03:56:59 +0000 Subject: updated from ext13 template svn path=/trunk/externals/apple/; revision=12657 --- Makefile | 136 ++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 92 insertions(+), 44 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index ab3434a..6ead937 100644 --- a/Makefile +++ b/Makefile @@ -1,32 +1,66 @@ -# to use this Makefile for your project, you should only need to add your -# source files to the SOURCES variable. For objects that only build on -# certain platforms, add those to the SOURCES line for the right platforms. +# To use this Makefile for your project, first put the name of your library in +# LIBRARY_NAME variable. The folder for your project should have the same name +# as your library. +LIBRARY_NAME = apple +# Next, add your source files to the SOURCES variable. SOURCES = -LIBRARY_NAME := $(shell basename `pwd`) +# For objects that only build on certain platforms, add those to the SOURCES +# line for the right platforms. +SOURCES_Darwin = ambient_light_sensor.c iodisplay.c keyboard_light.c sudden_motion_sensor.c +SOURCES_Linux = +SOURCES_Windows = -pd_src = ../../pd -objectsdir = $(pd_src)/extra +#------------------------------------------------------------------------------# +# +# you shouldn't need to edit anything below here, if we did it right :) +# +#------------------------------------------------------------------------------# -CFLAGS = -DPD -I$(pd_src)/src -Wall -W -g +# where Pd lives +PD_PATH = ../../pd +# where to install the library +objectsdir = $(PD_PATH)/extra + +CFLAGS = -DPD -I$(PD_PATH)/src -Wall -W -g LDFLAGS = LIBS = UNAME := $(shell uname -s) ifeq ($(UNAME),Darwin) - SOURCES += ambient_light_sensor.c iodisplay.c keyboard_light.c sudden_motion_sensor.c - EXTENSION = pd_darwin - OS = macosx - OPT_CFLAGS = -fast - FAT_FLAGS = -arch i386 -arch ppc -mmacosx-version-min=10.4 - CFLAGS += -fPIC $(FAT_FLAGS) - LDFLAGS += -bundle -undefined dynamic_lookup $(FAT_FLAGS) -framework IOKit - LIBS += -lc - STRIP = strip -x - endif + CPU := $(shell uname -p) + ifeq ($(CPU),arm) # iPhone/iPod Touch +# install Headers first: +# http://iphonesdkdev.blogspot.com/2008/08/how-to-copy-sdk-headers-to-iphone-and.html + SOURCES += $(SOURCES_Darwin) + EXTENSION = pd_darwin + OS = iphoneos + IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin + CC=$(IPHONE_BASE)/gcc + CPP=$(IPHONE_BASE)/cpp + CXX=$(IPHONE_BASE)/g++ + ISYSROOT = -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk + IPHONE_CFLAGS = -miphoneos-version-min=3.0 $(ISYSROOT) -arch armv6 + OPT_CFLAGS = -fast -funroll-loops -fomit-frame-pointer + CFLAGS := $(IPHONE_CFLAGS) $(OPT_CFLAGS) $(CFLAGS) + LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT) + LIBS += -lc + STRIP = strip -x + else # Mac OS X + SOURCES += $(SOURCES_Darwin) + EXTENSION = pd_darwin + OS = macosx + OPT_CFLAGS = -ftree-vectorize -ftree-vectorizer-verbose=2 -fast + FAT_FLAGS = -arch i386 -arch ppc -mmacosx-version-min=10.4 + CFLAGS += -fPIC $(FAT_FLAGS) + LDFLAGS += -bundle -undefined dynamic_lookup $(FAT_FLAGS) + LIBS += -lc + STRIP = strip -x + endif +endif ifeq ($(UNAME),Linux) - SOURCES += + SOURCES += $(SOURCES_Linux) EXTENSION = pd_linux OS = linux OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer @@ -35,60 +69,55 @@ ifeq ($(UNAME),Linux) LIBS += -lc STRIP = strip --strip-unneeded -R .note -R .comment endif -ifeq (MINGW,$(findstring MINGW,$(UNAME))) +ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME))) SOURCES += EXTENSION = dll + OS = cygwin + OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer + CFLAGS += + LDFLAGS += -Wl,--export-dynamic -shared -L$(PD_PATH)/src + LIBS += -lc -lpd + STRIP = strip --strip-unneeded -R .note -R .comment +endif +ifeq (MINGW,$(findstring MINGW,$(UNAME))) + SOURCES += $(SOURCES_Windows) + EXTENSION = dll OS = windows OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer -march=i686 -mtune=pentium4 WINDOWS_HACKS = -D'O_NONBLOCK=1' CFLAGS += -mms-bitfields $(WINDOWS_HACKS) LDFLAGS += -s -shared -Wl,--enable-auto-import - LIBS += -L$(pd_src)/src -L$(pd_src)/bin -L$(pd_src)/obj -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 + LIBS += -L$(PD_PATH)/src -L$(PD_PATH)/bin -L$(PD_PATH)/obj -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 STRIP = strip --strip-unneeded -R .note -R .comment endif CFLAGS += $(OPT_CFLAGS) - -.PHONY = all install libdir_install single_install install-doc install-exec clean dist etags +.PHONY = install install install-doc install-exec clean dist distclean etags all: $(SOURCES:.c=.$(EXTENSION)) -%.o: %.c +%.$(EXTENSION): %.c $(CC) $(CFLAGS) -o "$*.o" -c "$*.c" - -%.$(EXTENSION): %.o $(CC) $(LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(LIBS) chmod a-x "$*.$(EXTENSION)" - $(STRIP) $*.$(EXTENSION) rm -f -- $*.o -# this links everything into a single binary file -$(LIBRARY_NAME): $(SOURCES:.c=.o) $(LIBRARY_NAME).o - $(CC) $(LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.c=.o) $(LIBRARY_NAME).o $(LIBS) - chmod a-x $(LIBRARY_NAME).$(EXTENSION) - $(STRIP) $(LIBRARY_NAME).$(EXTENSION) - rm -f -- $*.o - - -install: libdir_install - # The meta and help files are explicitly installed to make sure they are # actually there. Those files are not optional, then need to be there. -libdir_install: $(SOURCES:.c=.$(EXTENSION)) install-doc install-exec +install: $(SOURCES:.c=.$(EXTENSION)) install-doc install-exec install -d $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) install -m644 -p $(LIBRARY_NAME)-meta.pd $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) install -m644 -p $(SOURCES:.c=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - -# install library linked as single binary -single_install: $(LIBRARY_NAME) install-doc install-exec - install -d $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - install -m644 -p $(LIBRARY_NAME).$(EXTENSION) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + $(STRIP) $(addprefix $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/,$(SOURCES:.c=.$(EXTENSION))) install-doc: install -d $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - install -m644 -p $(SOURCES:.c=-help.pd) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) +# install -m644 -p $(SOURCES:.c=-help.pd) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) install -m644 -p $(wildcard *.pd) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + install -m644 -p README $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/README.txt + install -m644 -p VERSION $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/VERSION.txt + install -m644 -p CHANGES $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/CHANGES.txt install-exec: install -d $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) @@ -100,10 +129,29 @@ clean: -rm -f -- $(SOURCES:.c=.$(EXTENSION)) -rm -f -- $(LIBRARY_NAME).$(EXTENSION) +distclean: clean + -rm -f -- ../$(LIBRARY_NAME)-$(OS)-$(shell uname -m).tar.bz2 + -rm -f -- ../$(LIBRARY_NAME)-$(OS).tar.bz2 -dist: +dist: all dist_$(OS) + +dist_linux: + cd .. && tar --exclude=.svn -cjpf $(LIBRARY_NAME)-$(OS)-$(shell uname -m).tar.bz2 $(LIBRARY_NAME) + +dist_macosx: + cd .. && tar --exclude=.svn -cjpf $(LIBRARY_NAME)-$(OS).tar.bz2 $(LIBRARY_NAME) + +dist_windows: cd .. && tar --exclude=.svn -cjpf $(LIBRARY_NAME)-$(OS).tar.bz2 $(LIBRARY_NAME) etags: etags *.[ch] ../../pd/src/*.[ch] /usr/include/*.h /usr/include/*/*.h + +showpaths: + @echo "PD_PATH: $(PD_PATH)" + @echo "objectsdir: $(objectsdir)" + @echo "LIBRARY_NAME: $(LIBRARY_NAME)" + @echo "SOURCES: $(SOURCES)" + @echo "UNAME: $(UNAME)" + @echo "CPU: $(CPU)" -- cgit v1.2.1