[Freeswitch-dev] ARM cross compile
Simon Capper
scapper at ooma.com
Sun Jun 29 20:08:31 EDT 2008
Comments inline
On 6/29/08 4:06 PM, "Michael Jerris" <mike at jerris.com> wrote:
> See questions/comments inline
>
>> Is there a way to disable the c++ code in freeswitch without totally
>> breaking it? I'm in an embedded environment and libstdc++ is large
>> and takes
>> up valuable flash space.
>
> We could fairly easily get rid of the cpp wrapper we use for embedded
> languages, but its used in mod_lua. The other thing you would have to
> disable would be portions of the switch_xml which uses cpp for the
> globbing routines which would have to be re-written in c or all of the
> globbing includes in the xml would have to not be used.
>
I'm not stuck on lua, I thought it would be the smallest. Do you have any
advice here, C maybe (I couldn't find a "mod_c").
Can I try anything to get rid of the other cpp files?
>
>>
>> Is there a way to specify a different install and runtime location
>> for the
>> modules (like you can do for log conf and db?) Could be runtime or
>> build
>> time, I found --with-modinstdir but this seems to affect the install
>> location and the runtime search location.
>>
>
> I am sure there is a way with modifications to the build system, but
> why?
In the cross compile environment the files are installed into a staging area
rather than the absolute location they are run from, the staging area
becomes root of the flash filesystem. The workaround I have is to copy the
files out of the build area by hand rather than using install. A runtime
option like -conf or -db would also work well.
>
>>
>> In switch_core_state_machine.c backtrace_symbols() fails, not
>> supported in
>> my arm environment. I hacked this to use the alternative version of
>> print_trace.
>
> Is there a better ifdef we can use here so you don't need to hack?
>
You could test for the presence of backtrace_symbols() or execinfo.h in
configure and have your own macro. I don't know of a macro that would work
well for different architectures. Or you could just disable it for cross
compile.
>> export
>> ac_cv_path__libcurl_config=$(BUILD_DIR)/curl-7.18.2/install/bin/curl-
>> config;
>> \
>
> We have configure options for this one --with-libcurl
>
I did use the --with-libcurl but it did not work, I'll investigate more.
>>
>> (cd $(TOPDIR)/ooma/freeswitch; rm -rf config.{cache,status} ; \
>
> Why?
>
Cut and paste, this is how many of the openwrt modules build, I will remove
it, a config.cache would work well.
>>
>> $(TARGET_CONFIGURE_OPTS) \
>> CFLAGS='$(TARGET_CFLAGS)' \
>> CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
>> LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
>
> why?
>
On the build machine the build environment variables are set for cross
compilation at build time by a build script, all the ARM cross compile
tools, compilers, linkers, libs, headers etc are in $(STAGING_DIR), this
just makes sure they are all set correctly, the freeswitch makefile picks up
these values OK. This is normal.
I'm still very new to freeswitch, less than a week, so any advice about
using it in the embedded world would be really useful.
Thanks,
Simon
More information about the Freeswitch-dev
mailing list