Advertisement
robertgraham1906

Example Driver Makefile

Jul 31st, 2014
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. #!/bin/sh -e
  2.  
  3. MODULE_NAME := TEST_MODULE
  4. SOURCE_FOLDER := $(shell pwd)
  5. VMWARE_FOLDER ?= /root/vmware-esxi-5.0
  6.  
  7. # Use ld from binutils-2.17.50.0.15-modcall
  8. LD := $(VMWARE_FOLDER)/toolchain/lin32/binutils-2.17.50.0.15-modcall/bin/x86_64-linux-ld
  9.  
  10. # Use gcc version 4.1.2-9
  11. CC := $(VMWARE_FOLDER)/toolchain/lin32/gcc-4.1.2-9/bin/x86_64-linux-gcc
  12.  
  13. CC_FLAGS_DEFAULT ?= -Wall -Werror -O2
  14.  
  15. CC_FLAGS := \
  16. $(CC_FLAGS_DEFAULT) \
  17. -fwrapv -fno-working-directory -g -ggdb3 -fno-strict-aliasing \
  18. -Wstrict-prototypes -fPIE -falign-functions=4 \
  19. -falign-jumps=4 -falign-loops=4 -ffreestanding -fno-common \
  20. -fno-omit-frame-pointer -fno-strength-reduce -march=x86-64 \
  21. -mcmodel=small -minline-all-stringops -mno-red-zone -nostartfiles \
  22. -nostdlib --sysroot=/nowhere -Wno-error -Wdeclaration-after-statement \
  23. -Wno-unused-value -Wno-pointer-sign -Wno-strict-prototypes \
  24. -Wno-declaration-after-statement -Wno-declaration-after-statement \
  25. -DCONFIG_COMPAT -DCONFIG_PROC_FS -DCPU=x86-64 -DDEBUG_STUB \
  26. -DESX3_NETWORKING_NOT_DONE_YET -DGPLED_CODE -DKBUILD_MODNAME=\"${MODULE_NAME}\" \
  27. -DLINUX_MODULE_AUX_HEAP_NAME=vmklnx_${MODULE_NAME} -DLINUX_MODULE_HEAP_INITIAL=1024*100 \
  28. -DLINUX_MODULE_HEAP_MAX=1024*4096 -DLINUX_MODULE_HEAP_NAME=vmklnx_${MODULE_NAME} \
  29. -DLINUX_MODULE_SKB_HEAP -DLINUX_MODULE_SKB_HEAP_INITIAL=512*1024 \
  30. -DLINUX_MODULE_SKB_HEAP_MAX=22*1024*1024 \
  31. -DMODULE -DNET_DRIVER -DVMKERNEL_MODULE -DVMK_DEVKIT_HAS_API_VMKAPI_BASE \
  32. -DVMK_DEVKIT_HAS_API_VMKAPI_DEVICE -DVMK_DEVKIT_HAS_API_VMKAPI_ISCSI \
  33. -DVMK_DEVKIT_HAS_API_VMKAPI_NET -DVMK_DEVKIT_HAS_API_VMKAPI_SCSI \
  34. -DVMK_DEVKIT_IS_DDK -DVMK_DEVKIT_USES_BINARY_COMPATIBLE_APIS \
  35. -DVMK_DEVKIT_USES_PUBLIC_APIS -DVMNIX -DVMX86_RELEASE -DVMX86_SERVER \
  36. -DVMX86_VPROBES -D_LINUX -D__KERNEL__ -D__VMKERNEL_MODULE__ -D__VMKERNEL__ \
  37. -D__VMKLNX__ -D__VMK_GCC_BUG_ALIGNMENT_PADDING__ -D__VMWARE__ \
  38. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/version \
  39. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/HEADERS/vmkdrivers-vmkernel/vmkernel64/release \
  40. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/include \
  41. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/include/vmklinux_9 \
  42. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/HEADERS/CUR-9-vmkdrivers-asm-x64/vmkernel64/release \
  43. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/drivers/net \
  44. -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/HEADERS/vmkapi-current-all-public-bincomp/vmkernel64/release \
  45. -include $(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/bora/vmkernel/distribute/push-hidden.h \
  46. -include $(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/include/linux/autoconf.h
  47.  
  48. OBJS := \
  49. main.o \
  50. vmklinux_module.o
  51.  
  52. # Makefile Outputs
  53. REBUILDABLES := $(OBJS) $(MODULE_NAME)
  54.  
  55. all : $(MODULE_NAME)
  56.  
  57. clean :
  58. rm -f $(REBUILDABLES)
  59.  
  60. # Module Link Target (Link)
  61. # $@ expands to the rule's target.
  62. # $^ expands to the rule's dependencies.
  63. $(MODULE_NAME) : $(OBJS)
  64. @echo [Linking]: $^
  65. @$(LD) -v -r -o $@ --whole-archive $^
  66. @echo [Stripping symbols]: $@ $@.debug
  67. @objcopy --only-keep-debug $@ $@.debug
  68. @objcopy --strip-debug $@
  69.  
  70. # # Module Build Target (Compile)
  71. # Here is a Pattern Rule, often used for compile-line.
  72. # It says how to create a file with a .o suffix, given a file with a .c suffix.
  73. # The rule's command uses some built-in Make Macros:
  74. # $@ for the pattern-matched target
  75. # $< for the pattern-matched dependency
  76. %.o : %.c
  77. @echo [Compiling]: $<
  78. @$(CC) $(CC_FLAGS) -c -o $@ $<
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement