Including 3rd party library headers?

Ralf Kirchner ralf.kirchner at embedded-brains.de
Fri Jan 31 09:06:57 UTC 2014


Hi James,
For my current target CFLAGS get composed and passed to the compiler in
bsp.mk which gets included over several stages from the application
Makefile.
I suppose for your BSP it will be similar.

In my case the relevant part of the file looks like:
...
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg

DEPFLAGS = -MT $@ -MD -MP -MF $(basename $@).d
SYSFLAGS = -B $(PROJECT_LIB) -specs bsp_specs -qrtems
WARNFLAGS = -Wall -Wextra -Wformat=2 -Wcast-qual -Wconversion
-Wno-unused-parameter
OPTFLAGS = $(CFLAGS_OPTIMIZE_V)

CFLAGS = $(DEPFLAGS) $(SYSFLAGS) $(WARNFLAGS) $(CPU_CFLAGS) $(OPTFLAGS)
CXXFLAGS = $(DEPFLAGS) $(SYSFLAGS) $(WARNFLAGS) $(CPU_CFLAGS) $(OPTFLAGS)
LINKFLAGS = $(SYSFLAGS) $(CPU_CFLAGS) $(LDFLAGS) $(OPTFLAGS)
ASFLAGS = $(CPU_CFLAGS)

CCLINK = $(CC) $(LINKFLAGS) -Wl,-Map,$(basename $@).map
CXXLINK = $(CXX) $(LINKFLAGS) -Wl,-Map,$(basename $@).map

$(BUILDDIR)/%.o: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
..

Thus apending your include files to CFLAGS won't work. I am not sure if
that would work but you might give CPU_CFLAGS a try instead.


