source: mainline/boot/Makefile@ 0e8c158

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 0e8c158 was 0e8c158, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago

App listing in boot doesn't need whole binary path for each entry

This is not purely cosmetic. Making most of the information implicit
might allow us to automatically install app-associated data and tests,
reducing the amount of metadata maintained.

  • Property mode set to 100644
File size: 6.6 KB
Line 
1#
2# Copyright (c) 2006 Martin Decky
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29.PHONY: all build_dist clean_dist clean
30
31include Makefile.common
32
33all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(PREBUILD) build_dist
34 $(MAKE) -r -f $(BUILD) PRECHECK=$(PRECHECK)
35ifneq ($(POSTBUILD),)
36 $(MAKE) -r -f $(POSTBUILD) PRECHECK=$(PRECHECK)
37endif
38
39build_dist: clean_dist
40 mkdir -p "$(DIST_PATH)/app/"
41 mkdir -p "$(DIST_PATH)/cfg/"
42 mkdir -p "$(DIST_PATH)/data/"
43 mkdir -p "$(DIST_PATH)/lib/"
44 mkdir -p "$(DIST_PATH)/loc/"
45 mkdir -p "$(DIST_PATH)/log/"
46 mkdir -p "$(DIST_PATH)/test/"
47 mkdir -p "$(DIST_PATH)/tmp/"
48 mkdir -p "$(DIST_PATH)/vol/"
49 mkdir -p "$(DIST_PATH)/w/"
50
51 for srv in $(RD_SRVS) ; do \
52 srv_dir="`dirname "$$srv"`" ; \
53 srv_name="`basename "$$srv"`" ; \
54 mkdir -p "$(DIST_PATH)/srv/$$srv_dir" ; \
55 cp "$(USPACE_PATH)/srv/$$srv/$$srv_name" "$(DIST_PATH)/srv/$$srv" ; \
56 done
57
58 for file in $(RD_LIBS) ; do \
59 cp "$$file" "$(DIST_PATH)/lib/" ; \
60 done
61
62ifeq ($(CONFIG_DEVEL_FILES), y)
63 mkdir -p "$(DIST_PATH)/inc/c/"
64 cp -r -L "$(USPACE_PATH)/lib/c/include/." "$(DIST_PATH)/inc/c/"
65 cp -r -L "$(ROOT_PATH)/abi/include/." "$(DIST_PATH)/inc/c/"
66 cp -r -L "$(USPACE_PATH)/lib/c/arch/$(UARCH)/include/." "$(DIST_PATH)/inc/c/"
67 cat "$(USPACE_PATH)/lib/c/arch/$(UARCH)/_link.ld" | sed 's/^STARTUP(.*)$$//g' > "$(DIST_PATH)/inc/_link.ld"
68endif
69 for app in $(RD_APPS) ; do \
70 app_dir="`dirname "$$app"`" ; \
71 app_name="`basename "$$app"`" ; \
72 mkdir -p "$(DIST_PATH)/app/$$app_dir" ; \
73 cp "$(USPACE_PATH)/app/$$app/$$app_name" "$(DIST_PATH)/app/$$app" ; \
74 done
75 for file in $(RD_DATA) ; do \
76 cp "$$file" "$(DIST_PATH)/" ; \
77 done
78ifeq ($(CONFIG_PCUT_TESTS),y)
79 echo "echo Running all tests..." >"$(DIST_PATH)/test/run_all"
80 echo "<html><head><title>HelenOS test results</title></head><body>" >"$(DIST_PATH)/test/test.html"
81 echo "<h1>HelenOS test results</h1><ul>" >>"$(DIST_PATH)/test/test.html"
82 for file in $(RD_TESTS) ; do \
83 file2=`basename $$file`; \
84 cp "$$file" "$(DIST_PATH)/test/" ; \
85 echo "echo ' ->' $$file2" >>"$(DIST_PATH)/test/run_all"; \
86 echo "/test/$$file2 | to /test/$$file2.out" >>"$(DIST_PATH)/test/run_all"; \
87 echo "cat /test/$$file2.out" >>"$(DIST_PATH)/test/run_all"; \
88 echo "cp -f /test/$$file2.out /data/web/result-$$file2.txt" >>"$(DIST_PATH)/test/run_all"; \
89 echo "<li><a href=\"result-$$file2.txt\">$$file2</a></li>" >>"$(DIST_PATH)/test/test.html"; \
90 done
91 echo "cp -f /test/test.html /data/web/test.html" >>"$(DIST_PATH)/test/run_all"
92 echo "</ul></body></html>" >>"$(DIST_PATH)/test/test.html"
93endif
94
95ifeq ($(CONFIG_PCUT_SELF_TESTS),y)
96 echo "echo Running all PCUT self-tests..." >"$(DIST_PATH)/test/run_pcut"
97 echo "<html><head><title>Results of PCUT self-tests on HelenOS</title></head><body>" >"$(DIST_PATH)/test/pcut.html"
98 echo "<h1>Results of PCUT self-tests on HelenOS</h1><ul>" >>"$(DIST_PATH)/test/pcut.html"
99 for file in $(USPACE_PATH)/lib/pcut/test-libpcut-*; do \
100 file2=`basename $$file`; \
101 name=`echo "$$file2" | sed 's/test-libpcut-//'`; \
102 cp "$$file" "$(DIST_PATH)/test/" ; \
103 echo "echo ' ->' $$name" >>"$(DIST_PATH)/test/run_pcut"; \
104 echo "/test/$$file2 | to /test/$$file2.out" >>"$(DIST_PATH)/test/run_pcut"; \
105 echo "cat /test/$$file2.out" >>"$(DIST_PATH)/test/run_pcut"; \
106 echo "cp -f /test/$$file2.out /data/web/result-$$file2.txt" >>"$(DIST_PATH)/test/run_pcut"; \
107 echo "<li><a href=\"result-$$file2.txt\">$$name</a></li>" >>"$(DIST_PATH)/test/pcut.html"; \
108 done
109 echo "cp -f /test/pcut.html /data/web/pcut.html" >>"$(DIST_PATH)/test/run_pcut"
110 echo "</ul></body></html>" >>"$(DIST_PATH)/test/pcut.html"
111endif
112
113 for drv in $(RD_DRVS) ; do \
114 drv_dir="`dirname "$$drv"`" ; \
115 drv_name="`basename "$$drv"`" ; \
116 mkdir -p "$(DIST_PATH)/$(DRVS_PATH)/$$drv_name" ; \
117 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$drv_dir/$$drv_name/$$drv_name" "$(DIST_PATH)/$(DRVS_PATH)/$$drv_name/" ; \
118 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$drv_dir/$$drv_name/$$drv_name.ma" "$(DIST_PATH)/$(DRVS_PATH)/$$drv_name/" ; \
119 done
120 for file in $(RD_DRV_CFG) ; do \
121 file_dir="`dirname "$$file"`" ; \
122 file_name="`basename "$$file"`" ; \
123 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$file_dir/$$file_name/"*".dev" "$(DIST_PATH)/$(DRVS_PATH)/$$file_name/" ; \
124 done
125 for file in $(RD_DRVS_FW) ; do \
126 file_dir="`dirname "$$file"`" ; \
127 file_name="`basename "$$file"`" ; \
128 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$file_dir/$$file_name/$$file_name.fw" "$(DIST_PATH)/$(DRVS_PATH)/$$file_name/" ; \
129 done
130 if ls $(DIST_OVERLAY_PATH)/* >/dev/null 2>/dev/null; then \
131 cp -r -L $(DIST_OVERLAY_PATH)/* "$(DIST_PATH)"; \
132 fi
133
134clean: clean_dist
135 $(MAKE) -r -f $(BUILD) clean PRECHECK=$(PRECHECK)
136ifneq ($(POSTBUILD),)
137 $(MAKE) -r -f $(POSTBUILD) clean PRECHECK=$(PRECHECK)
138endif
139 rm -f $(POST_OUTPUT) $(BOOT_OUTPUT) arch/*/include/common.h
140 find generic/src/ arch/*/src/ genarch/src/ -name '*.o' -follow -exec rm \{\} \;
141 find . -name '*.d' -follow -exec rm \{\} \;
142
143clean_dist:
144 rm -f $(INITRD).img $(COMPS).o $(COMPS).tar $(LINK)
145 find $(USPACE_PATH)/dist -mindepth 1 -maxdepth 1 -type f -exec rm \{\} \;
146 rm -f $(USPACE_PATH)/dist/app/*
147 rm -f $(USPACE_PATH)/dist/cfg/*
148 rm -f $(USPACE_PATH)/dist/srv/*
149 rm -rf $(USPACE_PATH)/dist/drv/*
150 rm -rf $(USPACE_PATH)/dist/lib/*
151 rm -rf $(USPACE_PATH)/dist/inc/*
152 rm -f $(USPACE_PATH)/dist/app/*
153 rm -f $(USPACE_PATH)/dist/test/*
154 rm -f $(USPACE_PATH)/dist/cfg/net/*
155 rm -f $(USPACE_PATH)/dist/w/*
Note: See TracBrowser for help on using the repository browser.