* [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
@ 2006-12-01 10:24 Jan Kiszka
2006-12-01 16:45 ` Wolfgang Grandegger
0 siblings, 1 reply; 10+ messages in thread
From: Jan Kiszka @ 2006-12-01 10:24 UTC (permalink / raw)
To: xenomai-help, xenomai-core
[-- Attachment #1: Type: text/plain, Size: 974 bytes --]
Hi,
the new Xenomai example repository has been created. I don't want to
repeat here what is explained already on the related wiki page, please
have a look at
http://www.xenomai.org/index.php/Examples
Instead, let me sketch what could be done next:
o Port existing examples, snippets, demos from ksrc/skins/* over, make
them compilable and runnable if required.
o Identify what kind of examples are lacking. You, the user, is needed
here. What do *you* think is missing, what would be helpful to show?
o Check what is needed to compile kernel-based examples over PPC 2.4.
Philippe indicated that some switches are likely missing (x86 is fine
already, other archs are 2.6-only).
o Regarding RTDM: driver patterns would be nice. Someone (who I don't
recall ATM, sorry) once posted a template for a PCI driver. Feel
invited to repost an updated version. Any further suggestion or ready
code is welcome as well.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 10:24 [Xenomai-core] [ANNOUNCE] Xenomai Example Repository Jan Kiszka
@ 2006-12-01 16:45 ` Wolfgang Grandegger
2006-12-01 17:22 ` Jan Kiszka
0 siblings, 1 reply; 10+ messages in thread
From: Wolfgang Grandegger @ 2006-12-01 16:45 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai-help, xenomai-core
Jan Kiszka wrote:
> Hi,
>
> the new Xenomai example repository has been created. I don't want to
> repeat here what is explained already on the related wiki page, please
> have a look at
>
> http://www.xenomai.org/index.php/Examples
>
> Instead, let me sketch what could be done next:
>
> o Port existing examples, snippets, demos from ksrc/skins/* over, make
> them compilable and runnable if required.
>
> o Identify what kind of examples are lacking. You, the user, is needed
> here. What do *you* think is missing, what would be helpful to show?
>
> o Check what is needed to compile kernel-based examples over PPC 2.4.
> Philippe indicated that some switches are likely missing (x86 is fine
> already, other archs are 2.6-only).
Some time ago I sent a patch for RTnet using the "kernel CFLAGS
capturing" trick to get proper switches for 2.4:
http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
We could do the same trick here.
>
> o Regarding RTDM: driver patterns would be nice. Someone (who I don't
> recall ATM, sorry) once posted a template for a PCI driver. Feel
> invited to repost an updated version. Any further suggestion or ready
> code is welcome as well.
>
> Jan
Wolfgang.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 16:45 ` Wolfgang Grandegger
@ 2006-12-01 17:22 ` Jan Kiszka
2006-12-01 17:54 ` [Xenomai-help] " Philippe Gerum
2006-12-01 22:35 ` Wolfgang Grandegger
0 siblings, 2 replies; 10+ messages in thread
From: Jan Kiszka @ 2006-12-01 17:22 UTC (permalink / raw)
To: Wolfgang Grandegger; +Cc: xenomai-help, xenomai-core
[-- Attachment #1: Type: text/plain, Size: 1641 bytes --]
Wolfgang Grandegger wrote:
> Jan Kiszka wrote:
>> Hi,
>>
>> the new Xenomai example repository has been created. I don't want to
>> repeat here what is explained already on the related wiki page, please
>> have a look at
>>
>> http://www.xenomai.org/index.php/Examples
>>
>> Instead, let me sketch what could be done next:
>>
>> o Port existing examples, snippets, demos from ksrc/skins/* over, make
>> them compilable and runnable if required.
>>
>> o Identify what kind of examples are lacking. You, the user, is needed
>> here. What do *you* think is missing, what would be helpful to show?
>>
>> o Check what is needed to compile kernel-based examples over PPC 2.4.
>> Philippe indicated that some switches are likely missing (x86 is fine
>> already, other archs are 2.6-only).
>
> Some time ago I sent a patch for RTnet using the "kernel CFLAGS
> capturing" trick to get proper switches for 2.4:
>
> http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
>
>
> We could do the same trick here.
Yeah, I had a look at this before. The point is that I would prefer to
keep things _simple_ and self-contained. This capturing requires some
helper Makefile and complex call nestings that likely only people with
advanced make and shell skills can understand and adopt to their projects.
But maybe things are that complicated already, and this is just
different complexity. How do you compile simple out-of-tree modules
against 2.4 PPC kernels? Are there any standard flags? Or is it
different for each board or each compiler version or whatever?
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-help] Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 17:22 ` Jan Kiszka
@ 2006-12-01 17:54 ` Philippe Gerum
2006-12-01 22:47 ` Wolfgang Grandegger
2006-12-01 22:35 ` Wolfgang Grandegger
1 sibling, 1 reply; 10+ messages in thread
From: Philippe Gerum @ 2006-12-01 17:54 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai-help, xenomai-core
On Fri, 2006-12-01 at 18:22 +0100, Jan Kiszka wrote:
> Wolfgang Grandegger wrote:
> > Jan Kiszka wrote:
> >> Hi,
> >>
> >> the new Xenomai example repository has been created. I don't want to
> >> repeat here what is explained already on the related wiki page, please
> >> have a look at
> >>
> >> http://www.xenomai.org/index.php/Examples
> >>
> >> Instead, let me sketch what could be done next:
> >>
> >> o Port existing examples, snippets, demos from ksrc/skins/* over, make
> >> them compilable and runnable if required.
> >>
> >> o Identify what kind of examples are lacking. You, the user, is needed
> >> here. What do *you* think is missing, what would be helpful to show?
> >>
> >> o Check what is needed to compile kernel-based examples over PPC 2.4.
> >> Philippe indicated that some switches are likely missing (x86 is fine
> >> already, other archs are 2.6-only).
> >
> > Some time ago I sent a patch for RTnet using the "kernel CFLAGS
> > capturing" trick to get proper switches for 2.4:
> >
> > http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
> >
> >
> > We could do the same trick here.
>
> Yeah, I had a look at this before. The point is that I would prefer to
> keep things _simple_ and self-contained. This capturing requires some
> helper Makefile and complex call nestings that likely only people with
> advanced make and shell skills can understand and adopt to their projects.
I tend to agree on the "keep it simple" mantra, but still, there are at
least two other aspects which are quite important too:
- Nobody should expect to be able to develop a complete project only
relying on paste-and-copy of example code. Since we are specifically
talking about Makefile rules, we could not provide any set that would
match everyone's project anyway, with respect to software and hardware
requirements. Therefore, at some point, people really need to know what
they are doing, which means that they should also know how to properly
build out-of-tree modules with _their_ own 2.4 setup (well, if any
"proper" solution exists, that is). And basically, I do hope that nobody
starts implementing kernel modules without having - at least - a vague
idea, about how to compile them for its platform in the first place...
- Given that there is life beyond x86, we need to make sure that all
Xenomai ports are considered equal, at least with respect to generic
issues. Whilst it's ok to provide a x86-only 2.4 Makefile for compiling
a x86-centric example, it's not for anything which could demonstrate a
feature on any platform.
This said, I agree that adding a fake module directory to capture the
flags set by the main kernel Makefile is one step beyond ugliness; the
other approach being to only provide a 2.6 Makefile frag. As 2007
approaches, I think that anyone still involved with projects relying on
2.4 kernels do know how to build 2.4 modules for the targeted platform.
>
> But maybe things are that complicated already, and this is just
> different complexity. How do you compile simple out-of-tree modules
> against 2.4 PPC kernels? Are there any standard flags? Or is it
> different for each board or each compiler version or whatever?
>
> Jan
>
> _______________________________________________
> Xenomai-help mailing list
> Xenomai-help@domain.hid
> https://mail.gna.org/listinfo/xenomai-help
--
Philippe.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 17:22 ` Jan Kiszka
2006-12-01 17:54 ` [Xenomai-help] " Philippe Gerum
@ 2006-12-01 22:35 ` Wolfgang Grandegger
2006-12-03 14:53 ` Jan Kiszka
1 sibling, 1 reply; 10+ messages in thread
From: Wolfgang Grandegger @ 2006-12-01 22:35 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai-help, xenomai-core
Jan Kiszka wrote:
> Wolfgang Grandegger wrote:
>> Jan Kiszka wrote:
>>> Hi,
>>>
>>> the new Xenomai example repository has been created. I don't want to
>>> repeat here what is explained already on the related wiki page, please
>>> have a look at
>>>
>>> http://www.xenomai.org/index.php/Examples
>>>
>>> Instead, let me sketch what could be done next:
>>>
>>> o Port existing examples, snippets, demos from ksrc/skins/* over, make
>>> them compilable and runnable if required.
>>>
>>> o Identify what kind of examples are lacking. You, the user, is needed
>>> here. What do *you* think is missing, what would be helpful to show?
>>>
>>> o Check what is needed to compile kernel-based examples over PPC 2.4.
>>> Philippe indicated that some switches are likely missing (x86 is fine
>>> already, other archs are 2.6-only).
>> Some time ago I sent a patch for RTnet using the "kernel CFLAGS
>> capturing" trick to get proper switches for 2.4:
>>
>> http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
>>
>>
>> We could do the same trick here.
>
> Yeah, I had a look at this before. The point is that I would prefer to
> keep things _simple_ and self-contained. This capturing requires some
> helper Makefile and complex call nestings that likely only people with
> advanced make and shell skills can understand and adopt to their projects.
>
> But maybe things are that complicated already, and this is just
> different complexity. How do you compile simple out-of-tree modules
> against 2.4 PPC kernels? Are there any standard flags? Or is it
> different for each board or each compiler version or whatever?
I just cut and paste the flags from a kernel module make. For PPC, there
are plenty of flags, not board but some are processor depended, but I'm
unable to tell which one are really required. For this reason I like the
module capturing trick.
Wolfgang.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-help] Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 17:54 ` [Xenomai-help] " Philippe Gerum
@ 2006-12-01 22:47 ` Wolfgang Grandegger
2006-12-01 22:59 ` Philippe Gerum
0 siblings, 1 reply; 10+ messages in thread
From: Wolfgang Grandegger @ 2006-12-01 22:47 UTC (permalink / raw)
To: rpm; +Cc: xenomai-help, Jan Kiszka, xenomai-core
Philippe Gerum wrote:
> On Fri, 2006-12-01 at 18:22 +0100, Jan Kiszka wrote:
>> Wolfgang Grandegger wrote:
>>> Jan Kiszka wrote:
>>>> Hi,
>>>>
>>>> the new Xenomai example repository has been created. I don't want to
>>>> repeat here what is explained already on the related wiki page, please
>>>> have a look at
>>>>
>>>> http://www.xenomai.org/index.php/Examples
>>>>
>>>> Instead, let me sketch what could be done next:
>>>>
>>>> o Port existing examples, snippets, demos from ksrc/skins/* over, make
>>>> them compilable and runnable if required.
>>>>
>>>> o Identify what kind of examples are lacking. You, the user, is needed
>>>> here. What do *you* think is missing, what would be helpful to show?
>>>>
>>>> o Check what is needed to compile kernel-based examples over PPC 2.4.
>>>> Philippe indicated that some switches are likely missing (x86 is fine
>>>> already, other archs are 2.6-only).
>>> Some time ago I sent a patch for RTnet using the "kernel CFLAGS
>>> capturing" trick to get proper switches for 2.4:
>>>
>>> http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
>>>
>>>
>>> We could do the same trick here.
>> Yeah, I had a look at this before. The point is that I would prefer to
>> keep things _simple_ and self-contained. This capturing requires some
>> helper Makefile and complex call nestings that likely only people with
>> advanced make and shell skills can understand and adopt to their projects.
>
> I tend to agree on the "keep it simple" mantra, but still, there are at
> least two other aspects which are quite important too:
>
> - Nobody should expect to be able to develop a complete project only
> relying on paste-and-copy of example code. Since we are specifically
> talking about Makefile rules, we could not provide any set that would
> match everyone's project anyway, with respect to software and hardware
> requirements. Therefore, at some point, people really need to know what
> they are doing, which means that they should also know how to properly
> build out-of-tree modules with _their_ own 2.4 setup (well, if any
> "proper" solution exists, that is). And basically, I do hope that nobody
> starts implementing kernel modules without having - at least - a vague
> idea, about how to compile them for its platform in the first place...
>
> - Given that there is life beyond x86, we need to make sure that all
> Xenomai ports are considered equal, at least with respect to generic
> issues. Whilst it's ok to provide a x86-only 2.4 Makefile for compiling
> a x86-centric example, it's not for anything which could demonstrate a
> feature on any platform.
>
> This said, I agree that adding a fake module directory to capture the
> flags set by the main kernel Makefile is one step beyond ugliness; the
> other approach being to only provide a 2.6 Makefile frag. As 2007
> approaches, I think that anyone still involved with projects relying on
> 2.4 kernels do know how to build 2.4 modules for the targeted platform.
I think the example modules should compile on any platform and the
"kernel CFLAGS capturing" trick is the most straight-forward way to do
it for 2.4. It simplifies our life, avoids fiddling with various arch
dependent flags in the Makefile, which will be even more ugly, and it
serves as an example on how to get proper flags. Therefore I tend to add
an appropriate script to the "scripts" subdirectory.
>> But maybe things are that complicated already, and this is just
>> different complexity. How do you compile simple out-of-tree modules
>> against 2.4 PPC kernels? Are there any standard flags? Or is it
>> different for each board or each compiler version or whatever?
>>
>> Jan
>>
>> _______________________________________________
>> Xenomai-help mailing list
>> Xenomai-help@domain.hid
>> https://mail.gna.org/listinfo/xenomai-help
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-help] Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 22:47 ` Wolfgang Grandegger
@ 2006-12-01 22:59 ` Philippe Gerum
0 siblings, 0 replies; 10+ messages in thread
From: Philippe Gerum @ 2006-12-01 22:59 UTC (permalink / raw)
To: Wolfgang Grandegger; +Cc: xenomai-help, Jan Kiszka, xenomai-core
On Fri, 2006-12-01 at 23:47 +0100, Wolfgang Grandegger wrote:
> >
[...]
>
> > This said, I agree that adding a fake module directory to capture the
> > flags set by the main kernel Makefile is one step beyond ugliness; the
> > other approach being to only provide a 2.6 Makefile frag. As 2007
> > approaches, I think that anyone still involved with projects relying on
> > 2.4 kernels do know how to build 2.4 modules for the targeted platform.
>
> I think the example modules should compile on any platform and the
> "kernel CFLAGS capturing" trick is the most straight-forward way to do
> it for 2.4. It simplifies our life, avoids fiddling with various arch
> dependent flags in the Makefile, which will be even more ugly, and it
> serves as an example on how to get proper flags. Therefore I tend to add
> an appropriate script to the "scripts" subdirectory.
That would be acceptable too; the capture trick is ugly, but if we
really want to have the generic examples available to all platforms, I
see no other way to get the exact compilation and link flags. So it's
basically a matter of choice: either we don't provide any Makefile frag
for 2.4, or we implement the capture trick so that every platform can
compile them.
--
Philippe.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-01 22:35 ` Wolfgang Grandegger
@ 2006-12-03 14:53 ` Jan Kiszka
2006-12-03 21:14 ` Wolfgang Grandegger
0 siblings, 1 reply; 10+ messages in thread
From: Jan Kiszka @ 2006-12-03 14:53 UTC (permalink / raw)
To: Wolfgang Grandegger; +Cc: xenomai-help, xenomai-core
[-- Attachment #1: Type: text/plain, Size: 3806 bytes --]
Wolfgang Grandegger wrote:
> Jan Kiszka wrote:
>
>> Wolfgang Grandegger wrote:
>>
>>> Jan Kiszka wrote:
>>>
>>>> Hi,
>>>>
>>>> the new Xenomai example repository has been created. I don't want to
>>>>
>>>> repeat here what is explained already on the related wiki page, please
>>>>
>>>> have a look at
>>>>
>>>> http://www.xenomai.org/index.php/Examples
>>>>
>>>> Instead, let me sketch what could be done next:
>>>>
>>>> o Port existing examples, snippets, demos from ksrc/skins/* over, make
>>>>
>>>> them compilable and runnable if required.
>>>>
>>>> o Identify what kind of examples are lacking. You, the user, is needed
>>>>
>>>> here. What do *you* think is missing, what would be helpful to show?
>>>>
>>>> o Check what is needed to compile kernel-based examples over PPC 2.4.
>>>>
>>>> Philippe indicated that some switches are likely missing (x86 is fine
>>>>
>>>> already, other archs are 2.6-only).
>>>>
>>> Some time ago I sent a patch for RTnet using the "kernel CFLAGS
>>>
>>> capturing" trick to get proper switches for 2.4:
>>>
>>> http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
>>>
>>>
>>> We could do the same trick here.
>>>
>> Yeah, I had a look at this before. The point is that I would prefer to
>>
>> keep things _simple_ and self-contained. This capturing requires some
>>
>> helper Makefile and complex call nestings that likely only people with
>>
>> advanced make and shell skills can understand and adopt to their projects.
>>
>> But maybe things are that complicated already, and this is just
>>
>> different complexity. How do you compile simple out-of-tree modules
>>
>> against 2.4 PPC kernels? Are there any standard flags? Or is it
>>
>> different for each board or each compiler version or whatever?
>>
> I just cut and paste the flags from a kernel module make. For PPC, there
> are plenty of flags, not board but some are processor depended, but I'm
> unable to tell which one are really required. For this reason I like the
> module capturing trick.
>
What about this patch? I /seems/ to work (yeah, only tested on x86...), merging the
whole capturing stuff into the same Makefile. Please give it hell on PPC.
Index: rtdm/driver-api/Makefile
===================================================================
--- rtdm/driver-api/Makefile (Revision 1916)
+++ rtdm/driver-api/Makefile (Arbeitskopie)
@@ -47,23 +47,23 @@ ifneq ($(MODULES),)
OBJS := ${patsubst %, %.o, $(MODULES)}
CLEANMOD := ${patsubst %, .%*, $(MODULES)}
+PWD := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
-# Kernel 2.6
+### Kernel 2.6
ifeq ($(findstring 2.6,$(KSRC)),2.6)
obj-m := $(OBJS)
EXTRA_CFLAGS := -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/posix $(ADD_CFLAGS)
-PWD := $(shell pwd)
all::
$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules
-# Kernel 2.4
+### Kernel 2.4
else
+ARCH ?= $(shell uname -i)
INCLUDE := -I$(KSRC)/include -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/compat -I$(KSRC)/include/xenomai/posix
-CFLAGS += -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -DMODULE -D__KERNEL__ -DLINUX \
- -fno-strict-aliasing -fno-common $(INCLUDE) $(ADD_CFLAGS)
+CFLAGS += $(shell $(MAKE) -s -C $(KSRC) CC=$(CC) ARCH=$(ARCH) SUBDIRS=$(PWD) modules) $(INCLUDE) $(ADD_CFLAGS)
all:: $(OBJS)
@@ -74,3 +74,7 @@ clean::
$(RM) -R .tmp*
endif
+
+## Target for capturing 2.4 module CFLAGS
+modules:
+ @echo "$(CFLAGS)"
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-03 14:53 ` Jan Kiszka
@ 2006-12-03 21:14 ` Wolfgang Grandegger
2006-12-03 21:19 ` Jan Kiszka
0 siblings, 1 reply; 10+ messages in thread
From: Wolfgang Grandegger @ 2006-12-03 21:14 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai-help, xenomai-core
[-- Attachment #1: Type: text/plain, Size: 4923 bytes --]
Hi Jan,
Jan Kiszka wrote:
> Wolfgang Grandegger wrote:
>
>> Jan Kiszka wrote:
>>
>>> Wolfgang Grandegger wrote:
>>>
>>>> Jan Kiszka wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> the new Xenomai example repository has been created. I don't want to
>>>>>
>>>>> repeat here what is explained already on the related wiki page, please
>>>>>
>>>>> have a look at
>>>>>
>>>>> http://www.xenomai.org/index.php/Examples
>>>>>
>>>>> Instead, let me sketch what could be done next:
>>>>>
>>>>> o Port existing examples, snippets, demos from ksrc/skins/* over, make
>>>>>
>>>>> them compilable and runnable if required.
>>>>>
>>>>> o Identify what kind of examples are lacking. You, the user, is needed
>>>>>
>>>>> here. What do *you* think is missing, what would be helpful to show?
>>>>>
>>>>> o Check what is needed to compile kernel-based examples over PPC 2.4.
>>>>>
>>>>> Philippe indicated that some switches are likely missing (x86 is fine
>>>>>
>>>>> already, other archs are 2.6-only).
>>>>>
>>>> Some time ago I sent a patch for RTnet using the "kernel CFLAGS
>>>>
>>>> capturing" trick to get proper switches for 2.4:
>>>>
>>>> http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
>>>>
>>>>
>>>> We could do the same trick here.
>>>>
>>> Yeah, I had a look at this before. The point is that I would prefer to
>>>
>>> keep things _simple_ and self-contained. This capturing requires some
>>>
>>> helper Makefile and complex call nestings that likely only people with
>>>
>>> advanced make and shell skills can understand and adopt to their projects.
>>>
>>> But maybe things are that complicated already, and this is just
>>>
>>> different complexity. How do you compile simple out-of-tree modules
>>>
>>> against 2.4 PPC kernels? Are there any standard flags? Or is it
>>>
>>> different for each board or each compiler version or whatever?
>>>
>> I just cut and paste the flags from a kernel module make. For PPC, there
>> are plenty of flags, not board but some are processor depended, but I'm
>> unable to tell which one are really required. For this reason I like the
>> module capturing trick.
>>
> What about this patch? I /seems/ to work (yeah, only tested on x86...), merging the
> whole capturing stuff into the same Makefile. Please give it hell on PPC.
The attached Makefile works. I had to fix two problems. First, cross
compilation was not supported. I now take the CC from "xeno-config --cc"
for user space applications. I think "xeno-config" is intended only for
making user space applications and therefore CC should be specified on
the command line for kernel modules:
$ make KSRC=/devel/linuxppc_2_4_devel ARCH=ppc CC=ppc-linux-gcc
ppc-linux-gcc -D__KERNEL__ -I/devel/linuxppc_2_4_devel/include -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-fomit-frame-pointer -I/devel/linuxppc_2_4_devel/arch/ppc -fsigned-char
-msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -g
-ggdb -DMODULE
-I/devel/linuxppc_2_4_devel-2006_11_21_1134/include/xenomai
-I/devel/linuxppc_2_4_devel-2006_11_21_1134/include/xenomai/compat
-I/devel/linuxppc_2_4_devel-2006_11_21_1134/include/xenomai/posix -c
-o heartbeat-x86.o heartbeat-x86.c
Furthermore I removed "-I$(KSRC)/include", it is already included in the
captured CFLAGS.
Wolfgang.
>
> Index: rtdm/driver-api/Makefile
> ===================================================================
> --- rtdm/driver-api/Makefile (Revision 1916)
> +++ rtdm/driver-api/Makefile (Arbeitskopie)
> @@ -47,23 +47,23 @@ ifneq ($(MODULES),)
>
> OBJS := ${patsubst %, %.o, $(MODULES)}
> CLEANMOD := ${patsubst %, .%*, $(MODULES)}
> +PWD := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
>
> -# Kernel 2.6
> +### Kernel 2.6
> ifeq ($(findstring 2.6,$(KSRC)),2.6)
>
> obj-m := $(OBJS)
> EXTRA_CFLAGS := -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/posix $(ADD_CFLAGS)
> -PWD := $(shell pwd)
>
> all::
> $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules
>
> -# Kernel 2.4
> +### Kernel 2.4
> else
>
> +ARCH ?= $(shell uname -i)
> INCLUDE := -I$(KSRC)/include -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/compat -I$(KSRC)/include/xenomai/posix
> -CFLAGS += -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -DMODULE -D__KERNEL__ -DLINUX \
> - -fno-strict-aliasing -fno-common $(INCLUDE) $(ADD_CFLAGS)
> +CFLAGS += $(shell $(MAKE) -s -C $(KSRC) CC=$(CC) ARCH=$(ARCH) SUBDIRS=$(PWD) modules) $(INCLUDE) $(ADD_CFLAGS)
>
> all:: $(OBJS)
>
> @@ -74,3 +74,7 @@ clean::
> $(RM) -R .tmp*
>
> endif
> +
> +## Target for capturing 2.4 module CFLAGS
> +modules:
> + @echo "$(CFLAGS)"
>
>
> Jan
>
>
[-- Attachment #2: Makefile --]
[-- Type: text/plain, Size: 1839 bytes --]
###### CONFIGURATION ######
### List of applications to be build
APPLICATIONS =
### Note: to override the search path for the xeno-config script, use "make XENO=..."
### List of modules to be build
MODULES = heartbeat-x86
### Default to sources of currently running kernel
KSRC ?= /lib/modules/$(shell uname -r)/build
### Note: to override the kernel source path, use "make KSRC=..."
###### USER SPACE BUILD (no change required normally) ######
ifneq ($(APPLICATIONS),)
XENOCONFIG=$(shell PATH=$(XENO):$(XENO)/bin:$(PATH) which xeno-config 2>/dev/null)
### Sanity check
ifeq ($(XENOCONFIG),)
all::
@echo ">>> Invoke make like this: \"make XENO=/path/to/xeno-config\" <<<"
@echo
endif
CC=$(shell $(XENOCONFIG) --cc)
CFLAGS=$(shell $(XENOCONFIG) --xeno-cflags) $(MY_CFLAGS)
LDFLAGS=$(shell $(XENOCONFIG) --xeno-ldflags) $(MY_LDFLAGS) -lnative -lrtdm
all:: $(APPLICATIONS)
clean::
$(RM) $(APPLICATIONS) *.o
endif
###### KERNEL MODULE BUILD (no change required normally) ######
ifneq ($(MODULES),)
OBJS := ${patsubst %, %.o, $(MODULES)}
CLEANMOD := ${patsubst %, .%*, $(MODULES)}
PWD := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
### Kernel 2.6
ifeq ($(findstring 2.6,$(KSRC)),2.6)
obj-m := $(OBJS)
EXTRA_CFLAGS := -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/posix $(ADD_CFLAGS)
all::
$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules
### Kernel 2.4
else
ARCH ?= $(shell uname -i)
INCLUDE := -I$(KSRC)/include/xenomai -I$(KSRC)/include/xenomai/compat -I$(KSRC)/include/xenomai/posix
CFLAGS += $(shell $(MAKE) -s -C $(KSRC) CC=$(CC) ARCH=$(ARCH) SUBDIRS=$(PWD) modules) $(INCLUDE) $(ADD_CFLAGS)
all:: $(OBJS)
endif
clean::
$(RM) $(CLEANMOD) *.cmd *.o *.ko *.mod.c Module*.symvers
$(RM) -R .tmp*
endif
## Target for capturing 2.4 module CFLAGS
modules:
@echo "$(CFLAGS)"
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xenomai-core] [ANNOUNCE] Xenomai Example Repository
2006-12-03 21:14 ` Wolfgang Grandegger
@ 2006-12-03 21:19 ` Jan Kiszka
0 siblings, 0 replies; 10+ messages in thread
From: Jan Kiszka @ 2006-12-03 21:19 UTC (permalink / raw)
To: Wolfgang Grandegger; +Cc: xenomai-help, xenomai-core
[-- Attachment #1: Type: text/plain, Size: 3920 bytes --]
Wolfgang Grandegger wrote:
> Hi Jan,
>
> Jan Kiszka wrote:
>> Wolfgang Grandegger wrote:
>>
>>> Jan Kiszka wrote:
>>>
>>>> Wolfgang Grandegger wrote:
>>>>
>>>>> Jan Kiszka wrote:
>>>>>
>>>>>> Hi,
>>>>>> the new Xenomai example repository has been created. I
>>>>>> don't want to
>>>>>> repeat here what is explained already on the related wiki
>>>>>> page, please
>>>>>> have a look at
>>>>>> http://www.xenomai.org/index.php/Examples
>>>>>> Instead, let me sketch what could be done next:
>>>>>> o Port existing examples, snippets, demos from
>>>>>> ksrc/skins/* over, make
>>>>>> them compilable and runnable if required.
>>>>>> o Identify what kind of examples are lacking. You, the
>>>>>> user, is needed
>>>>>> here. What do *you* think is missing, what would be
>>>>>> helpful to show?
>>>>>> o Check what is needed to compile kernel-based examples
>>>>>> over PPC 2.4.
>>>>>> Philippe indicated that some switches are likely
>>>>>> missing (x86 is fine
>>>>>> already, other archs are 2.6-only).
>>>>>>
>>>>> Some time ago I sent a patch for RTnet using the "kernel CFLAGS
>>>>> capturing" trick to get proper switches for 2.4:
>>>>>
>>>>> http://sourceforge.net/mailarchive/forum.php?thread_id=9493711&forum_id=24610
>>>>>
>>>>> We could do the same trick here.
>>>>>
>>>> Yeah, I had a look at this before. The point is that I would prefer to
>>>> keep things _simple_ and self-contained. This capturing requires
>>>> some
>>>> helper Makefile and complex call nestings that likely only
>>>> people with
>>>> advanced make and shell skills can understand and adopt to their
>>>> projects.
>>>> But maybe things are that complicated already, and this is just
>>>> different complexity. How do you compile simple out-of-tree modules
>>>> against 2.4 PPC kernels? Are there any standard flags? Or is it
>>>> different for each board or each compiler version or whatever?
>>>>
>>> I just cut and paste the flags from a kernel module make. For PPC,
>>> there are plenty of flags, not board but some are processor depended,
>>> but I'm unable to tell which one are really required. For this reason
>>> I like the module capturing trick.
>>>
>> What about this patch? I /seems/ to work (yeah, only tested on
>> x86...), merging the
>> whole capturing stuff into the same Makefile. Please give it hell on PPC.
>
> The attached Makefile works. I had to fix two problems. First, cross
> compilation was not supported. I now take the CC from "xeno-config --cc"
> for user space applications. I think "xeno-config" is intended only for
> making user space applications and therefore CC should be specified on
> the command line for kernel modules:
>
> $ make KSRC=/devel/linuxppc_2_4_devel ARCH=ppc CC=ppc-linux-gcc
Yes, this is the intended usage. I also have to apply this here to build
against good-old gcc3 (looking forward to 2.4.34 supporting gcc4).
> ppc-linux-gcc -D__KERNEL__ -I/devel/linuxppc_2_4_devel/include -Wall
> -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
> -fomit-frame-pointer -I/devel/linuxppc_2_4_devel/arch/ppc -fsigned-char
> -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -g
> -ggdb -DMODULE
> -I/devel/linuxppc_2_4_devel-2006_11_21_1134/include/xenomai
> -I/devel/linuxppc_2_4_devel-2006_11_21_1134/include/xenomai/compat
> -I/devel/linuxppc_2_4_devel-2006_11_21_1134/include/xenomai/posix -c
> -o heartbeat-x86.o heartbeat-x86.c
>
> Furthermore I removed "-I$(KSRC)/include", it is already included in the
> captured CFLAGS.
Good point.
Ok, I will merge these changes into all existing Makefiles and commit
the stuff "later".
Thanks,
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2006-12-03 21:19 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-01 10:24 [Xenomai-core] [ANNOUNCE] Xenomai Example Repository Jan Kiszka
2006-12-01 16:45 ` Wolfgang Grandegger
2006-12-01 17:22 ` Jan Kiszka
2006-12-01 17:54 ` [Xenomai-help] " Philippe Gerum
2006-12-01 22:47 ` Wolfgang Grandegger
2006-12-01 22:59 ` Philippe Gerum
2006-12-01 22:35 ` Wolfgang Grandegger
2006-12-03 14:53 ` Jan Kiszka
2006-12-03 21:14 ` Wolfgang Grandegger
2006-12-03 21:19 ` Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.