Updated `README.md` with instructions for building/using the kernel module.
[xeon-phi-kernel-module] / ras / Makefile
#
# Build RAS drivers
#
# In Linux 2.6 kernels modules must be built by the kernel's kbuild
# system, with a path to the kernel module source directory. Kbuild
# expects a general purpose Makefile to exist and optionally an extra
# file named Kbuild with the kernel module build details.
# This Makefile is a 'backwards compatible' (see file "modules.txt").
#
DEBUG = n
ifneq ($(KERNELRELEASE),)
#
# Kbuild backwards compatibility part:
# Load Kbuild to specify module targets and options.
#
include Kbuild
else
#
# Standard invocation:
#
# Export variables to environment and pass control to kernel tools
# ARCH Target architecture: l1om or k1om
# KERNELDIR Top of MIC kernel tree (not repo source tree)
# DRIVERDIR Top of MPSS drivers build tree (not repo source tree)
#
ARCH := $(or $(ARCH), $(shell cat $(CURDIR)/../.arch 2>/dev/null))
ifeq ($(DRIVERDIR),)
ifeq ($(shell /usr/bin/test -d ../source-root/$(ARCH)-hybrid && echo Y),Y)
DRIVERDIR = $(PWD)/../source-root/$(ARCH)-hybrid
KERNELDIR ?= $(DRIVERDIR)/card/kernel
else ifeq ($(shell /usr/bin/test -d ../source-root/$(ARCH)-internal && echo Y),Y)
DRIVERDIR = $(PWD)/../source-root/$(ARCH)-internal
KERNELDIR ?= $(DRIVERDIR)/card/kernel
endif
endif
KERNELDIR ?= ../../miclinux
SCIF_SYM = $(DRIVERDIR)/card/driver/Module.symvers
SCIF_LIB = $(DRIVERDIR)/host/scif_lib
SCIF_HEADER = $(DRIVERDIR)/include
EXTRA_CFLAGS += $(KERNWARNFLAGS)
ifeq ($(ARCH),l1om)
EXTRA_CFLAGS += -DMIC_IS_L1OM
else ifeq ($(ARCH),k1om)
EXTRA_CFLAGS += -DMIC_IS_K1OM
else
$(error $$(ARCH) must be l1om or k1om)
endif
EXTRA_CFLAGS += -DINTERNAL_REG=1 -Wall
EXTRA_CFLAGS += $(SPOOKY_MIC_CFLAGS)
CROSS_COMPILE = x86_64-$(ARCH)-linux-
ifeq ($(shell which $(CROSS_COMPILE)gcc 2>/dev/null),)
ifeq ($(shell which ../cross/bin/$(CROSS_COMPILE)gcc 2>/dev/null),)
$(error $$(PATH) must include $(CROSS_COMPILE)gcc)
else
CROSS_COMPILE = $(PWD)/../cross/bin/x86_64-$(ARCH)-linux-
endif
endif
default: modules tests
modules:
@ echo "$(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) modules"
@ $(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) \
V=0 DEBUG=$(DEBUG) \
SPOOKY_MIC_CFLAGS=$(SPOOKY_MIC_CFLAGS) \
CROSS_COMPILE=$(CROSS_COMPILE) \
KBUILD_EXTRA_SYMBOLS=$(SCIF_SYM) \
modules
install: modules_install
modules_install:
@ echo "$(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) install"
@ $(MAKE) -C $(KERNELDIR) M=$(CURDIR) ARCH=$(ARCH) \
V=0 DEBUG=$(DEBUG) \
CROSS_COMPILE=$(CROSS_COMPILE) \
SPOOKY_MIC_CFLAGS=$(SPOOKY_MIC_CFLAGS) \
KBUILD_EXTRA_SYMBOLS=$(SCIF_SYM) \
INSTALL_MOD_PATH=$(DESTDIR) \
modules_install
#
# Test programs, expects that compilers and SCIF libraries are present.
#
host-tools = edecode gdecode
host-tests = cp mc ttl tmp cutl proc ukill fan smc fsc pm trbo ptrig cp32 p-in-host p-out-host
card-tests = p-in-card p-out-card suid load
tests: $(host-tools) $(host-tests) $(card-tests)
cp: cp.c micras_api.h
@ echo gcc -O2 cp.c -o cp -lscif
@ gcc -O2 cp.c -o cp $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
cp32: cp32.c micras_api.h
@ echo gcc -O2 cp32.c -o cp32 -lscif
@ gcc -O2 cp32.c -o cp32 $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
mc: mc.c micmca_api.h
@ echo gcc -O2 mc.c -o mc -lscif
@ gcc -O2 mc.c -o mc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
cutl: cutl.c micras_api.h
@ echo gcc -O2 cutl.c -o cutl -lscif -lncurses
@ gcc -O2 cutl.c -o cutl $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif -lncurses
cutl2: cutl2.c micras_api.h
@ echo gcc -O2 cutl2.c -o cutl2 -lscif -lncurses
@ gcc -O2 cutl2.c -o cutl2 $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif -lncurses
proc: proc.c micras_api.h
@ echo gcc -O2 proc.c -o proc -lscif -lncurses
@ gcc -O2 proc.c -o proc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif -lncurses
trbo: trbo.c micras_api.h
@ echo gcc -O2 trbo.c -o trbo -lscif
@ gcc -O2 trbo.c -o trbo $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
fan: fan.c micras_api.h
@ echo gcc -O2 fan.c -o fan -lscif
@ gcc -O2 fan.c -o fan $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
smc: smc.c micras_api.h
@ echo gcc -O2 smc.c -o smc -lscif
@ gcc -O2 smc.c -o smc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
pm_tst: pm_tst.c micras_api.h
@ echo gcc -O2 pm_tst.c -o pm_tst -lscif
@ gcc -O2 pm_tst.c -o pm_tst $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
fsc: fsc.c micras_api.h
@ echo gcc -O2 fsc.c -o fsc -lscif
@ gcc -O2 fsc.c -o fsc $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
ptrig: ptrig.c micras_api.h
@ echo gcc -O2 ptrig.c -o ptrig -lscif
@ gcc -O2 ptrig.c -o ptrig $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
pm: pm.c micras_api.h micpm_api.h
@ echo gcc -O2 pm.c -o pm -lscif
@ gcc -O2 pm.c -o pm $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
tmp: tmp.c micras_api.h
@ echo gcc -O2 tmp.c -o tmp -lscif
@ gcc -O2 tmp.c -o tmp $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
ttl: ttl.c micras_api.h micpm_api.h
@ echo gcc -O2 ttl.c -o ttl -lscif
@ gcc -O2 ttl.c -o ttl $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
ukill: ukill.c micras_api.h
@ echo gcc -O2 ukill.c -o ukill -lscif
@ gcc -O2 ukill.c -o ukill $(EXTRA_CFLAGS) -I$(SCIF_HEADER) -L$(SCIF_LIB) -lscif
edecode: edecode.c
@ echo gcc -O2 edecode.c -o edecode
@ gcc -O2 -Wall edecode.c -o edecode
gdecode: gdecode.c
@ echo gcc -O2 gdecode.c -o gdecode
@ gcc -O2 -Wall gdecode.c -o gdecode
p-in-host: p-in.c Makefile
@ echo gcc -O2 p-in.c -o p-in-host
@ gcc -O2 p-in.c -o p-in-host -DIOK=16
p-out-host: p-out.c Makefile
@ echo gcc -O2 p-out.c -o p-out-host
@ gcc -O2 p-out.c -o p-out-host -DIOK=16 -DTXG=64
suid: suid.c
@ echo cross-gcc -O2 suid.c -o suid
@ $(CROSS_COMPILE)gcc -O2 suid.c -o suid
p-in-card: p-in.c Makefile
@ echo cross-gcc -O2 p-in.c -o p-in-card
@ $(CROSS_COMPILE)gcc -O2 p-in.c -o p-in-card -DIOK=64
p-out-card: p-out.c Makefile
@ echo cross-gcc -O2 p-out.c -o p-out-card
@ $(CROSS_COMPILE)gcc -O2 p-out.c -o p-out-card -DIOK=64 -DTXG=16
load: load.c
@ echo cross-gcc load.c -o load -pthread -lpthread
@ $(CROSS_COMPILE)gcc load.c -o load $(EXTRA_CFLAGS) -pthread -lpthread
cpptest:
@ echo Dumping compiler defines
@ echo > nil.c
@ $(CROSS_COMPILE)gcc -E -dM nil.c | sort
@ rm nil.c
endif
clean:
@ echo " Cleaning .."
@ rm -fr *.o *~ core .*.sw? .depend .*.cmd *.ko *.mod.c \
.tmp_versions modules.order Module.symvers
@ rm -f $(host-tools) $(host-tests) $(card-tests)