Re: Compiling on older kernels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 10 May 2006 04:47, Trent Piepho wrote:
> On Tue, 9 May 2006, Rusty Scott wrote:
> > Hey is anyone working on making sure this still supports older kernels?
> > I'm working with a hardware vendor who is making linux his area of
> > primary support.  We are having a lot of trouble compiling the current
> > Hg against anything other than 2.6.16.
> >
> > I saw a Trent Piepho patch a while back that came by this list
> > concerning the renaming of semaphore to mutex at 2.6.16.  I haven't seen
> > it applied (I think he was reworking it possibly?)
>
> The original patch was applied, but the reworked one:
> http://www.linuxtv.org/pipermail/linux-dvb/2006-April/009510.html
>
> Wasn't commented apon.  It didn't add new compatability, just changed the
> way existing compatability worked to do more in compat.h and less in the
> drivers.

I don't know enough about what LKML's reaction to this would be - can anyone 
say if this would be acceptable? I find it OK myself...

> The make *config targets don't work properly on older kernels.  They don't
> always work correctly on 2.6.16 either for that matter.  I posted a patch
> that fixed this:
> http://www.linuxtv.org/pipermail/linux-dvb/2006-April/009940.html
> but no response to that either.

Well I tried this, but it doesn't work right for me (update patch against 
latest v4l-dvb attached). I went into my /usr/src/linux and ran "make 
distclean" to make sure everything was gone. Then I went into v4l-dvb and 
typed "make menuconfig":

orac v4l-dvb.usbfix # make menuconfig
make -C /home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l menuconfig
make[1]: Entering directory `/home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l'
scripts/make_makefile.pl
make[1]: Leaving directory `/home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l'
make[1]: Entering directory `/home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l'
make[1]: Warning: File `Makefile.media' has modification time 4.5 s in the 
future
creating symbolic links...
make -C /lib/modules/2.6.16.1/build -f /home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l/Makefile.kernel 
config-targets=1 mixed-targets=0 dot-config=0 v4l-mconf
make[2]: Entering directory `/usr/src/linux-2.6.16.1'
/home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l/Makefile.kernel:22: /Makefile: 
No such file or directory
make[2]: *** No rule to make target `/Makefile'.  Stop.
make[2]: Leaving directory `/usr/src/linux-2.6.16.1'
make[1]: *** [/lib/modules/2.6.16.1/build/scripts/kconfig/mconf] Error 2
make[1]: Leaving directory `/home/adq/dev/dvb/linuxtv.org/v4l-dvb.usbfix/v4l'
make: *** [menuconfig] Error 2

Perhaps something has become broken with the newer v4l-dvb makefile?
diff -r 6325d19e2e93 v4l/Makefile
--- a/v4l/Makefile	Fri May 12 23:38:03 2006 +0100
+++ b/v4l/Makefile	Sat May 13 00:23:48 2006 +0100
@@ -244,65 +244,55 @@ reload::
 #################################################
 # Configuration rules
 
-# SHELL used by kbuild
-CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
-          else if [ -x /bin/bash ]; then echo /bin/bash; \
-          else echo sh; fi ; fi)
-
-build := srctree=$(KDIR) HOSTCXX="$(CXX)" HOSTCC="$(HOSTCC)" CONFIG_SHELL="$(CONFIG_SHELL)" -f $(KDIR)/scripts/Makefile.build obj
-
-xconfig:: links .version
-	-if [ ! -f $(KDIR)/scripts/kconfig/qconf ]; then \
-		$(MAKE) -C $(KDIR) $(build)=scripts/kconfig qconf-target=1 scripts/kconfig/qconf; \
-	fi
-	./scripts/make_kconfig.pl
-	$(KDIR)/scripts/kconfig/qconf Kconfig
-	./scripts/make_noconfig.pl
-
-gconfig:: links .version
-	-if [ ! -f $(KDIR)/scripts/kconfig/gconf ]; then \
-		$(MAKE) -C $(KDIR) $(build)=scripts/kconfig scripts/kconfig/gconf; \
-	fi
-	./scripts/make_kconfig.pl
-	$(KDIR)/scripts/kconfig/gconf Kconfig
-	./scripts/make_noconfig.pl
-
-config:: links .version
-	-if [ ! -f $(KDIR)/scripts/kconfig/conf ]; then \
-		$(MAKE) -C $(KDIR) $(build)=scripts/kconfig scripts/kconfig/conf; \
-	fi
-	./scripts/make_kconfig.pl
-	$(KDIR)/scripts/kconfig/conf Kconfig
-	./scripts/make_noconfig.pl
-
-menuconfig:: links .version
-	./scripts/make_kconfig.pl
-	-rm scripts/lxdialog scripts/kconfig
-	-if [ -d $(KDIR)/scripts/lxdialog ]; then \
-		if [ ! -f $(KDIR)/scripts/lxdialog/lxdialog ]; then \
-			$(MAKE) -C $(KDIR) $(build)=scripts/lxdialog; \
-		fi; \
-		ln -s $(KDIR)/scripts/lxdialog scripts/lxdialog; \
-	fi
-
-	-if [ -d $(KDIR)/scripts/kconfig ]; then \
-		if [  -d $(KDIR)/scripts/kconfig/lxdialog ]; then \
-			if [ ! -f $(KDIR)/scripts/kconfig/lxdialog ]; then \
-				$(MAKE) -C $(KDIR) $(build)=scripts/kconfig/lxdialog; \
-			fi; \
-		fi; \
-		if [ ! -f $(KDIR)/scripts/kconfig/mconf ]; then \
-			$(MAKE) -C $(KDIR) $(build)=scripts/kconfig scripts/kconfig/mconf; \
-		fi; \
-		ln -s $(KDIR)/scripts/kconfig scripts/kconfig; \
-	fi
-
-	$(KDIR)/scripts/kconfig/mconf Kconfig
+# Kernel config programs
+QCONF := $(KDIR)/scripts/kconfig/qconf
+GCONF := $(KDIR)/scripts/kconfig/gconf
+MCONF := $(KDIR)/scripts/kconfig/mconf
+CONF := $(KDIR)/scripts/kconfig/conf
+
+# lxdialog can be in either scripts/lxdialog or scripts/kconfig/lxdialog
+LXDIALOG_DIR := $(shell if [ -d $(KDIR)/scripts/kconfig/lxdialog ]; then echo kconfig/ ; fi)
+LXDIALOG_LNK := $(if $(LXDIALOG_DIR),scripts/kconfig,scripts/lxdialog)
+LXDIALOG := $(KDIR)/scripts/$(LXDIALOG_DIR)lxdialog/lxdialog
+
+xconfig:: links .version $(QCONF)
+	./scripts/make_kconfig.pl
+	$(QCONF) Kconfig
+	./scripts/make_noconfig.pl
+
+gconfig:: links .version $(GCONF)
+	./scripts/make_kconfig.pl
+	$(QCONF) Kconfig
+	./scripts/make_noconfig.pl
+
+config:: links .version $(CONF)
+	./scripts/make_kconfig.pl
+	$(CONF) Kconfig
+	./scripts/make_noconfig.pl
+
+menuconfig:: links .version $(MCONF) lxdialog
+	./scripts/make_kconfig.pl
+	$(MCONF) Kconfig
 	./scripts/make_noconfig.pl
 
 allyesconfig allmodconfig:: links .version
 	./scripts/make_kconfig.pl 1
 	./scripts/make_noconfig.pl