Am 30.01.2014 11:19, schrieb James Fitzsimons:
> I tried CFLAGS as suggested and it seems to be completely ignored. My
> application Makefile now looks like this:
> 
> PGM=${ARCH}/rtems-hello.exe
> 
> # optional managers required
> MANAGERS=all
> 
> # C source names
> CSRCS = rtems-hello.c
> COBJS = $(CSRCS:%.c=${ARCH}/%.o)
> CFLAGS += -I/home/james/Projects/development/motorobots/include
> 
> MOTOROBOTS_LIBS = /opt/motorobots/68332/lib
> #LD_PATHS += 
> LD_LIBS += $(MOTOROBOTS_LIBS)/liblcd.a  $(MOTOROBOTS_LIBS)/libled.a
> 
> include $(RTEMS_MAKEFILE_PATH)/Makefile.inc
> include $(RTEMS_CUSTOM)
> include $(PROJECT_ROOT)/make/leaf.cfg
> 
> OBJS= $(COBJS) $(CXXOBJS) $(ASOBJS)
> 
> all:    ${ARCH} $(PGM)
> 
> $(PGM): $(OBJS) ${LINK_FILES}
> $(make-exe)
> 
> and running make looks like:
> 
> hello$ make
> test -d o-optimize || mkdir o-optimize
> m68k-rtems4.10-gcc --pipe
> -B/home/james/Projects/development/rtems/rtems-mrm332/m68k-rtems4.10/mrm332/lib/
> -specs bsp_specs -qrtems   -g -Wall  -O2 -g -fomit-frame-pointer -g  
>  -mcpu=cpu32     -c   -o o-optimize/rtems-hello.o rtems-hello.c
> rtems-hello.c:6:27: error: 68332/mrm/led.h: No such file or directory
> rtems-hello.c:7:27: error: 68332/mrm/lcd.h: No such file or directory
> ....
> 
> 
> As you can see the include path doesn't appear in the gcc command.
> 
> I've read the make/README and can't see anything relavant in there. Am I
> missing something really obvious here?
> 
> Thanks for any help you can provide!
> James
> 
> 
> On 30 January 2014 13:38, James Fitzsimons <james.fitzsimons at gmail.com
> <mailto:james.fitzsimons at gmail.com>> wrote:
> 
>     Thanks very much guys,
> 
>     I'm thought I'd tried CFLAGS, but I obviously didn't have something
>     quite right so I'll give it another shot.
> 
>     I'll definitely look into Eclipse - I've used it before for C/C++
>     stuff and found it excellent. I'm trying to start out pretty vanilla
>     with RTEMS just so I get a really good handle on how the whole build
>     process works (there are a LOT of makefiles to understand) as I've
>     found with other tools that an IDE can often make things nice and
>     easy until it goes wrong, and if you don't understand what it's
>     doing under the hood you are all of a sudden in very deep water.
> 
>     Cheers!
>     James
> 
> 
>     On 30 January 2014 12:53, Simon Williams <williamssimonp at gmail.com
>     <mailto:williamssimonp at gmail.com>> wrote:
> 
>         Ah, -I and CFLAGS it is then.  That'll teach me to read posts
>         properly and not just skim them! :-)
> 
>         I started using Eclipse for Java, but I moved to using Netbeans
>         as I prefer it, but Eclipse with CDT is a grest C/C++ IDE and
>         the RTEMS plug in makes RTEMS development more productive than
>         vi. I don't really know of an alternative iif you want an IDE
>         for RTEMS, but that may be just because I've not looked.
> 
>         Regards
> 
>         Simon
> 
>         On 29 Jan 2014 23:36, "Nick Withers" <nick.withers at anu.edu.au
>         <mailto:nick.withers at anu.edu.au>> wrote:
> 
>             On Wed, 2014-01-29 at 23:31 +0000, Simon Williams wrote:
>             > Wouldn't thst be -L for the lbrary path? The -l option is
>             usef to
>             > specify a library.
>             >
>             > Also, linker flags are usually in LDFLAGS, CFLAGS is for
>             compiler
>             > flags. It does of course depend on your Makefile.
> 
>             It's include paths he's after, which are for the compiler.
> 
>             > I would recommend Eclipse. It won't do everything for you,
>             but it can
>             > help by pointing the way!
> 
>             I've heard a lot of good things about Eclipse. I've got a
>             personal peeve
>             against Java and that's really all that's kept me from
>             trying it!
> 
>             > Regards
>             >
>             > Simon
>             >
>             > On 29 Jan 2014 22:18, "Nick Withers"
>             <nick.withers at anu.edu.au <mailto:nick.withers at anu.edu.au>>
>             wrote:
>             >         On Wed, 2014-01-29 at 22:29 +1300, James
>             Fitzsimons wrote:
>             >         > Thanks Andrei,
>             >         >
>             >         >
>             >         > I'm using a very plain vanilla environment at
>             the moment.
>             >         Ubuntu 13.10
>             >         > with tool chain built using rtems source builder.
>             >         >
>             >         >
>             >         > I'm using the template makefile for my test
>             application, and
>             >         am just
>             >         > running make directly from bash.
>             >         >
>             >         >
>             >         > No IDE or fancy build environment yet!
>             >
>             >         I'd've said the RTEMS'provided Makefiles (there
>             are a number
>             >         of them,
>             >         chained together) are pretty fancy... But then, I
>             have trouble
>             >         with just
>             >         one Makefile :-P
>             >
>             >         Anyway, try:
>             >                 CFLAGS+=-I/bam/headers
>             >
>             >         > Cheers,
>             >         > James
>             >         >
>             >         >
>             >         > On 29 January 2014 17:01, Andrei Chichak
>             <groups at chichak.ca <mailto:groups at chichak.ca>>
>             >         wrote:
>             >         >         I believe what Sebastian is referring to
>             is the
>             >         environment
>             >         >         that you are using for your compiles. In
>             my case, I
>             >         am using a
>             >         >         Mac and Eclipse, I set <C/C++
>             Build><Settings><Tool
>             >         >         Settings><RTEMS C
>             Compiler><Preprocessor><Include
>             >         Paths (-I)>.
>             >         >
>             >         >         Your milage will vary, but if you tell
>             us what you
>             >         are
>             >         >         driving, there may be someone here that
>             can help.
>             >         >
>             >         >         Andrei
>             >         >
>             >         >
>             >         >         On 2014-January-28, at 2:11 PM, James
>             Fitzsimons
>             >         >         <james.fitzsimons at gmail.com
>             <mailto:james.fitzsimons at gmail.com>> wrote:
>             >         >
>             >         >         > Hi Sebastian,
>             >         >         >
>             >         >         > Thanks for your reply.
>             >         >         >
>             >         >         > Ideally I was hoping to us the -I
>             option to
>             >         specify the
>             >         >         header file location, I just can't quite
>             figure out
>             >         where to
>             >         >         add that into the RTEMS makefile
>             structure. Looking
>             >         at the
>             >         >         make/README I can see a good example of
>             how to link
>             >         in other
>             >         >         libraries using LD_LIBS, but there's
>             nothing about
>             >         including
>             >         >         other header files.
>             >         >         >
>             >         >         > Apologies if I am missing something
>             obvious!
> 
>             --
>             Nick Withers
> 
>             Embedded Systems Programmer
>             Department of Nuclear Physics, Research School of Physics
>             and Engineering
>             The Australian National University (CRICOS: 00120C)
> 
> 
> 
> 
> 
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-users
> 


-- 
--------------------------------------------
Embedded Brains GmbH
Ralf Kirchner          Dornierstr. 4
D-82178 Puchheim       Germany
email: ralf.kirchner at embedded-brains.de
Phone: +49-89-18 94 741-17
Fax:   +49-89-18 94 741-08

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the users mailing list