hello again this is the makefile:
This Makefile has been simplified as much as possible, by putting all
generic material, independent of this specific directory, into
…/Rules.make. Read that file for details
The usb serial headers
INCLUDEUSBSER := $(shell echo “/usr/src/linux-uname -r
/drivers/usb/serial/”)
TOPDIR := $(shell pwd)
#TOPDIR = .
include $(TOPDIR)/Rules.make
CFLAGS += -I$(INCLUDEUSBSER) -O
OBJS = ftdi.o
all: $(OBJS)
ftdi.o: ftdi_sio.o
$(LD) -r $^ -o $@
install:
install -d $(INSTALLDIR)
install -c $(OBJS) $(INSTALLDIR)
clean:
rm -f *.o *~ core
and this is the Rules.make
--makefile--
This file is part of the sample code for the book “Linux Device Drivers”,
second edition. It is meant to be generic and is designed to be recycled
by other drivers. The comments should be clear enough.
It partly comes from Linux Makefile, and needs GNU make. <rubini@linux.it>
TOPDIR is declared by the Makefile including this file.
ifndef TOPDIR
TOPDIR = .
endif
KERNELDIR can be speficied on the command line or environment
ifndef KERNELDIR
KERNELDIR := $(shell echo “/lib/modules/uname -r
/build”)
endif
The headers are taken from the kernel
INCLUDEDIR = $(KERNELDIR)/include
We need the configuration file, for CONFIG_SMP and possibly other stuff
(especiall for RISC platforms, where CFLAGS depends on the exact
processor being used).
ifeq ($(KERNELDIR)/.config,$(wildcard $(KERNELDIR))/.config)
include $(KERNELDIR)/.config
else
MESSAGE := $(shell echo “WARNING: no .config file in $(KERNELDIR)”)
endif
ARCH can be speficed on the comdline or env. too, and defaults to this arch
Unfortunately, we can’t easily extract if from kernel configuration
(well, we could look athe asm- symlink… don’t know if worth the effort)
ifndef ARCH
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/
-e s/arm.*/arm/ -e s/sa110/arm/)
endif
This is useful if cross-compiling. Taken from kernel Makefile (CC changed)
AS =$(CROSS_COMPILE)as
LD =$(CROSS_COMPILE)ld
CC =$(CROSS_COMPILE)gcc
CPP =$(CC) -E
AR =$(CROSS_COMPILE)ar
NM =$(CROSS_COMPILE)nm
STRIP =$(CROSS_COMPILE)strip
OBJCOPY =$(CROSS_COMPILE)objcopy
OBJDUMP =$(CROSS_COMPILE)objdump
The platform-specific Makefiles include portability nightmares.
Some platforms, though, don’t have one, so check for existence first
ARCHMAKEFILE = $(TOPDIR)/Makefile.$(ARCH)
ifeq ($(ARCHMAKEFILE),$(wildcard $(ARCHMAKEFILE)))
include $(ARCHMAKEFILE)
endif
USBDI=/linux
CFLAGS: all assignments to CFLAGS are inclremental, so you can specify
the initial flags on the command line or environment, if needed.
CFLAGS += -Wall -D__KERNEL__ -DMODULE -I$(INCLUDEDIR)
ifdef CONFIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif
Prepend modversions.h if we’re running with versioning.
ifdef CONFIG_MODVERSIONS
CFLAGS += -DMODVERSIONS -include $(KERNELDIR)/include/linux/modversions.h
endif
#Install dir
VERSIONFILE = $(INCLUDEDIR)/linux/version.h
VERSION = $(shell awk -F" ‘/REL/ {print $$2}’ $(VERSIONFILE))
INSTALLDIR = /lib/modules/$(VERSION)/misc
I have to change somethings inside this two file?
Regards
Luca