2 # Copyright (c) 2006 Martin Decky
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
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
)
36 $(MAKE
) -f
$(POSTBUILD
) PRECHECK
=$(PRECHECK
)
39 build_comps
: $(COMPONENTS
) $(LINK
).in
40 $(PACK
) $(OBJCOPY
) $(BFD_NAME
) $(BFD_ARCH
) arch
/$(KARCH
) $(COMPONENTS
)
42 $(INITRD
).img
: build_dist
44 $(MKTMPFS
) $(DIST_PATH
) $@
47 $(MKFAT
) 1048576 $(DIST_PATH
) $@
49 ifeq ($(RDFMT
),ext4fs
)
50 $(MKEXT4
) 1048576 $(DIST_PATH
) $@
53 build_dist
: clean_dist
54 for file in
$(RD_SRVS
) ; do \
55 cp
"$$file" "$(DIST_PATH)/srv/" ; \
57 for file in
$(RD_LIBS
) ; do \
58 cp
"$$file" "$(DIST_PATH)/lib/" ; \
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"
67 for file in
$(RD_APPS
) ; do \
68 cp
"$$file" "$(DIST_PATH)/app/" ; \
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/" ; \
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/" ; \
84 $(MAKE
) -f
$(BUILD
) clean PRECHECK
=$(PRECHECK
)
86 $(MAKE
) -f
$(POSTBUILD
) clean PRECHECK
=$(PRECHECK
)
89 rm -f
$(POST_OUTPUT
) $(BOOT_OUTPUT
) $(DEPEND
) $(DEPEND_PREV
) arch
/*/include/common.h
90 find generic
/src
/ arch
/*/src
/ genarch
/src
/ -name
'*.o' -follow
-exec
rm \
{\
} \
;
93 rm -f
$(INITRD
).img
$(COMPS_H
) $(COMPS_C
) $(LINK
) $(LINK
).comp
*.
co
94 rm -f
$(USPACE_PATH
)/dist/srv
/*
95 rm -rf
$(USPACE_PATH
)/dist/drv
/*
96 rm -f
$(USPACE_PATH
)/dist/lib
/*
97 rm -rf
$(USPACE_PATH
)/dist/inc
/*
98 rm -f
$(USPACE_PATH
)/dist/app
/*
99 rm -f
$(USPACE_PATH
)/dist/cfg
/net
/*