Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh -e
- MODULE_NAME := TEST_MODULE
- SOURCE_FOLDER := $(shell pwd)
- VMWARE_FOLDER ?= /root/vmware-esxi-5.0
- # Use ld from binutils-2.17.50.0.15-modcall
- LD := $(VMWARE_FOLDER)/toolchain/lin32/binutils-2.17.50.0.15-modcall/bin/x86_64-linux-ld
- # Use gcc version 4.1.2-9
- CC := $(VMWARE_FOLDER)/toolchain/lin32/gcc-4.1.2-9/bin/x86_64-linux-gcc
- CC_FLAGS_DEFAULT ?= -Wall -Werror -O2
- CC_FLAGS := \
- $(CC_FLAGS_DEFAULT) \
- -fwrapv -fno-working-directory -g -ggdb3 -fno-strict-aliasing \
- -Wstrict-prototypes -fPIE -falign-functions=4 \
- -falign-jumps=4 -falign-loops=4 -ffreestanding -fno-common \
- -fno-omit-frame-pointer -fno-strength-reduce -march=x86-64 \
- -mcmodel=small -minline-all-stringops -mno-red-zone -nostartfiles \
- -nostdlib --sysroot=/nowhere -Wno-error -Wdeclaration-after-statement \
- -Wno-unused-value -Wno-pointer-sign -Wno-strict-prototypes \
- -Wno-declaration-after-statement -Wno-declaration-after-statement \
- -DCONFIG_COMPAT -DCONFIG_PROC_FS -DCPU=x86-64 -DDEBUG_STUB \
- -DESX3_NETWORKING_NOT_DONE_YET -DGPLED_CODE -DKBUILD_MODNAME=\"${MODULE_NAME}\" \
- -DLINUX_MODULE_AUX_HEAP_NAME=vmklnx_${MODULE_NAME} -DLINUX_MODULE_HEAP_INITIAL=1024*100 \
- -DLINUX_MODULE_HEAP_MAX=1024*4096 -DLINUX_MODULE_HEAP_NAME=vmklnx_${MODULE_NAME} \
- -DLINUX_MODULE_SKB_HEAP -DLINUX_MODULE_SKB_HEAP_INITIAL=512*1024 \
- -DLINUX_MODULE_SKB_HEAP_MAX=22*1024*1024 \
- -DMODULE -DNET_DRIVER -DVMKERNEL_MODULE -DVMK_DEVKIT_HAS_API_VMKAPI_BASE \
- -DVMK_DEVKIT_HAS_API_VMKAPI_DEVICE -DVMK_DEVKIT_HAS_API_VMKAPI_ISCSI \
- -DVMK_DEVKIT_HAS_API_VMKAPI_NET -DVMK_DEVKIT_HAS_API_VMKAPI_SCSI \
- -DVMK_DEVKIT_IS_DDK -DVMK_DEVKIT_USES_BINARY_COMPATIBLE_APIS \
- -DVMK_DEVKIT_USES_PUBLIC_APIS -DVMNIX -DVMX86_RELEASE -DVMX86_SERVER \
- -DVMX86_VPROBES -D_LINUX -D__KERNEL__ -D__VMKERNEL_MODULE__ -D__VMKERNEL__ \
- -D__VMKLNX__ -D__VMK_GCC_BUG_ALIGNMENT_PADDING__ -D__VMWARE__ \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/version \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/HEADERS/vmkdrivers-vmkernel/vmkernel64/release \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/include \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/include/vmklinux_9 \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/HEADERS/CUR-9-vmkdrivers-asm-x64/vmkernel64/release \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/drivers/net \
- -I$(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/BLD/build/HEADERS/vmkapi-current-all-public-bincomp/vmkernel64/release \
- -include $(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/bora/vmkernel/distribute/push-hidden.h \
- -include $(VMWARE_FOLDER)/vsphere/vmkdrivers-gpl/vmkdrivers/src_9/include/linux/autoconf.h
- OBJS := \
- main.o \
- vmklinux_module.o
- # Makefile Outputs
- REBUILDABLES := $(OBJS) $(MODULE_NAME)
- all : $(MODULE_NAME)
- clean :
- rm -f $(REBUILDABLES)
- # Module Link Target (Link)
- # $@ expands to the rule's target.
- # $^ expands to the rule's dependencies.
- $(MODULE_NAME) : $(OBJS)
- @echo [Linking]: $^
- @$(LD) -v -r -o $@ --whole-archive $^
- @echo [Stripping symbols]: $@ $@.debug
- @objcopy --only-keep-debug $@ $@.debug
- @objcopy --strip-debug $@
- # # Module Build Target (Compile)
- # Here is a Pattern Rule, often used for compile-line.
- # It says how to create a file with a .o suffix, given a file with a .c suffix.
- # The rule's command uses some built-in Make Macros:
- # $@ for the pattern-matched target
- # $< for the pattern-matched dependency
- %.o : %.c
- @echo [Compiling]: $<
- @$(CC) $(CC_FLAGS) -c -o $@ $<
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement