]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/Makeconf
4f9dd0c305f27c094ad5e41a35a458dcc487ae48
[l4.git] / kernel / fiasco / src / Makeconf
1 # -*- Makefile -*-
2 # Fiasco make configuration file
3 #
4 # created 1996/04/20 by hohmuth
5 #
6
7 CHECKCC         = $(shell if $(CC)  $(1) -S -o /dev/null -xc   /dev/null \
8                     > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
9
10 CHECKCXX        = $(shell if $(CXX) $(1) -S -o /dev/null -xc++ /dev/null \
11                     > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
12
13 eval_impl       = $(if $($(1)_IMPL),$($(1)_IMPL),$(1))
14
15 include $(objbase)/globalconfig.out
16 # use patsubst here to prevent confusion of syntax highlighting editors :-)
17 CONFIG_XARCH    := $(patsubst "%",%,$(CONFIG_XARCH))
18 CONFIG_ABI      := $(patsubst "%",%,$(CONFIG_ABI))
19
20 SYSTEM          := $(shell uname)
21 CC              := $(patsubst "%",%,$(CONFIG_CC))
22 CXX             := $(patsubst "%",%,$(CONFIG_CXX))
23 HOST_CC         := $(patsubst "%",%,$(CONFIG_HOST_CC))
24 HOST_CXX        := $(patsubst "%",%,$(CONFIG_HOST_CXX))
25 RM              := rm -f
26 RM_R            := rm -rf
27 ECHO            := echo
28 ECHO_E          := bash --norc -c 'echo -e "$$0" "$$@"'
29 CP              := cp
30 GREP            := GREP_OPTIONS= grep
31 AWKP            ?= gawk --posix
32 CFLAGS          :=
33 CXXFLAGS        :=
34 OPT_CFLAGS      := -O2
35 OPT_CXXFLAGS    := -O2
36 NOOPT_CFLAGS    := -Os
37 NOOPT_CXXFLAGS  := -Os
38 ARFLAGS         := crs
39 srcdir          ?= .
40 L4DIR           ?= $(srcdir)/../../../l4
41 tooldir         := $(srcdir)/../tool
42 MOVE_IF_CHANGE  := $(srcdir)/../tool/move-if-change
43 SHOWDEPS        := $(srcdir)/../tool/showdeps
44 PREPROCESSDEPS  := $(srcdir)/../tool/parsedeps
45 CIRCULAR        := $(srcdir)/../tool/circular
46
47 ifeq ($(SYSTEM),FreeBSD)
48   MD5SUM        := /sbin/md5
49 else
50   MD5SUM        := md5sum
51 endif
52
53 # The name of this file can be overridden from the command line or in
54 # objdir/Makeconf.local.
55 MODULES_FILE    = $(srcdir)/Modules.$(CONFIG_XARCH)
56
57 PREPROCESS = \
58   $(word 1, $(wildcard $(shell cd $(srcdir)/../../../tools/preprocess/src 2>/dev/null; \
59                                pwd)/preprocess \
60    $(shell cd $(srcdir)/../../tools/preprocess/src 2>/dev/null; \
61                                pwd)/preprocess \
62                        $(DROPS_STDDIR)/tool/bin/preprocess) preprocess)
63
64 ifeq ($(CONFIG_INLINE),y)
65   PREPROCESS_FLAGS = -i -t
66 else
67   PREPROCESS_FLAGS = -t
68 endif
69
70 AS                      = $(SYSTEM_TARGET)as
71 LD                      = $(SYSTEM_TARGET)ld
72 AR                      = $(SYSTEM_TARGET)ar
73 NM                      = $(SYSTEM_TARGET)nm
74 RANLIB                  = $(SYSTEM_TARGET)ranlib
75 SIZE                    = $(SYSTEM_TARGET)size
76 STRIP                   = $(SYSTEM_TARGET)strip
77 OBJCOPY                 = $(SYSTEM_TARGET)objcopy
78 OBJDUMP                 = $(SYSTEM_TARGET)objdump
79
80 # Include architecture-specific rules. These may overwrite anything above
81 include $(srcdir)/Makeconf.$(CONFIG_XARCH)
82
83 # Include user-specific rules. These may overwrite anything above
84 -include $(srcdir)/Makeconf.local
85 -include $(objbase)/Makeconf.local
86
87 ifneq ($(CCXX_VERSION),)
88   CCXX_SUFFIX           := -$(CCXX_VERSION)
89 endif
90
91 CC                      := $(CCXX_WRAP) $(SYSTEM_TARGET)$(CC)$(CCXX_SUFFIX)
92 CXX                     := $(CCXX_WRAP) $(SYSTEM_TARGET)$(CXX)$(CCXX_SUFFIX)
93
94 CCVER_MAJOR             := $(shell $(CXX) -dumpversion | cut -d . -f 1)
95 CCVER_MINOR             := $(shell $(CXX) -dumpversion | cut -d . -f 2)
96 LIBGCC                  := $(shell $(CXX) -print-libgcc-file-name)
97
98 L4ALL_INCDIR            ?= $(addprefix -I, $(PRIVATE_INCDIR))
99 L4STD_INCDIR            ?= -nostdinc
100 L4STD_INCDIR_LAST       ?= -I$(wildcard $(dir $(LIBGCC))/include \
101                                         $(dir $(LIBGCC))/../include)
102 KERNEL_LDFLAGS          += -gc-sections
103 SHARED_FLAGS            += -fno-defer-pop -freg-struct-return -g -Wall -W
104 SHARED_FLAGS            += -Wno-parentheses
105 SHARED_FLAGS            += $(call CHECKCC,-Wformat=2,)
106 SHARED_FLAGS            += $(call CHECKCC,-fno-stack-protector,)
107 SHARED_FLAGS            += $(call CHECKCC,-Wframe-larger-than=512)
108 SHARED_FLAGS            += $(call CHECKCC,-fdiagnostics-show-option)
109 OPT_CXXFLAGS            += $(call CHECKCXX,-fweb,)
110 OPT_CFLAGS              += $(call CHECKCC,-fweb,)
111 OPT_SHARED_FLAGS        += $(call CHECKCC,-frename-registers,)
112 OPT_SHARED_FLAGS        += $(call CHECKCC,-fgcse-after-reload,)
113 CXXFLAGS                += -fno-implement-inlines
114
115 LD_EMULATION            := $(if $(LD_EMULATION-SYSTEM-$(SYSTEM)),\
116                                 $(LD_EMULATION-SYSTEM-$(SYSTEM)),\
117                                 $(LD_EMULATION-SYSTEM-default))
118
119 # Configuration dependent compile flags
120 ifneq ($(CONFIG_PROFILE),y)
121   SHARED_FLAGS          += -ffunction-sections
122 endif
123 ifeq ($(CONFIG_NDEBUG),y)
124   SHARED_FLAGS          += -DNDEBUG
125 endif
126 ifeq ($(CONFIG_NO_FRAME_PTR),y)
127   SHARED_FLAGS          += -fomit-frame-pointer
128 endif
129 ifeq ($(CONFIG_GSTABS),y)
130   SHARED_FLAGS          += -gstabs+
131 endif
132 ifeq ($(CONFIG_PROFILE),y)
133   PROF_FLAGS            += -pg
134 endif
135 ifeq ($(CONFIG_UNREACHABLE_CODE),y)
136   SHARED_FLAGS          += $(call CHECKCC,-Wunreachable-code,)
137 endif
138
139 # Eagerly compute SHARED_FLAGS to avoid calling CHECKCC over and over again.
140 SHARED_FLAGS    := $(SHARED_FLAGS) $(SHARED_FLAGS-y)
141
142 # Standard compile flags
143 ASFLAGS         += $(SHARED_FLAGS) -DASSEMBLER
144 CFLAGS          += $(SHARED_FLAGS)
145 CXXFLAGS        += $(SHARED_FLAGS) -fno-rtti -fno-exceptions
146 OPT_CFLAGS      += $(OPT_SHARED_FLAGS)
147 OPT_CXXFLAGS    += $(OPT_SHARED_FLAGS)
148 NOOPT_CFLAGS    += $(NOOPT_SHARED_FLAGS)
149 NOOPT_CXXFLAGS  += $(NOOPT_SHARED_FLAGS)
150 CPPFLAGS        += $(L4STD_INCDIR) $(L4ALL_INCDIR) $(L4STD_INCDIR_LAST)
151 CXXFLAGS        += $(call CHECKCXX,-fno-threadsafe-statics,)
152 CXXFLAGS        += $(call CHECKCXX,-Wno-non-virtual-dtor,)
153
154 ifneq ($(CONFIG_VERBOSE),y)
155 VERBOSE         = @
156 PREP_MESSAGE    ?= @$(ECHO) "  ... Preprocessing $*"
157 endif
158
159 # Output formatting, set V=1 to see command line, V=0 to prevent printing them
160 VERBOSE         ?=
161 ifeq ($(V),1)
162   VERBOSE :=
163 endif
164 ifeq ($(V),0)
165   VERBOSE := @
166 endif
167 AR_MESSAGE      ?= @$(ECHO) "  ==> Archiving into $@"
168 COMP_MESSAGE    ?= @$(ECHO) "  ... Making $@"
169 LINK_MESSAGE    ?= @$(ECHO) "  ==> Linking $@"
170 DEP_MESSAGE     ?= @$(ECHO) "  ... Building dependencies for $<"
171 PREP_MESSAGE    ?= @$(ECHO) "  ... Preprocessing $(filter %.cpp,$^)"
172 CHKSUM_MESSAGE  ?= @$(ECHO) "  ... Generating checksum for "
173 PATCH_MESSAGE   ?= @$(ECHO) "  ... Writing checksum into "
174 STRIP_MESSAGE   ?= @$(ECHO) "  ... Stripping $@"
175 GENVER_MESSAGE  ?= @$(ECHO) "  ... Generating version information" 
176 CLEAN_MESSAGE   ?= @$(ECHO) "Removing created files"
177 CLEANALL_MESSAGE?= @$(ECHO) "Removing all created files"
178 INST_MESSAGE    ?= @$(ECHO) "Installing $(^F)"
179 OK_MESSAGE      ?= 
180
181 COMP_MESSAGE_NOOPT ?= $(COMP_MESSAGE)
182
183 ifneq ($(VERBOSE),)
184 MOVE_IF_CHANGE += -q
185 endif
186
187 SRC_ALL = $(SRC_S) $(SRC_CPP) $(SRC_C) $(SRC_CC)
188 ifeq ($(filter clean cleanall mrproper,$(MAKECMDGOALS)),)
189 DEPS    = $(foreach file,$(SRC_ALL), $(dir $(file)).$(notdir $(file)).d)
190 else
191 DEPS    = /dev/null
192 endif
193
194 ifeq ("$(CONFIG_ALLOW_RO_TEXT)","y")
195   PREPROCESS_PARTS += rotext
196 endif