# xxx_SOURCES .. list of specific target sources
# INCLUDES .. additional include directories and defines for user-space
+.PHONY: check-dir
+
# Some support to serialize some targets for parallel make
ifneq ($(OMK_SERIALIZE_INCLUDED),y)
-include-pass: $(check-dir)
+include-pass: check-dir
library-pass: include-pass
binary-pass: library-pass
kernel-lib-pass: include-pass
kernel-modpost-pass: kernel-mod-pass
kernel-pass: kernel-mod-pass kernel-modpost-pass
-OMK_SERIALIZE_INCLUDED = y
+override OMK_SERIALIZE_INCLUDED = y
endif
-BUILD_ROOT=$(USER_OBJS_DIR)
-export BUILD_ROOT
-
+# Export some variables to VxWorks makefiles
CPPFLAGS += -I $(USER_INCLUDE_DIR)
ADDED_CFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
.PHONY: $(2)/$(1).vxe
$(2)/$(1).vxe:
@$(QUIET_CMD_ECHO) " LINK $$@"
+# In rules.rtp (on line 265), dep generation depends on Makefile so we must create one
+# @[ ! -f Makefile ] && touch Makefile
+ @touch Makefile
@echo 'EXE = $(1).vxe' > Makefile.vxe.$(1); \
echo 'OBJS = $$($(1)_OBJS)' >> Makefile.vxe.$(1); \
echo 'VXE_DIR = $(2)' >> Makefile.vxe.$(1); \
- echo 'ADDED_CFLAGS += -L$(USER_LIB_DIR)' >> Makefile.vxe.$(1); \
- echo 'ADDED_C++FLAGS += -L$(USER_LIB_DIR)' >> Makefile.vxe.$(1); \
- echo 'ADDED_LIBS = $(lib_LOADLIBES) $$($(1)_LIBS)' >> Makefile.vxe.$(1); \
+ echo 'OBJ_DIR = $(USER_OBJS_DIR)' >> Makefile.vxe.$(1); \
+ echo 'LIB_ROOT = $(USER_LIB_DIR)' >> Makefile.vxe.$(1); \
+ echo 'OMK_LIB_PATH = $$$$(LIB_ROOT)/$$$$(VX_CPU_FAMILY)/$$$$(CPU)/$$$$(TOOL_COMMON_DIR)$$$$(LIB_DIR_TAG)/' >> Makefile.vxe.$(1); \
+ echo 'ADDED_LIBS = -L$$$$(OMK_LIB_PATH) $(lib_LOADLIBES:%=-l%) $$($(1)_LIBS:%=-l%)' >> Makefile.vxe.$(1); \
+ echo 'VPATH = $(SOURCES_DIR)' >> Makefile.vxe.$(1); \
echo 'include $$$$(WIND_USR)/make/rules.rtp' >> Makefile.vxe.$(1); \
$(WRENV) -p $(WRPACKAGE) $(MAKE) CPU=$(CPU) TOOL=$(TOOL) -f Makefile.vxe.$(1)
+# echo 'ADDED_C++FLAGS += -L$(USER_LIB_DIR)' >> Makefile.vxe.$(1); \
+# echo 'ADDED_CFLAGS += -L$(USER_LIB_DIR)' >> Makefile.vxe.$(1); \
# $(Q) $$(shell if [ -z "$$(filter %.cc,$$($(1)_SOURCES:%.cxx=%.cc))" ] ; then echo $$(CC) ; else echo $$(CXX) ; fi) \
# $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $(2)/$(1)
# @echo "$(2)/$(1): \\" >$(USER_OBJS_DIR)/$(1).exe.d
@$(QUIET_CMD_ECHO) " LIB $$@"
@echo 'LIB_BASE_NAME = $(1)' > Makefile.lib.$(1); \
echo 'OBJS = $$($(1)_OBJS)' >> Makefile.lib.$(1); \
+ echo 'OBJ_DIR = $(USER_OBJS_DIR)' >> Makefile.lib.$(1); \
echo 'LIB_ROOT = $(USER_LIB_DIR)' >> Makefile.lib.$(1); \
echo 'VPATH = $(SOURCES_DIR)' >> Makefile.lib.$(1); \
+# echo 'LIBDIRBASE = ' >> Makefile.lib.$(1); \
echo 'include $$$$(WIND_USR)/make/rules.library' >> Makefile.lib.$(1);
$(WRENV) -p $(WRPACKAGE) $(MAKE) CPU=$(CPU) TOOL=$(TOOL) -f Makefile.lib.$(1)
endef
$(eval $(call omk_pass_template, library-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(lib_LIBRARIES)$(shared_LIBRARIES)))
$(eval $(call omk_pass_template, binary-pass, $(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(bin_PROGRAMS)$(utils_PROGRAMS)))
-
-# Create directories only for the first time
-ifndef CHECK_DIR_DONE
-check-dir = check-dir
-CHECK_DIR_DONE = y
-endif
-export CHECK_DIR_DONE
-
check-dir:
@$(call mkdir_def,$(USER_BUILD_DIR))
@$(call mkdir_def,$(USER_INCLUDE_DIR))
@$(call mkdir_def,$(USER_UTILS_DIR))
-default: $(check-dir) include-pass library-pass binary-pass
+default: include-pass library-pass binary-pass
# Local Variables:
# mode:makefile