Skip to content

Commit

Permalink
[cmake] Many cmake fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
jcelerier committed Jul 1, 2023
1 parent 57f193c commit 892a615
Show file tree
Hide file tree
Showing 26 changed files with 236 additions and 40 deletions.
2 changes: 1 addition & 1 deletion 3rdparty/rnd
Submodule rnd updated 1 files
+6 −3 CMakeLists.txt
20 changes: 19 additions & 1 deletion cmake/OssiaDeps.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,29 @@ endif()

# Download various dependencies
include(deps/boost)
include(deps/concurrentqueue)
include(deps/ctre)
include(deps/dno)
include(deps/dr_libs)
include(deps/exprtk)
include(deps/flicks)
include(deps/fmt)
include(deps/libremidi)
include(deps/portaudio)
include(deps/mdspan)
include(deps/nano-signal-slot)
include(deps/perlinnoise)
include(deps/rapidfuzz)
include(deps/rapidjson)
include(deps/re2)
include(deps/readerwriterqueue)
include(deps/rnd)
include(deps/smallfunction)
include(deps/span)
include(deps/spdlog)
include(deps/tuplet)
include(deps/unordered_dense)
include(deps/verdigris)
include(deps/websocketpp)

if(OSSIA_DATAFLOW)
if(OSSIA_ENABLE_LIBSAMPLERATE)
Expand Down Expand Up @@ -161,6 +175,10 @@ endif()

if(OSSIA_PROTOCOL_LEAPMOTION)
include(deps/leapmotion)

if(NOT LeapMotion_FOUND)
set(OSSIA_PROTOCOL_LEAPMOTION FALSE CACHE INTERNAL "")
endif()
endif()

if(OSSIA_ENABLE_FFT)
Expand Down
9 changes: 9 additions & 0 deletions cmake/deps/concurrentqueue.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(concurrentqueue 1.0 CONFIG GLOBAL)
endif()

