Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Ported palacios to Kbuild
[palacios.git] / scripts / kconfig / Makefile
1 # ===========================================================================
2 # Kernel configuration targets
3 # These targets are used from top-level makefile
4
5 PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
6
7 xconfig: $(obj)/qconf
8         $< Kconfig
9
10 gconfig: $(obj)/gconf
11         $< Kconfig
12
13 menuconfig: $(obj)/mconf
14         $(Q)$(MAKE) $(build)=scripts/kconfig/lxdialog
15         $< Kconfig
16
17 config: $(obj)/conf
18         $< Kconfig
19
20 oldconfig: $(obj)/conf
21         $< -o Kconfig
22
23 silentoldconfig: $(obj)/conf
24         $< -s Kconfig
25
26 #update-po-config: $(obj)/kxgettext
27 #       xgettext --default-domain=linux \
28 #          --add-comments --keyword=_ --keyword=N_ \
29 #          --files-from=scripts/kconfig/POTFILES.in \
30 #          --output scripts/kconfig/config.pot
31 #       $(Q)ln -fs Kconfig_i386 arch/um/Kconfig_arch
32
33 #       scripts/kconfig/kxgettext Kconfig \
34 #         | msguniq -o scripts/kconfig/linux_$${i}.pot; \
35
36 #       $(Q)msgcat scripts/kconfig/config.pot \
37 #         `find scripts/kconfig/ -type f -name linux_*.pot` \
38 #         --output scripts/kconfig/linux_raw.pot
39 #       $(Q)msguniq --sort-by-file scripts/kconfig/linux_raw.pot \
40 #           --output scripts/kconfig/linux.pot
41 #       $(Q)rm -f arch/um/Kconfig_arch
42 #       $(Q)rm -f scripts/kconfig/linux_*.pot scripts/kconfig/config.pot
43
44 PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig
45
46 randconfig: $(obj)/conf
47         $< -r Kconfig
48
49 allyesconfig: $(obj)/conf
50         $< -y Kconfig
51
52 allnoconfig: $(obj)/conf
53         $< -n Kconfig
54
55 allmodconfig: $(obj)/conf
56         $< -m Kconfig
57
58 defconfig: $(obj)/conf
59 ifeq ($(KBUILD_DEFCONFIG),)
60         $< -d Kconfig
61 else
62         @echo *** Default configuration is based on '$(KBUILD_DEFCONFIG)'
63         $(Q)$< -D $(KBUILD_DEFCONFIG) Kconfig
64 endif
65
66 %_defconfig: $(obj)/conf
67         $(Q)$< -D $@ Kconfig
68
69 # Help text used by make help
70 help:
71         @echo  '  config          - Update current config utilising a line-oriented program'
72         @echo  '  menuconfig      - Update current config utilising a menu based program'
73         @echo  '  xconfig         - Update current config utilising a QT based front-end'
74         @echo  '  gconfig         - Update current config utilising a GTK based front-end'
75         @echo  '  oldconfig       - Update current config utilising a provided .config as base'
76         @echo  '  randconfig      - New config with random answer to all options'
77         @echo  '  defconfig       - New config with default answer to all options'
78         @echo  '  allmodconfig    - New config selecting modules when possible'
79         @echo  '  allyesconfig    - New config where all options are accepted with yes'
80         @echo  '  allnoconfig     - New config where all options are answered with no'
81
82 # ===========================================================================
83 # Shared Makefile for the various kconfig executables:
84 # conf:   Used for defconfig, oldconfig and related targets
85 # mconf:  Used for the mconfig target.
86 #         Utilizes the lxdialog package
87 # qconf:  Used for the xconfig target
88 #         Based on QT which needs to be installed to compile it
89 # gconf:  Used for the gconfig target
90 #         Based on GTK which needs to be installed to compile it
91 # object files used by all kconfig flavours
92
93 hostprogs-y     := conf mconf qconf gconf kxgettext
94 conf-objs       := conf.o  zconf.tab.o
95 mconf-objs      := mconf.o zconf.tab.o
96 kxgettext-objs  := kxgettext.o zconf.tab.o
97
98 ifeq ($(MAKECMDGOALS),xconfig)
99         qconf-target := 1
100 endif
101 ifeq ($(MAKECMDGOALS),gconfig)
102         gconf-target := 1
103 endif
104
105
106 ifeq ($(qconf-target),1)
107 qconf-cxxobjs   := qconf.o
108 qconf-objs      := kconfig_load.o zconf.tab.o
109 endif
110
111 ifeq ($(gconf-target),1)
112 gconf-objs      := gconf.o kconfig_load.o zconf.tab.o
113 endif
114
115 clean-files     := lkc_defs.h qconf.moc .tmp_qtcheck \
116                    .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c
117 subdir- += lxdialog
118
119 # Needed for systems without gettext
120 KBUILD_HAVE_NLS := $(shell \
121      if echo "\#include <libintl.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
122      then echo yes ; \
123      else echo no ; fi)
124 ifeq ($(KBUILD_HAVE_NLS),no)
125 HOSTCFLAGS      += -DKBUILD_NO_NLS
126 endif
127
128 # generated files seem to need this to find local include files
129 HOSTCFLAGS_lex.zconf.o  := -I$(src)
130 HOSTCFLAGS_zconf.tab.o  := -I$(src)
131
132 HOSTLOADLIBES_qconf     = $(KC_QT_LIBS) -ldl
133 HOSTCXXFLAGS_qconf.o    = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK
134
135 HOSTLOADLIBES_gconf     = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`
136 HOSTCFLAGS_gconf.o      = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
137                           -D LKC_DIRECT_LINK
138
139 $(obj)/qconf.o: $(obj)/.tmp_qtcheck
140
141 ifeq ($(qconf-target),1)
142 $(obj)/.tmp_qtcheck: $(src)/Makefile
143 -include $(obj)/.tmp_qtcheck
144
145 # QT needs some extra effort...
146 $(obj)/.tmp_qtcheck:
147         @set -e; echo "  CHECK   qt"; dir=""; pkg=""; \
148         pkg-config --exists qt 2> /dev/null && pkg=qt; \
149         pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \
150         if [ -n "$$pkg" ]; then \
151           cflags="\$$(shell pkg-config $$pkg --cflags)"; \
152           libs="\$$(shell pkg-config $$pkg --libs)"; \
153           moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \
154           dir="$$(pkg-config $$pkg --variable=prefix)"; \
155         else \
156           for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
157             if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \
158           done; \
159           if [ -z "$$dir" ]; then \
160             echo "*"; \
161             echo "* Unable to find the QT installation. Please make sure that"; \
162             echo "* the QT development package is correctly installed and"; \
163             echo "* either install pkg-config or set the QTDIR environment"; \
164             echo "* variable to the correct location."; \
165             echo "*"; \
166             false; \
167           fi; \
168           libpath=$$dir/lib; lib=qt; osdir=""; \
169           $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \
170             osdir=x$$($(HOSTCXX) -print-multi-os-directory); \
171           test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \
172           test -f $$libpath/libqt-mt.so && lib=qt-mt; \
173           cflags="-I$$dir/include"; \
174           libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \
175           moc="$$dir/bin/moc"; \
176         fi; \
177         if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \
178           echo "*"; \
179           echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \
180           echo "*"; \
181           moc="/usr/bin/moc"; \
182         fi; \
183         echo "KC_QT_CFLAGS=$$cflags" > $@; \
184         echo "KC_QT_LIBS=$$libs" >> $@; \
185         echo "KC_QT_MOC=$$moc" >> $@
186 endif
187
188 $(obj)/gconf.o: $(obj)/.tmp_gtkcheck
189
190 ifeq ($(gconf-target),1)
191 -include $(obj)/.tmp_gtkcheck
192
193 # GTK needs some extra effort, too...
194 $(obj)/.tmp_gtkcheck:
195         @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then               \
196                 if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then                  \
197                         touch $@;                                                               \
198                 else                                                                    \
199                         echo "*";                                                       \
200                         echo "* GTK+ is present but version >= 2.0.0 is required.";     \
201                         echo "*";                                                       \
202                         false;                                                          \
203                 fi                                                                      \
204         else                                                                            \
205                 echo "*";                                                               \
206                 echo "* Unable to find the GTK+ installation. Please make sure that";   \
207                 echo "* the GTK+ 2.0 development package is correctly installed...";    \
208                 echo "* You need gtk+-2.0, glib-2.0 and libglade-2.0.";                 \
209                 echo "*";                                                               \
210                 false;                                                                  \
211         fi
212 endif
213
214 $(obj)/zconf.tab.o: $(obj)/lex.zconf.c $(obj)/zconf.hash.c
215
216 $(obj)/kconfig_load.o: $(obj)/lkc_defs.h
217
218 $(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h
219
220 $(obj)/gconf.o: $(obj)/lkc_defs.h
221
222 $(obj)/%.moc: $(src)/%.h
223         $(KC_QT_MOC) -i $< -o $@
224
225 $(obj)/lkc_defs.h: $(src)/lkc_proto.h
226         sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
227
228
229 ###
230 # The following requires flex/bison/gperf
231 # By default we use the _shipped versions, uncomment the following line if
232 # you are modifying the flex/bison src.
233 # LKC_GENPARSER := 1
234
235 ifdef LKC_GENPARSER
236
237 $(obj)/zconf.tab.c: $(src)/zconf.y
238 $(obj)/lex.zconf.c: $(src)/zconf.l
239 $(obj)/zconf.hash.c: $(src)/zconf.gperf
240
241 %.tab.c: %.y
242         bison -l -b $* -p $(notdir $*) $<
243         cp $@ $@_shipped
244
245 lex.%.c: %.l
246         flex -L -P$(notdir $*) -o$@ $<
247         cp $@ $@_shipped
248
249 %.hash.c: %.gperf
250         gperf < $< > $@
251         cp $@ $@_shipped
252
253 endif