From 32ed9027e1251c8fa780cb58e1348f4b81541383 Mon Sep 17 00:00:00 2001
From: aeberhardt <alexandre.eberhardt@savoirfairelinux.com>
Date: Thu, 19 Sep 2024 09:03:50 -0400
Subject: [PATCH] Cleaning: Clean CMakeLists

Clean every worcking CMakeLists

Change-Id: I66b44921abc571ad95b5e6881ff78c2c085e84b7
---
 AutoAnswer/CMakeLists.txt  | 234 +++++++++++++++----------------------
 GreenScreen/CMakeLists.txt |  96 ++++++---------
 HelloWorld/CMakeLists.txt  |  82 ++++---------
 3 files changed, 152 insertions(+), 260 deletions(-)

diff --git a/AutoAnswer/CMakeLists.txt b/AutoAnswer/CMakeLists.txt
index 75876bb..c3d5465 100644
--- a/AutoAnswer/CMakeLists.txt
+++ b/AutoAnswer/CMakeLists.txt
@@ -18,121 +18,114 @@ cmake_minimum_required(VERSION 3.10)
 # set the project name
 set (ProjectName AutoAnswer)
 set (Version 2.0.0)
-
 project(${ProjectName} VERSION ${Version})
 
-option(VIDEO_FFMPEG "If you'd like to listen to Jami's video stream or modify it, set to ON." OFF) # {FILL}
-option(AUDIO_FFMPEG "If you'd like to listen to Jami's audio stream or modify it, set to ON." OFF) # {FILL}
-option(ARCHIVE_JPL "If you'd like to end the build process before the generation of a JPL archive, set to OFF." ON) # {FILL}
-option(NVIDIA "To disable hardware acceleration and use the graphics card for ONNX computation (useful for AI plugins), set to ON." OFF) # {FILL}
-option(CERTIFICATION "If you'd like to certify the JPL archive created by ARCHIVE_JPL, set to ON. Requires ARCHIVE_JPL to be ON." ON) # {FILL}
-
-set (DAEMON ${PROJECT_SOURCE_DIR}/../daemon)
-set (JPL_FILE_NAME ${ProjectName}.jpl)
-set (DAEMON_SRC ${DAEMON}/src)
-set (CONTRIB_PATH ${DAEMON}/contrib)
-set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
-set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
-set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
+# Detect OS and architecture
+if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
+    message(FATAL_ERROR "Unsupported architecture. Only x64 or aarch64 (arm64) is supported.")
+else()
+    set (ARCH $CMAKE_SYSTEM_PROCESSOR)
+endif()
 
-# Detect the operating system
 if(WIN32)
     set(DISTRIBUTION "x64-windows")
-elseif(ANDROID)
-    set(OS_NAME "ANDROID")
-    set(CONTRIB_PLATFORM_CURT ${ARCH})
-    set(CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-${OS_NAME})
 elseif(APPLE)
-    if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
-        set(DISTRIBUTION "arm64-apple-Darwin")
-    elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
-        set(DISTRIBUTION "x86_64-apple-Darwin")
-    else()
-        message(FATAL_ERROR "Unsupported architecture. Only x64 or arm64 is supported.")
-    endif()
+    set(DISTRIBUTION "${ARCH}-apple-darwin")
+elseif(ANDROID)
+    set(DISTRIBUTION "android")
 else()
     set(DISTRIBUTION "x86_64-linux-gnu")
 endif()
 
