cmake_minimum_required(VERSION 2.8.3)
project(nntrainer)
+set(NNTRAINER_MAJOR 0)
+set(NNTRAINER_MINOR 0)
+set(NNTRAINER_RELEASE 1)
+set(NNTRAINER_VERSION ${NNTRAINER_MAJOR}.${NNTRAINER_MINOR}.${NNTRAINER_RELEASE})
+
+option(TIZEN "Build for Tizen" OFF)
+
+set (BLASLIB blas-openblas)
+if(TIZEN)
+ set (BLASLIB openblas)
+endif(TIZEN)
set(CMAKE_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/include/)
set(CMAKE_INSTALL_LIBDIR ${CMAKE_INSTALL_PREFIX}/lib/)
option(USE_BLAS "Use BLAS library" ON)
-include_directories( ${include_directories}
- ${CMAKE_CURRENT_SOURCE_DIR}
- )
-
set(SRCS
- src/neuralnet.cpp
- src/tensor.cpp
- src/layers.cpp
- src/databuffer.cpp
- )
+ src/neuralnet.cpp
+ src/tensor.cpp
+ src/layers.cpp
+ src/databuffer.cpp
+ )
-set(NNTRAINER_HEADERS include/neuralnet.h include/tensor.h include/layers.h include/databuffer.h)
+set(NNTRAINER_HEADERS
+ include/neuralnet.h
+ include/tensor.h
+ include/layers.h
+ include/databuffer.h
+ )
+
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ )
if(USE_BLAS)
ADD_DEFINITIONS(-DUSE_BLAS)
- pkg_check_modules(BLAS cblas)
+ pkg_check_modules(BLAS ${BLASLIB})
link_libraries(${BLAS_LIBRARIES})
include_directories(${BLAS_INCLUDE_DIRS})
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lcblas")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lcblas")
message("[-DUSE_BLAS] is enabled")
endif(USE_BLAS)
add_library( ${PROJECT_NAME} SHARED ${SRCS} )
configure_file("package.pc.in" "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.pc" @ONLY)
-install (FILES "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.pc" DESTINATION "${PKGCONFIG_INSTALL_DIR}")
+install (FILES "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install (TARGETS nntrainer
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
-install (FILES ${NNTRAINER_HEADERS} DESTINATION include)
+install (FILES ${NNTRAINER_HEADERS} DESTINATION include/nntrainer)
includedir=${prefix}/include
Name : nntrainer
-Version : 0.0.1
-Description: On Device Learning Framework
+Version : @NNTRAINER_VERSION@
+Description: Software Framework for Training Neural Network on Device
Libs: -L${libdir} -lnntrainer
-Cflags: -I${includedir}
\ No newline at end of file
+Cflags: -I${includedir}/nntrainer
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+%define enable_cblas 1
+
+Name: nntrainer
+Summary: Software framework for traning neural networks
+Version: 0.0.1
+Release: 0
+Packager: Jijoong Moon <jijoong.moon@sansumg.com>
+License: Apache-2.0
+Source0: nntrainer-%{version}.tar.gz
+Source1001: nntrainer.manifest
+
+BuildRequires: cmake >= 2.8.3
+BuildRequires: openblas-devel
+BuildRequires: iniparser-devel
+Requires: iniparser
+Requires: libopenblas
+
+%description
+NNtrainer is Software Framework for Training Nerual Network Models on Devices.
+
+%package devel
+Summary: Development package for custom nntrainer developers
+Requires: nntrainer = %{version}-%{release}
+Requires: iniparser-devel
+Requires: openblas-devel
+
+%description devel
+Development pacage for custom nntrainer developers.
+This contains corresponding header files and .pc pkgconfig file.
+
+# Using cblas for Matrix calculation
+%if 0%{?enable_cblas}
+%define enable_cblas -DUSE_BLAS=ON
+%endif
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+
+%build
+CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-std=gnu++11||"`
+
+mkdir -p build
+pushd build
+cmake .. -DCMAKE_INSTALL_PREFIX=/usr %{enable_cblas} -DTIZEN=ON
+make %{?jobs:-j%jobs}
+popd
+
+%install
+pushd build
+%make_install
+popd
+
+
+%files
+%manifest nntrainer.manifest
+%defattr(-,root,root,-)
+%license LICENSE
+%{_libdir}/*.so
+
+%files devel
+%{_includedir}/nntrainer/databuffer.h
+%{_includedir}/nntrainer/layers.h
+%{_includedir}/nntrainer/neuralnet.h
+%{_includedir}/nntrainer/tensor.h
+%{_libdir}/pkgconfig/nntrainer.pc
+
+%changelog
+* Wed Mar 18 2020 Jijoong Moon <jijoong.moon@samsung.com>
+- packaged nntrainer