+
+# rule to build kernel conf programs
+KMAKEVARS := config-targets=1 mixed-targets=0 dot-config=0
+$(QCONF) $(GCONF) $(MCONF) $(CONF):
+	$(MAKE) -C $(KDIR) -f $(PWD)/Makefile.kernel $(KMAKEVARS) v4l-$(notdir $@)
+
+# lxdialog has two parts, a symlink and the actual binary
+.PHONY: lxdialog
+lxdialog: $(LXDIALOG) $(LXDIALOG_LNK)
+
+$(LXDIALOG_LNK):
+	ln -snf $(KDIR)/$(LXDIALOG_LNK) $(LXDIALOG_LNK)
+
+$(LXDIALOG):
+	$(MAKE) -C $(KDIR) -f $(PWD)/Makefile.kernel $(KMAKEVARS) v4l-$(LXDIALOG)
 
 #################################################
 # IVTV link rules
diff -r 6325d19e2e93 v4l/Makefile.kernel
--- /dev/null	Thu Jan  1 00:00:00 1970 +0000
+++ b/v4l/Makefile.kernel	Sat May 13 00:23:48 2006 +0100
@@ -0,0 +1,46 @@
+# This Makefile is used to build sources that are part of the kernel tree.
+# What we want are the various programs used by the kconfig system.  We can't
+# just directly call the top-level kernel Makefile, as it doesn't provide
+# targets to only build the kconfig system.  It provides targets to build
+# the kconfig system *and then configure the kernel*.
+
+# What we do is include the top-level kernel Makefile here, to get all the
+# variables and rules it defines, and then add our own targets to just build
+# the kconfig system.  You can think of this file as a modified version of the
+# top-level kernel Makefile that has "kconfig build only" targets added to it.
+# Each of these new targets has the prefix v4l- so it doesn't conflict with
+# any targets in the kernel Makefile.
+
+# Like the kernel Makefile, this Makefile should have the cwd be the root
+# of the kernel source.
+
+# These should be defined on the command line, to override the kernel Makefile
+# config-targets := 1
+# mixed-targets := 0
+# dot-config := 0
+
+include $(KDIR)/Makefile
+
+# Used by the config target
+v4l-conf: scripts_basic
+	$(MAKE) $(build)=scripts/kconfig scripts/kconfig/conf
+
+# Used by the xconfig target
+v4l-qconf: scripts_basic
+	$(MAKE) $(build)=scripts/kconfig qconf-target=1 scripts/kconfig/qconf
+
+# Used by the qconfig target
+v4l-gconf: scripts_basic
+	$(MAKE) $(build)=scripts/kconfig gconf-target=1 scripts/kconfig/gconf
+
+# Used by the menuconfig target, also needs lxdialog
+v4l-mconf: scripts_basic
+	$(MAKE) $(build)=scripts/kconfig scripts/kconfig/mconf
+
+# Rule used for kernel where lxdialog is in directory scripts/lxdialog
+v4l-%/scripts/lxdialog/lxdialog: scripts_basic
+	$(MAKE) $(build)=scripts/lxdialog
+
+# Rule used for kernel where lxdialog is in directory scripts/kconfig/lxdialog
+v4l-%/scripts/kconfig/lxdialog/lxdialog: scripts_basic
+	$(MAKE) $(build)=scripts/kconfig/lxdialog
_______________________________________________

linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux