source: mainline/Makefile@ 32355bc

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

Remove the generated common.h header

We haven't used it in some time, instead relying on the compiler
providing types with properties we want. Since we only support
building with GCC and Clang, extra detection code is just dead weight.

  • Property mode set to 100644
File size: 5.0 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# Just for this Makefile. Sub-makes will run in parallel if requested.
30.NOTPARALLEL:
31
32CCHECK = tools/sycek/ccheck
33CSCOPE = cscope
34FORMAT = clang-format
35CHECK = tools/check.sh
36CONFIG = tools/config.py
37AUTOTOOL = tools/autotool.py
38SANDBOX = autotool
39
40CONFIG_RULES = HelenOS.config
41
42COMMON_MAKEFILE = Makefile.common
43
44CONFIG_MAKEFILE = Makefile.config
45CONFIG_HEADER = config.h
46ERRNO_HEADER = abi/include/abi/errno.h
47ERRNO_INPUT = abi/include/abi/errno.in
48
49.PHONY: all precheck cscope cscope_parts autotool config_auto config_default config distclean clean check releasefile release common boot kernel uspace export-posix space
50
51all: kernel uspace export-cross test-xcw
52 $(MAKE) -r -C boot PRECHECK=$(PRECHECK)
53
54common: $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(ERRNO_HEADER)
55
56kernel: common
57 $(MAKE) -r -C kernel PRECHECK=$(PRECHECK)
58
59uspace: common
60 $(MAKE) -r -C uspace PRECHECK=$(PRECHECK)
61
62test-xcw: uspace export-cross
63 export PATH=$$PATH:$(abspath tools/xcw/bin) && $(MAKE) -r -C tools/xcw/demo
64
65export-posix: common
66ifndef EXPORT_DIR
67 @echo ERROR: Variable EXPORT_DIR is not defined. && false
68else
69 $(MAKE) -r -C uspace export EXPORT_DIR=$(abspath $(EXPORT_DIR))
70endif
71
72export-cross: common
73 $(MAKE) -r -C uspace export EXPORT_DIR=$(abspath uspace/export)
74
75precheck: clean
76 $(MAKE) -r all PRECHECK=y
77
78cscope:
79 find abi kernel boot uspace -type f -regex '^.*\.[chsS]$$' | xargs $(CSCOPE) -b -k -u -f$(CSCOPE).out
80
81cscope_parts:
82 find abi -type f -regex '^.*\.[chsS]$$' | xargs $(CSCOPE) -b -k -u -f$(CSCOPE)_abi.out
83 find kernel -type f -regex '^.*\.[chsS]$$' | xargs $(CSCOPE) -b -k -u -f$(CSCOPE)_kernel.out
84 find boot -type f -regex '^.*\.[chsS]$$' | xargs $(CSCOPE) -b -k -u -f$(CSCOPE)_boot.out
85 find uspace -type f -regex '^.*\.[chsS]$$' | xargs $(CSCOPE) -b -k -u -f$(CSCOPE)_uspace.out
86
87format:
88 find abi kernel boot uspace -type f -regex '^.*\.[ch]$$' | xargs $(FORMAT) -i -sort-includes -style=file
89
90ccheck: $(CCHECK)
91 cd tools && ./build-ccheck.sh
92 tools/ccheck.sh
93
94ccheck-fix: $(CCHECK)
95 cd tools && ./build-ccheck.sh
96 tools/ccheck.sh --fix
97
98$(CCHECK):
99 cd tools && ./build-ccheck.sh
100
101space:
102 tools/srepl '[ \t]\+$$' ''
103
104doxy:
105 $(MAKE) -r -C doxygen
106
107# Pre-integration build check
108check: ccheck $(CHECK)
109ifdef JOBS
110 $(CHECK) -j $(JOBS)
111else
112 $(CHECK) -j $(shell nproc)
113endif
114
115# `sed` pulls a list of "compatibility-only" error codes from `errno.in`,
116# the following grep finds instances of those error codes in HelenOS code.
117check_errno:
118 @ ! cat abi/include/abi/errno.in | \
119 sed -n -e '1,/COMPAT_START/d' -e 's/__errno_entry(\([A-Z0-9]\+\).*/\\b\1\\b/p' | \
120 git grep -n -f - -- ':(exclude)abi' ':(exclude)uspace/lib/posix'
121
122# Autotool (detects compiler features)
123
124autotool $(COMMON_MAKEFILE): $(CONFIG_MAKEFILE) $(AUTOTOOL)
125 $(AUTOTOOL)
126
127# Build-time configuration
128
129config_default $(CONFIG_MAKEFILE) $(CONFIG_HEADER): $(CONFIG_RULES)
130ifeq ($(HANDS_OFF),y)
131 $(CONFIG) $< hands-off $(PROFILE)
132else
133 $(CONFIG) $< default $(PROFILE)
134endif
135
136config: $(CONFIG_RULES)
137 $(CONFIG) $<
138
139random-config: $(CONFIG_RULES)
140 $(CONFIG) $< random
141
142# Release files
143
144releasefile: all
145 $(MAKE) -r -C release releasefile
146
147release:
148 $(MAKE) -r -C release release
149
150# Cleaning
151
152distclean: clean
153 rm -f $(CSCOPE).out $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) tools/*.pyc tools/checkers/*.pyc release/HelenOS-*
154
155clean:
156 rm -fr $(SANDBOX)
157 $(MAKE) -r -C kernel clean
158 $(MAKE) -r -C uspace clean
159 $(MAKE) -r -C boot clean
160 $(MAKE) -r -C doxygen clean
161 $(MAKE) -r -C tools/xcw/demo clean
162
163$(ERRNO_HEADER): $(ERRNO_INPUT)
164 echo '/* Generated file. Edit errno.in instead. */' > $@.new
165 sed 's/__errno_entry(\([^,]*\),\([^,]*\),.*/#define \1 __errno_t(\2)/' < $< >> $@.new
166 mv $@.new $@
167
168-include Makefile.local
Note: See TracBrowser for help on using the repository browser.