|
|
1.1 ! root 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: localmodconfig localyesconfig ! 7: ! 8: ifdef KBUILD_KCONFIG ! 9: Kconfig := $(KBUILD_KCONFIG) ! 10: else ! 11: Kconfig := Kconfig ! 12: endif ! 13: ! 14: xconfig: $(obj)/qconf ! 15: $< $(Kconfig) ! 16: ! 17: gconfig: $(obj)/gconf ! 18: $< $(Kconfig) ! 19: ! 20: menuconfig: $(obj)/mconf ! 21: $< $(Kconfig) ! 22: ! 23: config: $(obj)/conf ! 24: $< --oldaskconfig $(Kconfig) ! 25: ! 26: nconfig: $(obj)/nconf ! 27: $< $(Kconfig) ! 28: ! 29: oldconfig: $(obj)/conf ! 30: $< --$@ $(Kconfig) ! 31: ! 32: silentoldconfig: $(obj)/conf ! 33: @echo " Build Kconfig config file" ! 34: $(Q)mkdir -p include/generated ! 35: $(Q)$< --$@ $(Kconfig) ! 36: ! 37: # if no path is given, then use src directory to find file ! 38: ifdef LSMOD ! 39: LSMOD_F := $(LSMOD) ! 40: ifeq ($(findstring /,$(LSMOD)),) ! 41: LSMOD_F := $(objtree)/$(LSMOD) ! 42: endif ! 43: endif ! 44: ! 45: localmodconfig: $(obj)/streamline_config.pl $(obj)/conf ! 46: $(Q)mkdir -p include/generated ! 47: $(Q)perl $< $(srctree) $(Kconfig) $(LSMOD_F) > .tmp.config ! 48: $(Q)if [ -f .config ]; then \ ! 49: cmp -s .tmp.config .config || \ ! 50: (mv -f .config .config.old.1; \ ! 51: mv -f .tmp.config .config; \ ! 52: $(obj)/conf --silentoldconfig $(Kconfig); \ ! 53: mv -f .config.old.1 .config.old) \ ! 54: else \ ! 55: mv -f .tmp.config .config; \ ! 56: $(obj)/conf --silentoldconfig $(Kconfig); \ ! 57: fi ! 58: $(Q)rm -f .tmp.config ! 59: ! 60: localyesconfig: $(obj)/streamline_config.pl $(obj)/conf ! 61: $(Q)mkdir -p include/generated ! 62: $(Q)perl $< $(srctree) $(Kconfig) $(LSMOD_F) > .tmp.config ! 63: $(Q)sed -i s/=m/=y/ .tmp.config ! 64: $(Q)if [ -f .config ]; then \ ! 65: cmp -s .tmp.config .config || \ ! 66: (mv -f .config .config.old.1; \ ! 67: mv -f .tmp.config .config; \ ! 68: $(obj)/conf --silentoldconfig $(Kconfig); \ ! 69: mv -f .config.old.1 .config.old) \ ! 70: else \ ! 71: mv -f .tmp.config .config; \ ! 72: $(obj)/conf --silentoldconfig $(Kconfig); \ ! 73: fi ! 74: $(Q)rm -f .tmp.config ! 75: ! 76: # Create new linux.pot file ! 77: # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files ! 78: # The symlink is used to repair a deficiency in arch/um ! 79: update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h ! 80: $(Q)echo " GEN config" ! 81: $(Q)xgettext --default-domain=linux \ ! 82: --add-comments --keyword=_ --keyword=N_ \ ! 83: --from-code=UTF-8 \ ! 84: --files-from=tools/kconfig/POTFILES.in \ ! 85: --output $(obj)/config.pot ! 86: $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot ! 87: $(Q)ln -fs Kconfig.i386 arch/um/Kconfig.arch ! 88: $(Q)(for i in `ls arch/*/Kconfig`; \ ! 89: do \ ! 90: echo " GEN $$i"; \ ! 91: $(obj)/kxgettext $$i \ ! 92: >> $(obj)/config.pot; \ ! 93: done ) ! 94: $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ ! 95: --output $(obj)/linux.pot ! 96: $(Q)rm -f arch/um/Kconfig.arch ! 97: $(Q)rm -f $(obj)/config.pot ! 98: ! 99: PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig ! 100: ! 101: allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf ! 102: $< --$@ $(Kconfig) ! 103: ! 104: PHONY += listnewconfig oldnoconfig savedefconfig defconfig ! 105: ! 106: listnewconfig oldnoconfig: $(obj)/conf ! 107: $< --$@ $(Kconfig) ! 108: ! 109: savedefconfig: $(obj)/conf ! 110: $< --$@=defconfig $(Kconfig) ! 111: ! 112: defconfig: $(obj)/conf ! 113: @echo " Build default config" ! 114: $(Q)$< --defconfig=/dev/null $(Kconfig) ! 115: ! 116: # Help text used by make help ! 117: help: ! 118: @echo ' config - Update current config utilising a line-oriented program' ! 119: @echo ' nconfig - Update current config utilising a ncurses menu based program' ! 120: @echo ' menuconfig - Update current config utilising a menu based program' ! 121: @echo ' xconfig - Update current config utilising a QT based front-end' ! 122: @echo ' gconfig - Update current config utilising a GTK based front-end' ! 123: @echo ' oldconfig - Update current config utilising a provided .config as base' ! 124: @echo ' localmodconfig - Update current config disabling modules not loaded' ! 125: @echo ' localyesconfig - Update current config converting local mods to core' ! 126: @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps' ! 127: @echo ' defconfig - New config with default from ARCH supplied defconfig' ! 128: @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' ! 129: @echo ' allnoconfig - New config where all options are answered with no' ! 130: @echo ' allyesconfig - New config where all options are accepted with yes' ! 131: @echo ' allmodconfig - New config selecting modules when possible' ! 132: @echo ' alldefconfig - New config with all symbols set to default' ! 133: @echo ' randconfig - New config with random answer to all options' ! 134: @echo ' listnewconfig - List new options' ! 135: @echo ' oldnoconfig - Same as silentoldconfig but set new symbols to n (unset)' ! 136: ! 137: # lxdialog stuff ! 138: check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh ! 139: ! 140: # Use recursively expanded variables so we do not call gcc unless ! 141: # we really need to do so. (Do not call gcc as part of make mrproper) ! 142: HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ ! 143: -DLOCALE ! 144: ! 145: # =========================================================================== ! 146: # Shared Makefile for the various kconfig executables: ! 147: # conf: Used for defconfig, oldconfig and related targets ! 148: # nconf: Used for the nconfig target. ! 149: # Utilizes ncurses ! 150: # mconf: Used for the menuconfig target ! 151: # Utilizes the lxdialog package ! 152: # qconf: Used for the xconfig target ! 153: # Based on QT which needs to be installed to compile it ! 154: # gconf: Used for the gconfig target ! 155: # Based on GTK which needs to be installed to compile it ! 156: # object files used by all kconfig flavours ! 157: ! 158: lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o ! 159: lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o ! 160: ! 161: conf-objs := conf.o zconf.tab.o ! 162: mconf-objs := mconf.o zconf.tab.o $(lxdialog) ! 163: nconf-objs := nconf.o zconf.tab.o nconf.gui.o ! 164: kxgettext-objs := kxgettext.o zconf.tab.o ! 165: ! 166: hostprogs-y := conf qconf gconf kxgettext ! 167: ! 168: ifeq ($(MAKECMDGOALS),nconfig) ! 169: hostprogs-y += nconf ! 170: endif ! 171: ! 172: ifeq ($(MAKECMDGOALS),menuconfig) ! 173: hostprogs-y += mconf ! 174: endif ! 175: ! 176: ifeq ($(MAKECMDGOALS),xconfig) ! 177: qconf-target := 1 ! 178: endif ! 179: ifeq ($(MAKECMDGOALS),gconfig) ! 180: gconf-target := 1 ! 181: endif ! 182: ! 183: ! 184: ifeq ($(qconf-target),1) ! 185: qconf-cxxobjs := qconf.o ! 186: qconf-objs := kconfig_load.o zconf.tab.o ! 187: endif ! 188: ! 189: ifeq ($(gconf-target),1) ! 190: gconf-objs := gconf.o kconfig_load.o zconf.tab.o ! 191: endif ! 192: ! 193: clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ ! 194: .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h ! 195: clean-files += mconf qconf gconf nconf ! 196: clean-files += config.pot linux.pot ! 197: ! 198: # Check that we have the required ncurses stuff installed for lxdialog (menuconfig) ! 199: PHONY += $(obj)/dochecklxdialog ! 200: $(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog ! 201: $(obj)/dochecklxdialog: ! 202: $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) ! 203: ! 204: always := dochecklxdialog ! 205: ! 206: # Add environment specific flags ! 207: HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) ! 208: ! 209: # generated files seem to need this to find local include files ! 210: HOSTCFLAGS_lex.zconf.o := -I$(src) ! 211: HOSTCFLAGS_zconf.tab.o := -I$(src) ! 212: ! 213: HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl ! 214: HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK ! 215: ! 216: HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -ldl ! 217: HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ ! 218: -D LKC_DIRECT_LINK ! 219: ! 220: HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) ! 221: ! 222: HOSTLOADLIBES_nconf = -lmenu -lpanel -lncurses ! 223: $(obj)/qconf.o: $(obj)/.tmp_qtcheck ! 224: ! 225: ifeq ($(qconf-target),1) ! 226: $(obj)/.tmp_qtcheck: $(src)/Makefile ! 227: -include $(obj)/.tmp_qtcheck ! 228: ! 229: # QT needs some extra effort... ! 230: $(obj)/.tmp_qtcheck: ! 231: @set -e; echo " CHECK qt"; dir=""; pkg=""; \ ! 232: if ! pkg-config --exists QtCore 2> /dev/null; then \ ! 233: echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \ ! 234: pkg-config --exists qt 2> /dev/null && pkg=qt; \ ! 235: pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ ! 236: if [ -n "$$pkg" ]; then \ ! 237: cflags="\$$(shell pkg-config $$pkg --cflags)"; \ ! 238: libs="\$$(shell pkg-config $$pkg --libs)"; \ ! 239: moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \ ! 240: dir="$$(pkg-config $$pkg --variable=prefix)"; \ ! 241: else \ ! 242: for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ ! 243: if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \ ! 244: done; \ ! 245: if [ -z "$$dir" ]; then \ ! 246: echo "*"; \ ! 247: echo "* Unable to find any QT installation. Please make sure that"; \ ! 248: echo "* the QT4 or QT3 development package is correctly installed and"; \ ! 249: echo "* either qmake can be found or install pkg-config or set"; \ ! 250: echo "* the QTDIR environment variable to the correct location."; \ ! 251: echo "*"; \ ! 252: false; \ ! 253: fi; \ ! 254: libpath=$$dir/lib; lib=qt; osdir=""; \ ! 255: $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ ! 256: osdir=x$$($(HOSTCXX) -print-multi-os-directory); \ ! 257: test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \ ! 258: test -f $$libpath/libqt-mt.so && lib=qt-mt; \ ! 259: cflags="-I$$dir/include"; \ ! 260: libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \ ! 261: moc="$$dir/bin/moc"; \ ! 262: fi; \ ! 263: if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \ ! 264: echo "*"; \ ! 265: echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \ ! 266: echo "*"; \ ! 267: moc="/usr/bin/moc"; \ ! 268: fi; \ ! 269: else \ ! 270: cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \ ! 271: libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \ ! 272: binpath="\$$(shell pkg-config QtCore --variable=prefix)"; \ ! 273: moc="$$binpath/bin/moc"; \ ! 274: fi; \ ! 275: echo "KC_QT_CFLAGS=$$cflags" > $@; \ ! 276: echo "KC_QT_LIBS=$$libs" >> $@; \ ! 277: echo "KC_QT_MOC=$$moc" >> $@ ! 278: endif ! 279: ! 280: $(obj)/gconf.o: $(obj)/.tmp_gtkcheck ! 281: ! 282: ifeq ($(gconf-target),1) ! 283: -include $(obj)/.tmp_gtkcheck ! 284: ! 285: # GTK needs some extra effort, too... ! 286: $(obj)/.tmp_gtkcheck: ! 287: @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ ! 288: if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ ! 289: touch $@; \ ! 290: else \ ! 291: echo "*"; \ ! 292: echo "* GTK+ is present but version >= 2.0.0 is required."; \ ! 293: echo "*"; \ ! 294: false; \ ! 295: fi \ ! 296: else \ ! 297: echo "*"; \ ! 298: echo "* Unable to find the GTK+ installation. Please make sure that"; \ ! 299: echo "* the GTK+ 2.0 development package is correctly installed..."; \ ! 300: echo "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ ! 301: echo "*"; \ ! 302: false; \ ! 303: fi ! 304: endif ! 305: ! 306: $(obj)/zconf.tab.o: $(obj)/lex.zconf.c $(obj)/zconf.hash.c ! 307: ! 308: $(obj)/kconfig_load.o: $(obj)/lkc_defs.h ! 309: ! 310: $(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h ! 311: ! 312: $(obj)/gconf.o: $(obj)/lkc_defs.h ! 313: ! 314: $(obj)/%.moc: $(src)/%.h ! 315: $(KC_QT_MOC) -i $< -o $@ ! 316: ! 317: $(obj)/lkc_defs.h: $(src)/lkc_proto.h ! 318: sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' ! 319: ! 320: # Extract gconf menu items for I18N support ! 321: $(obj)/gconf.glade.h: $(obj)/gconf.glade ! 322: intltool-extract --type=gettext/glade $(obj)/gconf.glade ! 323: ! 324: ### ! 325: # The following requires flex/bison/gperf ! 326: # By default we use the _shipped versions, uncomment the following line if ! 327: # you are modifying the flex/bison src. ! 328: # LKC_GENPARSER := 1 ! 329: ! 330: ifdef LKC_GENPARSER ! 331: ! 332: $(obj)/zconf.tab.c: $(src)/zconf.y ! 333: $(obj)/lex.zconf.c: $(src)/zconf.l ! 334: $(obj)/zconf.hash.c: $(src)/zconf.gperf ! 335: ! 336: %.tab.c: %.y ! 337: bison -l -b $* -p $(notdir $*) $< ! 338: cp $@ $@_shipped ! 339: ! 340: lex.%.c: %.l ! 341: flex -L -P$(notdir $*) -o$@ $< ! 342: cp $@ $@_shipped ! 343: ! 344: %.hash.c: %.gperf ! 345: gperf < $< > $@ ! 346: cp $@ $@_shipped ! 347: ! 348: endif ! 349: ! 350: VPATH := $(srctree) ! 351: ! 352: $(obj)/%:: $(src)/%_shipped ! 353: $(Q)cat $< > $@ ! 354: ! 355: host-cobjs := $(sort $(foreach m,$(hostprogs-y),$($(m)-objs))) ! 356: host-cobjs := $(addprefix $(obj)/,$(host-cobjs)) ! 357: hostprogs-y := $(addprefix $(obj)/,$(hostprogs-y)) ! 358: $(host-cobjs) : $(obj)/%.o : $(src)/%.c ! 359: $(Q)$(HOSTCC) -I$(obj) -I$(srctree)/$(src) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) $(HOST_EXTRACFLAGS) -c -o $@ $< ! 360: $(hostprogs-y) : $(obj)/% : $(host-cobjs) ! 361: $(Q)$(HOSTCC) $(HOSTLDFLAGS) -o $@ $(addprefix $(obj)/,$($(@F)-objs)) $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.