-# Detect the architecture
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    message(ARCH: x64)
-    set(ARCH "x64")
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
-    message(ARCH: arm64)
-    set(ARCH "arm64")
-else()
-    message(FATAL_ERROR "Unsupported architecture. Only x64 or aarch64 is supported.")
-endif()
+# Paths setup
+set (JAMI_PLUGINS_PATH ${PROJECT_SOURCE_DIR}/.. )
+set (DAEMON ${JAMI_PLUGINS_PATH}/daemon)
+set (DAEMON_SRC ${DAEMON}/src)
+set (CONTRIB_PATH ${DAEMON}/contrib)
+set (PLUGINS_LIB ${JAMI_PLUGINS_PATH}/lib)
+set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
+set (JPL_FILE_NAME ${ProjectName}.jpl)
+set (SDK_PATH ${JAMI_PLUGINS_PATH}/SDK)
+set (PLUGIN_OUTPUT_DIR ${JPL_DIRECTORY}/lib/${DISTRIBUTION})
 
-message(OS: ${DISTRIBUTION})
-message(Building: ${ProjectName} ${Version})
-message(Build path: ${PROJECT_BINARY_DIR})
-message(JPL assembling path: ${JPL_DIRECTORY})
-message(JPL path: ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
-
-# This is specifically to disable hardware acceleration and do computing on the graphics card for computationally expensive AI plugins.
-if(NVIDIA)
-add_definitions(-DNVIDIA)
-set(ONNX_DIR ${ONNX_DIR}/nvidia-gpu)
-message(Provider:\ NVIDIA)
-set(EXTRA_PATH nvidia-gpu)
-set (PREFERENCESFILENAME ${PREFERENCESFILENAME}-accel)
-else()
-set(ONNX_DIR ${ONNX_DIR}/cpu)
-message(Provider:\ NONE)
-set(EXTRA_PATH cpu)
-endif()
+option(VIDEO_FFMPEG "If you'd like to listen to Jami's video stream or modify it, set to ON." OFF) # {FILL}
+option(AUDIO_FFMPEG "If you'd like to listen to Jami's audio stream or modify it, set to ON." OFF) # {FILL}
+option(ARCHIVE_JPL "If you'd like to end the build process before the generation of a JPL archive, set to OFF." ON) # {FILL}
+option(NVIDIA "To disable hardware acceleration and use the graphics card for ONNX computation (useful for AI plugins), set to ON." OFF) # {FILL}
+option(CERTIFICATION "If you'd like to certify the JPL archive created by ARCHIVE_JPL, set to ON. Requires ARCHIVE_JPL to be ON." ON) # {FILL}
+
+message(Distribution:\ ${DISTRIBUTION})
+message(Building:\ ${ProjectName} ${Version})
+message(Build\ path:\ ${PROJECT_BINARY_DIR})
+message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
+message(JPL\ path:\ ${JAMI_PLUGINS_PATH}/build/${DISTRIBUTION}/${JPL_FILE_NAME})
 
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED True)
 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DMSGPACK_NO_BOOST /MT")
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DMSGPACK_NO_BOOST /MTd")
 
-set(SOURCES "")
-file(GLOB CPP_SOURCES "*.cpp") # All .cpp files in the directory of your plugin ({root}/PLUGIN_NAME) will be collected by cmake.
-list(APPEND SOURCES ${CPP_SOURCES})
-
-if(VIDEO_FFMPEG) # If you previously turned ON video stream capture, these will be imported.
-    list(APPEND SOURCES "./../lib/accel.cpp")
-    list(APPEND SOURCES "./../lib/frameUtils.cpp")
-endif()
-
-if(AUDIO_FFMPEG) # If you previously turned ON audio stream capture, these will be imported.
-    list(APPEND SOURCES "./../lib/frameUtils.cpp")
-endif()
+set(plugin_SRC
+    main.cpp
+    BotChatHandler.cpp
+    BotPeerChatSubscriber.cpp
+    PluginPreferenceHandler.cpp
+    ${PLUGINS_LIB}/frameUtils.cpp
+    ${PLUGINS_LIB}/frameFilter.cpp
+)
 
