Hello everybody,
thanks to your previous hints I've succesfully got Cobalt working.
I'm trying to compile some (previously coded for Xenomai 2) code.
I'm facing an odd issue which I don't think is related to Xenomai but 
rather to
the way my Makefile is built.
I'd be real grateful to anybody out there willing to help me because I'm 
no make
file expert at all.

It seems that gcc doesn't include standard include paths for no reasons 
apperant
ly through my makefile.
I'm working on Debian 9.
Here's the include paths of gcc:

     gcc -xc -E -v -
     Using built-in specs.
     COLLECT_GCC=gcc
     Target: x86_64-linux-gnu
     Configured with: ../src/configure -v --with-pkgversion='Debian 
6.3.0-18' --w
ith-bugurl=file:///usr/share/doc/gcc-6/README.Bugs 
--enable-languages=c,ada,c++,
java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 
--program-prefi
x=x86_64-linux-gnu- --enable-shared --enable-linker-build-id 
--libexecdir=/usr/l
ib --without-included-gettext --enable-threads=posix --libdir=/usr/lib 
--enable-
nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug 
--enable-libs
tdcxx-time=yes --with-default-libstdcxx-abi=new 
--enable-gnu-unique-object --dis
able-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie 
--with-s
ystem-zlib --disable-browser-plugin --enable-java-awt=gtk 
--enable-gtk-cairo --w
ith-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home 
--with-
jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 
--with-jvm-jar-dir=/usr/lib/jvm
-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 
--with-ecj-jar=/usr/
share/java/eclipse-ecj.jar --with-target-system-zlib 
--enable-objc-gc=auto --ena
ble-multiarch --with-arch-32=i686 --with-abi=m64 
--with-multilib-list=m32,m64,mx
32 --enable-multilib --with-tune=generic --enable-checking=release 
--build=x86_6
4-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
     Thread model: posix
     gcc version 6.3.0 20170516 (Debian 6.3.0-18)
     COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
      /usr/lib/gcc/x86_64-linux-gnu/6/cc1 -E -quiet -v -imultiarch 
x86_64-linux-g
nu - -mtune=generic -march=x86-64
     ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
     ignoring nonexistent directory 
"/usr/lib/gcc/x86_64-linux-gnu/6/../../../../
x86_64-linux-gnu/include"
     #include "..." search starts here:
     #include <...> search starts here:
      /usr/lib/gcc/x86_64-linux-gnu/6/include
      /usr/local/include
      /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed
      /usr/include/x86_64-linux-gnu
      /usr/include
     End of search list.
     # 1 "<stdin>"
     # 1 "<built-in>"
     # 1 "<command-line>"
     # 31 "<command-line>"
     # 1 "/usr/include/stdc-predef.h" 1 3 4
     # 32 "<command-line>" 2
     # 1 "<stdin>"
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/6/:/usr/lib/gcc/x86_64-linux-gnu
/6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/6/:/usr/lib/gcc
/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/6/:/usr/lib/gcc/x86_64-linux-gnu/
6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib/:/l
ib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/u
sr/lib/gcc/x86_64-linux-gnu/6/../../../:/lib/:/usr/lib/
     COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'


My Makefile is:

     ###### 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 = myRtModule

     ### Note: to override the kernel source path, use "make KSRC=..."



     ###### USER SPACE BUILD (no change required normally) ######
     ifeq ($(KERNELRELEASE),)
     ifneq ($(APPLICATIONS),)

     ### Default Xenomai installation path
     XENO ?= /usr/local/xenomai

     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) --alchemy --cflags) $(MY_CFLAGS) -I 
/usr/local/
src/mySource/include

     LDFLAGS=$(shell $(XENOCONFIG) --alchemy --ldflags) $(MY_LDFLAGS) 
-lalchemy

     # This includes the library path of given Xenomai into the binary 
to make li
ve
     # easier for beginners if Xenomai's libs are not in any default 
search path.

     LDFLAGS+=-Xlinker -rpath -Xlinker $(shell $(XENOCONFIG) --libdir)

     all:: $(APPLICATIONS)

     clean::
         $(RM) $(APPLICATIONS) *.o

     endif
     endif



     ###### KERNEL MODULE BUILD (no change required normally) ######
     ifneq ($(MODULES),)

     ### Default to sources of currently running kernel
     KSRC ?= /lib/modules/$(shell uname -r)/build

     OBJS     := ${patsubst %, %.o, $(MODULES)}
     CLEANMOD := ${patsubst %, .%*, $(MODULES)}
     PWD      := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else 
