# Output variables:
# SOURCES - all the source files that needs to be compiled (except for shared library sources)
# SOLIB_SOURCES - all the source files that needs to be compiled for a shared library
+# OBJ_EXT - extension of object files
+# LIB_EXT - extension of library files
+# LIB_PREF - prefix for library files
+# ASM_EXT - extension of assembler sources
# Templates:
# COMPILER_DEFS_template - definitions that should be defined before
# library. The rules can use rules produced by COMPILE_xxx_template.
define COMPILER_DEFS_template
+OBJ_EXT = .o
+LIB_EXT = .a
+LIB_PREF = lib
+ASM_EXT = .S
+
CC = $(CROSS_COMPILE)gcc
LINK = $(CROSS_COMPILE)ld
AR = $(CROSS_COMPILE)ar
CFLAGS += $(TARGET_ARCH) $(DEBUG) $(OPTIMIZE)
CFLAGS += -Wall
CFLAGS += -I$(SOURCES_DIR)
-CFLAGS += -I$(INCLUDE_DIR) -DOMK_FOR_TARGET
+CFLAGS += -I$(INCLUDE_DIR)
LOADLIBES += -L$(LIB_DIR)
LOADLIBES += $(lib_LOADLIBES:%=-l%)
CC_DEPFLAGS = -MT $$@ -MD -MP -MF "$$@.d.tmp"
endif
-# lib_obj_SOURCES handling
-$(LIB_DIR)/%.o: %.o
- @cp $$(CP_FLAGS) $$< $$@
endef # COMPILER_DEFS_template
# Syntax: $(call COMPILE_c_o_template,<source>,<target>,<additional c-flags>)
define COMPILE_c_o_template
-$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)
+$(2): $(1) $$(GEN_HEADERS)
@$(QUIET_CMD_ECHO) " CC $$@"
$(Q) if $$(c_o_COMPILE) $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \
then mv -f "$$@.d.tmp" "$$@.d" ; \
# Syntax: $(call COMPILE_cc_o_template,<source>,<target>,<additional c-flags>)
define COMPILE_cc_o_template
-$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)
+$(2): $(1) $$(GEN_HEADERS)
@$(QUIET_CMD_ECHO) " CXX $$@"
$(Q) if $$(cc_o_COMPILE) $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \
then mv -f "$$@.d.tmp" "$$@.d" ; \
# Syntax: $(call COMPILE_S_o_template,<source>,<target>,<additional c-flags>)
define COMPILE_S_o_template
-$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)
+$(2): $(1) $$(GEN_HEADERS)
@$(QUIET_CMD_ECHO) " AS $$@"
$(Q) if $$(S_o_COMPILE) -D__ASSEMBLY__ $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \
then if [ -e "$$@.d.tmp" ] ; then mv -f "$$@.d.tmp" "$$@.d" ; fi ; \
SOURCES += $$($(1)_SOURCES)
-# Shortcuts for use in this template
-_LNK_VAR := $(addprefix -,$(3))
-_TARGET := $(1)$$(_LNK_VAR)
-
ifneq ($(LD_SCRIPT),)
-$$(_TARGET)_LDFLAGS = -Wl,-T,$(LD_SCRIPT).ld$$(_LNK_VAR)
+$(1)$(3:%=-%)_LDFLAGS = -Wl,-T,$(LD_SCRIPT).ld$(3:%=-%)
endif
-$(2)/$$(_TARGET): $$($(1)_OBJS)
+$(2)/$(1)$(3:%=-%): $$($(1)_OBJS)
@$(QUIET_CMD_ECHO) " LINK $$@"
$(Q) $$(shell if [ -z "$$(filter %.cc,$$($(1)_SOURCES))" ] ; \
then echo $$(CC) $$(CPPFLAGS) $$(AM_CPPFLAGS) $$(AM_CFLAGS) $$(CFLAGS) ; \
else echo $$(CXX) $$(CPPFLAGS) $$(AM_CPPFLAGS) $$(AM_CXXFLAGS) $$(CXXFLAGS) ; fi) \
- $$(AM_LDFLAGS) $$(LDFLAGS) $$($$(_TARGET)_LDFLAGS) -Wl,-Map,$$(_TARGET).map \
+ $$(AM_LDFLAGS) $$(LDFLAGS) $$($(1)$(3:%=-%)_LDFLAGS) -Wl,-Map,$(1)$(3:%=-%).map \
$$($(1)_OBJS) $$(LOADLIBES) $$($(1)_MOREOBJS) $$($(1)_LIBS:%=-l%) \
-o $$@
- @echo "$(2)/$$(_TARGET): \\" >$(OBJS_DIR)/$$(_TARGET).exe.d
+ @echo "$(2)/$(1)$(3:%=-%): \\" >$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
@if [ -n "$(LD_SCRIPT)" ]; then \
- echo " $(LIB_DIR)/$(LD_SCRIPT).ld$$(_LNK_VAR) \\" >>$(OBJS_DIR)/$$(_TARGET).exe.d; fi
- @sed -n -e 's/^LOAD \(.*\)$$$$/ \1 \\/p' $(OBJS_DIR)/$$(_TARGET).map >>$(OBJS_DIR)/$$(_TARGET).exe.d
+ echo " $(LIB_DIR)/$(LD_SCRIPT).ld$(3:%=-%) \\" >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d; fi
+ @sed -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(OBJS_DIR)/$(1)$(3:%=-%).map|tr '&' '\134' >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
@echo >>$(OBJS_DIR)/$(1).exe.d
endef
$(Q) $(LD) --shared --soname=lib$(1).so -o $$@ $$^
endef
-
-# lib_obj_SOURCES handling
-lib_OBJS = $(addsuffix .o,$(basename $(lib_obj_SOURCES)))
-SOURCES += $(filter-out %.o,$(lib_obj_SOURCES))
-#$(warning lib_OBJS = $(lib_OBJS))
-
-# # Syntax: $(call LIBOBJ_template,<object-name>)
-# define LIBOBJ_template
-# $(LIB_DIR)/$(1): $(1)
-# @cp $(CP_FLAGS) $$< $$@
-# endef
-
# Local Variables:
# mode:makefile
# End: