Updated `README.md` with instructions for building/using the kernel module.
[xeon-phi-kernel-module] / ras / Makefile
CommitLineData
800f879a
AT
1#
2# Build RAS drivers
3#
4# In Linux 2.6 kernels modules must be built by the kernel's kbuild
5# system, with a path to the kernel module source directory. Kbuild
6# expects a general purpose Makefile to exist and optionally an extra
7# file named Kbuild with the kernel module build details.
8# This Makefile is a 'backwards compatible' (see file "modules.txt").
9#
10DEBUG = n
11
12ifneq ($(KERNELRELEASE),)
13
14#
15# Kbuild backwards compatibility part:
16# Load Kbuild to specify module targets and options.
17#
18include Kbuild
19
20else
21
22#
23# Standard invocation:
24#
25# Export variables to environment and pass control to kernel tools
26# ARCH Target architecture: l1om or k1om
27# KERNELDIR Top of MIC kernel tree (not repo source tree)
28# DRIVERDIR Top of MPSS drivers build tree (not repo source tree)
29#
30
31ARCH := $(or $(ARCH), $(shell cat $(CURDIR)/../.arch 2>/dev/null))
32
33ifeq ($(DRIVERDIR),)
34ifeq ($(shell /usr/bin/test -d ../source-root/$(ARCH)-hybrid && echo Y),Y)
35DRIVERDIR = $(PWD)/../source-root/$(ARCH)-hybrid
36KERNELDIR ?= $(DRIVERDIR)/card/kernel
37else ifeq ($(shell /usr/bin/test -d ../source-root/$(ARCH)-internal && echo Y),Y)
38DRIVERDIR = $(PWD)/../source-root/$(ARCH)-internal
39KERNELDIR ?= $(DRIVERDIR)/card/kernel
40endif
41endif
42KERNELDIR ?= ../../miclinux
43
44SCIF_SYM = $(DRIVERDIR)/card/driver/Module.symvers
45SCIF_LIB = $(DRIVERDIR)/host/scif_lib
46SCIF_HEADER = $(DRIVERDIR)/include
47
48EXTRA_CFLAGS += $(KERNWARNFLAGS)
49ifeq ($(ARCH),l1om)
50 EXTRA_CFLAGS += -DMIC_IS_L1OM
51else ifeq ($(ARCH),k1om)
52 EXTRA_CFLAGS += -DMIC_IS_K1OM
53else
54 $(error $$(ARCH) must be l1om or k1om)
55endif
56EXTRA_CFLAGS += -DINTERNAL_REG=1 -Wall
57EXTRA_CFLAGS += $(SPOOKY_MIC_CFLAGS)
58
59CROSS_COMPILE = x86_64-$(ARCH)-linux-
60
61ifeq ($(shell which $(CROSS_COMPILE)gcc 2>/dev/null),)
62 ifeq ($(shell which ../cross/bin/$(CROSS_COMPILE)gcc 2>/dev/null),)
63 $(error $$(PATH) must include $(CROSS_COMPILE)gcc)
64 else
65 CROSS_COMPILE = $(PWD)/../cross/bin/x86_64-$(ARCH)-linux-
66 endif
67endif
68
69default: modules tests
70
71modules:
72 @ echo "$(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) modules"
73 @ $(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) \
74 V=0 DEBUG=$(DEBUG) \
75 SPOOKY_MIC_CFLAGS=$(SPOOKY_MIC_CFLAGS) \
76 CROSS_COMPILE=$(CROSS_COMPILE) \
77 KBUILD_EXTRA_SYMBOLS=$(SCIF_SYM) \
78 modules
79
80install: modules_install
81
82modules_install:
83 @ echo "$(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) install"
84 @ $(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) \
85 V=0 DEBUG=$(DEBUG) \
86 CROSS_COMPILE=$(CROSS_COMPILE) \
87 SPOOKY_MIC_CFLAGS=$(SPOOKY_MIC_CFLAGS) \
88 KBUILD_EXTRA_SYMBOLS=$(SCIF_SYM) \
89 INSTALL_MOD_PATH=$(DESTDIR) \
90 modules_install
91
92#
93# Test programs, expects that compilers and SCIF libraries are present.
94#
95host-tools = edecode gdecode
96host-tests = cp mc ttl tmp cutl proc ukill fan smc fsc pm trbo ptrig cp32 p-in-host p-out-host
97card-tests = p-in-card p-out-card suid load
98
99tests: $(host-tools) $(host-tests) $(card-tests)
100
101cp: cp.c micras_api.h
102 @ echo gcc -O2 cp.c -o cp -lscif
103 @ gcc -O2 cp.c -o cp $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
104
105cp32: cp32.c micras_api.h
106 @ echo gcc -O2 cp32.c -o cp32 -lscif
107 @ gcc -O2 cp32.c -o cp32 $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
108
109mc: mc.c micmca_api.h
110 @ echo gcc -O2 mc.c -o mc -lscif
111 @ gcc -O2 mc.c -o mc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
112
113cutl: cutl.c micras_api.h
114 @ echo gcc -O2 cutl.c -o cutl -lscif -lncurses
115 @ gcc -O2 cutl.c -o cutl $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif -lncurses
116
117cutl2: cutl2.c micras_api.h
118 @ echo gcc -O2 cutl2.c -o cutl2 -lscif -lncurses
119 @ gcc -O2 cutl2.c -o cutl2 $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif -lncurses
120
121proc: proc.c micras_api.h
122 @ echo gcc -O2 proc.c -o proc -lscif -lncurses
123 @ gcc -O2 proc.c -o proc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif -lncurses
124
125trbo: trbo.c micras_api.h
126 @ echo gcc -O2 trbo.c -o trbo -lscif
127 @ gcc -O2 trbo.c -o trbo $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
128
129fan: fan.c micras_api.h
130 @ echo gcc -O2 fan.c -o fan -lscif
131 @ gcc -O2 fan.c -o fan $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
132
133smc: smc.c micras_api.h
134 @ echo gcc -O2 smc.c -o smc -lscif
135 @ gcc -O2 smc.c -o smc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
136
137pm_tst: pm_tst.c micras_api.h
138 @ echo gcc -O2 pm_tst.c -o pm_tst -lscif
139 @ gcc -O2 pm_tst.c -o pm_tst $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
140
141fsc: fsc.c micras_api.h
142 @ echo gcc -O2 fsc.c -o fsc -lscif
143 @ gcc -O2 fsc.c -o fsc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
144
145ptrig: ptrig.c micras_api.h
146 @ echo gcc -O2 ptrig.c -o ptrig -lscif
147 @ gcc -O2 ptrig.c -o ptrig $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
148
149pm: pm.c micras_api.h micpm_api.h
150 @ echo gcc -O2 pm.c -o pm -lscif
151 @ gcc -O2 pm.c -o pm $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
152
153tmp: tmp.c micras_api.h
154 @ echo gcc -O2 tmp.c -o tmp -lscif
155 @ gcc -O2 tmp.c -o tmp $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
156
157ttl: ttl.c micras_api.h micpm_api.h
158 @ echo gcc -O2 ttl.c -o ttl -lscif
159 @ gcc -O2 ttl.c -o ttl $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
160
161ukill: ukill.c micras_api.h
162 @ echo gcc -O2 ukill.c -o ukill -lscif
163 @ gcc -O2 ukill.c -o ukill $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
164
165edecode: edecode.c
166 @ echo gcc -O2 edecode.c -o edecode
167 @ gcc -O2 -Wall edecode.c -o edecode
168
169gdecode: gdecode.c
170 @ echo gcc -O2 gdecode.c -o gdecode
171 @ gcc -O2 -Wall gdecode.c -o gdecode
172
173p-in-host: p-in.c Makefile
174 @ echo gcc -O2 p-in.c -o p-in-host
175 @ gcc -O2 p-in.c -o p-in-host -DIOK=16
176
177p-out-host: p-out.c Makefile
178 @ echo gcc -O2 p-out.c -o p-out-host
179 @ gcc -O2 p-out.c -o p-out-host -DIOK=16 -DTXG=64
180
181suid: suid.c
182 @ echo cross-gcc -O2 suid.c -o suid
183 @ $(CROSS_COMPILE)gcc -O2 suid.c -o suid
184
185p-in-card: p-in.c Makefile
186 @ echo cross-gcc -O2 p-in.c -o p-in-card
187 @ $(CROSS_COMPILE)gcc -O2 p-in.c -o p-in-card -DIOK=64
188
189p-out-card: p-out.c Makefile
190 @ echo cross-gcc -O2 p-out.c -o p-out-card
191 @ $(CROSS_COMPILE)gcc -O2 p-out.c -o p-out-card -DIOK=64 -DTXG=16
192
193load: load.c
194 @ echo cross-gcc load.c -o load -pthread -lpthread
195 @ $(CROSS_COMPILE)gcc load.c -o load $(EXTRA_CFLAGS) -pthread -lpthread
196
197cpptest:
198 @ echo Dumping compiler defines
199 @ echo > nil.c
200 @ $(CROSS_COMPILE)gcc -E -dM nil.c | sort
201 @ rm nil.c
202
203endif
204
205clean:
206 @ echo " Cleaning .."
207 @ rm -fr *.o *~ core .*.sw? .depend .*.cmd *.ko *.mod.c \
208 .tmp_versions modules.order Module.symvers
209 @ rm -f $(host-tools) $(host-tests) $(card-tests)
210