Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 74 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ option(BUILD_SHARED "Option to build shared library" ON)
option(BUILD_STATIC "Option to build static library" ON)
option(POST_BUILD_COPY_EXT_LIBS "Option to copy external libraries to build directory" ON)
option(ENABLE_SANITIZERS "Enable AddressSanitizer and UBSan for Debug builds" OFF)
option(ENABLE_VNI "Enable VNI colorization support" ON)

message(STATUS "PLATFORM: ${PLATFORM}")
message(STATUS "ARCH: ${ARCH}")
Expand All @@ -15,6 +16,7 @@ message(STATUS "BUILD_SHARED: ${BUILD_SHARED}")
message(STATUS "BUILD_STATIC: ${BUILD_STATIC}")
message(STATUS "POST_BUILD_COPY_EXT_LIBS: ${POST_BUILD_COPY_EXT_LIBS}")
message(STATUS "ENABLE_SANITIZERS: ${ENABLE_SANITIZERS}")
message(STATUS "ENABLE_VNI: ${ENABLE_VNI}")

if(PLATFORM STREQUAL "macos")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
Expand Down Expand Up @@ -113,6 +115,11 @@ set(DMDUTIL_SOURCES
${MINIZ_SOURCE}
)

set(DMDUTIL_COMPILE_DEFINITIONS "")
if(ENABLE_VNI)
list(APPEND DMDUTIL_COMPILE_DEFINITIONS DMDUTIL_ENABLE_VNI)
endif()

if(PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "win-mingw" OR PLATFORM STREQUAL "macos" OR PLATFORM STREQUAL "linux")
list(APPEND DMDUTIL_SOURCES
src/PixelcadeDMD.cpp
Expand All @@ -130,43 +137,67 @@ if(BUILD_SHARED)
add_library(dmdutil_shared SHARED ${DMDUTIL_SOURCES})

target_include_directories(dmdutil_shared PUBLIC ${DMDUTIL_INCLUDE_DIRS})
if(DMDUTIL_COMPILE_DEFINITIONS)
target_compile_definitions(dmdutil_shared PUBLIC ${DMDUTIL_COMPILE_DEFINITIONS})
endif()

if(PLATFORM STREQUAL "win")
target_link_directories(dmdutil_shared PUBLIC
third-party/build-libs/${PLATFORM}/${ARCH}
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
if(ARCH STREQUAL "x64")
target_link_libraries(dmdutil_shared PUBLIC cargs64 zedmd64 serum64 vni64 libusb64-1.0 libserialport64 sockpp64 pupdmd64 ws2_32)
target_link_libraries(dmdutil_shared PUBLIC cargs64 zedmd64 serum64 libusb64-1.0 libserialport64 sockpp64 pupdmd64 ws2_32)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni64)
endif()
else()
target_link_libraries(dmdutil_shared PUBLIC cargs zedmd serum vni libusb-1.0 libserialport sockpp pupdmd ws2_32)
target_link_libraries(dmdutil_shared PUBLIC cargs zedmd serum libusb-1.0 libserialport sockpp pupdmd ws2_32)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni)
endif()
endif()
elseif(PLATFORM STREQUAL "win-mingw")
target_link_directories(dmdutil_shared PUBLIC
third-party/build-libs/${PLATFORM}/${ARCH}
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_shared PUBLIC cargs64 zedmd64 serum64 vni64 usb64-1.0 serialport64 sockpp64 pupdmd64 ws2_32)
target_link_libraries(dmdutil_shared PUBLIC cargs64 zedmd64 serum64 usb64-1.0 serialport64 sockpp64 pupdmd64 ws2_32)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni64)
endif()
elseif(PLATFORM STREQUAL "macos")
target_link_directories(dmdutil_shared PUBLIC
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_shared PUBLIC cargs zedmd serum vni usb-1.0 serialport sockpp pupdmd)
target_link_libraries(dmdutil_shared PUBLIC cargs zedmd serum usb-1.0 serialport sockpp pupdmd)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni)
endif()
elseif(PLATFORM STREQUAL "linux")
target_link_directories(dmdutil_shared PUBLIC
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_shared PUBLIC cargs zedmd serum vni serialport usb-1.0 sockpp pupdmd)
target_link_libraries(dmdutil_shared PUBLIC cargs zedmd serum serialport usb-1.0 sockpp pupdmd)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni)
endif()
elseif(PLATFORM STREQUAL "ios" OR PLATFORM STREQUAL "ios-simulator" OR PLATFORM STREQUAL "tvos")
target_link_directories(dmdutil_shared PUBLIC
third-party/build-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_shared PUBLIC zedmd serum vni sockpp pupdmd)
target_link_libraries(dmdutil_shared PUBLIC zedmd serum sockpp pupdmd)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni)
endif()
elseif(PLATFORM STREQUAL "android")
target_link_directories(dmdutil_shared PUBLIC
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_shared PUBLIC zedmd serum vni sockpp pupdmd)
target_link_libraries(dmdutil_shared PUBLIC zedmd serum sockpp pupdmd)
if(ENABLE_VNI)
target_link_libraries(dmdutil_shared PUBLIC vni)
endif()
endif()

if((PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "win-mingw") AND ARCH STREQUAL "x64")
Expand Down Expand Up @@ -248,6 +279,9 @@ if(BUILD_STATIC)
add_library(dmdutil_static STATIC ${DMDUTIL_SOURCES})

target_include_directories(dmdutil_static PUBLIC ${DMDUTIL_INCLUDE_DIRS})
if(DMDUTIL_COMPILE_DEFINITIONS)
target_compile_definitions(dmdutil_static PUBLIC ${DMDUTIL_COMPILE_DEFINITIONS})
endif()

