project( csys )
cmake_minimum_required( VERSION 3.16 )

set( PROJECT_VERSION 5.0.0 )
set( PROJECT_VERSION_MAJOR 5 )
set( PROJECT_VERSION_MINOR 0 )
set( PROJECT_VERSION_PATCH 0 )

set( PROJECT_VERSION_MAJOR_MINOR ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} )
add_compile_definitions(VERSION_TEXT="${PROJECT_VERSION}")

set( CMAKE_CXX_STANDARD 17 )
set( CMAKE_INCLUDE_CURRENT_DIR ON )
set( CMAKE_BUILD_TYPE Release )
set( CMAKE_AUTOMOC ON )
set( CMAKE_AUTORCC ON )
set( CMAKE_AUTOUIC ON )

add_definitions ( -Wall )
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
    set( CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Location for installing the project" FORCE )
endif()

find_package ( Qt6Core REQUIRED )
find_package ( Qt6Network REQUIRED )
find_package ( Qt6DBus REQUIRED )

set ( csys_HDRS
	csys/cpuinfo.h
	csys/networkinfo.h
	csys/battery.h
	csys/diskinfo.h
	csys/memoryinfo.h
	csys/systeminfo.h
	csys/fileutil.h
	csys/infomanager.h
	libcsys_global.h
)

set ( csys_SRCS
	csys/cpuinfo.cpp
	csys/diskinfo.cpp
	csys/memoryinfo.cpp
	csys/networkinfo.cpp
	csys/systeminfo.cpp
	csys/fileutil.cpp
	csys/battery.cpp
	csys/infomanager.cpp
	csys/power.cpp
	csys/storageinfo.cpp
)

set ( csys_MOCS
	csys/power.h
	csys/storageinfo.h
)
QT6_WRAP_CPP(MOCS ${csys_MOCS})

configure_file( pkgconfig/csys.pc.in csys.pc @ONLY )

add_library ( csys SHARED ${csys_SRCS} ${MOCS} )
set_target_properties( csys PROPERTIES VERSION ${PROJECT_VERSION} )
set_target_properties( csys PROPERTIES SOVERSION ${PROJECT_VERSION} )
set_target_properties( csys PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR_MINOR} )
set_target_properties( csys PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR} )
target_link_libraries ( csys  Qt6::Core Qt6::DBus Qt6::Network )

install( TARGETS csys EXPORT LIBRARY )
install( FILES ${csys_HDRS} ${csys_MOCS} DESTINATION include/csys/ )
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/csys.pc DESTINATION share/pkgconfig )
