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