2012-05-31 21:01:27 +02:00
|
|
|
# Just check if we have everything defined
|
|
|
|
ifeq ($(CC_SOURCE_FILES_EXTS),)
|
|
|
|
CC_SOURCE_FILES_EXTS := c cc
|
|
|
|
endif
|
|
|
|
ifeq ($(CXX_SOURCE_FILES_EXTS),)
|
|
|
|
CXX_SOURCE_FILES_EXTS := cpp cxx
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Target configuration
|
|
|
|
CXXFLAGS_debug := -g -O0
|
|
|
|
CFLAGS_debug := -g -O0
|
|
|
|
CXXFLAGS_release := -O2
|
|
|
|
CFLAGS_release := -O2
|
|
|
|
|
|
|
|
# Get the build type
|
|
|
|
PREBUILT_DIR_PREFIX = ../lib/$(TARGET)-$(ARCH)
|
|
|
|
|
2012-06-04 09:13:33 +02:00
|
|
|
|
|
|
|
OBJECTS_NAMES = $(foreach sourceFilesExt,$(CC_SOURCE_FILES_EXTS), \
|
|
|
|
$(patsubst %.$(sourceFilesExt),%.$(sourceFilesExt).cc.o,$(filter %.$(sourceFilesExt),$(LOCAL_SRC_FILES))) \
|
2012-05-31 21:01:27 +02:00
|
|
|
) $(foreach sourceFilesExt,$(CXX_SOURCE_FILES_EXTS), \
|
2012-06-04 09:13:33 +02:00
|
|
|
$(patsubst %.$(sourceFilesExt),%.$(sourceFilesExt).cxx.o,$(filter %.$(sourceFilesExt),$(LOCAL_SRC_FILES))) \
|
2012-05-31 21:01:27 +02:00
|
|
|
)
|
2012-06-04 09:13:33 +02:00
|
|
|
OBJECTS = $(addprefix obj-$(TARGET)-$(ARCH)/,$(OBJECTS_NAMES))
|
2012-05-31 21:01:27 +02:00
|
|
|
|
|
|
|
# Default target
|
|
|
|
.DEFAULT: installr
|
|
|
|
|
|
|
|
# Declare phony targets
|
|
|
|
.PHONY: release debug clean installr installd
|
|
|
|
|
|
|
|
# Precious targets
|
|
|
|
.PRECIOUS: build-release/$(LIBNAME).$(LIBTYPE) build-debug/$(LIBNAME).$(LIBTYPE) $(addprefix build-release/,$(OBJECTS)) $(addprefix build-debug/,$(OBJECTS))
|
|
|
|
|
|
|
|
# Route build targets properly
|
|
|
|
installr: install-release
|
|
|
|
installd: install-debug
|
2012-06-04 09:13:33 +02:00
|
|
|
release: build-release/$(TARGET)-$(ARCH)/$(LIBNAME).$(LIBTYPE)
|
|
|
|
debug: build-debug/$(TARGET)-$(ARCH)/$(LIBNAME).$(LIBTYPE)
|
2012-05-31 21:01:27 +02:00
|
|
|
|
|
|
|
# Clean removes all objects
|
|
|
|
clean:
|
2012-06-04 23:49:39 +02:00
|
|
|
$(RM) -r build-release/obj-$(TARGET)-$(ARCH)/
|
|
|
|
$(RM) -r build-debug/obj-$(TARGET)-$(ARCH)/
|
|
|
|
$(RM) -r build-release/$(TARGET)-$(ARCH)
|
|
|
|
$(RM) -r build-debug/$(TARGET)-$(ARCH)
|
2012-05-31 21:01:27 +02:00
|
|
|
|
|
|
|
# This target copies final output file to prebuilt folder
|
|
|
|
install-%: %
|
|
|
|
@mkdir -p $(PREBUILT_DIR_PREFIX)-$*
|
2012-06-04 09:13:33 +02:00
|
|
|
cp build-$*/$(TARGET)-$(ARCH)/$(LIBNAME).$(LIBTYPE) $(PREBUILT_DIR_PREFIX)-$*/$(LIBNAME).$(LIBTYPE)
|
2012-05-31 21:01:27 +02:00
|
|
|
|
|
|
|
# Builds source files using CC compiler
|
|
|
|
build-release/obj-$(TARGET)-$(ARCH)/%.cc.o : % $(LOCAL_C_INCLUDES)
|
|
|
|
@mkdir -p `dirname $@`
|
2012-06-04 09:13:33 +02:00
|
|
|
$(CC) -o $@ -c $< $(CFLAGS_release) $(CFLAGS) $(addprefix -I, $(LOCAL_C_INCLUDES)) $(LOCAL_CFLAGS) $(GLOBAL_INCLUDES)
|
2012-05-31 21:01:27 +02:00
|
|
|
build-debug/obj-$(TARGET)-$(ARCH)/%.cc.o : % $(LOCAL_C_INCLUDES)
|
|
|
|
@mkdir -p `dirname $@`
|
2012-06-04 09:13:33 +02:00
|
|
|
$(CC) -o $@ -c $< $(CFLAGS_debug) $(CFLAGS) $(addprefix -I, $(LOCAL_C_INCLUDES)) $(LOCAL_CFLAGS) $(GLOBAL_INCLUDES)
|
2012-05-31 21:01:27 +02:00
|
|
|
|
|
|
|
# Builds source files using CXX compiler
|
|
|
|
build-release/obj-$(TARGET)-$(ARCH)/%.cxx.o : % $(LOCAL_C_INCLUDES)
|
|
|
|
@mkdir -p `dirname $@`
|
2012-06-04 09:13:33 +02:00
|
|
|
$(CXX) -o $@ -c $< $(CXXFLAGS_release) $(CFLAGS) $(addprefix -I, $(LOCAL_C_INCLUDES)) $(LOCAL_CFLAGS) $(GLOBAL_INCLUDES)
|
2012-05-31 21:01:27 +02:00
|
|
|
build-debug/obj-$(TARGET)-$(ARCH)/%.cxx.o : % $(LOCAL_C_INCLUDES)
|
|
|
|
@mkdir -p `dirname $@`
|
2012-06-04 09:13:33 +02:00
|
|
|
$(CXX) -o $@ -c $< $(CXXFLAGS_debug) $(CFLAGS) $(addprefix -I, $(LOCAL_C_INCLUDES)) $(LOCAL_CFLAGS) $(GLOBAL_INCLUDES)
|
2012-05-31 21:01:27 +02:00
|
|
|
|
|
|
|
# This target assembles static library
|
|
|
|
.SECONDEXPANSION:
|
2012-06-04 09:13:33 +02:00
|
|
|
build-%/$(TARGET)-$(ARCH)/$(LIBNAME).$(STATICLIB_EXT): $$(addprefix build-%/,$(OBJECTS))
|
2012-05-31 21:01:27 +02:00
|
|
|
@mkdir -p `dirname $@`
|
2012-06-04 23:49:39 +02:00
|
|
|
$(AR) rs $@ $(addprefix build-$*/,$(OBJECTS))
|
2012-05-31 21:01:27 +02:00
|
|
|
|
2012-06-04 21:18:50 +02:00
|
|
|
# This target assembles dynamic library
|
|
|
|
.SECONDEXPANSION:
|
2012-05-31 21:01:27 +02:00
|
|
|
# This target assembles dynamic library
|
|
|
|
.SECONDEXPANSION:
|
2012-06-04 09:13:33 +02:00
|
|
|
build-%/$(TARGET)-$(ARCH)/$(LIBNAME).$(DYNAMICLIB_EXT): $$(addprefix build-%/,$(OBJECTS))
|
2012-05-31 21:01:27 +02:00
|
|
|
@mkdir -p `dirname $@`
|
2012-06-04 21:18:50 +02:00
|
|
|
$(CXX) -o $@ $(addprefix build-$*/,$(OBJECTS)) $(LDFLAGS) -L$(PREBUILT_DIR_PREFIX)-$* $(LDLIBS)
|