From 70a6a0cb92f24fd6bbe2e75299168909f735676a Mon Sep 17 00:00:00 2001 From: Yuri Vasilevski Date: Sun, 30 Oct 2005 15:03:20 -0800 Subject: [PATCH] fix build on nls free systems I made a patch that detects if libintl.h (needed for nls) is present on the host system and if it's not, it nls support is disabled by providing dummies for the used nls functions. This way if there is nls support on the host system the *config targets will build according to Arnaldo Carvalho de Melo's i18n modifications, else it just uses the original English messages. I have also made a bug report at kernel's bugzilla: http://bugzilla.kernel.org/show_bug.cgi?id=5501 And there is a discussion about this problem in Gentoo's bugzilla: http://bugs.gentoo.org/show_bug.cgi?id=99810 Cc: Sam Ravnborg Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- scripts/kconfig/Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'scripts/kconfig/Makefile') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 2fcb244a9e1..0dd96919de3 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -116,6 +116,15 @@ endif clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ .tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c +# Needed for systems without gettext +KBUILD_HAVE_NLS := $(shell \ + if echo "\#include " | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \ + then echo yes ; \ + else echo no ; fi) +ifeq ($(KBUILD_HAVE_NLS),no) +HOSTCFLAGS += -DKBUILD_NO_NLS +endif + # generated files seem to need this to find local include files HOSTCFLAGS_lex.zconf.o := -I$(src) HOSTCFLAGS_zconf.tab.o := -I$(src) -- cgit From ab919c06144cfb11c05b5b5cd291daa96ac2e423 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sun, 6 Nov 2005 11:05:21 +0100 Subject: kconfig: fix xconfig on fedora 2 & 3 (x86_64) From: Than Ngo qt as installed on fedora core (2 and 3) does not work with vanilla kernel. The linker fails to locate the qt lib: Actual Results: # make xconfig HOSTLD scripts/kconfig/qconf /usr/bin/ld: cannot find -lqt collect2: ld returned 1 exit status Than Ngo has provided following fix for the bug. Cc: Than Ngo Acked-by: Dave Jones Signed-off-by: Sam Ravnborg --- scripts/kconfig/Makefile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'scripts/kconfig/Makefile') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 0dd96919de3..455aeabd95d 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -129,7 +129,7 @@ endif HOSTCFLAGS_lex.zconf.o := -I$(src) HOSTCFLAGS_zconf.tab.o := -I$(src) -HOSTLOADLIBES_qconf = -L$(QTLIBPATH) -Wl,-rpath,$(QTLIBPATH) -l$(QTLIB) -ldl +HOSTLOADLIBES_qconf = -L$(QTLIBPATH) -Wl,-rpath,$(QTLIBPATH) -l$(LIBS_QT) -ldl HOSTCXXFLAGS_qconf.o = -I$(QTDIR)/include -D LKC_DIRECT_LINK HOSTLOADLIBES_gconf = `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --libs` @@ -163,11 +163,16 @@ $(obj)/.tmp_qtcheck: false; \ fi; \ LIBPATH=$$DIR/lib; LIB=qt; \ - $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ - LIBPATH=$$DIR/lib/$$($(HOSTCXX) -print-multi-os-directory); \ - if [ -f $$LIBPATH/libqt-mt.so ]; then LIB=qt-mt; fi; \ + if [ -f $$QTLIB/libqt-mt.so ] ; then \ + LIB=qt-mt; \ + LIBPATH=$$QTLIB; \ + else \ + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ + LIBPATH=$$DIR/lib/$$($(HOSTCXX) -print-multi-os-directory); \ + if [ -f $$LIBPATH/libqt-mt.so ]; then LIB=qt-mt; fi; \ + fi; \ echo "QTDIR=$$DIR" > $@; echo "QTLIBPATH=$$LIBPATH" >> $@; \ - echo "QTLIB=$$LIB" >> $@; \ + echo "LIBS_QT=$$LIB" >> $@; \ if [ ! -x $$DIR/bin/moc -a -x /usr/bin/moc ]; then \ echo "*"; \ echo "* Unable to find $$DIR/bin/moc, using /usr/bin/moc instead."; \ -- cgit From 4ecc65e423ef10bdbec12362609b15fa8e8627c8 Mon Sep 17 00:00:00 2001 From: Yuri Vasilevski Date: Mon, 7 Nov 2005 00:57:53 -0800 Subject: [PATCH] typo correction for fix-build-on-nls-free-systems A typo fix for fix-build-on-nls-free-systems.patch that caused all systems to be detected as not having NLS. Signed-off-by: Yuri Vasilevski Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- scripts/kconfig/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts/kconfig/Makefile') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 455aeabd95d..c65c435c492 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -118,7 +118,7 @@ clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ # Needed for systems without gettext KBUILD_HAVE_NLS := $(shell \ - if echo "\#include " | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \ + if echo "\#include " | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \ then echo yes ; \ else echo no ; fi) ifeq ($(KBUILD_HAVE_NLS),no) -- cgit From 491d711035dc08071ed58cf470f15efadb67cb1c Mon Sep 17 00:00:00 2001 From: Roman Zippel Date: Tue, 8 Nov 2005 21:34:50 -0800 Subject: [PATCH] kconfig: update kconfig Makefile Remove the long obsolete zconf.tab.h and fix kconfig make rules to generate the correct output files. Setting LKC_GENPARSER will now also update the shipped files. Signed-off-by: Roman Zippel Cc: Sam Ravnborg Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- scripts/kconfig/Makefile | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'scripts/kconfig/Makefile') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index c65c435c492..65e3e737125 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -114,7 +114,7 @@ gconf-objs := gconf.o kconfig_load.o zconf.tab.o endif clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ - .tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c + .tmp_gtkcheck zconf.tab.c lex.zconf.c # Needed for systems without gettext KBUILD_HAVE_NLS := $(shell \ @@ -136,12 +136,6 @@ HOSTLOADLIBES_gconf = `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --libs` HOSTCFLAGS_gconf.o = `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --cflags` \ -D LKC_DIRECT_LINK -$(obj)/conf.o $(obj)/mconf.o $(obj)/qconf.o $(obj)/gconf.o $(obj)/kxgettext: $(obj)/zconf.tab.h - -$(obj)/zconf.tab.h: $(src)/zconf.tab.h_shipped -$(obj)/zconf.tab.c: $(src)/zconf.tab.c_shipped -$(obj)/lex.zconf.c: $(src)/lex.zconf.c_shipped - $(obj)/qconf.o: $(obj)/.tmp_qtcheck ifeq ($(qconf-target),1) @@ -230,13 +224,15 @@ $(obj)/lkc_defs.h: $(src)/lkc_proto.h ifdef LKC_GENPARSER -$(obj)/zconf.tab.c: $(obj)/zconf.y -$(obj)/zconf.tab.h: $(obj)/zconf.tab.c +$(obj)/zconf.tab.c: $(src)/zconf.y +$(obj)/lex.zconf.c: $(src)/zconf.l %.tab.c: %.y - bison -t -d -v -b $* -p $(notdir $*) $< + bison -l -b $* -p $(notdir $*) $< + cp $@ $@_shipped lex.%.c: %.l - flex -P$(notdir $*) -o$@ $< + flex -L -P$(notdir $*) -o$@ $< + cp $@ $@_shipped endif -- cgit From 7a88488bbc231e48a4a88ee2569bc0cc5d706f0a Mon Sep 17 00:00:00 2001 From: Roman Zippel Date: Tue, 8 Nov 2005 21:34:51 -0800 Subject: [PATCH] kconfig: use gperf for kconfig keywords Use gperf to generate a hash for the kconfig keywords. This greatly reduces the size of the generated scanner and makes it easier to extend kconfig. Signed-off-by: Roman Zippel Cc: Sam Ravnborg Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- scripts/kconfig/Makefile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'scripts/kconfig/Makefile') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 65e3e737125..9d67782b812 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -114,7 +114,7 @@ gconf-objs := gconf.o kconfig_load.o zconf.tab.o endif clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ - .tmp_gtkcheck zconf.tab.c lex.zconf.c + .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c # Needed for systems without gettext KBUILD_HAVE_NLS := $(shell \ @@ -201,7 +201,7 @@ $(obj)/.tmp_gtkcheck: fi endif -$(obj)/zconf.tab.o: $(obj)/lex.zconf.c +$(obj)/zconf.tab.o: $(obj)/lex.zconf.c $(obj)/zconf.hash.c $(obj)/kconfig_load.o: $(obj)/lkc_defs.h @@ -217,7 +217,7 @@ $(obj)/lkc_defs.h: $(src)/lkc_proto.h ### -# The following requires flex/bison +# The following requires flex/bison/gperf # By default we use the _shipped versions, uncomment the following line if # you are modifying the flex/bison src. # LKC_GENPARSER := 1 @@ -226,6 +226,7 @@ ifdef LKC_GENPARSER $(obj)/zconf.tab.c: $(src)/zconf.y $(obj)/lex.zconf.c: $(src)/zconf.l +$(obj)/zconf.hash.c: $(src)/zconf.gperf %.tab.c: %.y bison -l -b $* -p $(notdir $*) $< @@ -235,4 +236,8 @@ lex.%.c: %.l flex -L -P$(notdir $*) -o$@ $< cp $@ $@_shipped +%.hash.c: %.gperf + gperf < $< > $@ + cp $@ $@_shipped + endif -- cgit From b3a5225f31180322fd7d692fd4cf786702826b94 Mon Sep 17 00:00:00 2001 From: Roman Zippel Date: Mon, 21 Nov 2005 21:32:38 -0800 Subject: [PATCH] prefer pkg-config for the QT check This makes pkg-config now the prefered way to configure QT and properly fixes the recent Fedora breakage and leaves the old QT detection as fallback mechanism. Signed-off-by: Roman Zippel Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- scripts/kconfig/Makefile | 68 +++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 29 deletions(-) (limited to 'scripts/kconfig/Makefile') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 9d67782b812..a96153fc793 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -129,8 +129,8 @@ endif HOSTCFLAGS_lex.zconf.o := -I$(src) HOSTCFLAGS_zconf.tab.o := -I$(src) -HOSTLOADLIBES_qconf = -L$(QTLIBPATH) -Wl,-rpath,$(QTLIBPATH) -l$(LIBS_QT) -ldl -HOSTCXXFLAGS_qconf.o = -I$(QTDIR)/include -D LKC_DIRECT_LINK +HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK HOSTLOADLIBES_gconf = `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --libs` HOSTCFLAGS_gconf.o = `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --cflags` \ @@ -139,40 +139,50 @@ HOSTCFLAGS_gconf.o = `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --cflags` \ $(obj)/qconf.o: $(obj)/.tmp_qtcheck ifeq ($(qconf-target),1) -MOC = $(QTDIR)/bin/moc -QTLIBPATH = $(QTDIR)/lib +$(obj)/.tmp_qtcheck: $(src)/Makefile -include $(obj)/.tmp_qtcheck # QT needs some extra effort... $(obj)/.tmp_qtcheck: - @set -e; for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ - if [ -f $$d/include/qconfig.h ]; then DIR=$$d; break; fi; \ - done; \ - if [ -z "$$DIR" ]; then \ - echo "*"; \ - echo "* Unable to find the QT installation. Please make sure that the"; \ - echo "* QT development package is correctly installed and the QTDIR"; \ - echo "* environment variable is set to the correct location."; \ - echo "*"; \ - false; \ - fi; \ - LIBPATH=$$DIR/lib; LIB=qt; \ - if [ -f $$QTLIB/libqt-mt.so ] ; then \ - LIB=qt-mt; \ - LIBPATH=$$QTLIB; \ + @set -e; echo " CHECK qt"; dir=""; pkg=""; \ + pkg-config --exists qt 2> /dev/null && pkg=qt; \ + pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ + if [ -n "$$pkg" ]; then \ + cflags="\$$(shell pkg-config $$pkg --cflags)"; \ + libs="\$$(shell pkg-config $$pkg --libs)"; \ + moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \ + dir="$$(pkg-config $$pkg --variable=prefix)"; \ else \ - $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ - LIBPATH=$$DIR/lib/$$($(HOSTCXX) -print-multi-os-directory); \ - if [ -f $$LIBPATH/libqt-mt.so ]; then LIB=qt-mt; fi; \ + for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ + if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \ + done; \ + if [ -z "$$dir" ]; then \ + echo "*"; \ + echo "* Unable to find the QT installation. Please make sure that"; \ + echo "* the QT development package is correctly installed and"; \ + echo "* either install pkg-config or set the QTDIR environment"; \ + echo "* variable to the correct location."; \ + echo "*"; \ + false; \ + fi; \ + libpath=$$dir/lib; lib=qt; osdir=""; \ + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ + osdir=x$$($(HOSTCXX) -print-multi-os-directory); \ + test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \ + test -f $$libpath/libqt-mt.so && lib=qt-mt; \ + cflags="-I$$dir/include"; \ + libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \ + moc="$$dir/bin/moc"; \ fi; \ - echo "QTDIR=$$DIR" > $@; echo "QTLIBPATH=$$LIBPATH" >> $@; \ - echo "LIBS_QT=$$LIB" >> $@; \ - if [ ! -x $$DIR/bin/moc -a -x /usr/bin/moc ]; then \ + if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \ echo "*"; \ - echo "* Unable to find $$DIR/bin/moc, using /usr/bin/moc instead."; \ + echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \ echo "*"; \ - echo "MOC=/usr/bin/moc" >> $@; \ - fi + moc="/usr/bin/moc"; \ + fi; \ + echo "KC_QT_CFLAGS=$$cflags" > $@; \ + echo "KC_QT_LIBS=$$libs" >> $@; \ + echo "KC_QT_MOC=$$moc" >> $@ endif $(obj)/gconf.o: $(obj)/.tmp_gtkcheck @@ -210,7 +220,7 @@ $(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h $(obj)/gconf.o: $(obj)/lkc_defs.h $(obj)/%.moc: $(src)/%.h - $(MOC) -i $< -o $@ + $(KC_QT_MOC) -i $< -o $@ $(obj)/lkc_defs.h: $(src)/lkc_proto.h sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' -- cgit