LIB_DIR = $(REP_DIR)/src/lib/usb LIB_INC_DIR = $(LIB_DIR)/include LIBS += libc-setjmp config SRC_CC += main.cc lx_emul.cc irq.cc timer.cc event.cc storage.cc \ input_component.cc nic.cc raw.cc SRC_C += dummies.c scsi.c evdev.c raw_driver.c LX_CONTRIB_DIR := $(call select_from_ports,dde_linux)/src/lib/usb DRIVERS_DIR := $(LX_CONTRIB_DIR)/drivers USB_DIR := $(DRIVERS_DIR)/usb CC_OLEVEL = -O2 # # The order of include-search directories is important, we need to look into # 'contrib' before falling back to our custom 'lx_emul.h' header. # INC_DIR += $(LIB_INC_DIR) INC_DIR += $(LX_CONTRIB_DIR)/include $(LX_CONTRIB_DIR)/include/uapi $(LX_CONTRIB_DIR) CC_OPT += -U__linux__ -D__KERNEL__ CC_OPT += -DCONFIG_USB_DEVICEFS -DCONFIG_HOTPLUG -DDEBUG -DCONFIG_USB_PHY=1 CC_WARN = -Wall -Wno-unused-variable -Wno-uninitialized \ -Wno-unused-function -Wno-overflow CC_C_OPT += -Wno-unused-but-set-variable -Wno-pointer-sign -Wno-unused-label CC_CXX_OPT = -fpermissive # # Suffix of global 'module_init' function # MOD_SUFFIX = CC_OPT += -DMOD_SUFFIX=$(MOD_SUFFIX) # common lib SRC_C += lib/int_sqrt.c # USB core SRC_C += $(addprefix usb/core/,$(notdir $(wildcard $(USB_DIR)/core/*.c))) SRC_C += usb/usb-common.c # USB host-controller driver SRC_C += $(addprefix usb/host/, ehci-hcd.c) # USB hid SRC_C += $(addprefix hid/usbhid/, hid-core.c hid-quirks.c) SRC_C += $(addprefix hid/, hid-core.c hid-generic.c hid-input.c \ hid-cherry.c hid-microsoft.c hid-multitouch.c) SRC_C += $(addprefix input/, evdev.c input.c input-mt.c) SRC_C += $(addprefix input/, tablet/wacom_sys.c tablet/wacom_wac.c) # USB storage SRC_C += $(addprefix usb/storage/,scsiglue.c protocol.c transport.c usb.c \ initializers.c option_ms.c sierra_ms.c usual-tables.c) # SCSI SRC_C += $(addprefix scsi/,scsi.c constants.c) # # Determine the header files included by the contrib code. For each # of these header files we create a symlink to 'lx_emul.h'. # GEN_INCLUDES := $(shell grep -rh "^\#include .*\/" $(LX_CONTRIB_DIR) |\ sed "s/^\#include [^<\"]*[<\"]\([^>\"]*\)[>\"].*/\1/" | sort | uniq) # # Filter out original Linux headers that exist in the contrib directory # NO_GEN_INCLUDES := $(shell cd $(LX_CONTRIB_DIR)/include; find -name "*.h" | sed "s/.\///" | sed "s/.*include\///") GEN_INCLUDES := $(filter-out $(NO_GEN_INCLUDES),$(GEN_INCLUDES)) # # Put Linux headers in 'GEN_INC' dir, since some include use "../../" paths use # three level include hierarchy # GEN_INC := $(shell pwd)/include/include/include $(shell mkdir -p $(GEN_INC)) GEN_INCLUDES := $(addprefix $(GEN_INC)/,$(GEN_INCLUDES)) INC_DIR += $(GEN_INC) # # Make sure to create the header symlinks prior building # $(SRC_C:.c=.o) $(SRC_CC:.cc=.o): $(GEN_INCLUDES) # # Add suffix, since there are two hid-core.c with the same module init function # hid/hid-core.o: MOD_SUFFIX="_core" $(GEN_INCLUDES): $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)ln -s $(LIB_INC_DIR)/lx_emul.h $@ vpath %.c $(DRIVERS_DIR) vpath %.c $(LIB_DIR) vpath %.cc $(LIB_DIR) vpath %.cc $(LIB_DIR)/signal vpath %.c $(LIB_DIR)/input vpath %.cc $(LIB_DIR)/input vpath %.cc $(LIB_DIR)/storage vpath %.c $(LIB_DIR)/storage vpath %.cc $(LIB_DIR)/nic vpath %.cc $(LIB_DIR)/raw vpath %.c $(LIB_DIR)/raw vpath lib/int_sqrt.c $(LX_CONTRIB_DIR) # vi: set ft=make :