#
# GNUmakefile for dhd/exe
# (Basically a copy of wl/exe linux portion.)
#
# Copyright (C) 1999-2010, Broadcom Corporation
# 
#      Unless you and Broadcom execute a separate written software license
# agreement governing use of this software, this software is licensed to you
# under the terms of the GNU General Public License version 2 (the "GPL"),
# available at http://www.broadcom.com/licenses/GPLv2.php, with the
# following added to such license:
# 
#      As a special exception, the copyright holders of this software give you
# permission to link this software with independent modules, and to copy and
# distribute the resulting executable under terms of your choice, provided that
# you also meet, for each linked independent module, the terms and conditions of
# the license of that module.  An independent module is a module which is not
# derived from this software.  The special exception does not apply to any
# modifications of the software.
# 
#      Notwithstanding the above, under no circumstances may you combine this
# software in any way with any other Broadcom software provided under a license
# other than the GPL, without Broadcom's express prior written consent.
#
# $Id: GNUmakefile,v 1.9.24.4.2.4 2009/03/04 03:53:29 Exp $

SRCBASE = ../..

UNAME = $(shell uname)

#-----------------------------------------------------------
# Windows build
# 1) windows, don't include Makerules due to all: conflict
ifeq ($(findstring CYGWIN,$(UNAME)),CYGWIN)

SRCFILE = 
include ../../GNUmakefile.inc

else # UNAME

# 2) not windows, need to include first to pick up TARGETENV dependent vars
include $(SRCBASE)/Makerules


# Always include pktgen commands in the application
CFLAGS += -DSDTEST
CFLAGS += -DBCMSPI

#-----------------------------------------------------------
# Linux build
#
ifneq ($(findstring $(TARGETENV), "linux linuxmips linuxmips_be linuxarm linuxarm_le linuxarm_omap android"),)

# $(TARGETARCH) is set based on TARGETENV in src/Makerules.* files
DHD_OBJS := dhdu.o dhdu_linux.o bcmutils.o miniopt.o
DHD_EXE  := dhd

ifneq ($(findstring x86,$(TARGETARCH)),x86)
  DHD_EXE  := $(DHD_EXE)$(TARGETARCH)
  DHD_OBJS := $(DHD_OBJS:%.o=$(TARGETARCH)/%.o)
endif

# extra warnings
CFLAGS += -Wextra $(CUSTOM_FLAGS)

ifeq ($(TARGETENV), linuxarm_omap)
CFLAGS += -DBGBRD
endif

vpath %.c $(SRCBASE)/shared

all: $(DHD_EXE)

$(DHD_EXE): $(DHD_OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

$(TARGETARCH)/%.o: %.c
	@mkdir -p $(TARGETARCH)
	$(CC) -c $(CFLAGS) -o $@ $^

clean:
	@rm -rf $(TARGETARCH)
	rm -f $(DHD_EXE) *.o
	rm -rf build

endif # linux

#-----------------------------------------------------------
# MacOS
#
ifeq ($(TARGETENV), macos)
DHD_EXE := dhd_macos
BUILD   := xcodebuild
PROJECT := dhd.xcodeproj
PROJTGT := dhd

all: $(DHD_EXE)

# Executable is located in build/Debug/dhd
dhd_macos:
	$(BUILD) -project $(PROJECT) -target $(PROJTGT) -configuration Debug build

clean:
	rm -f $(DHD_EXE) *.o
	rm -rf build

endif # macos


.PHONY: all clean

endif # UNAME