[cmake] support previous RTAUDIO_BUILD_* variables
[rtaudio.git] / CMakeLists.txt
index 2cee314ab32d18369375ceb491c4882839052aad..b88963ff7c26ab940eab9041aa381dd59d7611d2 100644 (file)
@@ -28,6 +28,16 @@ if(MINGW)
   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")
@@ -197,17 +207,36 @@ endif()
 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)
@@ -220,7 +249,10 @@ include(GNUInstallDirs)
 # 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()