cmake_minimum_required(VERSION 3.16)

project(SendMetricValues)

include_directories(
	${PROJECT_SOURCE_DIR}/..
	${PROJECT_SOURCE_DIR}/../../include
)

set(SOURCES
	"client.c"
	"main.c"
	"metric.c"
	"sensor.c"
	"sensorValue.c"
)
if (WIN32)
	set(SOURCES ${SOURCES} "../unistd_win.c" )
endif ()

set(HEADERS
	"client.h"
	"metric.h"
	"sensor.h"
	"sensorValue.h"
	"userdata.h"
)
if (WIN32)
	set(HEADERS ${HEADERS} "../unistd_win.h" )
endif ()

add_executable(${PROJECT_NAME} ${HEADERS} ${SOURCES})

if(WIN32 AND BUILD_SHARED_LIBS)
	target_compile_definitions(${PROJECT_NAME} PRIVATE -DIOTTVCMI_LINKED_AS_SHARED_LIBRARY)
endif()

if(BUILD_SHARED_LIBS)
	set(BUILD_PATH "shared")
else()
	set(BUILD_PATH "static")
endif()

if (WIN32)
	target_link_directories(${PROJECT_NAME} PRIVATE
		"${PROJECT_SOURCE_DIR}/../../libs/${BUILD_PATH}"
		"${PROJECT_SOURCE_DIR}/../../3rdpartylibs"
	)

	set(PROJECT_LINK_LIBS
		tvcmiclient
		libcrypto
		libssl
		pthreadVC3
		mosquitto
		json-c
	)

	target_link_libraries(${PROJECT_NAME} ${PROJECT_LINK_LIBS})

else ()
	target_link_directories(${PROJECT_NAME} PRIVATE
		"${PROJECT_SOURCE_DIR}/../../libs"
		"${PROJECT_SOURCE_DIR}/../../3rdpartylibs"
	)

	if(BUILD_SHARED_LIBS)
		set(PROJECT_LINK_LIBS
			tvcmiclient
			mosquitto
			cares
			json-c
			ssl
			crypto
			libpthread.so
			libdl.so
		)
	else()
		set(PROJECT_LINK_LIBS
			libtvcmiclient.a
			libmosquitto.a
			libcares.a
			libjson-c.a
			libssl.a
			libcrypto.a
			libpthread.so
			libdl.so
		)
	endif()

	target_link_libraries(${PROJECT_NAME} ${PROJECT_LINK_LIBS} -no-pie)
endif ()

set(INSTALL_DIR "${PROJECT_SOURCE_DIR}/../bin/${BUILD_PATH}")

install(TARGETS ${PROJECT_NAME} DESTINATION "${INSTALL_DIR}")

set(3RD_PARTY_LIBS_DIR "${PROJECT_SOURCE_DIR}/../../3rdpartylibs")

if (WIN32)
	set(3RD_PARTY_LIBS
		${3RD_PARTY_LIBS_DIR}/libssl-3.dll
		${3RD_PARTY_LIBS_DIR}/libcrypto-3.dll
		${3RD_PARTY_LIBS_DIR}/pthreadVC3.dll
		${3RD_PARTY_LIBS_DIR}/mosquitto.dll
		${3RD_PARTY_LIBS_DIR}/json-c.dll
	)

	if (BUILD_SHARED_LIBS)
		install(FILES "${PROJECT_SOURCE_DIR}/../../libs/shared/tvcmiclient.dll"	DESTINATION ${INSTALL_DIR})
	endif ()

	install(FILES ${3RD_PARTY_LIBS}	DESTINATION ${INSTALL_DIR})
endif ()

install(FILES ${PROJECT_SOURCE_DIR}/../../connector.conf DESTINATION ${INSTALL_DIR})
