1 #
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
6 #
7 # A full copy of the text of the CDDL should have accompanied this
8 # source. A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
10 #
11
12 #
13 # Copyright 2015 Toomas Soome <tsoome@me.com>
14 #
15
16 include $(SRC)/Makefile.master
17
18 CFLAGS= -O2 -I../../../../include -I../../..
19 CFLAGS += -DLOADER_ZFS_SUPPORT
20 CPPFLAGS=
21
22 all: machine x86 libi386.a
23
24 clean: clobber
25 clobber:
26 $(RM) machine x86 $(OBJS) libi386.a
27
28 AS= $(GNU_ROOT)/bin/gas
29 CC= $(GCC_ROOT)/bin/gcc
30 OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
31 AS_FLAGS=--32
32 ASFLAGS=-m32
33 AS_CPPFLAGS=
34 COMPILE.s = $(AS) $(AS_FLAGS)
35
36 SRCS= biosacpi.c bioscd.c biosdisk.c biosmem.c biospnp.c \
37 biospci.c biossmap.c bootinfo.c bootinfo32.c bootinfo64.c \
38 comconsole.c devicename.c elf32_freebsd.c \
39 elf64_freebsd.c multiboot.c multiboot_tramp.S \
40 i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \
41 smbios.c time.c vidconsole.c amd64_tramp.S spinconsole.c linux.c \
42 relocater_tramp.S
43 OBJS= biosacpi.o bioscd.o biosdisk.o biosmem.o biospnp.o \
44 biospci.o biossmap.o bootinfo.o bootinfo32.o bootinfo64.o \
45 comconsole.o devicename.o elf32_freebsd.o \
46 elf64_freebsd.o multiboot.o multiboot_tramp.o \
47 i386_copy.o i386_module.o nullconsole.o pxe.o pxetramp.o \
48 smbios.o time.o vidconsole.o amd64_tramp.o spinconsole.o linux.o \
49 relocater_tramp.o
50
51 LIBZFS= ../../zfs
52 SRCS += $(LIBZFS)/devicename_stubs.c
53 OBJS += devicename_stubs.o
54
55 # Enable PXE TFTP or NFS support, not both.
56 CFLAGS += -DLOADER_TFTP_SUPPORT
57
58 BOOT_COMCONSOLE_PORT= 0x3f8
59 CFLAGS += -DCOMPORT=${BOOT_COMCONSOLE_PORT}
60
61 BOOT_COMCONSOLE_SPEED= 9600
62 CFLAGS += -DCOMSPEED=${BOOT_COMCONSOLE_SPEED}
63
64 # Make the disk code more talkative
65 # CFLAGS+= -DDISK_DEBUG
66
67 # Export serial numbers, UUID, and asset tag from loader.
68 CFLAGS += -DSMBIOS_SERIAL_NUMBERS
69 # Use little-endian UUID format as defined in SMBIOS 2.6.
70 CFLAGS += -DSMBIOS_LITTLE_ENDIAN_UUID
71 # Use network-endian UUID format for backward compatibility.
72 #CFLAGS += -DSMBIOS_NETWORK_ENDIAN_UUID
73
74 # Include simple terminal emulation (cons25-compatible)
75 CFLAGS += -DTERM_EMU
76
77 # XXX: make alloca() useable
78 CFLAGS += -Dalloca=__builtin_alloca
79
80 CFLAGS += -I../../common -I../common \
81 -I../btx/lib \
82 -I../../../contrib/dev/acpica/include \
83 -I../../.. -I.
84 # the location of libstand
85 CFLAGS += -I../../../../lib/libstand/
86
87 # Handle FreeBSD specific %b and %D printf format specifiers
88 #FORMAT_EXTENSIONS=-D__printf__=__freebsd_kprintf__
89 #CFLAGS += ${FORMAT_EXTENSIONS}
90
91 CLEANFILES += machine x86
92
93 # XXX: clang integrated-as doesn't grok .codeNN directives yet
94 # CFLAGS.amd64_tramp.S= ${CLANG_NO_IAS}
95 # CFLAGS.multiboot_tramp.S= ${CLANG_NO_IAS}
96 # CFLAGS += ${CFLAGS.${.IMPSRC:T}}
97
98 include ../Makefile.inc
99
100 machine:
101 $(RM) machine
102 $(SYMLINK) ../../../i386/include machine
103
104 x86:
105 $(RM) x86
106 $(SYMLINK) ../../../x86/include x86
107
108 libi386.a: machine $(OBJS)
109 $(AR) $(ARFLAGS) $@ $(OBJS)
110
111 %.o: $(LIBZFS)/%.c
112 $(COMPILE.c) -o $@ $<