From 32a308985510e16d172e6ab5fa1677e6fd69d721 Mon Sep 17 00:00:00 2001
From: Sebastian Hahta <joseha@utu.fi>
Date: Tue, 9 Jun 2020 15:25:24 +0300
Subject: [PATCH] CPack

---
 .gitlab-ci.yml                     |  4 +++-
 CMakeLists.txt                     | 17 +++++-----------
 applications/gui/CMakeLists.txt    |  1 +
 applications/vision/CMakeLists.txt |  1 +
 cmake/ftl_CPack.cmake              | 32 ++++++++++++++++++++++++++++++
 lib/libsgm/src/CMakeLists.txt      |  4 ++--
 6 files changed, 44 insertions(+), 15 deletions(-)
 create mode 100644 cmake/ftl_CPack.cmake

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 93966ccf5..a3befbf2a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,6 +20,7 @@ linux:
     - linux
   variables:
     FTL_LIB: ../../build/SDK/C/libftl-dev.so
+    LD_LIBRARY_PATH: /opt/pylon/lib/
 #  before_script:
 #    - export DEBIAN_FRONTEND=noninteractive
 #    - apt-get update -qq && apt-get install -y -qq g++ cmake git
@@ -27,8 +28,9 @@ linux:
   script:
     - mkdir build
     - cd build
-    - cmake .. -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release
+    - cmake .. -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release -DCPACK_GENERATOR=DEB
     - make
+    - make package
     - ctest --output-on-failure
     - cd ../SDK/Python
     - python3 -m unittest discover test
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3f2c96fb1..96fb65323 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,6 +8,7 @@ project (ftl.utu.fi VERSION 0.0.4)
 
 include(GNUInstallDirs)
 include(CTest)
+
 enable_testing()
 
 option(WITH_OPTFLOW "Use NVIDIA Optical Flow if available" OFF)
@@ -119,7 +120,7 @@ endif()
 
 if (WITH_OPUS)
 	find_library( OPUS_LIBRARY NAMES opus PATHS ${OPUS_DIR} PATH_SUFFIXES lib)
-	
+
 	if (OPUS_LIBRARY)
 		find_path( OPUS_INCLUDE NAMES opus/opus.h)
 
@@ -184,7 +185,7 @@ if(${CMAKE_VERSION} VERSION_GREATER "3.12.0")
 	cmake_policy(SET CMP0074 NEW)
 endif()
 
-set(CMAKE_CXX_STANDARD 17) # For PCL/VTK https://github.com/PointCloudLibrary/pcl/issues/2686
+set(CMAKE_CXX_STANDARD 17)
 set(HAVE_OPENCV TRUE)
 
 # Readline library is not required on Windows
@@ -487,17 +488,9 @@ configure_file(${CMAKE_SOURCE_DIR}/components/common/cpp/src/config.cpp.in
 			   ${CMAKE_SOURCE_DIR}/components/common/cpp/src/config.cpp
 )
 
-# For issue #17
-# https://gitlab.kitware.com/cmake/cmake/issues/16915#note_456382
-if ( TARGET Qt5::Core )
-	get_property( core_options TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_OPTIONS )
-	string( REPLACE "-fPIC" "" new_core_options "${core_options}" )
-	set_property( TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_OPTIONS ${new_core_options} )
-	set_property( TARGET Qt5::Core PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE "ON" )
-	set( CMAKE_CXX_COMPILE_OPTIONS_PIE "-fPIC" )
-endif()
-
 if (WIN32) # TODO(nick) Should do based upon compiler (VS)
 	set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${VS_STARTUP_PROJECT})
 	set_property(TARGET ftl-vision PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${VS_DEBUG_WORKING_DIRECTORY})
 endif()
+
+include(ftl_CPack)
diff --git a/applications/gui/CMakeLists.txt b/applications/gui/CMakeLists.txt
index 8cd06d328..8b552cb93 100644
--- a/applications/gui/CMakeLists.txt
+++ b/applications/gui/CMakeLists.txt
@@ -28,6 +28,7 @@ add_definitions(${NANOGUI_EXTRA_DEFS})
 include_directories(${NANOGUI_EXTRA_INCS})
 
 add_executable(ftl-gui ${GUISRC})
+install(TARGETS ftl-gui DESTINATION bin COMPONENT gui)
 
 target_include_directories(ftl-gui PUBLIC
 	$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
diff --git a/applications/vision/CMakeLists.txt b/applications/vision/CMakeLists.txt
index a40126b95..4c2674d8d 100644
--- a/applications/vision/CMakeLists.txt
+++ b/applications/vision/CMakeLists.txt
@@ -10,6 +10,7 @@ set(CVNODESRC
 )
 
 add_executable(ftl-vision ${CVNODESRC})
+install(TARGETS ftl-vision DESTINATION bin COMPONENT vision)
 
 target_include_directories(ftl-vision PUBLIC
 	$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
diff --git a/cmake/ftl_CPack.cmake b/cmake/ftl_CPack.cmake
new file mode 100644
index 000000000..b496c30be
--- /dev/null
+++ b/cmake/ftl_CPack.cmake
@@ -0,0 +1,32 @@
+# use build date as patch version
+string(TIMESTAMP BUILD_TIME "%Y%m%d")
+set(CPACK_PACKAGE_VERSION_PATCH "${BUILD_TIME}")
+
+set(CPACK_DEBIAN_PACKAGE_MAINTAINER "UTU Future Tech Lab")
+set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
+set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
+set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=")
+set(CPACK_DEB_PACKAGE_COMPONENT ON)
+set(CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous")
+
+macro(deb_append_dependency DEPENDS)
+	if ("${CPACK_DEBIAN_PACKAGE_DEPENDS}" STREQUAL "")
+		set(CPACK_DEBIAN_PACKAGE_DEPENDS "${DEPENDS}")
+	else()
+		set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, ${DEPENDS}")
+	endif()
+endmacro()
+
+if (HAVE_PYLON)
+	deb_append_dependency("pylon (>= 6.1.1)")
+	set(ENV{LD_LIBRARY_PATH} "=/opt/pylon/lib/")
+endif()
+
+if(WIN32)
+	message(INFO "Copying DLLs: OpenCV")
+	file(GLOB WINDOWS_LIBS "${OpenCV_INSTALL_PATH}/${OpenCV_ARCH}/${OpenCV_RUNTIME}/bin/*.dll")
+	install(FILES ${WINDOWS_LIBS} DESTINATION bin)
+	set(CPACK_GENERATOR "WiX")
+endif()
+
+include(CPack)
diff --git a/lib/libsgm/src/CMakeLists.txt b/lib/libsgm/src/CMakeLists.txt
index 89e503587..a338f8380 100644
--- a/lib/libsgm/src/CMakeLists.txt
+++ b/lib/libsgm/src/CMakeLists.txt
@@ -31,12 +31,12 @@ install(
 )
 
 install(
-	DIRECTORY ${CMAKE_SOURCE_DIR}/include
+	DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../include
 	DESTINATION ${CMAKE_INSTALL_PREFIX}
 	FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
 )
 
 install(
-	FILES ${CMAKE_SOURCE_DIR}/FindLibSGM.cmake
+	FILES ${CMAKE_CURRENT_SOURCE_DIR}/../FindLibSGM.cmake
 	DESTINATION ${CMAKE_INSTALL_PREFIX}
 )
-- 
GitLab