initial revision
[ucgine.git] / mk / ucgine-exe-rules.mk
1 #
2 # Copyright 2015, Olivier MATZ <zer0@droids-corp.org>
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are met:
6 #
7 #     * Redistributions of source code must retain the above copyright
8 #       notice, this list of conditions and the following disclaimer.
9 #     * Redistributions in binary form must reproduce the above copyright
10 #       notice, this list of conditions and the following disclaimer in the
11 #       documentation and/or other materials provided with the distribution.
12 #     * Neither the name of the University of California, Berkeley nor the
13 #       names of its contributors may be used to endorse or promote products
14 #       derived from this software without specific prior written permission.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #
27
28 # dump some infos if debug is enabled
29 ifeq ($(D),1)
30 $(call disp_list,------ all-exe,$(all-exe))
31 $(foreach exe,$(all-exe),\
32         $(info,out-$(exe): $(out-$(exe))) \
33         $(call disp_list,pre-$(exe),$(pre-$(exe))) \
34 )
35 endif
36
37 # include dependencies and commands files if they exist
38 $(foreach exe,$(all-exe),\
39         $(eval -include $(call depfile,$(exe))) \
40         $(eval -include $(call cmdfile,$(exe))) \
41 )
42
43 # remove duplicates
44 filtered-all-exe := $(sort $(all-exe))
45
46 # link several objects files into one executable
47 $(filtered-all-exe): $$(pre-$$@) $$(wildcard $$(dep-$$@)) FORCE
48         @[ -d $(dir $@) ] || mkdir -p $(dir $@)
49         @$(call display_deps,$(pre-$(@)),$@,\
50                 $(call link_cmd,$(pre-$(@)),$@),$?)
51         @$(if $(call check_deps,$@,$(call link_cmd,$(pre-$(@)),$@),$?),\
52                 $(call link_print_cmd,$(pre-$(@)),$@) && \
53                 $(call link_cmd,$(pre-$(@)),$@) && \
54                 $(call save_cmd,$(call link_cmd,$(pre-$(@)),$@),$@) && \
55                 $(call create_empty_depfile,$@))