From a6266131cb935e9bd518be2ed5bbbf76d4be0385 Mon Sep 17 00:00:00 2001 From: swang251-MB Date: Tue, 24 Aug 2021 23:27:14 -0400 Subject: [PATCH 1/9] preliminary CMakeLists.txt --- CMakeLists.txt | 105 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2a6c058 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,105 @@ +cmake_minimum_required(VERSION 3.1) ##TODO: which version is better + +project(STK VERSION 4.6.1) + +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + +if(NOT CMAKE_BUILD_TYPE) ##TODO: options + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE) +endif() +# message("Generated with config types: ${CMAKE_CONFIGURATION_TYPES}") +message(${CMAKE_BUILD_TYPE}) ##TODO: necessary or not + +## TODO, compiler dependent? +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") +set(CMAKE_CXX_FLAGS_DEBUG "-g -D_STK_DEBUG_ -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__") + +if(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) + message("GCC.") + set(CMAKE_CXX_FLAGS "-Wall") +endif() + +option(BUILD_SHARED "Whether to build the shared library" OFF) +option(BUILD_STATIC "Whether to build the static library" ON) +option(REALTIME "Realtime suppor" ON) +option(ENABLE_JACK "Enable JACK" ON) +option(ENABLE_ALSA "Enable ALSA API support (linux only)" ON) +option(ENABLE_OSS "Enable OSS API Support (unixes only)" ON) +option(ENABLE_ASIO "Enable ASIO API support (windows only)" ON) +option(ENABLE_DS "Enable DirectSound API support (windows only)" ON) +option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" ON) +option(ENABLE_CORE "Enable CoreAudio API support (mac only)" ON) + +include_directories("./include") +file(GLOB STK_SRC "./src/*.cpp") # GLOB instead of GLOB_RECURSE as the asio depends on system + +add_library(stk STATIC ${STK_SRC} ) + +#========================================# +#========== Realtime Support ============# +#========================================# +if(REALTIME) + + # find_package(JACK) # TODO NEED FindJACK.cmake + find_library(JACK_LIBRARY Jack) + message("${JACK_LIBRARY}") + + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + find_package(Threads) + if(Threads_FOUND) + target_link_libraries(stk PUBLIC Threads:Threads) + else() + message(FATAL_ERROR "RtAudio requires the pthread library") + endif() + + if(${CMAKE_SYSTEM_NAME} STREQUAL Linux) + #============== LINUX ================# + message("Linux DETECTED!") + if(ENABLE_ALSA) + find_package(ALSA REQUIRED) + if(ALSA_FOUND) + include_directories(${ALSA_INCLUDE_DIRS}) + target_link_libraries(stk PUBLIC ${ALSA_LIBRARIES}) + target_compile_definitions(stk PUBLIC __LINUX_ALSA__) + endif() + endif() + elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) + #============== MAC OS ================# + message("MacOS!") + find_package(CoreAudio) + if(ENABLE_CORE) + if(COREAUDIO_INCLUDE_DIRS) + include_directories(${COREAUDIO_INCLUDE_DIRS}) + else() + message(FATAL_ERROR "CoreAudio header files not found!") + endif() + target_compile_definitions(stk PUBLIC -D__MACOSX_CORE__) + target_link_libraries(stk PUBLIC COREAUDIO_LIBRARY COREAUDIO_FOUNDATION COREAUDIO_MIDI) + endif() + + # TODO: WINDOWS SUPPORT + elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) + #============== WINDOWS ================# + message("Windows!") + # target_compile_definitions(stk PUBLIC __OS_WINDOWS__) + else() + message(FATAL_ERROR "Unknown system type for realtime support.") + # TODO: try --disable-realtime argument! + endif() +endif() + + +if(${CMAKE_BUILD_TYPE} STREQUAL Debug) + target_compile_definitions(stk PUBLIC _STK_DEBUG_) +endif() + + +include(TestBigEndian) +TEST_BIG_ENDIAN(IS_BIG_ENDIAN) +if(NOT IS_BIG_ENDIAN) + target_compile_definitions(stk PUBLIC __LITTLE_ENDIAN__) +endif() +# if(CMAKE_CXX_BYTE_ORDER STREQUAL LITTLE_ENDIAN) +# target_compile_definitions(stk PUBLIC __LITTLE_ENDIAN__) +# endif() From 367893bf50495e1629fd0572ada5c78f6f108e2a Mon Sep 17 00:00:00 2001 From: swang251-MB Date: Fri, 17 Sep 2021 21:52:08 -0400 Subject: [PATCH 2/9] [FindCoreAudio.cmake] Updated --- CMakeLists.txt | 20 +++++++------------- cmake/FindCoreAudio.cmake | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 cmake/FindCoreAudio.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a6c058..151ac5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,20 +63,14 @@ if(REALTIME) target_link_libraries(stk PUBLIC ${ALSA_LIBRARIES}) target_compile_definitions(stk PUBLIC __LINUX_ALSA__) endif() + elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) + #============== MAC OS ================# + message("Machintosh!") + find_package(CoreAudio REQUIRED) + include_directories(${COREAUDIO_INCLUDE_DIRS}) + target_compile_definitions(stk PUBLIC -D__MACOSX_CORE__) + target_link_libraries(stk PUBLIC COREAUDIO_LIBRARY COREAUDIO_FOUNDATION COREAUDIO_MIDI) endif() - elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) - #============== MAC OS ================# - message("MacOS!") - find_package(CoreAudio) - if(ENABLE_CORE) - if(COREAUDIO_INCLUDE_DIRS) - include_directories(${COREAUDIO_INCLUDE_DIRS}) - else() - message(FATAL_ERROR "CoreAudio header files not found!") - endif() - target_compile_definitions(stk PUBLIC -D__MACOSX_CORE__) - target_link_libraries(stk PUBLIC COREAUDIO_LIBRARY COREAUDIO_FOUNDATION COREAUDIO_MIDI) - endif() # TODO: WINDOWS SUPPORT elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) diff --git a/cmake/FindCoreAudio.cmake b/cmake/FindCoreAudio.cmake new file mode 100644 index 0000000..c3e710e --- /dev/null +++ b/cmake/FindCoreAudio.cmake @@ -0,0 +1,21 @@ +find_library(COREAUDIO_LIBRARY CoreAudio) +find_library(COREAUDIO_FOUNDATION CoreFoundation) +find_library(COREAUDIO_MIDI CoreMIDI) +find_path(COREAUDIO_INCLUDE_DIRS CoreAudio/CoreAudio.h) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + CoreAudio + DEFAULT_MSG + COREAUDIO_LIBRARY + COREAUDIO_FOUNDATION + COREAUDIO_MIDI + COREAUDIO_INCLUDE_DIRS) + +mark_as_advanced( + COREAUDIO_LIBRARY + COREAUDIO_FOUNDATION + COREAUDIO_MIDI + COREAUDIO_INCLUDE_DIRS) + + From f00e38611c2bdf71e071b611422c7b27ea227822 Mon Sep 17 00:00:00 2001 From: swang251-MB Date: Sat, 18 Sep 2021 13:40:34 -0400 Subject: [PATCH 3/9] include add_subdirectory for STK projects --- CMakeLists.txt | 9 +++++++++ projects/demo/CMakeLists.txt | 9 +++++++++ projects/effects/CMakeLists.txt | 9 +++++++++ projects/eguitar/CMakeLists.txt | 9 +++++++++ projects/examples/CMakeLists.txt | 11 +++++++++++ projects/ragamatic/CMakeLists.txt | 9 +++++++++ 6 files changed, 56 insertions(+) create mode 100644 projects/demo/CMakeLists.txt create mode 100644 projects/effects/CMakeLists.txt create mode 100644 projects/eguitar/CMakeLists.txt create mode 100644 projects/examples/CMakeLists.txt create mode 100644 projects/ragamatic/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 151ac5b..0135028 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ option(ENABLE_ASIO "Enable ASIO API support (windows only)" ON) option(ENABLE_DS "Enable DirectSound API support (windows only)" ON) option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" ON) option(ENABLE_CORE "Enable CoreAudio API support (mac only)" ON) +option(COMPILE_PROJECTS "Compile all the example projects" OFF) include_directories("./include") file(GLOB STK_SRC "./src/*.cpp") # GLOB instead of GLOB_RECURSE as the asio depends on system @@ -97,3 +98,11 @@ endif() # if(CMAKE_CXX_BYTE_ORDER STREQUAL LITTLE_ENDIAN) # target_compile_definitions(stk PUBLIC __LITTLE_ENDIAN__) # endif() + +if(COMPILE_PROJECTS) + add_subdirectory(projects/examples) + add_subdirectory(projects/eguitar) + add_subdirectory(projects/demo) + add_subdirectory(projects/effects) + add_subdirectory(projects/ragamatic) +endif() \ No newline at end of file diff --git a/projects/demo/CMakeLists.txt b/projects/demo/CMakeLists.txt new file mode 100644 index 0000000..1fc70f1 --- /dev/null +++ b/projects/demo/CMakeLists.txt @@ -0,0 +1,9 @@ +project(demo) + +file(GLOB DEMO_SRC "./*.cpp") + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}") + +add_executable(stk-demo "demo.cpp" "utilities.cpp") +target_include_directories(stk-demo PRIVATE "./") +target_link_libraries(stk-demo PUBLIC stk) \ No newline at end of file diff --git a/projects/effects/CMakeLists.txt b/projects/effects/CMakeLists.txt new file mode 100644 index 0000000..c401c42 --- /dev/null +++ b/projects/effects/CMakeLists.txt @@ -0,0 +1,9 @@ +project(effects) + +file(GLOB EFFECTS_SRC "./*.cpp") + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}") + +add_executable(${PROJECT_NAME} ${EFFECTS_SRC}) +target_include_directories(${PROJECT_NAME} PRIVATE "./") +target_link_libraries(${PROJECT_NAME} PUBLIC stk) \ No newline at end of file diff --git a/projects/eguitar/CMakeLists.txt b/projects/eguitar/CMakeLists.txt new file mode 100644 index 0000000..87817f7 --- /dev/null +++ b/projects/eguitar/CMakeLists.txt @@ -0,0 +1,9 @@ +project(eguitar) + +file(GLOB EGUITAR_SRC "./*.cpp") + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}") + +add_executable(${PROJECT_NAME} ${EGUITAR_SRC}) +target_include_directories(${PROJECT_NAME} PRIVATE "./") +target_link_libraries(${PROJECT_NAME} PUBLIC stk) \ No newline at end of file diff --git a/projects/examples/CMakeLists.txt b/projects/examples/CMakeLists.txt new file mode 100644 index 0000000..6836806 --- /dev/null +++ b/projects/examples/CMakeLists.txt @@ -0,0 +1,11 @@ +project(examples) + +file(GLOB EXAMPLE_SRC "./*.cpp") + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}") + +foreach(src ${EXAMPLE_SRC}) + get_filename_component(src_bin ${src} NAME_WE) + add_executable(${src_bin} ${src}) + target_link_libraries(${src_bin} PUBLIC stk) +endforeach() diff --git a/projects/ragamatic/CMakeLists.txt b/projects/ragamatic/CMakeLists.txt new file mode 100644 index 0000000..9b8c191 --- /dev/null +++ b/projects/ragamatic/CMakeLists.txt @@ -0,0 +1,9 @@ +project(ragamat) + +file(GLOB RAGMATIC_SRC "./*.cpp") + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}") + +add_executable(${PROJECT_NAME} ${RAGMATIC_SRC}) +target_include_directories(${PROJECT_NAME} PRIVATE "./") +target_link_libraries(${PROJECT_NAME} PUBLIC stk) \ No newline at end of file From ba6ea9f5db632fb4fa3fff5ea98ab3404d79c728 Mon Sep 17 00:00:00 2001 From: swang251-MB Date: Sat, 18 Sep 2021 14:30:13 -0400 Subject: [PATCH 4/9] a bit format changes --- CMakeLists.txt | 92 ++++++++++++++++++++++---------------------------- 1 file changed, 40 insertions(+), 52 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0135028..3af9ef2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,31 +4,31 @@ project(STK VERSION 4.6.1) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) -if(NOT CMAKE_BUILD_TYPE) ##TODO: options - set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE) +SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Release" "Debug" "RelWithDebInfo" "MinSizeRel") +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE) endif() -# message("Generated with config types: ${CMAKE_CONFIGURATION_TYPES}") -message(${CMAKE_BUILD_TYPE}) ##TODO: necessary or not +message("Build type: " ${CMAKE_BUILD_TYPE}) ## TODO, compiler dependent? -set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") -set(CMAKE_CXX_FLAGS_DEBUG "-g -D_STK_DEBUG_ -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_STK_DEBUG_ -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__") if(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) message("GCC.") set(CMAKE_CXX_FLAGS "-Wall") endif() -option(BUILD_SHARED "Whether to build the shared library" OFF) -option(BUILD_STATIC "Whether to build the static library" ON) -option(REALTIME "Realtime suppor" ON) -option(ENABLE_JACK "Enable JACK" ON) +# option(BUILD_SHARED "Whether to build the shared library" OFF) +# option(BUILD_STATIC "Whether to build the static library" ON) +option(REALTIME "Realtime support" ON) +# option(ENABLE_JACK "Enable JACK" ON) option(ENABLE_ALSA "Enable ALSA API support (linux only)" ON) -option(ENABLE_OSS "Enable OSS API Support (unixes only)" ON) -option(ENABLE_ASIO "Enable ASIO API support (windows only)" ON) -option(ENABLE_DS "Enable DirectSound API support (windows only)" ON) -option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" ON) -option(ENABLE_CORE "Enable CoreAudio API support (mac only)" ON) +# option(ENABLE_OSS "Enable OSS API Support (unixes only)" ON) +# option(ENABLE_ASIO "Enable ASIO API support (windows only)" ON) +# option(ENABLE_DS "Enable DirectSound API support (windows only)" ON) +# option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" ON) +# option(ENABLE_CORE "Enable CoreAudio API support (mac only)" ON) option(COMPILE_PROJECTS "Compile all the example projects" OFF) include_directories("./include") @@ -40,29 +40,26 @@ add_library(stk STATIC ${STK_SRC} ) #========== Realtime Support ============# #========================================# if(REALTIME) - # find_package(JACK) # TODO NEED FindJACK.cmake - find_library(JACK_LIBRARY Jack) - message("${JACK_LIBRARY}") + # find_library(JACK_LIBRARY Jack) + # message("${JACK_LIBRARY}") - set(CMAKE_THREAD_PREFER_PTHREAD TRUE) - set(THREADS_PREFER_PTHREAD_FLAG TRUE) - find_package(Threads) - if(Threads_FOUND) - target_link_libraries(stk PUBLIC Threads:Threads) - else() - message(FATAL_ERROR "RtAudio requires the pthread library") - endif() + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + find_package(Threads REQUIRED) + target_link_libraries(stk PUBLIC Threads::Threads) - if(${CMAKE_SYSTEM_NAME} STREQUAL Linux) - #============== LINUX ================# - message("Linux DETECTED!") - if(ENABLE_ALSA) - find_package(ALSA REQUIRED) - if(ALSA_FOUND) - include_directories(${ALSA_INCLUDE_DIRS}) - target_link_libraries(stk PUBLIC ${ALSA_LIBRARIES}) - target_compile_definitions(stk PUBLIC __LINUX_ALSA__) + if(${CMAKE_SYSTEM_NAME} STREQUAL Linux) + # TODO: Finish Linux configuration, include different audio API supports + #============== LINUX ================# + message("Linux DETECTED!") + if(ENABLE_ALSA) + find_package(ALSA REQUIRED) + if(ALSA_FOUND) + include_directories(${ALSA_INCLUDE_DIRS}) + target_link_libraries(stk PUBLIC ${ALSA_LIBRARIES}) + target_compile_definitions(stk PUBLIC __LINUX_ALSA__) + endif() endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) #============== MAC OS ================# @@ -70,26 +67,17 @@ if(REALTIME) find_package(CoreAudio REQUIRED) include_directories(${COREAUDIO_INCLUDE_DIRS}) target_compile_definitions(stk PUBLIC -D__MACOSX_CORE__) - target_link_libraries(stk PUBLIC COREAUDIO_LIBRARY COREAUDIO_FOUNDATION COREAUDIO_MIDI) + target_link_libraries(stk PUBLIC ${COREAUDIO_LIBRARY} ${COREAUDIO_FOUNDATION} ${COREAUDIO_MIDI}) + elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) + # TODO: WINDOWS SUPPORT + #============== WINDOWS ================# + message("Windows!") + # target_compile_definitions(stk PUBLIC __OS_WINDOWS__) + else() + message(FATAL_ERROR "Unknown system type for realtime support.") endif() - - # TODO: WINDOWS SUPPORT - elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) - #============== WINDOWS ================# - message("Windows!") - # target_compile_definitions(stk PUBLIC __OS_WINDOWS__) - else() - message(FATAL_ERROR "Unknown system type for realtime support.") - # TODO: try --disable-realtime argument! - endif() endif() - -if(${CMAKE_BUILD_TYPE} STREQUAL Debug) - target_compile_definitions(stk PUBLIC _STK_DEBUG_) -endif() - - include(TestBigEndian) TEST_BIG_ENDIAN(IS_BIG_ENDIAN) if(NOT IS_BIG_ENDIAN) From f0a22c463d63ab795785d48ee98110cae24106bb Mon Sep 17 00:00:00 2001 From: swang251 Date: Sat, 18 Sep 2021 23:53:46 -0400 Subject: [PATCH 5/9] support DS and WASAPI --- CMakeLists.txt | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3af9ef2..2b7d536 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,10 @@ project(STK VERSION 4.6.1) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) -SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Release" "Debug" "RelWithDebInfo" "MinSizeRel") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE) endif() +SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Release" "Debug" "RelWithDebInfo" "MinSizeRel") message("Build type: " ${CMAKE_BUILD_TYPE}) ## TODO, compiler dependent? @@ -25,11 +25,11 @@ option(REALTIME "Realtime support" ON) # option(ENABLE_JACK "Enable JACK" ON) option(ENABLE_ALSA "Enable ALSA API support (linux only)" ON) # option(ENABLE_OSS "Enable OSS API Support (unixes only)" ON) -# option(ENABLE_ASIO "Enable ASIO API support (windows only)" ON) -# option(ENABLE_DS "Enable DirectSound API support (windows only)" ON) -# option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" ON) +option(ENABLE_ASIO "Enable ASIO API support (windows only)" OFF) +option(ENABLE_DS "Enable DirectSound API support (windows only)" ON) +option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" OFF) # option(ENABLE_CORE "Enable CoreAudio API support (mac only)" ON) -option(COMPILE_PROJECTS "Compile all the example projects" OFF) +option(COMPILE_PROJECTS "Compile all the example projects" ON) include_directories("./include") file(GLOB STK_SRC "./src/*.cpp") # GLOB instead of GLOB_RECURSE as the asio depends on system @@ -43,7 +43,7 @@ if(REALTIME) # find_package(JACK) # TODO NEED FindJACK.cmake # find_library(JACK_LIBRARY Jack) # message("${JACK_LIBRARY}") - + message("${CMAKE_SYSTEM_NAME}") set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) @@ -63,17 +63,42 @@ if(REALTIME) endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) #============== MAC OS ================# - message("Machintosh!") + message("Machintosh DETECTED!") find_package(CoreAudio REQUIRED) include_directories(${COREAUDIO_INCLUDE_DIRS}) target_compile_definitions(stk PUBLIC -D__MACOSX_CORE__) target_link_libraries(stk PUBLIC ${COREAUDIO_LIBRARY} ${COREAUDIO_FOUNDATION} ${COREAUDIO_MIDI}) elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) - # TODO: WINDOWS SUPPORT + # TODO: MORE SUPPORT (e.g., MSYS)? + # Tested under MSYS2 with Mingw64 toolchain #============== WINDOWS ================# - message("Windows!") - # target_compile_definitions(stk PUBLIC __OS_WINDOWS__) + message("Windows DETECTED!") + + target_link_libraries(stk PUBLIC winmm ole32 wsock32) + target_compile_definitions(stk PUBLIC -D__WINDOWS_MM__) + + # TODO: ASIO NOT WORKING YET + if(ENABLE_ASIO) + message("ENALBING ASIO") + include_directories("./src/include") + target_sources(stk PUBLIC "${CMAKE_SOURCE_DIR}/src/include/asio.cpp" "${CMAKE_SOURCE_DIR}/src/include/asiodrivers.cpp" + "${CMAKE_SOURCE_DIR}/src/include/asiolist.cpp" "${CMAKE_SOURCE_DIR}/src/include/iasiothiscallresolver.cpp") + target_compile_definitions(stk PUBLIC -D__WINDOWS_ASIO__) + endif() + + if(ENABLE_WASAPI) + message("ENALBING WASAPI") + target_link_libraries(stk PUBLIC mfuuid mfplat wmcodecdspuuid ksuser) + target_compile_definitions(stk PUBLIC -D__WINDOWS_WASAPI__) + endif() + + if(ENABLE_DS) + message("ENALBING Directsound") + target_link_libraries(stk PUBLIC dsound) + target_compile_definitions(stk PUBLIC -D__WINDOWS_DS__) + endif() else() + message("CMAKE_SYSTEM_NAME:" ${CMAKE_SYSTEM_NAME}) message(FATAL_ERROR "Unknown system type for realtime support.") endif() endif() @@ -88,6 +113,7 @@ endif() # endif() if(COMPILE_PROJECTS) + message("COMPILE PROJECTS") add_subdirectory(projects/examples) add_subdirectory(projects/eguitar) add_subdirectory(projects/demo) From e5454b85c7a7515548da4fc248571a915107a93e Mon Sep 17 00:00:00 2001 From: swang251-MB Date: Fri, 22 Oct 2021 23:24:12 -0400 Subject: [PATCH 6/9] preliminary Jack support --- CMakeLists.txt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b7d536..b16c704 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,9 +40,17 @@ add_library(stk STATIC ${STK_SRC} ) #========== Realtime Support ============# #========================================# if(REALTIME) - # find_package(JACK) # TODO NEED FindJACK.cmake - # find_library(JACK_LIBRARY Jack) - # message("${JACK_LIBRARY}") + if(ENABLE_JACK) + find_library(JACK_LIBRARY Jack) # find_package(JACK) # TODO: NEED FindJACK.cmake + if(JACK_LIBRARY) + message("Jack API found: ${JACK_LIBRARY}") + link_libraries(${JACK_LIBRARY}) + add_definitions(-D__UNIX_JACK__) + else() + message(WARNING "JACK support requires the jack library!") + endif() + endif() + message("${CMAKE_SYSTEM_NAME}") set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) From 509c6cf9e92eafbc66f5837940085bcf1d4d6969 Mon Sep 17 00:00:00 2001 From: swang251-MB Date: Fri, 22 Oct 2021 23:25:09 -0400 Subject: [PATCH 7/9] shared library support --- CMakeLists.txt | 60 ++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b16c704..a878869 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,6 @@ endif() SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Release" "Debug" "RelWithDebInfo" "MinSizeRel") message("Build type: " ${CMAKE_BUILD_TYPE}) -## TODO, compiler dependent? set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_STK_DEBUG_ -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__") @@ -19,10 +18,10 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) set(CMAKE_CXX_FLAGS "-Wall") endif() -# option(BUILD_SHARED "Whether to build the shared library" OFF) -# option(BUILD_STATIC "Whether to build the static library" ON) +option(BUILD_SHARED "Whether to build the shared library" ON) +option(BUILD_STATIC "Whether to build the static library" ON) option(REALTIME "Realtime support" ON) -# option(ENABLE_JACK "Enable JACK" ON) +option(ENABLE_JACK "Enable JACK" ON) option(ENABLE_ALSA "Enable ALSA API support (linux only)" ON) # option(ENABLE_OSS "Enable OSS API Support (unixes only)" ON) option(ENABLE_ASIO "Enable ASIO API support (windows only)" OFF) @@ -34,8 +33,6 @@ option(COMPILE_PROJECTS "Compile all the example projects" ON) include_directories("./include") file(GLOB STK_SRC "./src/*.cpp") # GLOB instead of GLOB_RECURSE as the asio depends on system -add_library(stk STATIC ${STK_SRC} ) - #========================================# #========== Realtime Support ============# #========================================# @@ -55,8 +52,7 @@ if(REALTIME) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) - target_link_libraries(stk PUBLIC Threads::Threads) - + link_libraries(Threads::Threads) if(${CMAKE_SYSTEM_NAME} STREQUAL Linux) # TODO: Finish Linux configuration, include different audio API supports #============== LINUX ================# @@ -65,8 +61,8 @@ if(REALTIME) find_package(ALSA REQUIRED) if(ALSA_FOUND) include_directories(${ALSA_INCLUDE_DIRS}) - target_link_libraries(stk PUBLIC ${ALSA_LIBRARIES}) - target_compile_definitions(stk PUBLIC __LINUX_ALSA__) + link_libraries(${ALSA_LIBRARIES}) + add_definitions(__LINUX_ALSA__) endif() endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) @@ -74,36 +70,36 @@ if(REALTIME) message("Machintosh DETECTED!") find_package(CoreAudio REQUIRED) include_directories(${COREAUDIO_INCLUDE_DIRS}) - target_compile_definitions(stk PUBLIC -D__MACOSX_CORE__) - target_link_libraries(stk PUBLIC ${COREAUDIO_LIBRARY} ${COREAUDIO_FOUNDATION} ${COREAUDIO_MIDI}) + add_definitions(-D__MACOSX_CORE__) + link_libraries(${COREAUDIO_LIBRARY} ${COREAUDIO_FOUNDATION} ${COREAUDIO_MIDI}) elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) # TODO: MORE SUPPORT (e.g., MSYS)? # Tested under MSYS2 with Mingw64 toolchain #============== WINDOWS ================# message("Windows DETECTED!") - target_link_libraries(stk PUBLIC winmm ole32 wsock32) - target_compile_definitions(stk PUBLIC -D__WINDOWS_MM__) + link_libraries(winmm ole32 wsock32) + add_definitions(-D__WINDOWS_MM__) # TODO: ASIO NOT WORKING YET if(ENABLE_ASIO) message("ENALBING ASIO") include_directories("./src/include") - target_sources(stk PUBLIC "${CMAKE_SOURCE_DIR}/src/include/asio.cpp" "${CMAKE_SOURCE_DIR}/src/include/asiodrivers.cpp" - "${CMAKE_SOURCE_DIR}/src/include/asiolist.cpp" "${CMAKE_SOURCE_DIR}/src/include/iasiothiscallresolver.cpp") - target_compile_definitions(stk PUBLIC -D__WINDOWS_ASIO__) + # target_sources(stk PUBLIC "${CMAKE_SOURCE_DIR}/src/include/asio.cpp" "${CMAKE_SOURCE_DIR}/src/include/asiodrivers.cpp" + # "${CMAKE_SOURCE_DIR}/src/include/asiolist.cpp" "${CMAKE_SOURCE_DIR}/src/include/iasiothiscallresolver.cpp") + add_definitions(-D__WINDOWS_ASIO__) endif() if(ENABLE_WASAPI) message("ENALBING WASAPI") - target_link_libraries(stk PUBLIC mfuuid mfplat wmcodecdspuuid ksuser) - target_compile_definitions(stk PUBLIC -D__WINDOWS_WASAPI__) + link_libraries(mfuuid mfplat wmcodecdspuuid ksuser) + add_definitions(-D__WINDOWS_WASAPI__) endif() if(ENABLE_DS) message("ENALBING Directsound") - target_link_libraries(stk PUBLIC dsound) - target_compile_definitions(stk PUBLIC -D__WINDOWS_DS__) + link_libraries(dsound) + add_definitions(-D__WINDOWS_DS__) endif() else() message("CMAKE_SYSTEM_NAME:" ${CMAKE_SYSTEM_NAME}) @@ -114,14 +110,26 @@ endif() include(TestBigEndian) TEST_BIG_ENDIAN(IS_BIG_ENDIAN) if(NOT IS_BIG_ENDIAN) - target_compile_definitions(stk PUBLIC __LITTLE_ENDIAN__) + add_definitions(-D__LITTLE_ENDIAN__) endif() -# if(CMAKE_CXX_BYTE_ORDER STREQUAL LITTLE_ENDIAN) -# target_compile_definitions(stk PUBLIC __LITTLE_ENDIAN__) -# endif() +#========================================# +#========== Build the Library ===========# +#========================================# +if(BUILD_STATIC) + add_library(stk STATIC ${STK_SRC} ) +endif() + +if(BUILD_SHARED) + add_library(stk_SHARED SHARED ${STK_SRC}) + set_target_properties(stk_SHARED PROPERTIES OUTPUT_NAME stk) # rename the shared library name +endif() + +#========================================# +#========= Build the examples ===========# +#========================================# if(COMPILE_PROJECTS) - message("COMPILE PROJECTS") + message("COMPILE PROJECTS!") add_subdirectory(projects/examples) add_subdirectory(projects/eguitar) add_subdirectory(projects/demo) From feb123c9b814ba4652d4c55b24f7380384b5b9ce Mon Sep 17 00:00:00 2001 From: CAML-Song Date: Sat, 23 Oct 2021 13:13:37 -0400 Subject: [PATCH 8/9] support jack on Linux --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a878869..80ad00c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,7 @@ file(GLOB STK_SRC "./src/*.cpp") # GLOB instead of GLOB_RECURSE as the asio depe #========================================# if(REALTIME) if(ENABLE_JACK) - find_library(JACK_LIBRARY Jack) # find_package(JACK) # TODO: NEED FindJACK.cmake + find_library(JACK_LIBRARY jack) # find_package(JACK) # TODO: NEED FindJACK.cmake if(JACK_LIBRARY) message("Jack API found: ${JACK_LIBRARY}") link_libraries(${JACK_LIBRARY}) From ee7a1a31f81b83e0cde9a372bb48944d3a7bcb5a Mon Sep 17 00:00:00 2001 From: CAML-Song Date: Sat, 23 Oct 2021 13:14:01 -0400 Subject: [PATCH 9/9] fix the ALSA compile flag --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80ad00c..f91cf57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ if(REALTIME) if(ALSA_FOUND) include_directories(${ALSA_INCLUDE_DIRS}) link_libraries(${ALSA_LIBRARIES}) - add_definitions(__LINUX_ALSA__) + add_definitions(-D__LINUX_ALSA__) endif() endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)