summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt75
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