]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/Makeconf
update
[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        := -std=c++0x
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 = $(srcdir)/../tool/preprocess/src/preprocess
58
59 ifeq ($(CONFIG_INLINE),y)
60   PREPROCESS_FLAGS = -i -t
61 else
62   PREPROCESS_FLAGS = -t
63 endif
64
65 AS                      = $(SYSTEM_TARGET)as
66 LD                      = $(SYSTEM_TARGET)ld
67 AR                      = $(SYSTEM_TARGET)ar
68 NM                      = $(SYSTEM_TARGET)nm
69 RANLIB                  = $(SYSTEM_TARGET)ranlib
70 SIZE                    = $(SYSTEM_TARGET)size
71 STRIP                   = $(SYSTEM_TARGET)strip
72 OBJCOPY                 = $(SYSTEM_TARGET)objcopy
73 OBJDUMP                 = $(SYSTEM_TARGET)objdump
74
75 # Include architecture-specific rules. These may overwrite anything above
76 include $(srcdir)/Makeconf.$(CONFIG_XARCH)
77
78 # Include user-specific rules. These may overwrite anything above
79 -include $(srcdir)/Makeconf.local
80 -include $(objbase)/Makeconf.local
81
82 ifneq ($(CCXX_VERSION),)
83   CCXX_SUFFIX           := -$(CCXX_VERSION)
84 endif
85
86 CPP                     := $(SYSTEM_TARGET)cpp$(CCXX_SUFFIX)
87
88 CC                      := $(CCXX_WRAP) $(SYSTEM_TARGET)$(CC)$(CCXX_SUFFIX)
89 CXX                     := $(CCXX_WRAP) $(SYSTEM_TARGET)$(CXX)$(CCXX_SUFFIX)
90
91 CC_TYPE                 := $(if $(findstring clang,$(shell $(CXX) --version)),clang,gcc)
92 CCVER_MAJOR             := $(shell $(CXX) -dumpversion | cut -d . -f 1)
93 CCVER_MINOR             := $(shell $(CXX) -dumpversion | cut -d . -f 2)
94 LIBGCC                  := $(shell $(CXX) -print-libgcc-file-name)
95
96
97 L4ALL_INCDIR            ?= $(addprefix -I, $(PRIVATE_INCDIR))
98 L4STD_INCDIR            ?= -nostdinc
99 L4STD_INCDIR_LAST       ?= -I$(wildcard $(dir $(LIBGCC))/include \
100                                         $(dir $(LIBGCC))/../include)
101 KERNEL_LDFLAGS          += -gc-sections
102 SHARED_FLAGS-gcc        += -fno-defer-pop -freg-struct-return
103 # prevent a possible gcc 4.4 flaw from hitting us
104 SHARED_FLAGS-gcc        += $(if $(filter 4.4,$(CCVER_MAJOR).$(CCVER_MINOR)),-fno-strict-aliasing)
105 SHARED_FLAGS            += -g -Wall -W
106 SHARED_FLAGS            += -Wno-parentheses
107 SHARED_FLAGS            += $(call CHECKCC,-Wformat=2,)
108 SHARED_FLAGS            += $(call CHECKCC,-fno-stack-protector,)
109 SHARED_FLAGS            += $(call CHECKCC,-fdiagnostics-show-option)
110
111 OPT_CXXFLAGS-gcc        += $(call CHECKCXX,-fweb,)
112 OPT_CFLAGS-gcc          += $(call CHECKCC,-fweb,)
113 OPT_SHARED_FLAGS-gcc    += $(call CHECKCC,-frename-registers,)
114 OPT_SHARED_FLAGS-gcc    += $(call CHECKCC,-fgcse-after-reload,)
115 CXXFLAGS-gcc            += -fno-implement-inlines
116
117 -include $(objbase)/.Host-config
118
119 # Configuration dependent compile flags
120 SHARED_FLAGS-$(CONFIG_NDEBUG)           += -DNDEBUG
121 SHARED_FLAGS-$(CONFIG_NO_FRAME_PTR)     += -fomit-frame-pointer
122 SHARED_FLAGS-$(CONFIG_GSTABS)           += -gstabs+
123 SHARED_FLAGS-$(CONFIG_UNREACHABLE_CODE) += $(call CHECKCC,-Wunreachable-code,)
124
125 # Eagerly compute SHARED_FLAGS to avoid calling CHECKCC over and over again.
126 SHARED_FLAGS       := $(SHARED_FLAGS) $(SHARED_FLAGS-y)
127 SHARED_FLAGS       += $(SHARED_FLAGS-$(CC_TYPE))
128 OPT_SHARED_FLAGS   += $(OPT_SHARED_FLAGS-$(CC_TYPE))
129 NOOPT_SHARED_FLAGS += $(NOOPT_SHARED_FLAGS-$(CC_TYPE))
130
131 # Standard compile flags
132 ASFLAGS         += $(SHARED_FLAGS) -DASSEMBLER
133 ASFLAGS-clang   += -no-integrated-as
134 CFLAGS          += $(SHARED_FLAGS)
135 CXXFLAGS        += $(SHARED_FLAGS) -fno-rtti -fno-exceptions
136 OPT_CFLAGS      += $(OPT_SHARED_FLAGS)
137 OPT_CXXFLAGS    += $(OPT_SHARED_FLAGS)
138 NOOPT_CFLAGS    += $(NOOPT_SHARED_FLAGS)
139 NOOPT_CXXFLAGS  += $(NOOPT_SHARED_FLAGS)
140 CPPFLAGS        += $(L4STD_INCDIR) $(L4ALL_INCDIR) $(L4STD_INCDIR_LAST)
141 CXXFLAGS        += $(call CHECKCXX,-fno-threadsafe-statics,)
142 CXXFLAGS        += $(call CHECKCXX,-Wno-non-virtual-dtor,)
143
144 ASFLAGS         += $(ASFLAGS-$(CC_TYPE))
145 CXXFLAGS        += $(CXXFLAGS-$(CC_TYPE))
146 OPT_CFLAGS      += $(OPT_CFLAGS-$(CC_TYPE))
147 OPT_CXXFLAGS    += $(OPT_CXXFLAGS-$(CC_TYPE))
148 NOOPT_CFLAGS    += $(NOOPT_CFLAGS-$(CC_TYPE))
149 NOOPT_CXXFLAGS  += $(NOOPT_CXXFLAGS-$(CC_TYPE))
150
151
152 # Output formatting, set V=1 to see command line, V=0 to prevent printing them
153 VERBOSE         ?= @
154 ifeq ($(V),1)
155   VERBOSE :=
156   PREP_MESSAGE  ?= @$(ECHO) "  ... Preprocessing $(filter %.cpp,$^)"
157 endif
158 AR_MESSAGE      ?= @$(ECHO) "  ==> Archiving into $@"
159 COMP_MESSAGE    ?= @$(ECHO) "  ... Making $@"
160 LINK_MESSAGE    ?= @$(ECHO) "  ==> Linking $@"
161 DEP_MESSAGE     ?= @$(ECHO) "  ... Building dependencies for $<"
162 PREP_MESSAGE    ?= @$(ECHO) "  ... Preprocessing $*"
163 CHKSUM_MESSAGE  ?= @$(ECHO) "  ... Generating checksum for "
164 PATCH_MESSAGE   ?= @$(ECHO) "  ... Writing checksum into "
165 STRIP_MESSAGE   ?= @$(ECHO) "  ... Stripping $@"
166 GENVER_MESSAGE  ?= @$(ECHO) "  ... Generating version information" 
167 CLEAN_MESSAGE   ?= @$(ECHO) "Removing created files"
168 CLEANALL_MESSAGE?= @$(ECHO) "Removing all created files"
169 INST_MESSAGE    ?= @$(ECHO) "Installing $(^F)"
170 OK_MESSAGE      ?= 
171
172 COMP_MESSAGE_NOOPT ?= $(COMP_MESSAGE)
173
174 ifneq ($(VERBOSE),)
175 MOVE_IF_CHANGE += -q
176 endif
177
178 SRC_ALL = $(SRC_S) $(SRC_CPP) $(SRC_C) $(SRC_CC)
179 ifeq ($(filter clean cleanall mrproper,$(MAKECMDGOALS)),)
180 DEPS    = $(foreach file,$(SRC_ALL), $(dir $(file)).$(notdir $(file)).d)
181 else
182 DEPS    = /dev/null
183 endif
184
185 # To enable all warning ...
186 ENABLE_ALL_WARNINGS ?= n
187
188 ifeq ($(CC_TYPE),gcc)
189   ifeq ($(ENABLE_ALL_WARNINGS),y)
190     tmp := $(call CHECKCC,-Wframe-larger-than=512)
191     CFLAGS   += $(tmp)
192     CXXFLAGS += $(tmp)
193     tmp :=
194   else
195     F_UNINITIALIZED := $(firstword $(call CHECKCC,-Wmaybe-uninitialized) \
196                                    $(call CHECKCC,-Wuninitialized))
197     F_SET_NOT_USED  := $(call CHECKCC,-Wunused-but-set-variable)
198
199     F_UNINITIALIZED := $(patsubst -W%,-Wno-%,$(F_UNINITIALIZED))
200     F_SET_NOT_USED  := $(patsubst -W%,-Wno-%,$(F_SET_NOT_USED))
201
202     CFLAGS +=   $(F_UNINITIALIZED) $(F_SET_NOT_USED)
203     CXXFLAGS += $(F_UNINITIALIZED) $(F_SET_NOT_USED)
204   endif
205 endif
206
207