-# list(APPEND SOURCES "./../lib/EDIT_ME.cpp") # {FILL} If you'd like to import any other .cpp files, uncomment this line, and copy it for each import.
+set(plugin_HDR
+    BotChatHandler.h
+    BotPeerChatSubscriber.h
+    PluginPreferenceHandler.h
+    ${PLUGINS_LIB}/frameUtils.h
+    ${PLUGINS_LIB}/pluglog.h
+    ${PLUGINS_LIB}/frameFilter.h
+)
 
-add_library(${ProjectName} SHARED ${SOURCES})
+# Create shared library
+add_library(${ProjectName} SHARED ${plugin_SRC} ${plugin_HDR})
+
+target_include_directories(${ProjectName} PUBLIC
+    ${PROJECT_BINARY_DIR}
+    ${PROJECT_SOURCE_DIR}
+    ${PLUGINS_LIB}
+    ${DAEMON_SRC}
+    ${CONTRIB_PATH}
+    ${CONTRIB_PATH}/build/fmt/include
+    ${CONTRIB_PATH}/build/opendht/include
+    ${CONTRIB_PATH}/build/msgpack-c/include
+)
 
-target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
-                                                 ${PROJECT_SOURCE_DIR}
-                                                 ${PLUGINS_LIB}
-                                                 ${DAEMON_SRC}
-                                                 ${CONTRIB_PATH}
-                                                 ${CONTRIB_PATH}/build/fmt/include
-                                                 ${CONTRIB_PATH}/build/opendht/include
-                                                 ${CONTRIB_PATH}/build/msgpack-c/include
-                                                 )
-target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
-                                              ${CONTRIB_PATH}/build/fmt/msvc/Release
-                                        )
+# Link directories and libraries
+target_link_directories(${ProjectName} PUBLIC
+    ${CONTRIB_PATH}
+    ${CONTRIB_PATH}/build/fmt/msvc/Release
+)
 
 target_link_libraries(${ProjectName} PUBLIC )
 
+# Android-specific flags
+if(ANDROID)
+    set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) # Set the desired ABI
+    set(CMAKE_ANDROID_STL_TYPE c++_shared) # Use C++ shared library
+    set(CMAKE_ANDROID_NDK_TOOLCHAIN_FILE ${CONTRIB_PATH}/build/cmake/android.toolchain.cmake)
+    set(CMAKE_ANDROID_STL_INCLUDE_DIR ${CONTRIB_PATH}/sysroot/usr/include)
+    set(CMAKE_ANDROID_STL_LIBRARIES ${CONTRIB_PATH}/sysroot/usr/lib)
+endif()
+
 if(CMAKE_CXX_FLAGS_DEBUG)
-  set(OUTPUT "${ProjectName}")
-  set(CLANG_OPTS "-g -fsanitize=address")
-  set(EXTRA_DEBUG_LIBRARIES "-lyaml-cpp")
-  set(EXTRA_DEFINES "-D__DEBUG__")
+    set(OUTPUT "${ProjectName}")
+    set(CLANG_OPTS "-g -fsanitize=address")
+    set(EXTRA_DEBUG_LIBRARIES "-lyaml-cpp")
+    set(EXTRA_DEFINES "-D__DEBUG__")
 else()
