Massive reorganization of kernel addons:
[newos.git] / make.syscfg
blob302c1a6ec794d0480ed02466355ab5eddf307c9a
2 ifeq ($(HOSTTYPE),)
3         HOSTTYPE := $(shell uname -m)
4 endif
5 ifeq ($(OSTYPE),)
6         OSTYPE := $(shell uname -s | awk -F_ '{print $$1}' | tr A-Z a-z)
7 endif
8 ifeq ($(HOSTTYPE),i586)
9         HOSTTYPE = i386
10 endif
11 ifeq ($(HOSTTYPE),i686)
12         HOSTTYPE = i386
13 endif
14 ifeq ($(HOSTTYPE), )
15         HOSTTYPE = i386
16 endif
17 ifeq ($(findstring Macintosh,$(HOSTTYPE)),Macintosh)
18         HOSTTYPE := ppc
19 endif
20 ifeq ($(HOSTTYPE),macintosh)
21         ifeq ($(MACHTYPE),powerpc)
22                 HOSTTYPE := ppc
23         endif
24 endif
25 ifeq ($(ARCH), )
26 #ARCH = $(HOSTTYPE)
27 ARCH = i386
28 #ARCH = sparc
29 #ARCH = sh4
30 #ARCH = alpha
31 #ARCH = sparc64
32 endif
34 HOST_CC := gcc
35 HOST_LD := $(LD)
36 HOST_AS := $(AS)
37 HOST_AR := $(AR)
38 HOST_OBJCOPY := objcopy
39 HOST_STRIP := strip
40 HOST_SIZE := size
42 # setup some local commands
43 ECHO := echo
44 AWK := awk
45 ifeq ($(OSTYPE),SunOS)
46         ECHO := /usr/ucb/echo
47         AWK := gawk
48 endif
49 ifeq ($(findstring solaris,$(OSTYPE)),solaris)
50         ECHO := /usr/ucb/echo
51         AWK := gawk
52 endif
54 CC = $(HOST_CC)
55 LD = $(HOST_LD)
56 AS = $(HOST_AS)
57 AR = $(HOST_AR)
58 OBJCOPY = $(HOST_OBJCOPY)
59 STRIP = $(HOST_STRIP)
60 SIZE = $(HOST_SIZE)
62 ifeq ($(ARCH),i386)
63         ifneq ($(HOSTTYPE),i386)
64                 CC = i386-elf-gcc
65                 LD = i386-elf-ld
66                 AS = i386-elf-as
67                 AR = i386-elf-ar
68                 OBJCOPY = i386-elf-objcopy
69                 STRIP = i386-elf-strip
70         endif
71         ifeq ($(OSTYPE),cygwin)
72                 CC = i386-elf-gcc
73                 LD = i386-elf-ld
74                 AS = i386-elf-as
75                 AR = i386-elf-ar
76                 OBJCOPY = i386-elf-objcopy
77                 STRIP = i386-elf-strip
78         endif
79         GLOBAL_CFLAGS = -O2
80         KERNEL_CFLAGS = -fno-pic
81         USER_CFLAGS = -fpic
82         GLOBAL_LDFLAGS =
83         TOOLCHAIN_ARCH = i386
84 endif
86 ifeq ($(ARCH),sh4)
87         CC = sh-elf-gcc
88         LD = sh-elf-ld
89         AS = sh-elf-as
90         AR = sh-elf-ar
91         OBJCOPY = sh-elf-objcopy
92         STRIP = sh-elf-strip
93         GLOBAL_CFLAGS = -ml -m4-single-only -mhitachi -O1
94         KERNEL_CFLAGS = -fno-pic
95         USER_CFLAGS = -fpic
96         GLOBAL_LDFLAGS = -EL
97         TOOLCHAIN_ARCH = sh
98 endif
100 ifeq ($(ARCH),sparc64)
101         CC = sparc64-elf-gcc
102         LD = sparc64-elf-ld
103         AS = sparc64-elf-as
104         AR = sparc64-elf-ar
105         OBJCOPY = sparc64-elf-objcopy
106         STRIP = sparc64-elf-strip
107         GLOBAL_CFLAGS =
108         GLOBAL_LDFLAGS =
109         TOOLCHAIN_ARCH = sparc64
110 endif
112 ifeq ($(ARCH),sparc)
113         ifneq ($(HOSTTYPE),sparc)
114                 CC = sparc-elf-gcc
115                 LD = sparc-elf-ld
116                 AS = sparc-elf-as
117                 AR = sparc-elf-ar
118                 OBJCOPY = sparc-elf-objcopy
119                 STRIP = sparc-elf-strip
120         endif
121         GLOBAL_CFLAGS =
122         GLOBAL_LDFLAGS =
123         TOOLCHAIN_ARCH = sparc
124 endif
126 ifeq ($(ARCH),m68k)
127         ifneq ($(HOSTTYPE),m68k)
128                 CC = m68k-elf-gcc
129                 LD = m68k-elf-ld
130                 AS = m68k-elf-as
131                 AR = m68k-elf-ar
132                 OBJCOPY = m68k-elf-objcopy
133                 STRIP = m68k-elf-strip
134                 SIZE = m68k-elf-size
135         endif
136         GLOBAL_CFLAGS = -O0 -g
137         KERNEL_CFLAGS = -fno-pic
138         USER_CFLAGS = -fpic
139         GLOBAL_LDFLAGS = -g
140         TOOLCHAIN_ARCH = m68k
141 endif
143 ifeq ($(ARCH),alpha)
144         ifneq ($(HOSTTYPE),alpha)
145                 CC = alpha-elf-gcc
146                 LD = alpha-elf-ld
147                 AS = alpha-elf-as
148                 AR = alpha-elf-ar
149                 OBJCOPY = alpha-elf-objcopy
150         endif
151         GLOBAL_CFLAGS =
152         GLOBAL_LDFLAGS =
153         TOOLCHAIN_ARCH = alpha
154 endif
156 ifeq ($(ARCH),mips)
157         ifneq ($(HOSTTYPE),mips)
158                 CC = mips-elf-gcc
159                 LD = mips-elf-ld
160                 AS = mips-elf-as
161                 AR = mips-elf-ar
162                 OBJCOPY = mips-elf-objcopy
163         endif
164         GLOBAL_CFLAGS = -fno-pic -mips4 -meb -G 0
165         GLOBAL_LDFLAGS =
166         TOOLCHAIN_ARCH = mips
167 endif
169 ifeq ($(ARCH),ppc)
170         ifneq ($(HOSTTYPE),ppc)
171                 CC = ppc-elf-gcc
172                 LD = ppc-elf-ld
173                 AS = ppc-elf-as
174                 AR = ppc-elf-ar
175                 OBJCOPY = ppc-elf-objcopy
176                 STRIP = ppc-elf-strip
177         endif
178         GLOBAL_CFLAGS = -fno-pic -O -D__PPC__
179         GLOBAL_LDFLAGS =
180         TOOLCHAIN_ARCH = ppc
181 endif
183 # try to detect if the user has ARCH-newos-gcc installed
185 #  NOTE:
186 #       the "| cat" below looks unnecesary, this is
187 #       to avoid a bug in liberty in certain versions
188 #       of gmake for BeOS
189 FOO := $(shell $(TOOLCHAIN_ARCH)-newos-gcc --version | cat)
190 ifneq ($(FOO),)
191 $(warning found newos toolchain!)
192         CC = $(TOOLCHAIN_ARCH)-newos-gcc
193         LD = $(TOOLCHAIN_ARCH)-newos-ld
194         AS = $(TOOLCHAIN_ARCH)-newos-as
195         AR = $(TOOLCHAIN_ARCH)-newos-ar
196         OBJCOPY = $(TOOLCHAIN_ARCH)-newos-objcopy
197         STRIP = $(TOOLCHAIN_ARCH)-newos-strip
198         SIZE = $(TOOLCHAIN_ARCH)-newos-size
199 endif
201 GLOBAL_CFLAGS += -finline -nostdinc -fno-builtin
202 GLOBAL_CFLAGS += -Wall -W -Wno-multichar -Wno-unused-parameter -Wmissing-prototypes
203 GLOBAL_CFLAGS += -DARCH_$(ARCH) -DNEWOS=1 -D__ARCH__=$(ARCH) -U$(ARCH)
204 GLOBAL_CPPFLAGS = $(GLOBAL_CFLAGS) -fno-rtti
206 # find libgcc
207 LIBGCC := -lgcc
208 LIBGCC_PATH := $(dir $(shell $(CC) $(GLOBAL_CFLAGS) -print-libgcc-file-name))
209 $(warning LIBGCC_PATH = $(LIBGCC_PATH))
211 # print some info
212 $(warning ARCH = $(ARCH))
214 # figure out where the build dir will be
215 BUILD_DIR = build/$(ARCH)
216 $(warning build dir will be $(BUILD_DIR))
217 $(shell mkdir -p $(BUILD_DIR))