summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile16
-rw-r--r--makefiledir/Makefile.config_writer24
-rw-r--r--os/macosx/Makefile51
-rw-r--r--os/macosx/Makefile.setup94
4 files changed, 63 insertions, 122 deletions
diff --git a/Makefile b/Makefile
index 9646660bb..1320fd09e 100644
--- a/Makefile
+++ b/Makefile
@@ -130,7 +130,7 @@
# Makefile version tag
# it checks if the version tag in Makefile.config is the same and force update outdated config files
-MAKEFILE_VERSION:=8
+MAKEFILE_VERSION:=9
# CONFIG_WRITER has to be found even for manual configuration
CONFIG_WRITER=makefiledir/Makefile.config_writer
@@ -346,7 +346,9 @@ ifdef OSX
# these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic
ifdef IS_G5
-BASECFLAGS += -mtune=970 -mcpu=970 -mpowerpc-gpopt
+ifndef UNIVERSAL_BINARY
+BASECFLAGS += $(G5_FLAGS)
+endif
endif
else
ifdef MORPHOS
@@ -995,17 +997,21 @@ endif
$(Q)$(CC) $(OBJCFLAGS) $(CDEFS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
+ifndef TRIPPLE_BINARY
+# building tripple binary object files is handled in os/macosx/Makefile
+# TARGET_CPU_FLAGS is used to set target CPUs in OSX universal binaries. It's empty for all other builds
%.o: %.c $(MAKE_CONFIG)
@echo '===> Compiling $<'
- $(Q)$(CC) $(CFLAGS) $(CDEFS) -c -o $@ $<
+ $(Q)$(CC) $(TARGET_CPU_FLAGS) $(CFLAGS) $(CDEFS) -c -o $@ $<
%.o: %.cpp $(MAKE_CONFIG)
@echo '===> Compiling $<'
- $(Q)$(CXX) $(CFLAGS) $(CDEFS) -c -o $@ $<
+ $(Q)$(CXX) $(TARGET_CPU_FLAGS) $(CFLAGS) $(CDEFS) -c -o $@ $<
%.o: %.m $(MAKE_CONFIG)
@echo '===> Compiling $<'
- $(Q)$(CC) $(CFLAGS) $(CDEFS) -c -o $@ $<
+ $(Q)$(CC) $(TARGET_CPU_FLAGS) $(CFLAGS) $(CDEFS) -c -o $@ $<
+endif
%.o: %.rc
@echo '===> Compiling resource $<'
diff --git a/makefiledir/Makefile.config_writer b/makefiledir/Makefile.config_writer
index 88e8e67ec..581411c54 100644
--- a/makefiledir/Makefile.config_writer
+++ b/makefiledir/Makefile.config_writer
@@ -85,25 +85,13 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,\# Universal binary setup)
$(call CONFIG_LINE,\# use these settings for building universal binaries. Most systems should work with the default settings)
- $(call CONFIG_LINE,SDL_PPC_CONFIG:=$(SDL_PPC_CONFIG))
- $(call CONFIG_LINE,SDL_x86_CONFIG:=$(SDL_x86_CONFIG))
+ $(call CONFIG_LINE,CFLAGS_UNIVERSAL:=$(CFLAGS_UNIVERSAL))
+ $(call CONFIG_LINE,LDFLAGS_UNIVERSAL:=$(LDFLAGS_UNIVERSAL))
- $(call CONFIG_LINE,\# if you got a fat libpng you should not need to change this. It is recommended to get a fat libpng lib)
- $(call CONFIG_LINE,LIBPNG_PPC_CONFIG:=$(LIBPNG_PPC_CONFIG))
- $(call CONFIG_LINE,LIBPNG_x86_CONFIG:=$(LIBPNG_x86_CONFIG))
-
- $(call CONFIG_LINE,\# autodetected SDL lib path, but it is not detected in a reliable way, so verify it. It needs to be the x86 lib)
- $(call CONFIG_LINE,x86_SDL_LIB:=$(x86_SDL_LIB))
-
- $(call CONFIG_LINE,\# default values should be good enough for the rest of the universal binary flags, but check them anyway)
- $(call CONFIG_LINE,SKIP_LIB_TEST:=$(SKIP_LIB_TEST))
- $(call CONFIG_LINE,PPC_CC:=$(PPC_CC))
- $(call CONFIG_LINE,CFLAGS_PPC:=$(CFLAGS_PPC))
- $(call CONFIG_LINE,LDFLAGS_PPC:=$(LDFLAGS_PPC))
-
- $(call CONFIG_LINE,x86_CC:=$(x86_CC))
- $(call CONFIG_LINE,CFLAGS_x86:=$(CFLAGS_x86))
- $(call CONFIG_LINE,LDFLAGS_x86:=$(LDFLAGS_x86))
+ $(call CONFIG_LINE,CFLAGS_JAGUAR:=$(CFLAGS_JAGUAR))
+ $(call CONFIG_LINE,LDFLAGS_JAGUAR:=$(LDFLAGS_JAGUAR))
+ $(call CONFIG_LINE,)
+ $(call CONFIG_LINE,G5_FLAGS:=$(G5_FLAGS))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# For cross-compiling)
diff --git a/os/macosx/Makefile b/os/macosx/Makefile
index 6e53126a7..02a7660e9 100644
--- a/os/macosx/Makefile
+++ b/os/macosx/Makefile
@@ -2,11 +2,29 @@
# This makefile is not a standalone makefile, but is called from the general one
# it contains targets specific to MacOS X
-ifdef UNIVERSAL_BINARY
ifdef TRIPPLE_BINARY
-TRIPPLE_BINARY:=tripple_binary
-endif
-UNIVERSAL_BINARY:=build_universal_binary
+# this is to add G5_FLAGS to ppc970 builds only. If the ability to add flags to a single arch only shows up in the future
+# we can get rid of this. Xcode supports arch dependant flags, but we can't do it in the makefile (yet?)
+%.o: %.c $(MAKE_CONFIG)
+ @echo '===> Compiling $<'
+ $(Q)$(CC) $(CFLAGS) $(CDEFS) -arch ppc -c -arch i386 -o $@.uni $<
+ $(Q)$(CC) $(CFLAGS) $(CDEFS) $(G5_FLAGS) -arch ppc970 -c -o $@.ppc970 $<
+ $(Q)lipo -create -output $@ $@.uni $@.ppc970
+ $(Q)rm $@.uni $@.ppc970
+
+%.o: %.cpp $(MAKE_CONFIG)
+ @echo '===> Compiling $<'
+ $(Q)$(CXX) $(CFLAGS) $(CDEFS) -arch ppc -arch i386 -c -o $@.uni $<
+ $(Q)$(CXX) $(CFLAGS) $(CDEFS) $(G5_FLAGS) -arch ppc970 -c -o $@.ppc970 $<
+ $(Q)lipo -create -output $@ $@.uni $@.ppc970
+ $(Q)rm $@.uni $@.ppc970
+
+%.o: %.m $(MAKE_CONFIG)
+ @echo '===> Compiling $<'
+ $(Q)$(CC) $(CFLAGS) $(CDEFS) -arch ppc -arch i386 -c -o $@.uni $<
+ $(Q)$(CC) $(CFLAGS) $(CDEFS) -arch ppc970 $(G5_FLAGS) -c -o $@.ppc970 $<
+ $(Q)lipo -create -output $@ $@.uni $@.ppc970
+ $(Q)rm $@.uni $@.ppc970
endif
ifdef UNIVERSAL_PPC_PART
@@ -16,31 +34,6 @@ else
BUILD_OSX_BUNDLE:=build_OSX_bundle
endif
-# building an universal binary
-# since we can only compile for PPC or x86 at any one time, we compile one and then
-# we make clean and compile the other one. In the end we use lipo to join them together
-# when this is done, we can continue with the targets from the first run, which is build_OSX_bundle
-
-$(UNIVERSAL_BINARY): $(TTD)
- $(Q)mkdir -p temp_binary_dir
- $(Q)cp $(TTD) temp_binary_dir/$(TTD)_a
- $(Q)rm -rf $(TTD) $(OBJS) # delete all .o files so we can compile for a new CPU
- $(Q)make UNIVERSAL_PPC_PART:=1
- $(Q)cp $(TTD) temp_binary_dir/$(TTD)_b
- @echo '===> Joining the PPC and x86 binaries into one universal one'
- $(Q)lipo temp_binary_dir/$(TTD)_a temp_binary_dir/$(TTD)_b -create -output $(TTD)
- $(Q)rm -rf temp_binary_dir
-
-$(TRIPPLE_BINARY): $(UNIVERSAL_BINARY)
- $(Q)mkdir -p temp_binary_dir
- $(Q)cp $(TTD) temp_binary_dir/$(TTD)_a
- $(Q)rm -rf $(TTD) $(OBJS) # delete all .o files so we can compile for a new CPU
- $(Q)make UNIVERSAL_PPC_PART:=1 IS_G5:=1
- $(Q)cp $(TTD) temp_binary_dir/$(TTD)_b
- @echo '===> Joining the Universal and G5 binaries into a tripple binary'
- $(Q)lipo temp_binary_dir/$(TTD)_a temp_binary_dir/$(TTD)_b -create -output $(TTD)
- $(Q)rm -rf temp_binary_dir
-
# build the bundle. OSX wants to keep apps in bundles, so we will give it one
# the good thing about bundles is that you can keep extra files in them, so we keep lng files and a data dir in it
diff --git a/os/macosx/Makefile.setup b/os/macosx/Makefile.setup
index 7cfb6d965..d5419900b 100644
--- a/os/macosx/Makefile.setup
+++ b/os/macosx/Makefile.setup
@@ -47,80 +47,34 @@ endif
endif
# setup flags if none are defined
-ifndef CFLAGS_PPC
- CFLAGS_PPC:= -isysroot /Developer/SDKs/MacOSX10.2.8.sdk
-endif
-ifndef LDFLAGS_PPC
- LDFLAGS_PPC:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk
-endif
-ifndef PPC_CC
- PPC_CC:=$(shell ls /usr/bin/powerpc-apple-darwin*-gcc* | tail -n 1)
-endif
-ifndef CFLAGS_x86
- CFLAGS_x86:= -isysroot /Developer/SDKs/MacOSX10.4u.sdk
-endif
-ifndef LDFLAGS_x86
- LDFLAGS_x86:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk
-endif
-ifndef x86_CC
- x86_CC:=$(shell ls /usr/bin/i686-apple-darwin*-gcc* | tail -n 1)
-endif
-ifdef WITH_PNG
- ifndef LIBPNG_PPC_CONFIG
- LIBPNG_PPC_CONFIG:=$(LIBPNG-CONFIG)
- endif
- ifndef LIBPNG_x86_CONFIG
- LIBPNG_x86_CONFIG:=$(LIBPNG-CONFIG)
- endif
-endif
-ifdef WITH_SDL
- ifndef SDL_PPC_CONFIG
- SDL_PPC_CONFIG:=$(SDL-CONFIG)
- endif
- ifndef SDL_x86_CONFIG
- SDL_x86_CONFIG:=$(SDL-CONFIG)
- endif
- ifndef x86_SDL_LIB
- x86_SDL_LIB:=$(shell echo "`$(SDL_x86_CONFIG) --prefix`/lib/libSDL-1.2.0.dylib")
- endif
+ifndef CFLAGS_JAGUAR
+ CFLAGS_JAGUAR:= -isysroot /Developer/SDKs/MacOSX10.2.8.sdk
+endif
+ifndef LDFLAGS_JAGUAR
+ LDFLAGS_JAGUAR:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk
+endif
+
+ifndef CFLAGS_UNIVERSAL
+ CFLAGS_UNIVERSAL:= -isysroot /Developer/SDKs/MacOSX10.4u.sdk
+endif
+ifndef LDFLAGS_UNIVERSAL
+ LDFLAGS_UNIVERSAL:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk
endif
ifdef JAGUAR
- LIBPNG-CONFIG:=$(LIBPNG_PPC_CONFIG)
- SDL-CONFIG:=$(SDL_PPC_CONFIG)
- CC_TARGET:=$(PPC_CC)
- CFLAGS:= $(CFLAGS_PPC) -arch ppc
- LDFLAGS:= $(LDFLAGS_PPC)
+ CFLAGS:= $(CFLAGS_JAGUAR) -arch ppc
+ LDFLAGS:= $(LDFLAGS_JAGUAR)
+endif
+
+ifndef G5_FLAGS
+G5_FLAGS := -mtune=970 -mcpu=970 -mpowerpc-gpopt
endif
ifdef UNIVERSAL_BINARY
- # set up config files
- ifndef SKIP_LIB_TEST
- ifdef WITH_PNG
- TEST:=$(shell lipo -info `$(LIBPNG_PPC_CONFIG) --prefix`/lib/libpng.a | xargs -n 1 | grep "ppc"))
- ifndef TEST
-$(error no PPC libpng found)
- endif
- TEST:=$(shell lipo -info `$(LIBPNG_x86_CONFIG) --prefix`/lib/libpng.a | xargs -n 1 | grep "i386"))
- ifndef TEST
-$(error no x86 libpng found)
- endif
- endif
- endif
- LIBS:=
- OBJS:=
- ifdef UNIVERSAL_PPC_PART
- LIBPNG-CONFIG:=$(LIBPNG_PPC_CONFIG)
- SDL-CONFIG:=$(SDL_PPC_CONFIG)
- CC_TARGET:=$(PPC_CC)
- CFLAGS:= $(CFLAGS_PPC) -arch ppc
- LDFLAGS:= $(LDFLAGS_PPC)
- else
- LIBPNG-CONFIG:=$(LIBPNG_x86_CONFIG)
- SDL-CONFIG:=$(SDL_x86_CONFIG)
- CC_TARGET:=$(x86_CC)
- # clear the cached list of PPC libs
- CFLAGS:= $(CFLAGS_x86) -arch i386
- LDFLAGS:= $(LDFLAGS_x86)
- endif
+TARGET_CPU_FLAGS:= -arch ppc -arch i386
+LDFLAGS := $(LDFLAGS_UNIVERSAL) -arch ppc -arch i386
+CFLAGS += $(CFLAGS_UNIVERSAL)
+ifdef TRIPPLE_BINARY
+LDFLAGS += -arch ppc970
+endif
endif