-  add_custom_command(
-      TARGET ${ProjectName}
-      PRE_BUILD
-      COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
-      COMMENT "Assembling Plugin files"
-  )
+    add_custom_command(
+        TARGET ${ProjectName}
+        PRE_BUILD
+        COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
+        COMMENT "Assembling Plugin files"
+    )
 endif()
 
 add_custom_command(
@@ -142,43 +135,13 @@ add_custom_command(
     COMMENT "Assembling Plugin files"
 )
 
-if(WIN32)
-# Windows-specific file copying
+# Copy shared library to jpl directory
 add_custom_command(
     TARGET ${ProjectName}
     POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/${ProjectName}.lib
-    COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${ProjectName}.dll ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/${ProjectName}.dll
-    COMMENT "Copying files to jpl directory for Windows"
+    COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${ProjectName}> ${PLUGIN_OUTPUT_DIR}
+    COMMENT "Copying output file to jpl directory"
 )
-elseif(APPLE)
-    # macOS-specific file copying
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.dylib ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/lib${ProjectName}.dylib
-        COMMENT "Copying files to jpl directory for macOS"
-    )
-elseif(ANDROID)
-    add_custom_command(
-            TARGET ${ProjectName}
-            POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.so ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
-            COMMENT "Copying files to jpl directory for Android"
-    )
-else()
-    # Unix-like systems (Linux, etc.)
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.so ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/lib${ProjectName}.so
-        COMMENT "Copying files to jpl directory for Unix-like systems or Android"
-    )
-endif()
-
-if (NOT ARCHIVE_JPL)
-    exit()
-endif()
 
 add_custom_command(
     TARGET ${ProjectName}
@@ -187,22 +150,9 @@ add_custom_command(
     COMMENT "Generating JPL archive"
 )
 
-if(NOT EXISTS "${PROJECT_SOURCE_DIR}/../.cert")
-    file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/../.cert")
-endif()
-
-if (CERTIFICATION)
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/certKey.py create --subject Dev ../.cert/Dev
-        COMMENT "Generating developer certificate"
-    )
-
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/certKey.py create --issuer ../.cert/Dev --subject ${ProjectName} ../.cert/${ProjectName}/${ProjectName}
-        COMMENT "Generating plugin certificate"
-    )
-endif()
+add_custom_command(
+    TARGET ${ProjectName}
+    POST_BUILD
+    COMMAND python3 ${SDK_PATH}/jplManipulation.py --assemble --plugin=${ProjectName}
+    COMMENT "Generating JPL archive"
+)
diff --git a/GreenScreen/CMakeLists.txt b/GreenScreen/CMakeLists.txt
index 9a24392..b4de40d 100644
--- a/GreenScreen/CMakeLists.txt
+++ b/GreenScreen/CMakeLists.txt
@@ -5,48 +5,39 @@ set (ProjectName GreenScreen)
 set (Version 2.0.0)
 project(${ProjectName} VERSION ${Version})
 
