diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 75 |
1 files changed, 47 insertions, 28 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 92d12f2..b06bd6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,43 @@ option(DEMO_SIZE_OPT "Enable size optimization flags" OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# Search in both debug and release +set(WGPU_SEARCH_PATHS + ${CMAKE_CURRENT_SOURCE_DIR}/third_party/wgpu-native/target/debug + ${CMAKE_CURRENT_SOURCE_DIR}/third_party/wgpu-native/target/release +) + +find_library( + WGPU_LIBRARY NAMES libwgpu_native.a wgpu_native.lib wgpu_native + HINTS ${WGPU_SEARCH_PATHS} + REQUIRED +) + +include_directories( + src + third_party + third_party/wgpu-native/ffi + third_party/wgpu-native/ffi/webgpu-headers +) + +find_package(glfw3 REQUIRED) + +set(DEMO_LIBS glfw ${WGPU_LIBRARY}) + +# Platform-specific dependencies for wgpu-native +if (APPLE) + set_source_files_properties(src/platform.cc PROPERTIES COMPILE_FLAGS "-x objective-c++") + list(APPEND DEMO_LIBS + "-framework Metal" + "-framework Foundation" + "-framework Cocoa" + "-framework QuartzCore" + ) +else() + # Assume Linux/other POSIX-like systems might need these + list(APPEND DEMO_LIBS pthread m dl) +endif() + add_executable(demo64k src/main.cc src/platform.cc @@ -17,13 +54,7 @@ add_executable(demo64k src/audio/synth.cc ) -target_include_directories(demo64k PRIVATE - src - third_party -) - -find_package(glfw3 REQUIRED) -target_link_libraries(demo64k PRIVATE glfw) +target_link_libraries(demo64k PRIVATE ${DEMO_LIBS}) if (DEMO_SIZE_OPT) if (MSVC) @@ -43,9 +74,7 @@ if(DEMO_BUILD_TESTS) src/tests/test_window.cc src/audio/window.cc ) - target_include_directories(test_window PRIVATE - src - ) + target_include_directories(test_window PRIVATE src) add_test(NAME HammingWindowTest COMMAND test_window) add_executable(test_synth @@ -54,24 +83,19 @@ if(DEMO_BUILD_TESTS) src/audio/idct.cc src/audio/window.cc ) - target_include_directories(test_synth PRIVATE - src - ) + target_include_directories(test_synth PRIVATE src) add_test(NAME SynthEngineTest COMMAND test_synth) add_executable(test_spectool src/tests/test_spectool.cc - src/audio/audio.cc # For miniaudio implementation + src/audio/audio.cc src/audio/window.cc src/audio/fdct.cc src/audio/synth.cc src/audio/idct.cc ) - target_include_directories(test_spectool PRIVATE - src - third_party - ) - add_dependencies(test_spectool spectool) + target_include_directories(test_spectool PRIVATE src third_party) + target_link_libraries(test_spectool PRIVATE ${DEMO_LIBS}) add_test(NAME SpectoolEndToEndTest COMMAND test_spectool) endif() @@ -86,16 +110,11 @@ if(DEMO_BUILD_TOOLS) src/audio/window.cc src/audio/synth.cc ) - target_include_directories(spectool PRIVATE - src - third_party - ) - target_link_libraries(spectool PRIVATE glfw) + target_include_directories(spectool PRIVATE src third_party) + target_link_libraries(spectool PRIVATE ${DEMO_LIBS}) add_executable(specview tools/specview.cc ) - target_include_directories(specview PRIVATE - src - ) -endif() + target_include_directories(specview PRIVATE src) +endif()
\ No newline at end of file |
