DESCRIPTION = "Libcap is a library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilities."
PRIORITY = "optional"
SECTION = "libs"
LICENSE = "GPL"
DEPENDS = "bison-native flex-native"
PR = "r1"

CFLAGS_append = " -I${S}/libcap/include"

SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/security/linux-privs/kernel-2.4/${PN}-${PV}.tar.bz2 \
	   file://makenames.patch;patch=1 \
	   file://make.patch;patch=1 \
	   file://syscall.patch;patch=1"

FILES_${PN} = "${libdir}"
FILES_${PN}-dev = "${includedir}"

do_install() {
	install -d ${D}${includedir}/sys
	install -m 0644 libcap/include/sys/capability.h ${D}${includedir}/sys/
	install -d ${D}${libdir}
	oe_libinstall -s -C libcap libcap ${D}${libdir}
}

do_stage() {
	install -d ${STAGING_INCDIR}/sys
	install -m 0644 libcap/include/sys/capability.h ${STAGING_INCDIR}/sys/
	oe_libinstall -s -C libcap libcap ${STAGING_LIBDIR}
}

DESCRIPTION = "Libcap is a library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilities."
PRIORITY = "optional"
SECTION = "libs"
LICENSE = "GPL"
DEPENDS = "bison-native flex-native"
PR = "r2"

CFLAGS_append = " -I${S}/libcap/include -fPIC"

SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/security/linux-privs/kernel-2.4/${PN}-${PV}.tar.bz2 \
	   file://makenames.patch;patch=1 \
	   file://make.patch;patch=1 \
	   file://syscall.patch;patch=1"

FILES_${PN} = "${libdir}"
FILES_${PN}-dev = "${includedir}"

do_install() {
	install -d ${D}${includedir}/sys
	install -m 0644 libcap/include/sys/capability.h ${D}${includedir}/sys/
	install -d ${D}${libdir}
	oe_libinstall -s -C libcap libcap ${D}${libdir}
}

do_stage() {
	install -d ${STAGING_INCDIR}/sys
	install -m 0644 libcap/include/sys/capability.h ${STAGING_INCDIR}/sys/
	oe_libinstall -s -C libcap libcap ${STAGING_LIBDIR}
}

Append `-fPIC` to `CFLAGS` to fix compilation on newer binutils/ld.
libcap: Append `-fPIC` to `CFLAGS` to fix compilation on newer binutils/ld.

Doing `bitbake libcap` with

        PREFERRED_VERSION_binutils               = "2.20"
        PREFERRED_VERSION_binutils-cross         = "2.20"
        PREFERRED_VERSION_binutils-cross-sdk     = "2.20"

        PREFERRED_VERSION_gcc                    = "4.4.2"
        PREFERRED_VERSION_gcc-cross              = "4.4.2"
        PREFERRED_VERSION_gcc-cross-sdk          = "4.4.2"
        PREFERRED_VERSION_gcc-cross-initial      = "4.4.2"
        PREFERRED_VERSION_gcc-cross-intermediate = "4.4.2"

in `local.conf` made `do_compile` error out with the following message [1].

        arm-angstrom-linux-gnueabi-ld -soname libcap.so.1 -x -shared -o libcap.so.1.10 cap_alloc.o cap_proc.o cap_extint.o cap_flag.o cap_text.o cap_sys.o
        arm-angstrom-linux-gnueabi-ld: cap_text.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC

Khem Raj explained it the following way [2].

Am Mittwoch, den 13.01.2010, 02:27 -0800 schrieb Khem Raj:
> > I also get the same error which I did not get before with GCC 4.1.1.
>
> Older versions of binutils/ld can not detect MOVT/MOVW relocations which
> are absolute and cant be used in PIC code.
> hence even if the error was there it remained latent.

Therefore just append `-fPIC` to the CFLAGS and bump the PR variable.

The strange thing is still, that other distributions seem to have patched libcap to build with `-fPIC` long ago [3–5].

[1] http://lists.linuxtogo.org/pipermail/openembedded-devel/2010-January/016142.html
[2] http://lists.linuxtogo.org/pipermail/openembedded-devel/2010-January/016211.html
[3] http://www.linuxfromscratch.org/patches/downloads/libcap/libcap-1.10-fedora_fixes-1.patch
[4] http://frugalware.org/pipermail/frugalware-darcs/2005-May/000824.html
[5] http://cvs.fedoraproject.org/viewvc/rpms/libcap/F-7/libcap-1.10-fPIC.patch?revision=1.1&view=markup

Signed-off-by: Paul Menzel <acd6d3b156327487a919475da61b8867f1e8b249@users.sourceforge.net>
