summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt85
1 files changed, 66 insertions, 19 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 410ebc1..d25065c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,20 +24,58 @@ endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
-# Find wgpu-native (system install)
-find_library(WGPU_LIBRARY NAMES wgpu_native libwgpu_native REQUIRED)
-find_path(WGPU_INCLUDE_DIR NAMES webgpu.h PATH_SUFFIXES webgpu-headers REQUIRED)
+if (DEMO_CROSS_COMPILE_WIN32)
+ # --- Windows Cross-Compilation Configuration ---
+ add_definitions(-DDEMO_CROSS_COMPILE_WIN32)
+ set(WINDOWS_DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/windows")
-include_directories(
- src
- third_party
- ${WGPU_INCLUDE_DIR}
- third_party/glfw3webgpu
-)
+ # WGPU-Native
+ # We use the headers from the fetched deps
+ set(WGPU_INCLUDE_DIR "${WINDOWS_DEPS_DIR}/include/webgpu")
+ # Link against the import library
+ set(WGPU_LIBRARY "${WINDOWS_DEPS_DIR}/lib/libwgpu_native.dll.a")
+
+ # GLFW 3.4
+ set(GLFW3_INCLUDE_DIR "${WINDOWS_DEPS_DIR}/include")
+ set(GLFW3_LIBRARY "${WINDOWS_DEPS_DIR}/lib/libglfw3.a")
+
+ include_directories(
+ src
+ third_party
+ ${WGPU_INCLUDE_DIR}
+ ${GLFW3_INCLUDE_DIR}
+ third_party/glfw3webgpu
+ )
+
+ # Link libraries
+ # ws2_32 is winsock, required by some deps
+ set(DEMO_LIBS
+ ${GLFW3_LIBRARY}
+ ${WGPU_LIBRARY}
+ -lgdi32 -lws2_32 -luser32 -lkernel32 -lshell32 -ladvapi32 -ldwmapi
+ )
-find_package(glfw3 REQUIRED)
+ # Statically link C/C++ runtime to avoid needing extra DLLs
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
-set(DEMO_LIBS glfw ${WGPU_LIBRARY})
+else()
+ # --- Native Build Configuration ---
+
+ # Find wgpu-native (system install)
+ find_library(WGPU_LIBRARY NAMES wgpu_native libwgpu_native REQUIRED)
+ find_path(WGPU_INCLUDE_DIR NAMES webgpu.h PATH_SUFFIXES webgpu-headers REQUIRED)
+
+ include_directories(
+ src
+ third_party
+ ${WGPU_INCLUDE_DIR}
+ third_party/glfw3webgpu
+ )
+
+ find_package(glfw3 REQUIRED)
+
+ set(DEMO_LIBS glfw ${WGPU_LIBRARY})
+endif()
# Platform-specific dependencies
if (APPLE)
@@ -52,15 +90,24 @@ if (APPLE)
"-framework Cocoa"
"-framework QuartzCore"
)
+elseif (DEMO_CROSS_COMPILE_WIN32)
+ # Windows deps already handled above
else()
# Assume Linux/other POSIX-like systems might need these
list(APPEND DEMO_LIBS pthread m dl)
endif()
-# Asset Packing Tool (Always needed for build)
-add_executable(asset_packer
- tools/asset_packer.cc
-)
+# Asset Packing Tool
+if (DEFINED ASSET_PACKER_PATH)
+ # Use externally provided tool (e.g., for cross-compilation)
+ set(ASSET_PACKER_CMD ${ASSET_PACKER_PATH})
+ set(ASSET_PACKER_DEPENDS ${ASSET_PACKER_PATH})
+else()
+ # Build tool as part of the project
+ add_executable(asset_packer tools/asset_packer.cc)
+ set(ASSET_PACKER_CMD $<TARGET_FILE:asset_packer>)
+ set(ASSET_PACKER_DEPENDS asset_packer)
+endif()
# Configure DEMO asset generation
set(DEMO_ASSETS_TXT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/demo_assets.txt)
@@ -70,8 +117,8 @@ set(GENERATED_DEMO_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/assets_data.cc
add_custom_command(
OUTPUT ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src
- COMMAND $<TARGET_FILE:asset_packer> ${DEMO_ASSETS_TXT_PATH} ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC}
- DEPENDS asset_packer ${DEMO_ASSETS_TXT_PATH}
+ COMMAND ${ASSET_PACKER_CMD} ${DEMO_ASSETS_TXT_PATH} ${GENERATED_DEMO_ASSETS_H} ${GENERATED_DEMO_ASSETS_DATA_CC}
+ DEPENDS ${ASSET_PACKER_DEPENDS} ${DEMO_ASSETS_TXT_PATH}
COMMENT "Generating demo assets.h and assets_data.cc"
)
@@ -87,8 +134,8 @@ set(GENERATED_TEST_ASSETS_DATA_CC ${CMAKE_CURRENT_BINARY_DIR}/src/test_assets_da
add_custom_command(
OUTPUT ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src
- COMMAND $<TARGET_FILE:asset_packer> ${TEST_ASSETS_TXT_PATH} ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC}
- DEPENDS asset_packer ${TEST_ASSETS_TXT_PATH}
+ COMMAND ${ASSET_PACKER_CMD} ${TEST_ASSETS_TXT_PATH} ${GENERATED_TEST_ASSETS_H} ${GENERATED_TEST_ASSETS_DATA_CC}
+ DEPENDS ${ASSET_PACKER_DEPENDS} ${TEST_ASSETS_TXT_PATH}
COMMENT "Generating test assets.h and assets_data.cc"
)