#
# GNUmakefile for wl/exe
#
# Copyright (c) 2000, Broadcom Corp.
# $Id: uamp.mk 403251 2013-05-20 05:15:55Z $

ifndef	SRCBASE
	SRCBASE = ../..
endif

UNAME = $(shell uname)


#-----------------------------------------------------------------
# Linux build
#

# This should be one of values recognized in src/Makerules
# 2) not windows, need to include first to pick up TARGETENV dependent vars
include $(SRCBASE)/Makerules

# Discard any "MMX" or other qualifications on x86 so that
# any TARGETARCH containing x86 is just "x86"
ifeq ($(findstring x86,$(TARGETARCH)),x86)
        TARGETARCH = x86
endif

# $(TARGETARCH) is set based on TARGETENV in src/Makerules.* files
UAMP_OBJS      := uamp_linux.o

# Prefix obj/<type>/TARGETARCH to produced .obj files
UAMP_OBJS      := $(UAMP_OBJS:%.o=obj/uamp/$(TARGETARCH)/%.o)

# TODO: Move final built objects to respective TARGETARCH dirs as well
# Final exe names
ARCH_SFX     := $(if $(findstring x86,$(TARGETARCH)),,$(TARGETARCH))
UAMP_EXE       := uamp$(ARCH_SFX)

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

CFLAGS += -DLINUX -DWLBTAMP

LDFLAGS += -pthread -lrt

vpath %.c $(SRCBASE)/wl/sys $(WLAN_StdSrcDirsA) $(WLAN_ComponentSrcDirs)

.PHONY: all
all: $(UAMP_EXE)

# Compilation targets
obj/uamp/$(TARGETARCH)/%.o: %.c
	@mkdir -pv $(@D)
	$(CC) -c $(CFLAGS) -o $@ $^

# Final link targets
$(UAMP_EXE): $(UAMP_OBJS)
	$(CC) $(LDFLAGS) -o $@ $^ 

.PHONY: clean
clean:
	 rm -fv $(UAMP_EXE) $(UAMP_OBJS)