-# Paths setup
-set(DAEMON ${PROJECT_SOURCE_DIR}/../daemon)
-set(DAEMON_SRC ${DAEMON}/src)
-set(CONTRIB_PATH ${DAEMON}/contrib)
-set(PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
-set(LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
-set(JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
-set(JPL_FILE_NAME ${ProjectName}.jpl)
-
 # Detect OS and architecture
+if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
+    message(FATAL_ERROR "Unsupported architecture. Only x64 or aarch64 (arm64) is supported.")
+else()
+    set (ARCH $CMAKE_SYSTEM_PROCESSOR)
+endif()
+
 if(WIN32)
     set(DISTRIBUTION "x64-windows")
-    set(FFMPEG_PATH "${CONTRIB_PATH}/build/ffmpeg/Build/windows/x64")
+elseif(APPLE)
+    set(DISTRIBUTION "${ARCH}-apple-darwin")
 elseif(ANDROID)
-    set(CONTRIB_PLATFORM_CURT ${ARCH})
-    set(CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-${OS_NAME})
-    set(OS_NAME "ANDROID")
-    set(FFMPEG_PATH "${CONTRIB_PATH}/build/ffmpeg/Build/android")
+    set(DISTRIBUTION "android")
 else()
     set(DISTRIBUTION "x86_64-linux-gnu")
-    set(FFMPEG_PATH "${CONTRIB_PATH}/build/ffmpeg/Build/unix")
-endif()
-
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    message(ARCH: x64)
-    set(ARCH "x64")
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
-    message(ARCH: arm64)
-    set(ARCH "arm64")
-else()
-    message(FATAL_ERROR "Unsupported architecture. Only x64 or aarch64 is supported.")
 endif()
 
-message(OS: ${DISTRIBUTION})
-
-set(CONTRIB_PLATFORM "${ARCH}-${OS_NAME}")
-
-message(OS: ${OS_NAME} ${ARCH})
-message(Building: ${ProjectName} ${Version})
-message(Build path: ${PROJECT_BINARY_DIR})
-message(JPL assembling path: ${JPL_DIRECTORY})
-message(JPL path: ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
+# Paths setup
+set (JAMI_PLUGINS_PATH ${PROJECT_SOURCE_DIR}/.. )
+set (DAEMON ${JAMI_PLUGINS_PATH}/daemon)
+set (DAEMON_SRC ${DAEMON}/src)
+set (CONTRIB_PATH ${DAEMON}/contrib)
+set (PLUGINS_LIB ${JAMI_PLUGINS_PATH}/lib)
+set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
+set (JPL_FILE_NAME ${ProjectName}.jpl)
+set (SDK_PATH ${JAMI_PLUGINS_PATH}/SDK)
+set (PLUGIN_OUTPUT_DIR ${JPL_DIRECTORY}/lib/${DISTRIBUTION})
+
+message(Distribution:\ ${DISTRIBUTION})
+message(Building:\ ${ProjectName} ${Version})
+message(Build\ path:\ ${PROJECT_BINARY_DIR})
+message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
+message(JPL\ path:\ ${JAMI_PLUGINS_PATH}/build/${DISTRIBUTION}/${JPL_FILE_NAME})
 
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -54,9 +45,9 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DMSGPACK_NO_BOOST /MT")
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DMSGPACK_NO_BOOST /MTd")
 
 set(plugin_SRC
+    main.cpp
     pluginMediaHandler.cpp
     pluginProcessor.cpp
-    main.cpp
     VideoSubscriber.cpp
     ${PLUGINS_LIB}/accel.cpp
     ${PLUGINS_LIB}/frameUtils.cpp
@@ -139,30 +130,13 @@ add_custom_command(
     COMMENT "Assembling Plugin files"
 )
 
-
-if(WIN32)
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/${ProjectName}.lib
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${ProjectName}.dll ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/${ProjectName}.dll
-        COMMENT "Copying files to jpl directory for Windows"
-    )
-elseif(APPLE)
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.dylib ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/lib${ProjectName}.dylib
-        COMMENT "Copying files to jpl directory for macOS"
-    )
-else()
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.so ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/lib${ProjectName}.so
-        COMMENT "Copying files to jpl directory for Unix-like systems or Android"
-    )
-endif()
+# Copy shared library to jpl directory
+add_custom_command(
+    TARGET ${ProjectName}
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${ProjectName}> ${PLUGIN_OUTPUT_DIR}
+    COMMENT "Copying output file to jpl directory"
+)
 
 add_custom_command(
     TARGET ${ProjectName}
@@ -174,6 +148,6 @@ add_custom_command(
 add_custom_command(
     TARGET ${ProjectName}
     POST_BUILD
-    COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName}
+    COMMAND python3 ${SDK_PATH}/jplManipulation.py --assemble --plugin=${ProjectName}
     COMMENT "Generating JPL archive"
-)
\ No newline at end of file
+)
diff --git a/HelloWorld/CMakeLists.txt b/HelloWorld/CMakeLists.txt
index 547baab..bce0f2d 100644
--- a/HelloWorld/CMakeLists.txt
+++ b/HelloWorld/CMakeLists.txt
@@ -5,15 +5,6 @@ set (ProjectName HelloWorld)
 set (Version 1.0.1)
 project(${ProjectName} VERSION ${Version})
 
-# Paths setup
-set(DAEMON ${PROJECT_SOURCE_DIR}/../daemon)
-set(DAEMON_SRC ${DAEMON}/src)
-set(CONTRIB_PATH ${DAEMON}/contrib)
-set(PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
-set(LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
-set(JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
-set(JPL_FILE_NAME ${ProjectName}.jpl)
-
 # Detect OS and architecture
 if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
     message(FATAL_ERROR "Unsupported architecture. Only x64 or aarch64 (arm64) is supported.")
@@ -31,11 +22,22 @@ else()
     set(DISTRIBUTION "x86_64-linux-gnu")
 endif()
 
-message(Distribution: ${DISTRIBUTION})
-message(Building: ${ProjectName} ${Version})
-message(Build path: ${PROJECT_BINARY_DIR})
-message(JPL assembling path: ${JPL_DIRECTORY})
-message(JPL path: ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
+# Paths setup
+set (JAMI_PLUGINS_PATH ${PROJECT_SOURCE_DIR}/.. )
+set (DAEMON ${JAMI_PLUGINS_PATH}/daemon)
+set (DAEMON_SRC ${DAEMON}/src)
+set (CONTRIB_PATH ${DAEMON}/contrib)
+set (PLUGINS_LIB ${JAMI_PLUGINS_PATH}/lib)
+set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
+set (JPL_FILE_NAME ${ProjectName}.jpl)
+set (SDK_PATH ${JAMI_PLUGINS_PATH}/SDK)
+set (PLUGIN_OUTPUT_DIR ${JPL_DIRECTORY}/lib/${DISTRIBUTION})
+
+message(Distribution:\ ${DISTRIBUTION})
+message(Building:\ ${ProjectName} ${Version})
+message(Build\ path:\ ${PROJECT_BINARY_DIR})
+message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
+message(JPL\ path:\ ${JAMI_PLUGINS_PATH}/build/${DISTRIBUTION}/${JPL_FILE_NAME})
 
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -112,31 +114,14 @@ if(CMAKE_CXX_FLAGS_DEBUG)
     set(EXTRA_DEBUG_LIBRARIES "-lyaml-cpp")
     set(EXTRA_DEFINES "-D__DEBUG__")
 else()
-    if(APPLE)
-    add_custom_command(
-        TARGET ${ProjectName}
-        PRE_BUILD
-        COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} --arch=${ARCH}
-        COMMENT "Assembling Plugin files"
-    )
-    elseif(ANDROID)
-    add_custom_command(
-        TARGET ${ProjectName}
-        PRE_BUILD
-        COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} --distribution=${DISTRIBUTION}
-        COMMENT "Assembling Plugin files"
-    )
-    else()
     add_custom_command(
         TARGET ${ProjectName}
         PRE_BUILD
         COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
         COMMENT "Assembling Plugin files"
     )
-    endif()
 endif()
 
-
 add_custom_command(
     TARGET ${ProjectName}
     PRE_BUILD
@@ -144,34 +129,17 @@ add_custom_command(
     COMMENT "Assembling Plugin files"
 )
 
-
-if(WIN32)
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/${ProjectName}.lib
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${ProjectName}.dll ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/${ProjectName}.dll
-        COMMENT "Copying files to jpl directory for Windows"
-    )
-elseif(APPLE)
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.dylib ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/lib${ProjectName}.dylib
-        COMMENT "Copying files to jpl directory for macOS"
-    )
-else()
-    add_custom_command(
-        TARGET ${ProjectName}
-        POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib${ProjectName}.so ${JPL_DIRECTORY}/lib/${DISTRIBUTION}/lib${ProjectName}.so
-        COMMENT "Copying files to jpl directory for Unix-like systems or Android"
-    )
-endif()
+# Copy shared library to jpl directory
+add_custom_command(
+    TARGET ${ProjectName}
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${ProjectName}> ${PLUGIN_OUTPUT_DIR}
+    COMMENT "Copying output file to jpl directory"
+)
 
 add_custom_command(
     TARGET ${ProjectName}
     POST_BUILD
-    COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName}
+    COMMAND python3 ${SDK_PATH}/jplManipulation.py --assemble --plugin=${ProjectName}
     COMMENT "Generating JPL archive"
-)
\ No newline at end of file
+)
-- 
GitLab