pwd; fi)

     obj-m        := $(OBJS)
     EXTRA_CFLAGS := -I$(KSRC)/include/xenomai 
-I$(KSRC)/include/xenomai/posix $(
ADD_CFLAGS) -I/usr/local/src/mySource/include

     all::
         $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules

     clean::
         $(RM) $(CLEANMOD) *.o *.ko *.mod.c Module.markers modules.order
         $(RM) -R .tmp*

     endif


When I run make this is what happens:

     make -C /lib/modules/4.9.24-ipipe-xenomai-3.0.5-cobalt/build 
SUBDIRS=/usr/lo
cal/src/my/source/rt_control modules
     make[1]: Entering directory 
'/usr/local/src/linux-4.9.24-ipipe-xenomai-3.0.5
-cobalt'
       CC [M] /usr/local/src/mySource/source/rt_control/myRtModule.o
     In file included from /usr/local/src/mySource/include/common.h:10:0,
                      from 
/usr/local/src/mySource/source/rt_control/myRtModule.c
:33:
     include/xenomai/alchemy/task.h:21:23: fatal error: sys/types.h: No 
such file
  or directory
      #include <sys/types.h>
                            ^
     compilation terminated.
     scripts/Makefile.build:299: recipe for target 
'/usr/local/src/mySource/sourc
e/rt_control/myRtModule.o' failed
     make[2]: *** 
[/usr/local/src/mySource/source/rt_control/myRtModule.o] Error
1
     Makefile:1490: recipe for target 
'_module_/usr/local/src/mySource/source/rt_
control' failed
     make[1]: *** [_module_/usr/local/src/mySource/source/rt_control] 
Error 2
     make[1]: Leaving directory 
'/usr/local/src/linux-4.9.24-ipipe-xenomai-3.0.5-
cobalt'
     Makefile:67: recipe for target 'all' failed
     make: *** [all] Error 2

If I explicit the (standard?) include path over gcc into make, adding 
"-I/usr/in
clude/x86_64-linux-gnu" at the end of EXTRA_CFLAGS, I get this behaviour:

     make -C /lib/modules/4.9.24-ipipe-xenomai-3.0.5-cobalt/build 
SUBDIRS=/usr/lo
cal/src/mySource/source/rt_control modules
     make[1]: Entering directory 
'/usr/local/src/linux-4.9.24-ipipe-xenomai-3.0.5
-cobalt'
       CC [M] /usr/local/src/mySource/source/rt_control/myRtModule.o
     In file included from include/xenomai/alchemy/task.h:21:0,
                      from /usr/local/src/mySource/include/common.h:10,
                      from 
/usr/local/src/mySource/source/rt_control/myRtModule.c
:33:
     /usr/include/x86_64-linux-gnu/sys/types.h:25:22: fatal error: 
features.h: No
  such file or directory
      #include <features.h>
                           ^
     compilation terminated.
     scripts/Makefile.build:299: recipe for target 
'/usr/local/src/mySource/sourc
e/rt_control/myRtModule.o' failed
     make[2]: *** 
[/usr/local/src/mySource/source/rt_control/myRtModule.o] Error
1
     Makefile:1490: recipe for target 
'_module_/usr/local/src/mySource/source/rt_
control' failed
     make[1]: *** [_module_/usr/local/src/mySource/source/rt_control] 
Error 2
     make[1]: Leaving directory 
'/usr/local/src/linux-4.9.24-ipipe-xenomai-3.0.5-
cobalt'
     Makefile:67: recipe for target 'all' failed
     make: *** [all] Error 2


Of course I do have libcv-dev installed and everything is in the right 
place:

     ls -l /usr/include/x86_64-linux-gnu/sys/types.h
     -rw-r--r-- 1 root root 6687 Jun 15 21:17 
/usr/include/x86_64-linux-gnu/sys/t
ypes.h

     ls -l /usr/include/features.h
     -rw-r--r-- 1 root root 13069 Jun 15 21:17 /usr/include/features.h

Hope anybody out there could/will help me :)
Thanks,

Simone
_______________________________________________
Xenomai mailing list
[email protected]
https://xenomai.org/mailman/listinfo/xenomai

Reply via email to