summaryrefslogtreecommitdiff
path: root/util/vgabios/Makefile
blob: 45a7259cb73aafc3ed74ca411b33fe4213b919e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
##
## This file is part of the coreboot project.
##
## Copyright (C) 2016 Google Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

#
# NOTE: You need to add your libpci.a version to CFLAGS below if
# pci-userspace.c does not build.
#
# If you are building on AMD64, you have to use /usr/lib64/libpci.a instead of
# /usr/lib/...
#

TOP     ?= ../..
OUT     ?= build

CC      ?=  gcc
CFLAGS  ?= -O2 -g -fomit-frame-pointer

CFLAGS  += -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes
CFLAGS  += -Wwrite-strings -Wredundant-decls -Wstrict-aliasing -Wshadow -Wextra
CFLAGS  += -Wno-unused-but-set-variable

# TODO check host architecture
CBCFLAGS  = -Wno-sign-compare -Wno-unused-parameter -Wno-format

INCLUDES  = -Iinclude -I$(OUT)/include
INCLUDES += -I$(TOP)/src/device/oprom/include/
INCLUDES += -I$(TOP)/src/device/oprom/yabel
INCLUDES += -include $(TOP)/src/commonlib/include/commonlib/loglevel.h
INCLUDES += -include stdtypes.h -include pci-userspace.h
INCLUDES += -include $(TOP)/src/include/kconfig.h

CBINCLUDES = -I$(TOP)/src -include include/stdtypes.h -include $(TOP)/src/include/endian.h
CBINCLUDES += -include stdio.h -include sys/io.h

SOURCE  = testbios.c
SOURCE += pci-userspace.c
SOURCE += device.c

X86EMU  = x86emu/sys.c x86emu/decode.c x86emu/ops.c x86emu/ops2.c
X86EMU += x86emu/prim_ops.c x86emu/fpu.c x86emu/debug.c

X86EMU += yabel/interrupt.c
X86EMU += yabel/mem.c
X86EMU += yabel/io.c
X86EMU += yabel/pmm.c
X86EMU += yabel/biosemu.c
X86EMU += yabel/debug.c
#X86EMU += yabel/device.c # For now we need a local copy :-(



X86EMU_DIR = $(TOP)/src/device/oprom
X86EMU_SOURCE = $(addprefix $(X86EMU_DIR)/, $(X86EMU))
OBJECTS:=$(addprefix $(OUT)/,$(SOURCE:.c=.o)) $(addprefix $(OUT)/, $(X86EMU:.c=.o))

LIBS=-lpci

all: dep testbios

$(OBJECTS): includes

testbios: $(OBJECTS)
	printf "    LINK  $(notdir $@)\n"
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)

dep: $(SOURCE) $(X86EMU_SOURCE) Makefile
	$(CC) $(CFLAGS) $(INCLUDES) -MM $(SOURCE) > .dependencies
	$(CC) $(CFLAGS) $(INCLUDES) $(CBCFLAGS) $(CBINCLUDES) -MM $(X86EMU_SOURCE) >> .dependencies

# Make all the dummy include files (that are in reality
# covered by all the -include statements above)
includes:
	mkdir -p $(OUT)/include/device
	mkdir -p $(OUT)/include/arch
	touch $(OUT)/include/device/device.h
	touch $(OUT)/include/device/pci.h
	touch $(OUT)/include/device/pci_ops.h
	touch $(OUT)/include/device/resource.h
	touch $(OUT)/include/arch/io.h
	touch $(OUT)/include/timer.h
	touch $(OUT)/include/types.h

clean:
	rm -f $(OBJECTS) *~ testbios
	rm -rf $(OUT)

distclean: clean
	rm -f .dependencies

$(OUT)/%.o: $(X86EMU_DIR)/%.c
	printf "    CC    (x86emu) $(notdir $<)\n"
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(CBCFLAGS) $(INCLUDES) $(CBINCLUDES) -c -o $@ $<

$(OUT)/%.o: %.c
	printf "    CC    $(notdir $<)\n"
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<

.PHONY: all includes clean distclean
.SILENT:

-include .dependencies