blob: f59f2f7325fac45052f7a879f30b82235d30d20f [file] [log] [blame]
Aline Gondim Santosfd302912022-08-18 12:07:46 -03001cmake_minimum_required(VERSION 3.10)
2
3# set the project name
4set (ProjectName TestSuite)
Xavier Jouslin de Norayd0e0ef12023-08-22 14:08:44 -04005set (Version 1.0.1)
Aline Gondim Santosfd302912022-08-18 12:07:46 -03006
7project(${ProjectName} VERSION ${Version})
8
Aline Gondim Santos46af4662023-06-02 10:18:39 -03009set (DAEMON ${PROJECT_SOURCE_DIR}/../daemon)
Aline Gondim Santosfd302912022-08-18 12:07:46 -030010set (JPL_FILE_NAME ${ProjectName}.jpl)
11set (DAEMON_SRC ${DAEMON}/src)
12set (CONTRIB_PATH ${DAEMON}/contrib)
13set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
14set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
15set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
16
17if(WIN32)
18 message(OS:\ WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
19 if (NOT ${CMAKE_CL_64})
20 message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
21 endif()
22 set (CONTRIB_PLATFORM_CURT x64)
23 set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
24 set (LIBRARY_FILE_NAME ${ProjectName}.dll)
25 set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
26else()
27 message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts." )
28endif()
29
30message(Building:\ ${ProjectName}\ ${Version})
31message(Build\ path:\ ${PROJECT_BINARY_DIR})
32message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
33message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
34
35set(CMAKE_CXX_STANDARD 17)
36set(CMAKE_CXX_STANDARD_REQUIRED True)
Aline Gondim Santos37111242023-07-18 14:02:21 -030037set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DMSGPACK_NO_BOOST /MT")
38set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DMSGPACK_NO_BOOST /MTd")
Aline Gondim Santosfd302912022-08-18 12:07:46 -030039
40set(plugin_SRC AudioHandlerTester.cpp
41 AudioSubscriberTester.cpp
42 VideoHandlerTester.cpp
43 VideoSubscriberTester.cpp
44 ChatHandlerTester.cpp
45 ChatSubscriberTester.cpp
46 main.cpp
47 )
48
49set(plugin_HDR AudioHandlerTester.h
50 AudioSubscriberTester.h
51 VideoHandlerTester.h
52 VideoSubscriberTester.h
53 ChatHandlerTester.h
54 ChatSubscriberTester.h
55 ./../lib/pluglog.h
56 )
57
58add_library(${ProjectName} SHARED ${plugin_SRC}
59 ${plugin_HDR}
60 )
61
62target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
63 ${PROJECT_SOURCE_DIR}
64 ${PLUGINS_LIB}
65 ${DAEMON_SRC}
66 ${CONTRIB_PATH}
67 ${CONTRIB_PATH}/build/fmt/include
68 ${FFMPEG}/include
Aline Gondim Santos37111242023-07-18 14:02:21 -030069 ${CONTRIB_PATH}/build/opendht/include
70 ${CONTRIB_PATH}/build/msgpack-c/include
Aline Gondim Santosfd302912022-08-18 12:07:46 -030071 )
72target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
73 ${FFMPEG}/bin
74 ${CONTRIB_PATH}/build/fmt/msvc/Release
75 )
76
77target_link_libraries(${ProjectName} PUBLIC avutil)
78
79add_custom_command(
80 TARGET ${ProjectName}
81 PRE_BUILD
82 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
83 COMMENT "Assembling Plugin files"
84)
85
86add_custom_command(
87 TARGET ${ProjectName}
88 POST_BUILD
89 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
90 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
91 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName}
92 COMMENT "Generating JPL archive"
93)