summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2013-04-05 19:49:04 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2013-04-05 19:49:04 +0200
commitea0bfe7520742ac5dec97c6ac4cdc54d2410445c (patch)
tree12503bd7ff199df05dee75b952e1802c9ad64ded
parent891351db6001f51d7615f7190a8751adea861376 (diff)
downloadrockbox-ea0bfe7520742ac5dec97c6ac4cdc54d2410445c.tar.gz
rockbox-ea0bfe7520742ac5dec97c6ac4cdc54d2410445c.zip
Replace the use of uname to get the build output.
Using uname has a couple of problems, especially when cross compiling. Instead check the defines set by the preprocessor to figure the type of binaries it produces. This improves support for cross compiling as it allows to (1) select the correct default target and (2) makes it possible to use separate build folders for different targets. Change-Id: I69a32904dab97755034f2f0d63f8402309d479d2
-rw-r--r--rbutil/ipodpatcher/Makefile4
-rw-r--r--rbutil/libtools.make23
2 files changed, 15 insertions, 12 deletions
diff --git a/rbutil/ipodpatcher/Makefile b/rbutil/ipodpatcher/Makefile
index 79fe4c7c03..0b0b404ca2 100644
--- a/rbutil/ipodpatcher/Makefile
+++ b/rbutil/ipodpatcher/Makefile
@@ -27,10 +27,8 @@ BOOTSRC = ipod1g2g.c ipod3g.c ipod4g.c ipodcolor.c ipodmini1g.c \
27CFLAGS += -DWITH_BOOTOBJS 27CFLAGS += -DWITH_BOOTOBJS
28endif 28endif
29 29
30ifeq ($(findstring Darwin,$(shell uname)),Darwin)
31# additional frameworks to link on on OS X 30# additional frameworks to link on on OS X
32LDOPTS += -framework CoreFoundation -framework IOKit 31LDOPTS_OSX += -framework CoreFoundation -framework IOKit
33endif
34 32
35LIBSOURCES = ipodpatcher.c fat32format.c arc4.c \ 33LIBSOURCES = ipodpatcher.c fat32format.c arc4.c \
36 ipodio-posix.c ipodio-win32-scsi.c ipodio-win32.c 34 ipodio-posix.c ipodio-win32-scsi.c ipodio-win32.c
diff --git a/rbutil/libtools.make b/rbutil/libtools.make
index 77142355c6..44ed5fef3d 100644
--- a/rbutil/libtools.make
+++ b/rbutil/libtools.make
@@ -25,31 +25,37 @@ TOP := $(dir $(lastword $(MAKEFILE_LIST)))
25# overwrite for releases 25# overwrite for releases
26APPVERSION ?= $(shell $(TOP)/../tools/version.sh $(TOP)/..) 26APPVERSION ?= $(shell $(TOP)/../tools/version.sh $(TOP)/..)
27CFLAGS += -DVERSION=\""$(APPVERSION)"\" 27CFLAGS += -DVERSION=\""$(APPVERSION)"\"
28TARGET_DIR ?= $(shell pwd)/ 28TARGET_DIR ?= $(abspath .)/
29 29
30CPPDEFINES=$(shell echo foo | $(CROSS)$(CC) -dM -E -)
30# use POSIX/C99 printf on windows 31# use POSIX/C99 printf on windows
31CFLAGS += -D__USE_MINGW_ANSI_STDIO=1 32CFLAGS += -D__USE_MINGW_ANSI_STDIO=1
32 33
33BINARY = $(OUTPUT) 34BINARY = $(OUTPUT)
34# when building a Windows binary add the correct file suffix 35# when building a Windows binary add the correct file suffix
35ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) 36ifeq ($(findstring CYGWIN,$(CPPDEFINES)),CYGWIN)
36BINARY = $(OUTPUT).exe 37BINARY = $(OUTPUT).exe
37CFLAGS+=-mno-cygwin 38CFLAGS+=-mno-cygwin
39COMPILETARGET = cygwin
38else 40else
39ifeq ($(findstring MINGW,$(shell uname)),MINGW) 41ifeq ($(findstring MINGW,$(CPPDEFINES)),MINGW)
40BINARY = $(OUTPUT).exe 42BINARY = $(OUTPUT).exe
43COMPILETARGET = mingw
41else 44else
42ifeq ($(findstring mingw,$(CROSS)$(CC)),mingw) 45ifeq ($(findstring APPLE,$(CPPDEFINES)),APPLE)
43BINARY = $(OUTPUT).exe 46COMPILETARGET = darwin
47LDOPTS += $(LDFLAGS_OSX)
48else
49COMPILETARGET = posix
44endif 50endif
45endif 51endif
46endif 52endif
53$(info Compiler creates $(COMPILETARGET) binaries)
47 54
48NATIVECC ?= gcc 55NATIVECC ?= gcc
49CC ?= gcc 56CC ?= gcc
50# OS X specifics. Needs to consider cross compiling for Windows. 57# OS X specifics. Needs to consider cross compiling for Windows.
51ifeq ($(findstring Darwin,$(shell uname)),Darwin) 58ifeq ($(findstring APPLE,$(CPPDEFINES)),APPLE)
52ifneq ($(findstring mingw,$(CROSS)$(CC)),mingw)
53# when building libs for OS X build for both i386 and ppc at the same time. 59# when building libs for OS X build for both i386 and ppc at the same time.
54# This creates fat objects, and ar can only create the archive but not operate 60# This creates fat objects, and ar can only create the archive but not operate
55# on it. As a result the ar call must NOT use the u (update) flag. 61# on it. As a result the ar call must NOT use the u (update) flag.
@@ -60,10 +66,9 @@ CC ?= gcc-4.0
60CFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 66CFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
61NATIVECC ?= gcc-4.0 67NATIVECC ?= gcc-4.0
62endif 68endif
63endif
64WINDRES = windres 69WINDRES = windres
65 70
66BUILD_DIR ?= $(TARGET_DIR)build 71BUILD_DIR ?= $(TARGET_DIR)build$(COMPILETARGET)
67OBJDIR = $(abspath $(BUILD_DIR)/$(RBARCH))/ 72OBJDIR = $(abspath $(BUILD_DIR)/$(RBARCH))/
68 73
69ifdef RBARCH 74ifdef RBARCH