#######################################
|
# This makefile is written for a GNU make or equivalent.
|
# For example:
|
# make clean
|
# make
|
# Copyright (c) 2010, Broadcom Corp., All Rights Reserved.
|
# Broadcom Bluetooth Core. Proprietary and confidential.
|
#######################################
|
# Basic path definitions
|
GLOBALPATH := ../../../../../..
|
customer := bsa_examples
|
project := linux
|
application := libbsa
|
os_name := linux
|
BLUETOOTH_3RD_DIR := $(GLOBALPATH)/3rdparty
|
|
# test if the Components directory exists
|
ifneq (,$(wildcard $(GLOBALPATH)/Components))
|
|
# include common makefile rules
|
include $(BLUETOOTH_3RD_DIR)/embedded/$(customer)/$(project)/app_common/build/make.common
|
|
# Target definition
|
target := $(application)
|
targetfile := $(addsuffix .txt,$(basename $(target)))
|
targetbase := $(notdir $(basename $(target)))
|
|
# Include the configuration file for the target here
|
include $(targetfile)
|
|
# Global compilation define
|
GLOBAL_DEFINE = -DBSA_CLIENT
|
|
# Targets
|
cfgfile := $(cfgincdir)/buildcfg.h
|
|
# base directory source, library and target lists
|
srcdirs :=
|
incdirs := . $(STD_INCPATH) \
|
$(projectincdir)\
|
$(clientincdir) \
|
$(comincdir) \
|
$(appincdir) \
|
$(btaincdir) \
|
$(stackincdir) \
|
$(cfgincdir) \
|
$(embdrvdir)
|
|
# Initialize the source names
|
appsources :=
|
gkisources :=
|
cl_drv_sources :=
|
bsasources :=
|
|
# include variable definitions for each component
|
include $(BLUETOOTH_BSA_CLIENT_DIR)/build/def/*.def
|
include $(BLUETOOTH_APPLICATION_DIR)/build/def/*.def
|
|
# incdirs uses srcdirs
|
incdirs := $(incdirs) $(srcdirs)
|
|
# All source files
|
srclist := $(gkisources) $(cl_drv_sources) $(bsasources)
|
|
bsastaticblddir := $(BSA_LIB_DIR)/build/$(CPU)
|
bsasharedblddir := $(BSA_LIB_DIR)/build/$(CPU)/sharedlib
|
bsastaticobjdir := $(bsastaticblddir)/obj
|
bsasharedobjdir := $(bsasharedblddir)/obj
|
|
vpath %.c $(srcdirs)
|
|
# Targets
|
.PHONY: all
|
all: $(bsastaticlib) $(bsasharedlib)
|
|
staticobjlist := $(patsubst %.c,$(bsastaticobjdir)/%.o,$(srclist))
|
|
sharedobjlist := $(patsubst %.c,$(bsasharedobjdir)/%.o,$(srclist))
|
|
# include all object dependency files if present
|
-include $(staticobjlist:.o=.d)
|
-include $(sharedobjlist:.o=.d)
|
|
# headers
|
libbsahdrdirs := $(bsadir)/include $(bsadir)/udrv $(btaincdir) $(gkidir)/common \
|
$(BLUETOOTH_BSA_DIR)/gki/$(project) $(componentdir)/udrv/include \
|
$(maindir) $(stackincdir) $(stackdir)/brcm $(embdrvdir)/sbc/encoder/include \
|
$(embdrvdir)/sbc/decoder/include \
|
$(serverdir)/mesh/common/include \
|
$(serverdir)/mesh/20719-B1_Bluetooth/include/20719 \
|
$(serverdir)/mesh/20719-B1_Bluetooth/include/20719/hal
|
|
libbsahdrfiles := $(wildcard $(addsuffix /*.h, $(libbsahdrdirs)))
|
libbsahdrfiles += $(bsadir)/common/bsa_trace.h
|
libbsahdrfiles += $(cfgfile)
|
libbsahdrfiles := $(addprefix $(cfgincdir)/, $(notdir $(libbsahdrfiles)))
|
|
vpath %.h $(libbsahdrdirs) $(bsadir)/common
|
$(cfgincdir)/%: %
|
@$(ECHO) Updating $@
|
@cp -f $^ $@
|
|
$(libbsahdrfiles): | $(cfgincdir)
|
headers: $(libbsahdrfiles)
|
|
$(bsastaticobjdir):
|
@$(ECHO) Creating static object directory '$(bsastaticobjdir)'.
|
-@$(MKDIR) -p $(bsastaticobjdir)
|
|
$(bsasharedobjdir):
|
@$(ECHO) Creating shared object directory '$(bsasharedobjdir)'.
|
-@$(MKDIR) -p $(bsasharedobjdir)
|
|
$(cfgincdir):
|
@$(ECHO) Creating Project Include folder '$(cfgincdir)'.
|
-@$(MKDIR) -p $(cfgincdir)
|
|
$(bsastaticobjdir)/%.o: %.c | headers
|
@$(ECHO) Compiling [$(CC)] $<
|
@$(CC) -c -MD $(CCFLAGS) $(GLOBAL_DEFINE) $(TARGET_DEF) $(CCINC) -o $@ $<
|
|
$(bsasharedobjdir)/%.o: %.c | headers
|
@$(ECHO) Compiling [$(CC)] $<
|
@$(CC) -fPIC -c -MD $(CCFLAGS) $(GLOBAL_DEFINE) $(TARGET_DEF) $(CCINC) -o $@ $<
|
|
$(cfgfile): $(targetfile) | $(cfgincdir)
|
@$(ECHO) Creating $@ from $<
|
@rm -f $<.tmp; cp $< $<.tmp; chmod +w $<.tmp; dos2unix $<.tmp; \
|
$(ECHO) "#ifndef BUILDCFG_H" > $@; \
|
$(ECHO) "#define BUILDCFG_H" >> $@; \
|
$(ECHO) >> $@; \
|
$(SED) -e '/^#/d' -e '/^$$/d' -e '/# Makefile only$$/d' -e 's/^/#define /' -e 's/=/ /' $<.tmp >> $@; \
|
$(ECHO) >> $@; \
|
$(ECHO) "#endif" >> $@; \
|
rm -f $<.tmp
|
|
$(bsastaticlib): $(bsastaticobjdir) $(staticobjlist)
|
@$(ECHO) Creating [$(AR)] BSA static lib $(bsastaticlib)
|
@$(AR) rcs $(bsastaticlib) $(staticobjlist)
|
|
$(bsasharedlib): $(bsasharedobjdir) $(sharedobjlist) | headers
|
@$(ECHO) Linking [$(LINK)] BSA shared lib $(bsasharedlib)
|
@$(LINK) $(LINKFLAGS) -shared $(sharedobjlist) -o $(bsasharedlib)
|
|
test_static: $(bsastaticlib)
|
@$(ECHO) Building static libbsa usage example
|
@$(MAKE) BSASHAREDLIB=FALSE -C ../example clean
|
@$(MAKE) BSASHAREDLIB=FALSE -C ../example all
|
|
# make sure that test_shared and test_static do not run simultaneously
|
test_shared: $(bsasharedlib) test_static
|
@$(ECHO) Building shared libbsa usage example
|
@$(MAKE) BSASHAREDLIB=TRUE -C ../example clean
|
@$(MAKE) BSASHAREDLIB=TRUE -C ../example all
|
|
.PHONY: test test_static test_shared
|
test: test_static test_shared
|
|
.PHONY: clean
|
clean:
|
@$(ECHO) Cleaning up.
|
@$(RM) -rf $(bsastaticblddir)
|
@$(RM) -rf $(bsasharedblddir)
|
@$(RM) -rf $(cfgincdir)/*.h
|
@$(MAKE) -C ../example clean
|
|
.PHONY: delivery
|
delivery:
|
@$(ECHO) Creating Delivery in $(DELIVERY_CURRENT_FOLDER)
|
@$(MKDIR) -p $(DELIVERY_CURRENT_FOLDER)/3rdparty/embedded/$(customer)/$(project)
|
@$(CP) -r --remove-destination $(BLUETOOTH_3RD_DIR)/embedded/$(customer)/$(project)/$(application) $(DELIVERY_CURRENT_FOLDER)/3rdparty/embedded/$(customer)/$(project)/$(application)
|
|
@find $(DELIVERY_CURRENT_FOLDER) -name "*.o" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name "*.d" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name ".copyarea.db" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name "*~" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name "core" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name ".*.cmd" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name "*.ko" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name "*.mod.c" | xargs rm -f
|
@find $(DELIVERY_CURRENT_FOLDER) -name ".tmp_versions" | xargs rm -f -r
|
@find $(DELIVERY_CURRENT_FOLDER) -name "Module.markers" | xargs rm -f -r
|
@find $(DELIVERY_CURRENT_FOLDER) -name "Module.symvers" | xargs rm -f -r
|
@find $(DELIVERY_CURRENT_FOLDER) -name "modules.order" | xargs rm -f -r
|
@$(MKDIR) -p $(DELIVERY_CURRENT_FOLDER)/release_notes
|
@$(MKDIR) -p $(DELIVERY_CURRENT_FOLDER)/release_notes/$(customer)
|
@if [ -f $(GLOBALPATH)/release_notes/$(customer)/Release_$(application).txt ]; then \
|
echo " Binary delivery from source delivery"; \
|
$(CP) $(GLOBALPATH)/release_notes/$(customer)/Release_$(application).txt $(DELIVERY_CURRENT_FOLDER)/release_notes/$(customer); \
|
elif [ -f $(DELIVERY_CURRENT_FOLDER)/3rdparty/embedded/$(customer)/$(project)/$(application)/build/Release_$(application).txt ]; then \
|
echo " Binary delivery from vobs"; \
|
$(MV) $(DELIVERY_CURRENT_FOLDER)/3rdparty/embedded/$(customer)/$(project)/$(application)/build/Release_$(application).txt $(DELIVERY_CURRENT_FOLDER)/release_notes/$(customer); \
|
else \
|
echo " Nothing to do for release notes"; \
|
fi
|
@$(ECHO) Delivery done.
|
|
else
|
|
# if there is no Components directory, it probably means that it is a binary delivery
|
all:
|
%:
|
@echo This is probably a binary delivery, do nothing
|
endif
|