#!/usr/bin/make -f
##########################################################
# Copyright (C) 2007,2014 VMware, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation version 2 and no later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#
##########################################################

vm_product_defines = $(if $(findstring tools,$(1)), -DVMX86_TOOLS,)
CC_OPTS += $(call vm_product_defines, $(PRODUCT))

INCLUDE += -I.
INCLUDE += -I$(SRCROOT)/include
INCLUDE += -I$(SRCROOT)/linux
INCLUDE += -I$(SRCROOT)/common

EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, )


MODPOST_VMCI_SYMVERS := $(wildcard $(MODULEBUILDDIR)/VMwareVMCIModule.symvers)

obj-m += $(DRIVER).o

$(DRIVER)-y := $(subst $(SRCROOT)/, , $(patsubst %.c, %.o, $(wildcard $(SRCROOT)/linux/*.c)))

#
# In open-vm-tools, need to compile the common sources from the shared directory.
#
DRIVERLOG   := driverLog.o
$(DRIVER)-y += $(DRIVERLOG)

VSOCK_PATH  := $(shell cd $(SRCROOT) && pwd)
ifdef OVT_SOURCE_DIR
DRIVERLOG_PATH := $(OVT_SOURCE_DIR)/modules/linux/shared
else
DRIVERLOG_PATH := $(VSOCK_PATH)/shared
endif

$(addprefix $(VSOCK_PATH)/,$(DRIVERLOG)): $(VSOCK_PATH)/%.o: $(DRIVERLOG_PATH)/%.c
	$(Q)$(rule_cc_o_c)

clean:
	rm -rf $(wildcard $(DRIVER).mod.c $(DRIVER).ko .tmp_versions \
	       Module.symvers Module.markers modules.order \
	       $(foreach dir,./ linux/ \
	       ,$(addprefix $(dir),.*.cmd .*.o.flags *.o)))

#
# The VSock kernel module uses symbols from the VMCI kernel module. Copy the
# Module.symvers file here so that the Vsock module knows about the VMCI version. This is not done for tar builds because the tools install takes care of it.
#
prebuild::
ifneq ($(MODULEBUILDDIR),)
ifeq ($(MODPOST_VMCI_SYMVERS),)
	$(shell echo >&2 "Building vSockets without VMCI module symbols.")
else
	$(shell echo >&2 "Building vSockets with VMCI module symbols.")
	cp -f $(MODPOST_VMCI_SYMVERS) $(SRCROOT)/Module.symvers
endif
endif
