set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
+# Standard CMake options
+option(BUILD_SHARED_LIBS "Build as shared library" ON)
+
+if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel")
+endif()
+if(WINDOWS)
+ set(CMAKE_DEBUG_POSTFIX d CACHE STRING "Postfix for debug version of library")
+endif()
+
# Build Options
option(RTAUDIO_BUILD_PYTHON "Build PyRtAudio python bindings" OFF)
set(RTAUDIO_TARGETNAME_UNINSTALL "uninstall" CACHE STRING "Name of 'uninstall' build target")
cmake_policy(SET CMP0042 OLD)
set(LIB_TARGETS)
-add_library(rtaudio ${rtaudio_SOURCES})
+# Use RTAUDIO_BUILD_SHARED_LIBS / RTAUDIO_BUILD_STATIC_LIBS if they
+# are defined, otherwise default to standard BUILD_SHARED_LIBS.
+if (DEFINED RTAUDIO_BUILD_SHARED_LIBS)
+ if (RTAUDIO_BUILD_SHARED_LIBS)
+ add_library(rtaudio SHARED ${rtaudio_SOURCES})
+ else()
+ add_library(rtaudio STATIC ${rtaudio_SOURCES})
+ endif()
+elseif (DEFINED RTAUDIO_BUILD_STATIC_LIBS)
+ if (RTAUDIO_BUILD_STATIC_LIBS)
+ add_library(rtaudio STATIC ${rtaudio_SOURCES})
+ else()
+ add_library(rtaudio SHARED ${rtaudio_SOURCES})
+ endif()
+else()
+ add_library(rtaudio ${rtaudio_SOURCES})
+endif()
list(APPEND LIB_TARGETS rtaudio)
+
# Add headers destination for install rule.
set_target_properties(rtaudio PROPERTIES PUBLIC_HEADER RtAudio.h
SOVERSION ${SO_VER}
VERSION ${FULL_VER})
+
# Set include paths, populate target interface.
target_include_directories(rtaudio PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
${INCDIRS})
+
# Set compile-time definitions
target_compile_definitions(rtaudio PRIVATE ${API_DEFS})
target_compile_definitions(rtaudio PRIVATE RTAUDIO_EXPORT)
# Subdirs
include(CTest)
-if (BUILD_TESTING)
+if (NOT DEFINED RTAUDIO_BUILD_TESTING OR RTAUDIO_BUILD_TESTING STREQUAL "")
+ set(RTAUDIO_BUILD_TESTING ${BUILD_TESTING})
+endif()
+if (RTAUDIO_BUILD_TESTING)
add_subdirectory(tests)
endif()