|
|
1.1 root 1: # Force i386-only instructions
2: #
3: CFLAGS += -march=i386
4:
5: # Code size reduction.
6: #
7: CFLAGS += -fomit-frame-pointer
8:
9: # Code size reduction.
10: #
11: ifeq ($(CCTYPE),gcc)
12: CFLAGS += -fstrength-reduce
13: endif
14:
15: # Code size reduction. gcc3 needs a different syntax to gcc2 if you
16: # want to avoid spurious warnings.
17: #
18: ifeq ($(CCTYPE),gcc)
19: GCC_VERSION := $(subst ., ,$(shell $(CC) -dumpversion))
20: GCC_MAJOR := $(firstword $(GCC_VERSION))
21: ifeq ($(GCC_MAJOR),2)
22: CFLAGS += -malign-jumps=1 -malign-loops=1 -malign-functions=1
23: else
24: CFLAGS += -falign-jumps=1 -falign-loops=1 -falign-functions=1
25: endif # gcc2
26: endif # gcc
27:
28: # Code size reduction. This is almost always a win. The kernel uses
29: # it, too.
30: #
31: ifeq ($(CCTYPE),gcc)
32: CFLAGS += -mpreferred-stack-boundary=2
33: endif
34:
35: # Code size reduction. Use regparm for all functions - C functions
36: # called from assembly (or vice versa) need __asmcall now
37: #
38: CFLAGS += -mregparm=3
39:
40: # Code size reduction. Use -mrtd (same __asmcall requirements as above)
41: ifeq ($(CCTYPE),gcc)
42: CFLAGS += -mrtd
43: endif
44:
45: # Code size reduction. This is the logical complement to -mregparm=3.
46: # It doesn't currently buy us anything, but if anything ever tries to
47: # return small structures, let's be prepared
48: #
49: CFLAGS += -freg-struct-return
50:
51: # Force 32-bit code even on an x86-64 machine
52: #
53: CFLAGS += -m32
54: ASFLAGS += --32
55: ifeq ($(HOST_OS),FreeBSD)
56: LDFLAGS += -m elf_i386_fbsd
57: else
58: LDFLAGS += -m elf_i386
59: endif
60:
61: # EFI requires -fshort-wchar, and nothing else currently uses wchar_t
62: #
63: CFLAGS += -fshort-wchar
64:
65: # We need to undefine the default macro "i386" when compiling .S
66: # files, otherwise ".arch i386" translates to ".arch 1"...
67: #
68: CFLAGS += -Ui386
69:
70: # Locations of utilities
71: #
72: ISOLINUX_BIN_LIST := \
73: $(ISOLINUX_BIN) \
74: /usr/lib/syslinux/isolinux.bin \
75: /usr/share/syslinux/isolinux.bin \
76: /usr/local/share/syslinux/isolinux.bin
77: ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST)))
78:
79: # i386-specific directories containing source files
80: #
81: SRCDIRS += arch/i386/core arch/i386/transitions arch/i386/prefix
82: SRCDIRS += arch/i386/firmware/pcbios
83: SRCDIRS += arch/i386/image
84: SRCDIRS += arch/i386/interface/pcbios
85: SRCDIRS += arch/i386/interface/pxe
86: SRCDIRS += arch/i386/interface/pxeparent
87: SRCDIRS += arch/i386/interface/syslinux
88: SRCDIRS += arch/i386/hci/commands
89:
90: # The various xxx_loader.c files are #included into core/loader.c and
91: # should not be compiled directly.
92: #
93: NON_AUTO_SRCS += arch/i386/core/aout_loader.c
94: NON_AUTO_SRCS += arch/i386/core/freebsd_loader.c
95: NON_AUTO_SRCS += arch/i386/core/wince_loader.c
96:
97: # Include common x86 Makefile
98: #
99: MAKEDEPS += arch/x86/Makefile
100: include arch/x86/Makefile
101:
102: # Include platform-specific Makefile
103: #
104: MAKEDEPS += arch/i386/Makefile.$(PLATFORM)
105: include arch/i386/Makefile.$(PLATFORM)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.