Commit 0f3a8f56 authored by Romain Naour's avatar Romain Naour Committed by Thomas Petazzoni
Browse files

liblinear: new package



Signed-off-by: default avatarRomain Naour <romain.naour@openwide.fr>
Cc: "Yann E. MORIN" <yann.morin.1998@free.fr>
[yann.morin.1998@free.fr: add ability to build a static lib; handle
static-only and static+shared cases]
Signed-off-by: default avatarYann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 45ed9844
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -905,6 +905,7 @@ menu "Other"
	source "package/libgc/Config.in"
	source "package/libglib2/Config.in"
	source "package/libical/Config.in"
	source "package/liblinear/Config.in"
	source "package/libnspr/Config.in"
	source "package/libpfm4/Config.in"
	source "package/libplist/Config.in"
+35 −0
Original line number Diff line number Diff line
From cae4c3b80fee0f3637d70f6d33946888c8105637 Mon Sep 17 00:00:00 2001
From: Romain Naour <romain.naour@openwide.fr>
Date: Sat, 13 Dec 2014 17:16:58 +0100
Subject: [PATCH 1/1] blas: don't overwrite ar options

ar's rcv options get lost when AR is passed on
the command line.

Signed-off-by: Romain Naour <romain.naour@openwide.fr>
---
 blas/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/blas/Makefile b/blas/Makefile
index 895fd24..78cec9a 100644
--- a/blas/Makefile
+++ b/blas/Makefile
@@ -1,4 +1,4 @@
-AR     = ar rcv
+AR     = ar
 RANLIB = ranlib 
 
 HEADERS = blas.h blasp.h
@@ -8,7 +8,7 @@ CFLAGS = $(OPTFLAGS)
 FFLAGS = $(OPTFLAGS)
 
 blas: $(FILES) $(HEADERS)
-	$(AR) blas.a $(FILES)  
+	$(AR) rcv blas.a $(FILES)  
 	$(RANLIB) blas.a
 
 clean:
-- 
1.9.3
+18 −0
Original line number Diff line number Diff line
Makefile: add a rule to build a static library

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
diff -durN liblinear-1.96.orig/Makefile liblinear-1.96/Makefile
--- liblinear-1.96.orig/Makefile	2014-11-15 07:50:23.000000000 +0100
+++ liblinear-1.96/Makefile	2014-12-14 00:23:00.135893956 +0100
@@ -16,6 +16,11 @@
 	fi; \
 	$(CXX) $${SHARED_LIB_FLAG} linear.o tron.o blas/blas.a -o liblinear.so.$(SHVER)
 
+# Keeping blas/blas.a as a pre-requisite, to ensure all .o files are built
+static-lib: linear.o tron.o blas/blas.a
+	$(AR) rcv liblinear.a linear.o tron.o blas/*.o
+	$(RANLIB) liblinear.a
+
 train: tron.o linear.o train.c blas/blas.a
 	$(CXX) $(CFLAGS) -o train train.c tron.o linear.o $(LIBS)
 
+7 −0
Original line number Diff line number Diff line
config BR2_PACKAGE_LIBLINEAR
	bool "liblinear"
	help
	  liblinear is a linear classifier for data with millions of instances and
	  features.

	  http://www.csie.ntu.edu.tw/~cjlin/liblinear/
+44 −0
Original line number Diff line number Diff line
################################################################################
#
# liblinear
#
################################################################################

LIBLINEAR_VERSION = 1.96
LIBLINEAR_SITE = http://www.csie.ntu.edu.tw/~cjlin/liblinear/$(LIBLINEAR_VERSION_MAJOR)
LIBLINEAR_LICENSE = BSD-3c
LIBLINEAR_LICENSE_FILES = COPYING
LIBLINEAR_INSTALL_STAGING = YES

ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)
# $1: destination directory
define LIBLINEAR_INSTALL_SHARED
	$(INSTALL) -m 0644 -D $(@D)/liblinear.so.2 $(1)/usr/lib/liblinear.so.2
	ln -sf liblinear.so.2 $(1)/usr/lib/liblinear.so
endef
endif

ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)
# $1: destination directory
define LIBLINEAR_INSTALL_STATIC
	$(INSTALL) -m 0644 -D $(@D)/liblinear.a $(1)/usr/lib/liblinear.a
endef
endif

define LIBLINEAR_BUILD_CMDS
	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \
		$(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),lib) \
		$(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),static-lib)
endef

define LIBLINEAR_INSTALL_STAGING_CMDS
	$(INSTALL) -m 0644 -D $(@D)/linear.h $(STAGING_DIR)/usr/include/linear.h
	$(call LIBLINEAR_INSTALL_SHARED,$(STAGING_DIR))
	$(call LIBLINEAR_INSTALL_STATIC,$(STAGING_DIR))
endef

define LIBLINEAR_INSTALL_TARGET_CMDS
	$(call LIBLINEAR_INSTALL_SHARED,$(TARGET_DIR))
endef

$(eval $(generic-package))