Couple of tweaks to the make system to facilitate building newos on a Mac OS X box.
[newos.git] / makefile
blobc0e99fb38703bb65c65925e61522a40455dd84c3
1 ifeq ($(HOSTTYPE),i586)
2 HOSTTYPE := i386
3 endif
4 ifeq ($(HOSTTYPE),i686)
5 HOSTTYPE := i386
6 endif
7 ifeq ($(HOSTTYPE), )
8 HOSTTYPE := i386
9 endif
10 ifeq ($(HOSTTYPE),macintosh)
11 ifeq ($(MACHTYPE),powerpc)
12 HOSTTYPE := ppc
13 endif
14 endif
15 ifeq ($(ARCH), )
16 ARCH := $(HOSTTYPE)
17 #ARCH := i386
18 #ARCH := sparc
19 #ARCH := sh4
20 #ARCH := alpha
21 #ARCH := sparc64
22 endif
24 HOST_CC := $(CC)
25 HOST_LD := $(LD)
26 HOST_AS := $(AS)
27 HOST_AR := $(AR)
28 HOST_OBJCOPY := objcopy
30 # setup echo
31 ECHO := echo
32 ifeq ($(shell uname),SunOS)
33 ECHO := /usr/ucb/echo
34 endif
36 BOOTMAKER = tools/bootmaker
37 NETBOOT = tools/netboot
38 BIN2H = tools/bin2h
39 BIN2ASM = tools/bin2asm
41 CC = $(HOST_CC)
42 LD = $(HOST_LD)
43 AS = $(HOST_AS)
44 AR = $(HOST_AR)
46 ifeq ($(ARCH),i386)
47 ifneq ($(HOSTTYPE),i386)
48 CC = i386-elf-gcc
49 LD = i386-elf-ld
50 AS = i386-elf-as
51 AR = i386-elf-ar
52 OBJCOPY = i386-elf-objcopy
53 endif
54 ifeq ($(OSTYPE),cygwin)
55 CC = i386-linux-gcc
56 LD = i386-linux-ld
57 AS = i386-linux-as
58 AR = i386-linux-ar
59 OBJCOPY = i386-linux-objcopy
60 endif
61 GLOBAL_CFLAGS = -O
62 KERNEL_CFLAGS = -fno-pic
63 USER_CFLAGS = -fpic
64 GLOBAL_LDFLAGS =
65 LIBGCC = -lgcc
66 LIBGCC_PATH = lib/libgcc/$(ARCH)
67 endif
69 ifeq ($(ARCH),sh4)
70 CC = sh-elf-gcc
71 LD = sh-elf-ld
72 AS = sh-elf-as
73 AR = sh-elf-ar
74 OBJCOPY = sh-elf-objcopy
75 GLOBAL_CFLAGS = -ml -m4 -mhitachi -O
76 KERNEL_CFLAGS = -fno-pic
77 USER_CFLAGS = -fpic
78 GLOBAL_LDFLAGS = -EL
79 LIBGCC = -lgcc
80 LIBGCC_PATH = lib/libgcc/$(ARCH)/ml/m4-single-only
81 endif
83 ifeq ($(ARCH),sparc64)
84 CC = sparc64-elf-gcc
85 LD = sparc64-elf-ld
86 AS = sparc64-elf-as
87 AR = sparc64-elf-ar
88 OBJCOPY = sparc64-elf-objcopy
89 GLOBAL_CFLAGS =
90 GLOBAL_LDFLAGS =
91 LIBGCC = -lgcc
92 LIBGCC_PATH = lib/libgcc/$(ARCH)
93 endif
95 ifeq ($(ARCH),sparc)
96 ifneq ($(HOSTTYPE),sparc)
97 CC = sparc-elf-gcc
98 LD = sparc-elf-ld
99 AS = sparc-elf-as
100 AR = sparc-elf-ar
101 OBJCOPY = sparc-elf-objcopy
102 endif
103 GLOBAL_CFLAGS =
104 GLOBAL_LDFLAGS =
105 LIBGCC = -lgcc
106 LIBGCC_PATH = lib/libgcc/$(ARCH)
107 endif
109 ifeq ($(ARCH),alpha)
110 ifneq ($(HOSTTYPE),alpha)
111 CC = alpha-elf-gcc
112 LD = alpha-elf-ld
113 AS = alpha-elf-as
114 AR = alpha-elf-ar
115 OBJCOPY = alpha-elf-objcopy
116 endif
117 GLOBAL_CFLAGS =
118 GLOBAL_LDFLAGS =
119 LIBGCC = -lgcc
120 LIBGCC_PATH = lib/libgcc/$(ARCH)
121 endif
123 ifeq ($(ARCH),mips)
124 ifneq ($(HOSTTYPE),mips)
125 CC = mips-elf-gcc
126 LD = mips-elf-ld
127 AS = mips-elf-as
128 AR = mips-elf-ar
129 OBJCOPY = mips-elf-objcopy
130 endif
131 GLOBAL_CFLAGS = -fno-pic -mips4 -meb -G 0
132 GLOBAL_LDFLAGS =
133 LIBGCC = -lgcc
134 LIBGCC_PATH = lib/libgcc/$(ARCH)
135 endif
137 ifeq ($(ARCH),ppc)
138 ifneq ($(HOSTTYPE),ppc)
139 CC = ppc-elf-gcc
140 LD = ppc-elf-ld
141 AS = ppc-elf-as
142 AR = ppc-elf-ar
143 OBJCOPY = ppc-elf-objcopy
144 endif
145 GLOBAL_CFLAGS = -fno-pic -O
146 GLOBAL_LDFLAGS =
147 LIBGCC = -lgcc
148 LIBGCC_PATH = lib/libgcc/$(ARCH)
149 endif
151 OBJ_DIR = obj.$(ARCH)
153 GLOBAL_CFLAGS += -Wall -W -Wno-multichar -Wno-unused -Wmissing-prototypes -nostdinc -fno-builtin -DARCH_$(ARCH) -DNEWOS=1
155 # sub makefiles are responsible for adding to these
156 DEPS =
157 CLEAN =
158 FINAL =
160 final: final1
162 # include the top level makefile
163 include boot/$(ARCH)/boot.mk
165 BOOTMAKER_ARGS =
166 ifeq ($(ARCH),sparc)
167 BOOTMAKER_ARGS += --sparc
168 endif
170 final1: $(FINAL)
171 rm -f final.$(ARCH);ln -sf $(FINAL) final.$(ARCH)
172 rm -f system.$(ARCH);ln -sf $(KERNEL) system.$(ARCH)
174 tools: $(BOOTMAKER) $(BIN2H) $(BIN2ASM)
176 $(BOOTMAKER): $(BOOTMAKER).c tools/sparcbootblock.h
177 $(HOST_CC) -O0 -g -o $@ $(BOOTMAKER).c
179 NETBOOT_LINK_ARGS =
180 ifeq ($(OSTYPE),beos)
181 NETBOOT_LINK_ARGS = -lsocket -lnet
182 endif
183 ifeq ($(shell uname),SunOS)
184 NETBOOT_LINK_ARGS = -lsocket -lnsl
185 endif
187 $(NETBOOT): $(NETBOOT).c
188 $(HOST_CC) -O3 -o $@ $(NETBOOT).c $(NETBOOT_LINK_ARGS)
190 $(BIN2ASM): $(BIN2ASM).c
191 $(HOST_CC) -O3 -o $@ $(BIN2ASM).c
193 $(BIN2H): $(BIN2H).c
194 $(HOST_CC) -O3 -o $@ $(BIN2H).c
196 toolsclean:
197 rm -f $(BOOTMAKER) $(NETBOOT) $(NETBOOT_DC) $(BIN2H) $(BIN2ASM)
199 CLEAN += toolsclean
201 clean: $(CLEAN)
202 rm -f $(KERNEL) $(FINAL)
203 rm -f final.$(ARCH) system.$(ARCH)
205 depsclean:
206 rm -f $(DEPS)
208 allclean: depsclean clean toolsclean
209 rm -f `find . -type f -name '*.d'`
210 rm -f `find . -type f -name '*.o'`
212 ifeq ($(filter $(MAKECMDGOALS), allclean), )
213 include $(DEPS)
214 endif