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

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,

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

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

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.

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.

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

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.