if(NOT TARGET concurrentqueue::concurrentqueue)
add_library(concurrentqueue INTERFACE IMPORTED GLOBAL)
add_library(concurrentqueue::concurrentqueue ALIAS concurrentqueue)
target_include_directories(concurrentqueue INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/concurrentqueue>")
endif()
9 changes: 9 additions & 0 deletions cmake/deps/dno.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(dno CONFIG GLOBAL)
endif()

if(NOT TARGET dno::dno)
add_library(dno INTERFACE IMPORTED GLOBAL)
add_library(dno::dno ALIAS dno)
target_include_directories(dno INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/dno>")
endif()
12 changes: 12 additions & 0 deletions cmake/deps/dr_libs.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_path(DR_LIBS_INCLUDE_DIR dr_wav.h)
endif()

add_library(dr_libs INTERFACE IMPORTED GLOBAL)
add_library(dr_libs::dr_libs ALIAS dr_libs)

if(DR_LIBS_INCLUDE_DIR)
target_include_directories(dr_libs INTERFACE "$<BUILD_INTERFACE:${DR_LIBS_INCLUDE_DIR}>")
else()
target_include_directories(dr_libs INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/dr_libs>")
endif()
Empty file added cmake/deps/flicks.cmake
Empty file.
1 change: 0 additions & 1 deletion cmake/deps/jack.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ find_path(Jack_INCLUDE_DIR
NAMES jack/jack.h
HINTS
${CMAKE_CURRENT_SOURCE_DIR}
/opt/cross-pi-gcc/usr/include/
"${OSSIA_SDK}/jack/include"
)

Expand Down
4 changes: 0 additions & 4 deletions cmake/deps/leapmotion.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
find_package(LeapMotion)

if(NOT LeapMotion_FOUND)
set(OSSIA_PROTOCOL_LEAPMOTION FALSE CACHE INTERNAL "")
endif()
13 changes: 10 additions & 3 deletions cmake/deps/libartnet.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
set(LIBARTNET_INSTALL "${OSSIA_INSTALL_STATIC_DEPENDENCIES}" CACHE INTERNAL "" FORCE)
set(LIBARTNET_DIR "${OSSIA_3RDPARTY_FOLDER}/libartnet")
add_subdirectory("${LIBARTNET_DIR}" libartnet)
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(artnet CONFIG GLOBAL)
endif()

if(NOT TARGET artnet::artnet)
set(LIBARTNET_INSTALL "${OSSIA_INSTALL_STATIC_DEPENDENCIES}" CACHE INTERNAL "" FORCE)
set(LIBARTNET_DIR "${OSSIA_3RDPARTY_FOLDER}/libartnet")
add_subdirectory("${LIBARTNET_DIR}" libartnet)
endif()

9 changes: 9 additions & 0 deletions cmake/deps/mdspan.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(mdspan CONFIG GLOBAL)
endif()

if(NOT TARGET mdspan::mdspan)
add_library(mdspan INTERFACE IMPORTED GLOBAL)
add_library(mdspan::mdspan ALIAS mdspan)
target_include_directories(mdspan INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/mdspan/include>")
endif()
12 changes: 12 additions & 0 deletions cmake/deps/nano-signal-slot.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_path(NANOSIGNAL_INCLUDE_DIR nano_observer.hpp)
endif()

add_library(nanosignal INTERFACE IMPORTED GLOBAL)
add_library(nanosignal::nanosignal ALIAS nanosignal)

if(NANOSIGNAL_INCLUDE_DIR)
target_include_directories(nanosignal INTERFACE "$<BUILD_INTERFACE:${NANOSIGNAL_INCLUDE_DIR}>")
else()
target_include_directories(nanosignal INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/nano-signal-slot/include>")
endif()
13 changes: 12 additions & 1 deletion cmake/deps/oscpack.cmake
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
add_subdirectory(3rdparty/oscpack EXCLUDE_FROM_ALL)
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(oscpack 1.2 CONFIG GLOBAL)
endif()

# add_subdirectory(3rdparty/oscpack EXCLUDE_FROM_ALL)


if(NOT TARGET oscpack::oscpack)
add_library(oscpack INTERFACE IMPORTED GLOBAL)
add_library(oscpack::oscpack ALIAS oscpack)
target_include_directories(oscpack INTERFACE $<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/oscpack>)
endif()
12 changes: 12 additions & 0 deletions cmake/deps/perlinnoise.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_path(PERLINNOISE_INCLUDE_DIR PerlinNoise.hpp)
endif()

add_library(perlinnoise INTERFACE IMPORTED GLOBAL)
add_library(perlinnoise::perlinnoise ALIAS perlinnoise)

if(PERLINNOISE_INCLUDE_DIR)
target_include_directories(perlinnoise INTERFACE "$<BUILD_INTERFACE:${PERLINNOISE_INCLUDE_DIR}>")
else()
target_include_directories(perlinnoise INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/PerlinNoise>")
endif()
6 changes: 6 additions & 0 deletions cmake/deps/rapidjson.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(RapidJSON 1.2 CONFIG GLOBAL)
endif()

if(NOT TARGET rapidjson::rapidjson)
add_library(rapidjson INTERFACE IMPORTED GLOBAL)
add_library(rapidjson::rapidjson ALIAS rapidjson)
target_include_directories(rapidjson INTERFACE $<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/rapidjson/include>)
endif()
12 changes: 12 additions & 0 deletions cmake/deps/readerwriterqueue.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_path(READERWRITERQUEUE_INCLUDE_DIR readerwriterqueue.h)
endif()

add_library(readerwriterqueue INTERFACE IMPORTED GLOBAL)
add_library(readerwriterqueue::readerwriterqueue ALIAS readerwriterqueue)

if(READERWRITERQUEUE_INCLUDE_DIR)
target_include_directories(readerwriterqueue INTERFACE "$<BUILD_INTERFACE:${READERWRITERQUEUE_INCLUDE_DIR}>")
else()
target_include_directories(readerwriterqueue INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/readerwriterqueue>")
endif()
7 changes: 7 additions & 0 deletions cmake/deps/rnd.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(rnd CONFIG GLOBAL)
endif()

if(NOT TARGET rnd::rnd)
add_subdirectory("${OSSIA_3RDPARTY_FOLDER}/rnd")
endif()
7 changes: 6 additions & 1 deletion cmake/deps/servus.cmake
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(Servus CONFIG GLOBAL)
endif()

add_subdirectory(3rdparty/Servus EXCLUDE_FROM_ALL)
if(NOT TARGET Servus_iface)
add_subdirectory(3rdparty/Servus EXCLUDE_FROM_ALL)
endif()
12 changes: 12 additions & 0 deletions cmake/deps/smallfunction.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_path(SMALLFUN_INCLUDE_DIR smallfun.hpp)
endif()

add_library(smallfun INTERFACE IMPORTED GLOBAL)
add_library(smallfun::smallfun ALIAS smallfun)

if(SMALLFUN_INCLUDE_DIR)
target_include_directories(smallfun INTERFACE "$<BUILD_INTERFACE:${SMALLFUN_INCLUDE_DIR}>")
else()
target_include_directories(smallfun INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/SmallFunction/smallfun/include>")
endif()
9 changes: 9 additions & 0 deletions cmake/deps/span.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(span CONFIG GLOBAL)
endif()

if(NOT TARGET span::span)
add_library(span INTERFACE IMPORTED GLOBAL)
add_library(span::span ALIAS span)
target_include_directories(span INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/span/include>")
endif()
9 changes: 9 additions & 0 deletions cmake/deps/tuplet.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(tuplet CONFIG GLOBAL)
endif()

if(NOT TARGET tuplet::tuplet)
add_library(tuplet INTERFACE IMPORTED GLOBAL)
add_library(tuplet::tuplet ALIAS tuplet)
target_include_directories(tuplet INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/tuplet/include>")
endif()
9 changes: 9 additions & 0 deletions cmake/deps/unordered_dense.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(unordered_dense CONFIG GLOBAL)
endif()

if(NOT TARGET unordered_dense::unordered_dense)
add_library(unordered_dense INTERFACE IMPORTED GLOBAL)
add_library(unordered_dense::unordered_dense ALIAS unordered_dense)
target_include_directories(unordered_dense INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/unordered_dense/include>")
endif()
9 changes: 9 additions & 0 deletions cmake/deps/verdigris.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(verdigris CONFIG GLOBAL)
endif()

if(NOT TARGET verdigris::verdigris)
add_library(verdigris INTERFACE IMPORTED GLOBAL)
add_library(verdigris::verdigris ALIAS verdigris)
target_include_directories(verdigris INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/verdigris/src>")
endif()
9 changes: 9 additions & 0 deletions cmake/deps/websocketpp.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
if(OSSIA_USE_SYSTEM_LIBRARIES)
find_package(websocketpp CONFIG GLOBAL)
endif()

if(NOT TARGET websocketpp::websocketpp)
add_library(websocketpp INTERFACE IMPORTED GLOBAL)
add_library(websocketpp::websocketpp ALIAS websocketpp)
target_include_directories(websocketpp INTERFACE "$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/websocketpp>")
endif()
10 changes: 7 additions & 3 deletions src/ossia-max/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,11 @@ target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
use_gold(${PROJECT_NAME})
add_linker_warnings_external(${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME} PRIVATE ossia ${MAXSDK_API_LIBRARY} $<LINK_ONLY:re2>)
target_link_libraries(${PROJECT_NAME} PRIVATE ossia
${MAXSDK_API_LIBRARY}
$<LINK_ONLY:re2::re2>
$<LINK_ONLY:websocketpp::websocketpp>
)

generate_export_header(${PROJECT_NAME})

Expand Down Expand Up @@ -173,13 +177,13 @@ endforeach()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/package-info.json.in" "${CMAKE_CURRENT_BINARY_DIR}/package-info.json" @ONLY)

# We only export the Max required symbols.
# This is of utmost importance for support in Max4Live : ossia and Ableton Live both use
# This is of utmost importance for support in Max4Live : ossia and Ableton Live both use
# boost.asio, which leads to conflicts at runtime
if(APPLE AND CMAKE_BUILD_TYPE MATCHES Release)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/symbols.txt" "${OSSIA_MAX_SYMBOLS}\n")
get_property(FLODSF TARGET ossia-max PROPERTY LINK_FLAGS)
set_property(TARGET ossia-max APPEND PROPERTY
LINK_FLAGS
LINK_FLAGS
"-s -exported_symbols_list '${CMAKE_CURRENT_BINARY_DIR}/symbols.txt'")
get_property(FLODSF TARGET ossia-max PROPERTY LINK_FLAGS)
endif()
Expand Down
19 changes: 15 additions & 4 deletions src/ossia_features.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -66,22 +66,26 @@ endif()

if(OSSIA_PROTOCOL_OSC)
target_sources(ossia PRIVATE ${OSSIA_OSC_SRCS} ${OSSIA_OSC_HEADERS})
target_link_libraries(ossia PRIVATE $<BUILD_INTERFACE:oscpack::oscpack>)
set(OSSIA_PROTOCOLS ${OSSIA_PROTOCOLS} OSC)
endif()

if(OSSIA_PROTOCOL_MINUIT)
target_sources(ossia PRIVATE ${OSSIA_MINUIT_SRCS} ${OSSIA_MINUIT_HEADERS})
target_link_libraries(ossia PRIVATE $<BUILD_INTERFACE:oscpack::oscpack>)
set(OSSIA_PROTOCOLS ${OSSIA_PROTOCOLS} Minuit)
endif()

if(OSSIA_PROTOCOL_OSCQUERY)
target_sources(ossia PRIVATE ${OSSIA_OSCQUERY_SRCS} ${OSSIA_OSCQUERY_HEADERS})
target_link_libraries(ossia PRIVATE $<BUILD_INTERFACE:oscpack::oscpack>)
target_link_libraries(ossia PRIVATE $<BUILD_INTERFACE:websocketpp::websocketpp>)
set(OSSIA_PROTOCOLS ${OSSIA_PROTOCOLS} OSCQuery)
endif()

if(OSSIA_PROTOCOL_HTTP)
find_package(${QT_VERSION} QUIET COMPONENTS Core Qml)
if(TARGET ${QT_PREFIX}::Qml)
if(TARGET "${QT_PREFIX}::Qml")
target_sources(ossia PRIVATE ${OSSIA_HTTP_HEADERS} ${OSSIA_HTTP_SRCS})
target_link_libraries(ossia PUBLIC ${QT_PREFIX}::Qml)
set(OSSIA_PROTOCOLS ${OSSIA_PROTOCOLS} HTTP)
Expand All @@ -93,7 +97,7 @@ endif()

if(OSSIA_PROTOCOL_WEBSOCKETS)
find_package(${QT_VERSION} QUIET COMPONENTS Core Qml WebSockets)
if(TARGET ${QT_PREFIX}::WebSockets)
if(TARGET "${QT_PREFIX}::WebSockets")
target_sources(ossia PRIVATE ${OSSIA_WS_CLIENT_HEADERS} ${OSSIA_WS_CLIENT_SRCS})
target_link_libraries(ossia PUBLIC ${QT_PREFIX}::Qml ${QT_PREFIX}::WebSockets)
set(OSSIA_PROTOCOLS ${OSSIA_PROTOCOLS} WebSockets)
Expand All @@ -105,7 +109,7 @@ endif()

if(OSSIA_PROTOCOL_SERIAL)
find_package(${QT_VERSION} QUIET COMPONENTS Core SerialPort)
if(TARGET ${QT_PREFIX}::SerialPort)
if(TARGET "${QT_PREFIX}::SerialPort")
target_sources(ossia PRIVATE ${OSSIA_SERIAL_HEADERS} ${OSSIA_SERIAL_SRCS})
target_link_libraries(ossia PUBLIC ${QT_PREFIX}::SerialPort)
set(OSSIA_PROTOCOLS ${OSSIA_PROTOCOLS} Serial)
Expand Down Expand Up @@ -223,11 +227,18 @@ if(OSSIA_DATAFLOW)
set(OSSIA_PARALLEL 1)
endif()

target_sources(ossia PRIVATE
${OSSIA_DATAFLOW_HEADERS}
${OSSIA_DATAFLOW_SRCS}
)

target_include_directories(ossia PUBLIC
$<BUILD_INTERFACE:${OSSIA_3RDPARTY_FOLDER}/Flicks>
)

target_sources(ossia PRIVATE ${OSSIA_DATAFLOW_HEADERS} ${OSSIA_DATAFLOW_SRCS})
target_link_libraries(ossia PRIVATE
websocketpp::websocketpp
)

# JACK support
if(OSSIA_ENABLE_JACK)
Expand Down
Loading

0 comments on commit 892a615

Please sign in to comment.