Rules.make
上传用户:wudi5211
上传日期:2010-01-21
资源大小:607k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

C/C++

  1. # -*-makefile-*-
  2. #
  3. # This file is part of the sample code for the book "Linux Device Drivers",
  4. # second edition. It is meant to be generic and is designed to be recycled
  5. # by other drivers. The comments should be clear enough.
  6. # It partly comes from Linux Makefile, and needs GNU make. <rubini@linux.it>
  7. # TOPDIR is declared by the Makefile including this file.
  8. ifndef TOPDIR
  9. TOPDIR = .
  10. endif
  11. # KERNELDIR can be speficied on the command line or environment
  12. ifndef KERNELDIR
  13. KERNELDIR = /usr/src/linux
  14. endif
  15. # The headers are taken from the kernel
  16. INCLUDEDIR = $(KERNELDIR)/include
  17. # We need the configuration file, for CONFIG_SMP and possibly other stuff
  18. # (especiall for RISC platforms, where CFLAGS depends on the exact
  19. # processor being used).
  20. ifeq ($(KERNELDIR)/.config,$(wildcard $(KERNELDIR))/.config)
  21. include $(KERNELDIR)/.config
  22. else
  23. MESSAGE := $(shell echo "WARNING: no .config file in $(KERNELDIR)")
  24. endif
  25. # ARCH can be speficed on the comdline or env. too, and defaults to this arch
  26. # Unfortunately, we can't easily extract if from kernel configuration
  27. # (well, we could look athe asm- symlink... don't know if worth the effort)
  28. ifndef ARCH
  29.   ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ 
  30. -e s/arm.*/arm/ -e s/sa110/arm/)
  31. endif
  32. # This is useful if cross-compiling. Taken from kernel Makefile (CC changed)
  33. AS      =$(CROSS_COMPILE)as
  34. LD      =$(CROSS_COMPILE)ld
  35. CC      =$(CROSS_COMPILE)gcc
  36. CPP     =$(CC) -E
  37. AR      =$(CROSS_COMPILE)ar
  38. NM      =$(CROSS_COMPILE)nm
  39. STRIP   =$(CROSS_COMPILE)strip
  40. OBJCOPY =$(CROSS_COMPILE)objcopy
  41. OBJDUMP =$(CROSS_COMPILE)objdump
  42. # The platform-specific Makefiles include portability nightmares.
  43. # Some platforms, though, don't have one, so check for existence first
  44. ARCHMAKEFILE = $(TOPDIR)/Makefile.$(ARCH)
  45. ifeq ($(ARCHMAKEFILE),$(wildcard $(ARCHMAKEFILE)))
  46.   include $(ARCHMAKEFILE)
  47. endif
  48. # CFLAGS: all assignments to CFLAGS are inclremental, so you can specify
  49. # the initial flags on the command line or environment, if needed.
  50. CFLAGS +=  -Wall -D__KERNEL__ -DMODULE -I$(INCLUDEDIR)
  51. ifdef CONFIG_SMP
  52. CFLAGS += -D__SMP__ -DSMP
  53. endif
  54. # Prepend modversions.h if we're running with versioning.
  55. ifdef CONFIG_MODVERSIONS
  56. CFLAGS += -DMODVERSIONS -include $(KERNELDIR)/include/linux/modversions.h
  57. endif
  58. #Install dir
  59. VERSIONFILE = $(INCLUDEDIR)/linux/version.h
  60. VERSION     = $(shell awk -F" '/REL/ {print $$2}' $(VERSIONFILE))
  61. INSTALLDIR = /lib/modules/$(VERSION)/misc