Compile 3rd library (libcurl, etc ...) for Legato


#1

Hi all,

I’m new to Legato.
I have been working on some embedded Linux device before.
I have an C application which linked to libcurl library on my current device and I want to make it run on Legato platform.
So is it possible to compile libcurl (or any 3rd C/C++ library in general) as a Legato component and my application as a Legato application then install and run it on my MangOH dev board? I would really appreciate if you have any tutorial related to this subject.

I’m using Developer Studio 4.1 (Legato 16.4) on Ubuntu 16.04 64 bits.

Thank a lot for your help,


#2

Yes it can be done busy doing just that to include linphone for SIP VOIP …

i build the package then install it into the sysroot and put the bits i want into a folder that i include in the adef.

i even added a driver framework for legato audio in the legacy package … one of the packages i added was sqlite3.

Greg


#3

Hi Greg,

Thank you for your response. Could you be a little more specific about how doing it?
I’m trying to doing it with Developper Studio by importing libcurl as a C/C++ project from Existing source.
Then I choose Legato Application Framwork GCC as toolchain and Legato Application Framwork Builder as builder but the project couldn’t be built.

Regards,

Trung


#4

You using linux or similar ?? i do it writing a make file from the console but it does work from the IDE [tested it for you] using linux as a dev platform helps as you can run the shell scripts.


#5

When you want to build a non-legato project in DS, you need to choose Legato Linux GCC toolchain, and Make builder (Legato) as builder, to get something working.


#6

Makefile bits this is abuse of makefile but you will get some ideas how to do it

PREFIX=/usr

LEGATO_OUTPUT = _build_linphone/wp85/build
TARGET = wp85
TOOLCHAINPRE = ${WP85_TOOLCHAIN_DIR}/arm-poky-linux-gnueabi

SYSROOT = (shell (TOOLCHAINPRE)-gcc -print-sysroot)
PWD = $(shell pwd)

CC = (TOOLCHAINPRE)-gcc CXX = (TOOLCHAINPRE)-g++
LD = (TOOLCHAINPRE)-ld AR = (TOOLCHAINPRE)-ar
RANLIB = $(TOOLCHAINPRE)-ranlib

sqlite-autoconf_OPT = CFLAGS="-DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_UNLOCK_NOTIFY"

sqlite-autoconf:
(if [ ! -d build/@ ];then \ mkdir build/@;
fi;
cd @; \ ./(@_CPTH)configure --prefix=/usr --libdir=/usr/lib CC=(CC) CXX=(CXX) --host=arm-poky-linux-gnueabi (@_OPT)) make -C @
make -C @ DESTDIR=(SYSROOT) install
make -C @ DESTDIR=(PWD)/output install

install:
mkdir -p (LEGATO_OUTPUT) (cd output && rsync -avPR --exclude=*.a --exclude=*.la usr/lib usr/bin usr/sbin ../(LEGATO_OUTPUT)/)
(TOOLCHAINPRE)-strip (LEGATO_OUTPUT)/usr/bin/* || true
(TOOLCHAINPRE)-strip (LEGATO_OUTPUT)/usr/sbin/* || true
(TOOLCHAINPRE)-strip (LEGATO_OUTPUT)/usr/lib/* || true
./mkadef > linphone.adef
mkapp -t $(TARGET) linphone.adef


#7

Hi everyone,

Please forgive me for taking so long to reply, I just came back from vacation yesterday.

[quote=“daav”]
When you want to build a non-legato project in DS, you need to choose Legato Linux GCC toolchain, and Make builder (Legato) as builder, to get something working.[/quote]

Thank you it is working, well I have to do a manual configure to create a right Makefile but everything seems good. I can complie curl, json-c, …, copy them manually and make them run successfully in my MangOH board.

[quote=“gregnietsky”]Makefile bits this is abuse of makefile but you will get some ideas how to do it

PREFIX=/usr

LEGATO_OUTPUT = _build_linphone/wp85/build
TARGET = wp85
TOOLCHAINPRE = ${WP85_TOOLCHAIN_DIR}/arm-poky-linux-gnueabi

SYSROOT = (shell (TOOLCHAINPRE)-gcc -print-sysroot)
PWD = $(shell pwd)

CC = (TOOLCHAINPRE)-gcc CXX = (TOOLCHAINPRE)-g++
LD = (TOOLCHAINPRE)-ld AR = (TOOLCHAINPRE)-ar
RANLIB = $(TOOLCHAINPRE)-ranlib

sqlite-autoconf_OPT = CFLAGS="-DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_UNLOCK_NOTIFY"

sqlite-autoconf:
(if [ ! -d build/@ ];then \ mkdir build/@;
fi;
cd @; \ ./(@_CPTH)configure --prefix=/usr --libdir=/usr/lib CC=(CC) CXX=(CXX) --host=arm-poky-linux-gnueabi (@_OPT)) make -C @
make -C @ DESTDIR=(SYSROOT) install
make -C @ DESTDIR=(PWD)/output install

install:
mkdir -p (LEGATO_OUTPUT) (cd output && rsync -avPR --exclude=*.a --exclude=*.la usr/lib usr/bin usr/sbin ../(LEGATO_OUTPUT)/)
(TOOLCHAINPRE)-strip (LEGATO_OUTPUT)/usr/bin/* || true
(TOOLCHAINPRE)-strip (LEGATO_OUTPUT)/usr/sbin/* || true
(TOOLCHAINPRE)-strip (LEGATO_OUTPUT)/usr/lib/* || true
./mkadef > linphone.adef
mkapp -t $(TARGET) linphone.adef[/quote]

Your Makefile seems good, that might be what I need to create a packaging .update for each library/app and install it in Legato platform. I’ll keep you informed about my tests.