]> rtime.felk.cvut.cz Git - omk.git/blob - snippets/vxworks
Changes to vxWorks support. Still not fully functional.
[omk.git] / snippets / vxworks
1
2 #TODO: Asi je potreba pouzit wrenv.sh utilitku!!!
3
4
5 # Some support to serialize some targets for parallel make
6 ifneq ($(OMK_SERIALIZE_INCLUDED),y)
7 include-pass: $(check-dir)
8 library-pass: include-pass
9 binary-pass: library-pass
10 kernel-lib-pass: include-pass
11 kernel-mod-pass: kernel-lib-pass
12 kernel-modpost-pass: kernel-mod-pass
13 kernel-pass: kernel-mod-pass kernel-modpost-pass
14
15 OMK_SERIALIZE_INCLUDED = y
16 endif
17
18
19 BUILD_ROOT=$(USER_OBJS_DIR)
20 WIND_HOST_TYPE := $(shell $(WIND_BASE)/host/resource/wind_host_type)
21 export BUILD_ROOT WIND_HOST_TYPE
22 #OBJ_DIR - mozna taky nejak nastavit
23
24 USER_SOURCES2OBJS = .o/.c .o/.cc .o/.cxx .o/.o
25
26 # Syntax: $(call PROGRAM_template,<executable-name>,<dir>,<link-variant>)
27 define PROGRAM_template
28
29 USER_IDLS  += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL)
30 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-skels.c))
31 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-common.c))
32 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-stubs.c))
33 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-common.c))
34 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_IDL:%.idl=%.c))
35 USER_GEN_SOURCES += $$($(1)_GEN_SOURCES)
36
37 $(foreach x, $(USER_SOURCES2OBJS),
38 $(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
39                 $$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
40 )
41 $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
42
43 USER_OBJS  += $$($(1)_OBJS)
44 USER_SOURCES += $$($(1)_SOURCES)
45
46 $(2)/$(1): $$($(1)_OBJS)
47         @$(QUIET_CMD_ECHO) "  LINK    $$@"
48         @echo "EXE = $(1).vxe" > Makefile.vxe.$(1); \
49         echo "OBJS = $(1)_OBJS" >> Makefile.vxe.$(1); \
50         echo "VXE_DIR = $(2)" >> Makefile.vxe.$(1); \
51         echo "include $(WIND_BASE)/target/usr/make/rules.rtp" >> Makefile.vxe.$(1); \
52         $(MAKE)  CPU=$(CPU) TOOL=$(TOOL) -f Makefile.vxe.$(1)
53 #       $(Q) $$(shell if [ -z "$$(filter %.cc,$$($(1)_SOURCES:%.cxx=%.cc))" ] ; then echo $$(CC) ; else echo $$(CXX) ; fi) \
54 #         $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $(2)/$(1)
55 #       @echo "$(2)/$(1): \\" >$(USER_OBJS_DIR)/$(1).exe.d
56 #       @sed -n -e 's/^LOAD \(.*\)$$$$/  \1  \\/p' $(USER_OBJS_DIR)/$(1).exe.map  >>$(USER_OBJS_DIR)/$(1).exe.d
57 #       @echo >>$(USER_OBJS_DIR)/$(1).exe.d
58 endef
59
60
61 # Syntax: $(call LIBRARY_template,<library-name>)
62 define LIBRARY_template
63
64 USER_IDLS  += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL)
65 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-skels.c))
66 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-common.c))
67 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-stubs.c))
68 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-common.c))
69 $(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_IDL:%.idl=%.c))
70 USER_GEN_SOURCES += $$($(1)_GEN_SOURCES)
71
72 $(foreach x, $(USER_SOURCES2OBJS),
73 $(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\
74                 $$($(1)_SOURCES) $$($(1)_GEN_SOURCES)))
75 )
76 $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))
77 USER_OBJS  += $$($(1)_OBJS)
78 USER_SOURCES += $$($(1)_SOURCES)
79
80 $(USER_LIB_DIR)/lib$(1).a: #$$($(1)_OBJS)
81         @$(QUIET_CMD_ECHO) "  LIB     $$@"
82         @echo "LIB_BASE_NAME = $(1)" > Makefile.lib.$(1); \
83         echo "OBJS = $$($(1)_OBJS)" >> Makefile.lib.$(1); \
84         echo "LIB_ROOT = $(USER_LIB_DIR)" >> Makefile.lib.$(1); \
85         echo "VPATH = $(SOURCES_DIR)" >> Makefile.lib.$(1); \
86         echo "include $(WIND_BASE)/target/usr/make/rules.library" >> Makefile.lib.$(1); \
87         $(MAKE) CPU=$(CPU) TOOL=$(TOOL) -f Makefile.lib.$(1)
88 endef
89
90
91
92
93 # Generate rules for compilation of programs and libraries
94
95 $(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR))))
96
97 $(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR))))
98
99 $(foreach lib,$(lib_LIBRARIES),$(eval $(call LIBRARY_template,$(lib))))
100
101 $(foreach lib,$(shared_LIBRARIES),$(eval $(call SOLIB_template,$(lib))))
102
103 -include $(USER_OBJS_DIR)/*.d
104
105 library-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \
106                     $(lib_LIBRARIES:%=$(USER_LIB_DIR)/lib%.a) $(shared_LIBRARIES:%=$(USER_LIB_DIR)/lib%.$(SOLIB_EXT))
107
108 binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%) $(utils_PROGRAMS:%=$(USER_UTILS_DIR)/%)
109
110 $(eval $(call omk_pass_template, library-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(lib_LIBRARIES)$(shared_LIBRARIES)))
111 $(eval $(call omk_pass_template, binary-pass, $(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(bin_PROGRAMS)$(utils_PROGRAMS)))
112
113
114 # Create directories only for the first time
115 ifndef CHECK_DIR_DONE
116 check-dir = check-dir
117 CHECK_DIR_DONE = y
118 endif
119 export CHECK_DIR_DONE
120
121 check-dir:
122         @$(call mkdir_def,$(USER_BUILD_DIR))
123         @$(call mkdir_def,$(USER_INCLUDE_DIR))
124         @$(call mkdir_def,$(USER_LIB_DIR))
125         @$(call mkdir_def,$(USER_BIN_DIR))
126         @$(call mkdir_def,$(USER_UTILS_DIR))
127
128
129 default: $(check-dir) include-pass library-pass binary-pass
130
131 # Local Variables:
132 # mode:makefile
133 # End: