--- /dev/null
+From 08bff1f635f2d1e743bf510c6db93121fdaa647e Mon Sep 17 00:00:00 2001
+From: Wook Song <wook16.song@samsung.com>
+Date: Mon, 4 Nov 2019 14:29:44 +0900
+Subject: [PATCH 1/7] [API/Makefile] Revise Makefile for API
+
+This patch eliminates a trailing white space and a commented line, which
+is not required anymore.
+
+Signed-off-by: Wook Song <wook16.song@samsung.com>
+---
+ api/src/Makefile | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/api/src/Makefile b/api/src/Makefile
+index 3d65038..fa69d07 100644
+--- a/api/src/Makefile
++++ b/api/src/Makefile
+@@ -88,7 +88,7 @@ basicinstall: $(OBJDIR)/$(OUT) get_mvcmd
+ cp $(OBJDIR)/$(OUT) $(INSTALLDIR)/lib/
+ ln -fs $(OUT) $(INSTALLDIR)/lib/$(LIB_NAME).so
+ cp ../include/mvnc.h $(INSTALLDIR)/include/mvnc2
+- ln -fs $(INSTALLDIR)/include/mvnc2/mvnc.h $(INSTALLDIR)/include/mvnc.h
++ ln -fs $(INSTALLDIR)/include/mvnc2/mvnc.h $(INSTALLDIR)/include/mvnc.h
+ mkdir -p $(INSTALLDIR)/lib/mvnc
+ cp mvnc/MvNCAPI-*.mvcmd $(INSTALLDIR)/lib/mvnc/
+ mkdir -p ${DESTDIR}/etc/udev/rules.d/
+@@ -113,7 +113,6 @@ uninstall:
+ rm -f $(INSTALLDIR)/include/mvnc.h
+ rm -f $(INSTALLDIR)/include/mvnc2/mvnc.h
+ rm -f $(INSTALLDIR)/lib/mvnc/MvNCAPI-*.mvcmd
+-# rm -rf $(INSTALLDIR)/lib/mvnc
+ rm -rf ${DESTDIR}$(PYTHON3DIST)/mvnc
+ rm -rf ${DESTDIR}$(PYTHON2DIST)/mvnc
+ rm -f ${DESTDIR}/etc/udev/rules.d/97-usbboot.rules
+--
+2.17.1
+
--- /dev/null
+From 913cb55389190009715255872901367714e54370 Mon Sep 17 00:00:00 2001
+From: Wook Song <wook16.song@samsung.com>
+Date: Mon, 4 Nov 2019 15:24:46 +0900
+Subject: [PATCH 2/7] [API/Makefile] Generalize Makefile
+
+The current version of Makefile for API uses hard-coded install
+prefix, library and include directories. In order to generalize the
+current Makefile more, this patch adds several variables to replace
+those hard-coded paths and makes Makefile use them.
+
+Signed-off-by: Wook Song <wook16.song@samsung.com>
+---
+ api/src/Makefile | 59 ++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 39 insertions(+), 20 deletions(-)
+
+diff --git a/api/src/Makefile b/api/src/Makefile
+index fa69d07..2627a7a 100644
+--- a/api/src/Makefile
++++ b/api/src/Makefile
+@@ -6,11 +6,18 @@ NO_BOOT ?= no
+ LIB_NAME:= libmvnc
+ OUT := $(LIB_NAME).so.0
+ OBJDIR := obj-$(ARCH)
+-INSTALLDIR := ${DESTDIR}/usr/local
++PREFIX ?= /usr/local
++INSTALLDIR ?= ${DESTDIR}${PREFIX}
++LIBDIR_NAME ?= lib
++INCDIR_NAME ?= include
++INCLUDE_LIBUSB := $(shell pkg-config libusb-1.0 --cflags)
++LIBS_LIBUSB := $(shell pkg-config libusb-1.0 --libs)
++INSTALL_LIBDIR := ${INSTALLDIR}/${LIBDIR_NAME}
++INSTALL_INCDIR := ${INSTALLDIR}/${INCDIR_NAME}
+ PYTHON3DIST := $(shell python3 -c "import site; print(site.getsitepackages()[0])")
+ PYTHON2DIST := $(shell python -c "import site; print(site.getsitepackages()[0])")
+ LINK_HIGHCLASS ?= no
+-VERSION_NUMBER=`cat ./version.txt`
++VERSION_NUMBER=$(shell cat ./version.txt)
+ SRCS := \
+ mvnc_api.c \
+ fp16.c
+@@ -42,18 +49,30 @@ ifeq ($(NO_RESET), yes)
+ endif
+ CFLAGS+=-DDEVICE_SHELL_ENABLED
+
+-LIBS += -lpthread -lusb-1.0 -ldl
++LIBS += -lpthread -ldl
++
++ifndef LIBS_LIBUSB
++ INCLUDES += -lusb-1.0
++else
++ INCLUDES += ${LIBS_LIBUSB}
++endif
+
+ #Allow compiling without highclass
+ ifeq ($(LINK_HIGHCLASS),no)
+ CFLAGS+= -DEXCLUDE_HIGHCLASS
+ else
+-LIBS+= -lmvnc_highclass -L$(INSTALLDIR)/lib/
++LIBS+= -lmvnc_highclass -L$(INSTALLDIR)/${LIBDIR_NAME}/
+ endif
+ INCLUDES := \
+ -I. \
+- -I../include \
+- -I$(SYSROOT)/usr/include/libusb-1.0 \
++ -I../include
++
++ifndef INCLUDE_LIBUSB
++ INCLUDES += -I$(SYSROOT)/usr/include/libusb-1.0
++else
++ INCLUDES += ${INCLUDE_LIBUSB}
++endif
++
+
+ CFLAGS += -O2 -Wall -pthread -fPIC -MMD -MP
+ LDFLAGS += -shared
+@@ -82,15 +101,15 @@ get_mvcmd:
+ @./get_mvcmd.sh
+
+ basicinstall: $(OBJDIR)/$(OUT) get_mvcmd
+- mkdir -p $(INSTALLDIR)/include/
+- mkdir -p $(INSTALLDIR)/include/mvnc2
+- mkdir -p $(INSTALLDIR)/lib/
+- cp $(OBJDIR)/$(OUT) $(INSTALLDIR)/lib/
+- ln -fs $(OUT) $(INSTALLDIR)/lib/$(LIB_NAME).so
+- cp ../include/mvnc.h $(INSTALLDIR)/include/mvnc2
+- ln -fs $(INSTALLDIR)/include/mvnc2/mvnc.h $(INSTALLDIR)/include/mvnc.h
+- mkdir -p $(INSTALLDIR)/lib/mvnc
+- cp mvnc/MvNCAPI-*.mvcmd $(INSTALLDIR)/lib/mvnc/
++ mkdir -p ${INSTALL_INCDIR}
++ mkdir -p ${INSTALL_INCDIR}/mvnc2
++ mkdir -p ${INSTALL_LIBDIR}/${LIBDIR_NAME}
++ cp $(OBJDIR)/$(OUT) ${INSTALL_LIBDIR}/
++ ln -fs $(OUT) ${INSTALL_LIBDIR}/$(LIB_NAME).so
++ cp ../include/mvnc.h ${INSTALL_INCDIR}/mvnc2
++ cd ${INSTALL_INCDIR} && ln -fs mvnc2/mvnc.h mvnc.h
++ mkdir -p ${INSTALL_LIBDIR}/mvnc
++ cp mvnc/MvNCAPI-*.mvcmd ${INSTALL_LIBDIR}/mvnc/
+ mkdir -p ${DESTDIR}/etc/udev/rules.d/
+ cp 97-usbboot.rules ${DESTDIR}/etc/udev/rules.d/
+
+@@ -108,11 +127,11 @@ postinstall:
+ install: basicinstall pythoninstall postinstall
+
+ uninstall:
+- rm -f $(INSTALLDIR)/lib/$(OUT)
+- rm -f $(INSTALLDIR)/lib/$(LIB_NAME).so
+- rm -f $(INSTALLDIR)/include/mvnc.h
+- rm -f $(INSTALLDIR)/include/mvnc2/mvnc.h
+- rm -f $(INSTALLDIR)/lib/mvnc/MvNCAPI-*.mvcmd
++ rm -f ${INSTALL_LIBDIR}/$(OUT)
++ rm -f ${INSTALL_LIBDIR}/$(LIB_NAME).so
++ rm -f ${INSTALL_INCDIR}/mvnc.h
++ rm -f ${INSTALL_INCDIR}/mvnc2/mvnc.h
++ rm -f ${INSTALL_LIBDIR}/mvnc/MvNCAPI-*.mvcmd
+ rm -rf ${DESTDIR}$(PYTHON3DIST)/mvnc
+ rm -rf ${DESTDIR}$(PYTHON2DIST)/mvnc
+ rm -f ${DESTDIR}/etc/udev/rules.d/97-usbboot.rules
+--
+2.17.1
+
--- /dev/null
+From 7f9e84aa8807bd74585844379a59bf3f0de362c5 Mon Sep 17 00:00:00 2001
+From: Wook Song <wook16.song@samsung.com>
+Date: Mon, 4 Nov 2019 15:56:04 +0900
+Subject: [PATCH 3/7] [API/Makefile] Modifies Makefile to generate libmvnc.pc
+
+This patch modifies Makefile to generate libmvnc.pc from libmvnc.pc.in,
+which is also added by this patch.
+
+Signed-off-by: Wook Song <wook16.song@samsung.com>
+---
+ api/src/Makefile | 18 +++++++++++++++---
+ api/src/libmvnc.pc.in | 11 +++++++++++
+ 2 files changed, 26 insertions(+), 3 deletions(-)
+ create mode 100644 api/src/libmvnc.pc.in
+
+diff --git a/api/src/Makefile b/api/src/Makefile
+index 2627a7a..99b8a4b 100644
+--- a/api/src/Makefile
++++ b/api/src/Makefile
+@@ -14,6 +14,7 @@ INCLUDE_LIBUSB := $(shell pkg-config libusb-1.0 --cflags)
+ LIBS_LIBUSB := $(shell pkg-config libusb-1.0 --libs)
+ INSTALL_LIBDIR := ${INSTALLDIR}/${LIBDIR_NAME}
+ INSTALL_INCDIR := ${INSTALLDIR}/${INCDIR_NAME}
++INSTALL_PKGCONFIGDIR := ${INSTALLDIR}/${LIBDIR_NAME}/pkgconfig
+ PYTHON3DIST := $(shell python3 -c "import site; print(site.getsitepackages()[0])")
+ PYTHON2DIST := $(shell python -c "import site; print(site.getsitepackages()[0])")
+ LINK_HIGHCLASS ?= no
+@@ -81,7 +82,7 @@ OBJS := $(SRCS:%.c=$(OBJDIR)/%.o)
+ OBJS += $(XLINK_SRCS:%.c=$(OBJDIR)/%.o)
+ DEPS := $(OBJS:.o=.d)
+
+-.PHONY: get_mvcmd
++.PHONY: get_mvcmd libmvnc_pkgconfig
+
+ all: $(OBJDIR)/$(OUT) get_mvcmd
+
+@@ -97,13 +98,22 @@ $(OBJDIR)/%.o: %.c
+
+ -include $(DEPS)
+
++libmvnc_pkgconfig:
++ rm -f libmvnc.pc.tmp
++ cp -f libmvnc.pc.in libmvnc.pc.tmp
++ sed -i 's|@VERSION@|$(VERSION_NUMBER)|g' libmvnc.pc.tmp
++ sed -i 's|@LIB_INSTALL_DIR@|${PREFIX}/${LIBDIR_NAME}|g' libmvnc.pc.tmp
++ sed -i 's|@INCLUDE_INSTALL_DIR@|${PREFIX}/${INCDIR_NAME}|g' libmvnc.pc.tmp
++ mkdir -p ${INSTALL_PKGCONFIGDIR}
++ install -m 644 libmvnc.pc.tmp ${INSTALL_PKGCONFIGDIR}/libmvnc.pc
++
+ get_mvcmd:
+ @./get_mvcmd.sh
+
+-basicinstall: $(OBJDIR)/$(OUT) get_mvcmd
++basicinstall: $(OBJDIR)/$(OUT) get_mvcmd libmvnc_pkgconfig
+ mkdir -p ${INSTALL_INCDIR}
+ mkdir -p ${INSTALL_INCDIR}/mvnc2
+- mkdir -p ${INSTALL_LIBDIR}/${LIBDIR_NAME}
++ mkdir -p ${INSTALL_LIBDIR}
+ cp $(OBJDIR)/$(OUT) ${INSTALL_LIBDIR}/
+ ln -fs $(OUT) ${INSTALL_LIBDIR}/$(LIB_NAME).so
+ cp ../include/mvnc.h ${INSTALL_INCDIR}/mvnc2
+@@ -142,3 +152,5 @@ clean:
+ rm -rf $(OBJDIR)
+ rm -f $(LIB_NAME).so
+ if [ -d "mvnc" ]; then find mvnc/ -type f -delete ; fi
++ find -name "libmvnc.pc.tmp" -delete
++ find -name "libmvnc.pc" -delete
+diff --git a/api/src/libmvnc.pc.in b/api/src/libmvnc.pc.in
+new file mode 100644
+index 0000000..9a607e9
+--- /dev/null
++++ b/api/src/libmvnc.pc.in
+@@ -0,0 +1,11 @@
++# Package Information for pkg-config, for Intel® Movidius™ Neural Compute SDK
++
++libdir=@LIB_INSTALL_DIR@
++includedir=@INCLUDE_INSTALL_DIR@
++
++Name: libmvnc
++Description: Dev Kit of MVNCSDK
++Version: @VERSION@
++Requires:
++Libs: -L${libdir} -lmvnc
++Cflags: -I${includedir}/mvnc
+--
+2.17.1
+
--- /dev/null
+From 59a625c637329400f222964910d9b27279a571e2 Mon Sep 17 00:00:00 2001
+From: Wook Song <wook16.song@samsung.com>
+Date: Mon, 4 Nov 2019 16:07:34 +0900
+Subject: [PATCH 4/7] [API/Makefile] Add flag to skip ./get_mvcmd.sh when it is
+ set
+
+In order to support build systems such as OBS and LaunchPad that do
+not support build-time downloading, this patch makes the target,
+get_mvcmd, skip the downloading procedure when specific flags are set.
+
+Signed-off-by: Wook Song <wook16.song@samsung.com>
+---
+ api/src/Makefile | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/api/src/Makefile b/api/src/Makefile
+index 99b8a4b..ca1e85c 100644
+--- a/api/src/Makefile
++++ b/api/src/Makefile
+@@ -2,6 +2,7 @@ ARCH := $(shell uname -m)
+
+ NO_RESET ?= no
+ NO_BOOT ?= no
++WITH_TIZEN ?= no
+
+ LIB_NAME:= libmvnc
+ OUT := $(LIB_NAME).so.0
+@@ -108,7 +109,9 @@ libmvnc_pkgconfig:
+ install -m 644 libmvnc.pc.tmp ${INSTALL_PKGCONFIGDIR}/libmvnc.pc
+
+ get_mvcmd:
++ifeq ($(strip $(WITH_TIZEN)), no)
+ @./get_mvcmd.sh
++endif
+
+ basicinstall: $(OBJDIR)/$(OUT) get_mvcmd libmvnc_pkgconfig
+ mkdir -p ${INSTALL_INCDIR}
+@@ -118,8 +121,10 @@ basicinstall: $(OBJDIR)/$(OUT) get_mvcmd libmvnc_pkgconfig
+ ln -fs $(OUT) ${INSTALL_LIBDIR}/$(LIB_NAME).so
+ cp ../include/mvnc.h ${INSTALL_INCDIR}/mvnc2
+ cd ${INSTALL_INCDIR} && ln -fs mvnc2/mvnc.h mvnc.h
++ifeq ($(strip $(WITH_TIZEN)), no)
+ mkdir -p ${INSTALL_LIBDIR}/mvnc
+ cp mvnc/MvNCAPI-*.mvcmd ${INSTALL_LIBDIR}/mvnc/
++endif
+ mkdir -p ${DESTDIR}/etc/udev/rules.d/
+ cp 97-usbboot.rules ${DESTDIR}/etc/udev/rules.d/
+
+@@ -141,7 +146,9 @@ uninstall:
+ rm -f ${INSTALL_LIBDIR}/$(LIB_NAME).so
+ rm -f ${INSTALL_INCDIR}/mvnc.h
+ rm -f ${INSTALL_INCDIR}/mvnc2/mvnc.h
++ifeq ($(strip $(WITH_TIZEN)), no)
+ rm -f ${INSTALL_LIBDIR}/mvnc/MvNCAPI-*.mvcmd
++endif
+ rm -rf ${DESTDIR}$(PYTHON3DIST)/mvnc
+ rm -rf ${DESTDIR}$(PYTHON2DIST)/mvnc
+ rm -f ${DESTDIR}/etc/udev/rules.d/97-usbboot.rules
+--
+2.17.1
+
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
Source1: %{name}.manifest
-Source1000: %{_fw_archive_prefix}_%{_fw_version}.zip
+Patch0: 0001-API-Makefile-Revise-Makefile-for-API.patch
+Patch1: 0002-API-Makefile-Generalize-Makefile.patch
+Patch2: 0003-API-Makefile-Modifies-Makefile-to-generate-libmvnc.p.patch
+Patch3: 0004-API-Makefile-Add-flag-to-skip-.-get_mvcmd.sh-when-it.patch
Requires(post): %{_sbindir}/udevadm %{_sbindir}/ldconfig
Requires(postun): %{_sbindir}/udevadm %{_sbindir}/ldconfig
Requires: mvnc-2450-firmware
(Intel® Movidius™ NCS). New users of this device as well as all users of the newer
Intel® Neural Compute Stick 2 should install the OpenVINO™ Toolkit.
-%package fw-ma2450-784
-License: Intel Simplified Software License (ISSL)
-Summary: Firmware for Intel® Movidius™ Neural Compute (ma2450)
-Group: Development/Libraries
-Provides: mvnc-2450-firmware
-
-%description fw-ma2450-784
-This package contains a firmware binary for Intel® Movidius™ Neural Compute Stick (ma2450).
-
%package devel
License: Apache-2.0
Summary: Development package to use NCSDK
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
cp %{SOURCE1} .
-unzip %{SOURCE1000}
%build
pushd api/src
popd
%install
-cp -rf mvnc ./api/src
pushd api/src
%{__make} \
DESTDIR=%{?buildroot:%{buildroot}} \
%license LICENSE
%{_libdir}/libmvnc.so.*
/etc/udev/rules.d/*
-%{_libdir}/mvnc/*
%files devel
%manifest %{name}.manifest
%license LICENSE
%{_libdir}/pkgconfig/*.pc
%{_includedir}/*
-
-%files fw-ma2450-784
-%manifest %{name}.manifest
-%license ISSL.txt
-%{_libdir}/mvnc/*