merge libext4 fixes
[helenos.git] / boot / Makefile
blob083a795cc902d0a43d43058e3be42062583aade8
2 # Copyright (c) 2006 Martin Decky
3 # All rights reserved.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
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.
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.
29 .PHONY: all build_dist build_comps clean_dist clean
31 include Makefile.common
33 all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(PREBUILD)
34 $(MAKE) -f $(BUILD) PRECHECK=$(PRECHECK)
35 ifneq ($(POSTBUILD),)
36 $(MAKE) -f $(POSTBUILD) PRECHECK=$(PRECHECK)
37 endif
39 build_comps: $(COMPONENTS) $(LINK).in
40 $(PACK) $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) arch/$(KARCH) $(COMPONENTS)
42 $(INITRD).img: build_dist
43 ifeq ($(RDFMT),tmpfs)
44 $(MKTMPFS) $(DIST_PATH) $@
45 endif
46 ifeq ($(RDFMT),fat)
47 $(MKFAT) 1048576 $(DIST_PATH) $@
48 endif
49 ifeq ($(RDFMT),ext4fs)
50 $(MKEXT4) 1048576 $(DIST_PATH) $@
51 endif
53 build_dist: clean_dist
54 for file in $(RD_SRVS) ; do \
55 cp "$$file" "$(DIST_PATH)/srv/" ; \
56 done
57 for file in $(RD_LIBS) ; do \
58 cp "$$file" "$(DIST_PATH)/lib/" ; \
59 done
60 ifeq ($(CONFIG_DEVEL_FILES), y)
61 mkdir "$(DIST_PATH)/inc/c/"
62 cp -r -L "$(USPACE_PATH)/lib/c/include/." "$(DIST_PATH)/inc/c/"
63 cp -r -L "$(ROOT_PATH)/abi/include/." "$(DIST_PATH)/inc/c/"
64 cp -r -L "$(USPACE_PATH)/lib/c/arch/$(UARCH)/include/." "$(DIST_PATH)/inc/c/"
65 cat "$(USPACE_PATH)/lib/c/arch/$(UARCH)/_link.ld" | sed 's/^STARTUP(.*)$$//g' > "$(DIST_PATH)/inc/_link.ld"
66 endif
67 for file in $(RD_APPS) ; do \
68 cp "$$file" "$(DIST_PATH)/app/" ; \
69 done
70 for drv in $(RD_DRVS) ; do \
71 drv_dir="`dirname "$$drv"`" ; \
72 drv_name="`basename "$$drv"`" ; \
73 mkdir -p "$(DIST_PATH)/$(DRVS_PATH)/$$drv_name" ; \
74 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$drv_dir/$$drv_name/$$drv_name" "$(DIST_PATH)/$(DRVS_PATH)/$$drv_name/" ; \
75 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$drv_dir/$$drv_name/$$drv_name.ma" "$(DIST_PATH)/$(DRVS_PATH)/$$drv_name/" ; \
76 done
77 for file in $(RD_DRV_CFG) ; do \
78 file_dir="`dirname "$$file"`" ; \
79 file_name="`basename "$$file"`" ; \
80 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$file_dir/$$file_name/$$file_name.dev" "$(DIST_PATH)/$(DRVS_PATH)/$$file_name/" ; \
81 done
82 if ls $(DIST_OVERLAY_PATH)/* >/dev/null; then \
83 cp -r -L $(DIST_OVERLAY_PATH)/* "$(DIST_PATH)"; \
86 clean: clean_dist
87 $(MAKE) -f $(BUILD) clean PRECHECK=$(PRECHECK)
88 ifneq ($(POSTBUILD),)
89 $(MAKE) -f $(POSTBUILD) clean PRECHECK=$(PRECHECK)
90 endif
91 rm -fr $(SANDBOX)
92 rm -f $(POST_OUTPUT) $(BOOT_OUTPUT) $(DEPEND) $(DEPEND_PREV) arch/*/include/common.h
93 find generic/src/ arch/*/src/ genarch/src/ -name '*.o' -follow -exec rm \{\} \;
95 clean_dist:
96 rm -f $(INITRD).img $(COMPS_H) $(COMPS_C) $(LINK) $(LINK).comp *.co
97 rm -f $(USPACE_PATH)/dist/srv/*
98 rm -rf $(USPACE_PATH)/dist/drv/*
99 rm -rf $(USPACE_PATH)/dist/lib/*
100 rm -rf $(USPACE_PATH)/dist/inc/*
101 rm -f $(USPACE_PATH)/dist/app/*
102 rm -f $(USPACE_PATH)/dist/cfg/net/*