if(PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "win-mingw")
set_target_properties(dmdutil_static PROPERTIES
Expand Down Expand Up @@ -276,26 +310,41 @@ if(BUILD_STATIC)
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
if(ARCH STREQUAL "x64")
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs64 zedmd64 serum64 vni64 libusb64-1.0 libserialport64 sockpp64 pupdmd64 ws2_32)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs64 zedmd64 serum64 libusb64-1.0 libserialport64 sockpp64 pupdmd64 ws2_32)
if(ENABLE_VNI)
target_link_libraries(dmdutil_test_s PUBLIC vni64)
endif()
else()
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs zedmd serum vni libusb-1.0 libserialport sockpp pupdmd ws2_32)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs zedmd serum libusb-1.0 libserialport sockpp pupdmd ws2_32)
if(ENABLE_VNI)
target_link_libraries(dmdutil_test_s PUBLIC vni)
endif()
endif()
elseif(PLATFORM STREQUAL "win-mingw")
target_link_directories(dmdutil_test_s PUBLIC
third-party/build-libs/${PLATFORM}/${ARCH}
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs64 zedmd64 serum64 vni64 usb64-1.0 serialport64 sockpp64 pupdmd64 ws2_32)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs64 zedmd64 serum64 usb64-1.0 serialport64 sockpp64 pupdmd64 ws2_32)
if(ENABLE_VNI)
target_link_libraries(dmdutil_test_s PUBLIC vni64)
endif()
elseif(PLATFORM STREQUAL "macos")
target_link_directories(dmdutil_test_s PUBLIC
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs zedmd serum vni usb-1.0 serialport sockpp pupdmd)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs zedmd serum usb-1.0 serialport sockpp pupdmd)
if(ENABLE_VNI)
target_link_libraries(dmdutil_test_s PUBLIC vni)
endif()
elseif(PLATFORM STREQUAL "linux")
target_link_directories(dmdutil_test_s PUBLIC
third-party/runtime-libs/${PLATFORM}/${ARCH}
)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs zedmd serum vni usb-1.0 serialport sockpp pupdmd)
target_link_libraries(dmdutil_test_s PUBLIC dmdutil_static cargs zedmd serum usb-1.0 serialport sockpp pupdmd)
if(ENABLE_VNI)
target_link_libraries(dmdutil_test_s PUBLIC vni)
endif()
endif()

if(POST_BUILD_COPY_EXT_LIBS)
Expand Down Expand Up @@ -325,9 +374,13 @@ if(POST_BUILD_COPY_EXT_LIBS AND (PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "w
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/sockpp64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/build-libs/${PLATFORM}/${ARCH}/pupdmd64.lib" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/pupdmd64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
)
if(ENABLE_VNI)
add_custom_command(TARGET copy_ext_libs POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/build-libs/${PLATFORM}/${ARCH}/vni64.lib" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/vni64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
)
endif()
else()
add_custom_command(TARGET copy_ext_libs POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/build-libs/${PLATFORM}/${ARCH}/cargs.lib" "$<TARGET_FILE_DIR:dmdutil_shared>"
Expand All @@ -344,9 +397,13 @@ if(POST_BUILD_COPY_EXT_LIBS AND (PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "w
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/sockpp.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/build-libs/${PLATFORM}/${ARCH}/pupdmd.lib" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/pupdmd.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
)
if(ENABLE_VNI)
add_custom_command(TARGET copy_ext_libs POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/build-libs/${PLATFORM}/${ARCH}/vni.lib" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/vni.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
)
endif()
endif()
elseif(PLATFORM STREQUAL "win-mingw")
add_dependencies(copy_ext_libs dmdutil_shared)
Expand All @@ -355,14 +412,18 @@ if(POST_BUILD_COPY_EXT_LIBS AND (PLATFORM STREQUAL "win" OR PLATFORM STREQUAL "w
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/libcargs64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/zedmd64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/serum64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/vni64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/libserialport64-0.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/libsockpp64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/pupdmd64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/libgcc_s_seh-1.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/libstdc++-6.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/libwinpthread-1.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
)
if(ENABLE_VNI)
add_custom_command(TARGET copy_ext_libs POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/vni64.dll" "$<TARGET_FILE_DIR:dmdutil_shared>"
)
endif()
elseif(PLATFORM STREQUAL "macos")
add_custom_command(TARGET copy_ext_libs POST_BUILD
COMMAND cp -a "${CMAKE_SOURCE_DIR}/third-party/runtime-libs/${PLATFORM}/${ARCH}/*.dylib" "${CMAKE_BINARY_DIR}/"
Expand Down
4 changes: 4 additions & 0 deletions src/DMD.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@
#include "serum-decode.h"
#include "serum.h"
#include "sockpp/tcp_connector.h"
#ifdef DMDUTIL_ENABLE_VNI
#include "vni.h"
#endif

namespace
{
Expand Down Expand Up @@ -1728,6 +1730,7 @@ void DMD::SerumThread()

void DMD::VniThread()
{
#ifdef DMDUTIL_ENABLE_VNI
Config* const pConfig = Config::GetInstance();

if (!pConfig->IsAltColor())
Expand Down Expand Up @@ -1890,6 +1893,7 @@ void DMD::VniThread()
}
}
}
#endif
}

void DMD::QueueSerumFrames(Update* dmdUpdate, bool render32, bool render64, bool hasTimestamp, uint32_t timestampMs,
Expand Down
Loading