2020-05-01 15:33:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# @author Lukas Heiligenbrunner
  
						 
					
						
							
								
									
										
										
										
											2020-05-01 12:33:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# main CMake file
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#
  
						 
					
						
							
								
									
										
										
										
											2020-05-01 15:33:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Build lib dependencies:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## libcurl (with sources)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## libconfig (with sources)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#
  
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# for documenation build doxygen needs to be installed.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# for test build gtest needs to be installed.
  
						 
					
						
							
								
									
										
										
										
											2020-05-01 15:33:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-23 22:05:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								cmake_minimum_required ( VERSION  3.13 ) 
  
						 
					
						
							
								
									
										
										
										
											2019-10-26 14:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								project ( iprefresher  DESCRIPTION  "Dynu ip refresher" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SET ( PROJECT_VERSION  1.3.3 ) 
  
						 
					
						
							
								
									
										
										
										
											2019-05-01 11:14:52 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# CONFIGURATION
  
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:47:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SET ( CMAKE_BUILD_TYPE  Release )  # manually SET build type (Release / Debug)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SET ( LIB_METHOD  STATIC )  #SHARED / STATIC
  
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( BUILD_DOC  "Build documentation"  ON )  # additional dependency for Doxygen
  
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( PACKAGING  "Allow Packaging to <exe>, <deb> or <rpm>"  ON )  # additional dependencies for RPMbuild,dpkg  or NSIS
  
						 
					
						
							
								
									
										
										
										
											2020-05-07 19:58:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( TESTS  "Build Tests"  ON )  # additional dependencies for GTEST - to build tests
  
						 
					
						
							
								
									
										
										
										
											2020-05-10 18:10:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								option ( GUI  "Build GUI elements"  ON )  # additional dependencies to QT libraries needed
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set ( WinBuild  true ) 
  
						 
					
						
							
								
									
										
										
										
											2019-10-26 10:57:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# helper variables
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SET ( CMAKE_CXX_STANDARD  17 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								string ( TIMESTAMP  TIMESTAMP_NOW  "%d.%m.%Y" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:47:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SET ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY  ${ CMAKE_BINARY_DIR } /bin ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY  ${ CMAKE_BINARY_DIR } /bin ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY  ${ CMAKE_BINARY_DIR } /bin ) 
  
						 
					
						
							
								
									
										
										
										
											2019-08-01 22:31:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# setup winbuild compilers
  
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ${ WinBuild } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( LIBSUFFIX  .dll ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( SUFFIX  .exe ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_SYSTEM_NAME  WindowsStore ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_SYSTEM_VERSION  10.0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( TOOLCHAIN_PREFIX  x86_64-w64-mingw32 )  # x64 build toolchain
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    #set(TOOLCHAIN_PREFIX i686-w64-mingw32)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # cross compilers to use for C and C++
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_C_COMPILER  ${ TOOLCHAIN_PREFIX } -gcc ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_CXX_COMPILER  ${ TOOLCHAIN_PREFIX } -g++ ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_RC_COMPILER  ${ TOOLCHAIN_PREFIX } -windres ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # target environment on the build host system
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_FIND_ROOT_PATH  /usr/ ${ TOOLCHAIN_PREFIX } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # modify default behavior of FIND_XXX() commands to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # search for headers/libs in the target environment and
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # search for programs in the build host environment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM  ONLY ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY  ONLY ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE  ONLY ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE  ONLY ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( CMAKE_CXX_STANDARD_LIBRARIES  "${CMAKE_CSS_STANDARD_LIBRARIES}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # currently libs are dynamically linked eg. dlls have to be copied to same folder
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # todo link dynamically.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # maybe so: set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++ -static")
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # or set(CMAKE_CXX_STANDARD_LIBRARIES -lcurl -lpthread -static-libgcc -static-libstdc++ -lcrypto -lssl -lws2_32 -static -DCURL_STATICLIB)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # or add_definitions(-DCURL_STATICLIB)
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # windows config path is same as executable
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CONFIG_PATH  "./iprefresher.cfg" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else  ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( LIBSUFFIX  .so ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( SUFFIX  "" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # set /etc/ config path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CONFIG_PATH  "/etc/iprefresher.cfg" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif  ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-30 10:47:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# config libs
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 14:14:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								message ( STATUS  "Config of Libraries" ) 
  
						 
					
						
							
								
									
										
										
										
											2020-04-30 10:47:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# libcurl
  
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ${ WinBuild } ) 
  
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    SET ( CMAKE_FIND_LIBRARY_SUFFIXES  ".lib"  ".dll" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # configure libcurl
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FIND_PATH ( CURL_INCLUDE_DIRS  curl/curl.h  /usr/ ${ TOOLCHAIN_PREFIX } /sys-root/mingw/include/ )  # search for libconfig include headers
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    FIND_LIBRARY ( CURL_LIBRARIES  NAMES  libcurl.dll.a  HINTS  /usr/ ${ TOOLCHAIN_PREFIX } /sys-root/mingw/lib )  # search for actual lib
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-24 22:00:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( STATUS  "Using CURL include dir(s): ${CURL_INCLUDE_DIRS}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( STATUS  "Using CURL lib(s): ${CURL_LIBRARIES}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( STATUS  "" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-01 11:14:52 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    include_directories ( ${ CURL_INCLUDE_DIRS }  inc ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-29 20:06:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # configure libconfig
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FIND_PATH ( LIBCONFIG++_INCLUDE_DIRS  libconfig.h++  /usr/ ${ TOOLCHAIN_PREFIX } /sys-root/mingw/include/ )  # search for libconfig include headers
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    FIND_LIBRARY ( LIBCONFIG++_LIBRARIES  NAMES  libconfig++.dll.a  HINTS  /usr/ ${ TOOLCHAIN_PREFIX } /sys-root/mingw/lib )  # search for actual lib
 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-29 20:06:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    message ( STATUS  "Using LIBCONFIG++ include dir(s): ${LIBCONFIG++_INCLUDE_DIRS}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( STATUS  "Using LIBCONFIG++ lib(s): ${LIBCONFIG++_LIBRARIES}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-30 10:47:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    include_directories ( ${ LIBCONFIG++_INCLUDE_DIRS }  inc ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 18:10:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ${ GUI } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( CMAKE_PREFIX_PATH  "/usr/${TOOLCHAIN_PREFIX}/sys-root/mingw/lib/cmake" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif  ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else  ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find_package ( CURL  REQUIRED ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( CURL_INCLUDE_DIRS  AND  CURL_LIBRARIES ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( STATUS  "Found CURL version: ${CURL_VERSION_STRING}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( STATUS  "Using CURL include dir(s): ${CURL_INCLUDE_DIRS}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( STATUS  "Using CURL lib(s): ${CURL_LIBRARIES}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( FATAL_ERROR  "Could not find CURL" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif  ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    include_directories ( ${ CURL_INCLUDE_DIR }  inc ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( "" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # libconfig
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:17:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    FIND_PATH ( LIBCONFIG++_INCLUDE_DIRS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            N A M E S  l i b c o n f i g . h + + 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            P A T H S  / u s r / i n c l u d e  / u s r / l o c a l / i n c l u d e )  # search for libconfig include headers
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:19:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    FIND_LIBRARY ( LIBCONFIG++_LIBRARIES 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:17:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            N A M E S  c o n f i g + + 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            P A T H S  / u s r / l i b  / u s r / l o c a l / l i b )  # search for actual lib
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:19:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( LIBCONFIG++_INCLUDE_DIRS  AND  LIBCONFIG++_LIBRARIES ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:17:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        message ( STATUS  "Fount libconfig!" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        message ( STATUS  "Using libconfig include dir(s): ${LIBCONFIG++_INCLUDE_DIRS}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:19:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        message ( STATUS  "Using libconfig lib(s): ${LIBCONFIG++_LIBRARIES}" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else  ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:17:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        message ( FATAL_ERROR  "Could not find LIBCONFIG" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    endif  ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 16:17:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    include_directories ( ${ LIBCONFIG_INCLUDE_DIRS } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 21:17:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif  ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-04-29 20:06:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 18:10:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ${ GUI } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_AUTOMOC  ON ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( CMAKE_INCLUDE_CURRENT_DIR  ON ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find_package ( Qt5Widgets  REQUIRED ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find_package ( Qt5PrintSupport  REQUIRED ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find_package ( Qt5Sql  REQUIRED ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif  ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-29 20:06:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								message ( "" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:56:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#read sample config
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FILE ( READ  ${ CMAKE_SOURCE_DIR } /config/iprefresher.cfg  SAMPLECONFIG ) 
  
						 
					
						
							
								
									
										
										
										
											2019-10-26 14:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#add version header
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FILE ( WRITE  ${ CMAKE_SOURCE_DIR } /inc/Version.h  
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " / * * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  V e r s i o n  h e a d e r  t o  s t o r e  V e r s i o n ,  C o n f i g  d i r  a n d  a  S a m p l e  c o n f i g 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  D o  n o t  e d i t  t h i s  f i l e  m a n u a l l y ,  i t  i s  g e n e r a t e d  b y  t h e  c m a k e  s c r i p t ! 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ a u t h o r  L u k a s  H e i l i g e n b r u n n e r 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ d a t e  $ { T I M E S T A M P _ N O W } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#pragma once
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:56:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#include <string>
  
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:56:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								n a m e s p a c e  V e r s i o n  { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  c o n s t  s t d : : s t r i n g  V E R S I O N  =  \ " $ { P R O J E C T _ V E R S I O N } \ " ; 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  c o n s t  s t d : : s t r i n g  C o n f i g D i r  =  \ " $ { C O N F I G _ P A T H } \ " ; 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:56:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  c o n s t  s t d : : s t r i n g  S A M P L E C O N F I G  =  R \ " ( $ { S A M P L E C O N F I G } ) \ " ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} " 
  
						 
					
						
							
								
									
										
										
										
											2019-10-26 14:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 13:41:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								add_library ( api  ${ LIB_METHOD }  
						 
					
						
							
								
									
										
										
										
											2019-05-08 19:19:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        s r c / a p i / A P I . c p p 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        s r c / a p i / T e l e g r a m A P I . c p p 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-18 11:23:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        s r c / a p i / D y n u A P I . c p p 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:56:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        s r c / a p i / I P A P I . c p p ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-01 20:18:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								add_library ( dynuiprefresher  ${ LIB_METHOD }  
						 
					
						
							
								
									
										
										
										
											2019-10-26 14:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        s r c / I P R e f r e s h e r . c p p 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 14:54:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        s r c / C o n f i g . c p p 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        s r c / I p H e l p e r . c p p 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        s r c / F i l e L o g g e r . c p p 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        s r c / L o g g e r . c p p 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-05 15:38:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								add_executable ( iprefresher  src/main.cpp ) 
  
						 
					
						
							
								
									
										
										
										
											2019-08-01 21:19:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# LINK generated LIBS #
  
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								target_link_libraries ( iprefresher  dynuiprefresher  api  ${ CURL_LIBRARIES }  ${ LIBCONFIG++_LIBRARIES } ) 
  
						 
					
						
							
								
									
										
										
										
											2019-05-01 11:14:52 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-09 23:08:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ${ GUI } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( QT5_LIBRARIES  Qt5::Widgets  Qt5::PrintSupport  Qt5::Sql ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( UI_SOURCES 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            s r c / g u i / m a i n w i n d o w . u i 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    #
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Generate necessary headers from .ui files. (qmake lets `uic` do this job.)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # hint from [Cross-platform Qt5 project using cmake](http://stackoverflow.com/questions/21174586/cross-platform-qt5-project-using-cmake)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    #
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    qt5_wrap_ui ( UI_GENERATED_HEADERS  ${ UI_SOURCES } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_executable ( iprefresher-gui 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            s r c / m a i n g u i . c p p 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            s r c / g u i / M a i n W i n d o w . c p p 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            s r c / g u i / M a i n W i n d o w . h  $ { U I _ G E N E R A T E D _ H E A D E R S } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # LINK generated LIBS #
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 15:00:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    target_link_libraries ( iprefresher-gui  -lpthread  dynuiprefresher  api  ${ CURL_LIBRARIES }  ${ LIBCONFIG++_LIBRARIES }  ${ QT5_LIBRARIES } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-09 23:08:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif  ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# setting install targets
  
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								IF  ( NOT  ${ WinBuild } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # INSTALL to Linux SYSTEM #
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # install binaries
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    install ( TARGETS  iprefresher  DESTINATION  usr/bin ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # install systemd service and enable it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    install ( FILES  service/iprefresher.service  DESTINATION  lib/systemd/system ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ELSE  ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # INSTALL to Windows SYSTEM #
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # install binary to current folder
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set_target_properties ( iprefresher  PROPERTIES  SUFFIX  ".exe" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    install ( TARGETS  iprefresher  DESTINATION  . ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # install .dll dependencies
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # todo check if files exist...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    install ( FILES  /usr/ ${ TOOLCHAIN_PREFIX } /sys-root/mingw/bin/libcurl-4.dll 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b s s h 2 - 1 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b s t d c + + - 6 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b g c c _ s _ s e h - 1 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b c r y p t o - 1 _ 1 - x 6 4 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b s s l - 1 _ 1 - x 6 4 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b w i n p t h r e a d - 1 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / z l i b 1 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b i d n 2 - 0 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / u s r / $ { T O O L C H A I N _ P R E F I X } / s y s - r o o t / m i n g w / b i n / l i b c o n f i g + + - 1 1 . d l l 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            D E S T I N A T I O N  . ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ENDIF  ( ) 
  
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ${ PACKAGING } ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # General Packaging options:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( STATUS  "config of Package build" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 17:02:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set ( CPACK_PACKAGE_NAME  "DynuIpRefresher" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SET ( CPACK_PACKAGE_DESCRIPTION  "IPrefresher to refresh Dynu ip address and notify user via Telegram" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY  "IPrefresher to refresh Dynu ip address and notify user via Telegram" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SET ( CPACK_PACKAGE_VENDOR  "Lukas Heilgienbrunner" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SET ( CPACK_PACKAGE_VERSION  "${PROJECT_VERSION}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SET ( CPACK_SOURCE_PACKAGE_FILE_NAME  "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SET ( CPACK_PACKAGE_CONTACT  "Lukas Heiligenbrunner <lukas.heiligenbrunner@gmail.com>" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    SET ( CMAKE_INSTALL_PREFIX  "/" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 14:20:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IF  ( NOT  ${ WinBuild } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # generate post script for checking if configuration already exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FILE ( WRITE  ${ CMAKE_SOURCE_DIR } /postinst 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " #!/bin/bash
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Post installation script for linux packages
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# do not edit this file manually, it is generated by the cmake script
  
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:33:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								i f  [  !  - f  $ { C O N F I G _ P A T H }  ] ;  t h e n 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    c a t  >  $ { C O N F I G _ P A T H }  < < -  E O M 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ { S A M P L E C O N F I G } E O M 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								f i \ n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_DEB_COMPONENT_INSTALL  1 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_OUTPUT_FILE_PREFIX  packages ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_PACKAGING_INSTALL_PREFIX  "/" )  # no prefix for package structure
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FIND_PROGRAM ( RPMBUILD_EXECUTABLE  rpmbuild ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FIND_PROGRAM ( DEB_EXECUTABLE  dpkg ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_GENERATOR  "TGZ;TBZ2" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        #check if rpm build is possible
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( NOT  ${ RPMBUILD_EXECUTABLE }  STREQUAL  "RPMBUILD_EXECUTABLE-NOTFOUND" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message ( STATUS  "found rpm build executeable --> able to build rpm" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            SET ( CPACK_GENERATOR  "${CPACK_GENERATOR};RPM" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            SET ( CPACK_RPM_POST_INSTALL_SCRIPT_FILE  "${CMAKE_CURRENT_SOURCE_DIR}/postinst" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            SET ( CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION  "/lib/systemd/system"  "/lib/systemd"  "/lib"  "/usr/local/bin"  "/usr/local" )  # --> needed to not override existing folders
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( CPACK_RPM_PACKAGE_REQUIRES  "libcurl,libconfig" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  ( NOT  ${ RPMBUILD_EXECUTABLE }  STREQUAL  "RPMBUILD_EXECUTABLE-NOTFOUND" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message ( STATUS  "not found rpm build tools --> not building rpm" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endif  ( NOT  ${ RPMBUILD_EXECUTABLE }  STREQUAL  "RPMBUILD_EXECUTABLE-NOTFOUND" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        #check if deb build is possible
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( NOT  ${ DEB_EXECUTABLE }  STREQUAL  "DEB_EXECUTABLE-NOTFOUND" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message ( STATUS  "found deb build tools --> able to build deb" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            SET ( CPACK_GENERATOR  "${CPACK_GENERATOR};DEB" )  # add deb generator
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA  "${CMAKE_CURRENT_SOURCE_DIR}/postinst" )  # set post inst file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( CPACK_DEBIAN_PACKAGE_DEPENDS  "libcurl4,libconfig++9v5" )  # add debian dependencies
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  ( NOT  ${ DEB_EXECUTABLE }  STREQUAL  "DEB_EXECUTABLE-NOTFOUND" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message ( STATUS  "not found  deb build tools --> not building deb" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endif  ( NOT  ${ DEB_EXECUTABLE }  STREQUAL  "DEB_EXECUTABLE-NOTFOUND" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_CMAKE_GENERATOR  "Unix Makefiles" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_SOURCE_GENERATOR  "TGZ;TBZ2" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_PACKAGE_SECTION  "games" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ELSE  ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Pack a NSIS intaller
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( CPACK_GENERATOR  NSIS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( STATUS  "Using NSIS Package build." ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( CPACK_NSIS_testcomp_INSTALL_DIRECTORY  / ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( CPACK_PACKAGE_INSTALL_DIRECTORY  "DynuIpRefresher" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( CPACK_NSIS_MODIFY_PATH  ON ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ENDIF  ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    INCLUDE ( CPack ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_custom_target ( build-packages 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " $ { C M A K E _ C O M M A N D } "  - - b u i l d  " $ { C M A K E _ B I N A R Y _ D I R } "  - - t a r g e t  p a c k a g e 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            D E P E N D S  $ { P R O J E C T _ N A M E } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            C O M M E N T  " P a c k i n g  $ { P R O J E C T _ N A M E } " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( "" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENDIF  ( ) 
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 13:41:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# check if Doxygen is installed
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 14:14:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( BUILD_DOC ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( STATUS  "config of DOxygen build" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find_package ( Doxygen ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( DOXYGEN_FOUND ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-01 16:47:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # SET input and output files
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( DOXYGEN_IN  ${ CMAKE_CURRENT_SOURCE_DIR } /docs/Doxyfile.in ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SET ( DOXYGEN_OUT  ${ CMAKE_CURRENT_BINARY_DIR } /Doxyfile ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 13:41:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # request to configure the file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        configure_file ( ${ DOXYGEN_IN }  ${ DOXYGEN_OUT }  @ONLY ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # note the option ALL which allows to build the docs together with the application
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        add_custom_target ( doc_doxygen  ALL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                C O M M A N D  $ { D O X Y G E N _ E X E C U T A B L E }  $ { D O X Y G E N _ O U T } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                W O R K I N G _ D I R E C T O R Y  $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                C O M M E N T  " G e n e r a t i n g  A P I  d o c u m e n t a t i o n  w i t h  D o x y g e n " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                V E R B A T I M ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 14:14:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        message ( STATUS  "Successfully configured doxygen" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  ( DOXYGEN_FOUND ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( STATUS  "Doxygen need to be installed to generate the doxygen documentation" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif  ( DOXYGEN_FOUND ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    message ( "" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 19:58:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								endif  ( BUILD_DOC ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Test Cases
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( TESTS ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    include ( GoogleTest ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mark_as_advanced ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            B U I L D _ G M O C K  B U I L D _ G T E S T  B U I L D _ S H A R E D _ L I B S 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            g m o c k _ b u i l d _ t e s t s  g t e s t _ b u i l d _ s a m p l e s  g t e s t _ b u i l d _ t e s t s 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            g t e s t _ d i s a b l e _ p t h r e a d s  g t e s t _ f o r c e _ s h a r e d _ c r t  g t e s t _ h i d e _ i n t e r n a l _ s y m b o l s 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enable_testing ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    macro ( package_add_test  TESTNAME ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # create an exectuable in which the tests will be stored
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        add_executable ( ${ TESTNAME }  ${ ARGN } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # link the Google test infrastructure, mocking library, and a default main fuction to
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-08 16:45:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        target_link_libraries ( ${ TESTNAME }  gtest  gtest_main  -lpthread  -lm  dynuiprefresher  api  ${ CURL_LIBRARIES }  ${ LIBCONFIG++_LIBRARIES } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 19:58:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # see https://cmake.org/cmake/help/v3.10/module/GoogleTest.html for more options to pass to it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        gtest_discover_tests ( ${ TESTNAME } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                W O R K I N G _ D I R E C T O R Y  $ { P R O J E C T _ D I R } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                E X T R A _ A R G S  - - g t e s t _ o u t p u t = x m l : r e p o r t . x m l  - V V 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                P R O P E R T I E S  V S _ D E B U G G E R _ W O R K I N G _ D I R E C T O R Y  " $ { P R O J E C T _ D I R } " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set_target_properties ( ${ TESTNAME }  PROPERTIES  FOLDER  tests ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endmacro ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    package_add_test ( test1  tests/UnitTest.cpp  ${ SOURCE } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_custom_target ( build-test 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " $ { C M A K E _ C O M M A N D } "  - - b u i l d  " $ { C M A K E _ B I N A R Y _ D I R } "  - - t a r g e t  t e s t 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            D E P E N D S  $ { P R O J E C T _ N A M E } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            C O M M E N T  " P a c k i n g  $ { P R O J E C T _ N A M E } " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_custom_target ( build-xml 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " b i n / t e s t 1 "  - - g t e s t _ o u t p u t = " x m l : r e p o r t . x m l " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            D E P E N D S  $ { P R O J E C T _ N A M E } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            C O M M E N T  " P a c k i n g  $ { P R O J E C T _ N A M E } " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENDIF  ( )