From a04d3909494faf336eb1c51de35085d41f5d678d Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Sun, 3 Jan 2021 11:52:34 -0800 Subject: [PATCH] add Windows build instructions with MSYS2 + MinGW --- README.md | 13 ++++- examples/third-party/CMakeLists.txt | 3 +- examples/third-party/ggsock | 2 +- examples/third-party/imgui/CMakeLists.txt | 65 +++++++++++++++++------ 4 files changed, 64 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 8944379..5639d50 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,18 @@ Other projects using **ggwave** or one of its prototypes: ## Building -### Linux and Mac: +### Dependencies for SDL-based examples + + [Ubuntu] + $ sudo apt install libsdl2-dev + + [Mac OS with brew] + $ brew install sdl2 + + [MSYS2] + $ pacman -S git cmake make mingw-w64-x86_64-dlfcn mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2 + +### Linux, Mac, Windows (MSYS2): ```bash # build diff --git a/examples/third-party/CMakeLists.txt b/examples/third-party/CMakeLists.txt index 6fb6209..d13b18d 100644 --- a/examples/third-party/CMakeLists.txt +++ b/examples/third-party/CMakeLists.txt @@ -1,5 +1,6 @@ if (NOT EMSCRIPTEN) endif() -add_subdirectory(imtui) + +#add_subdirectory(imtui) add_subdirectory(imgui) add_subdirectory(ggsock) diff --git a/examples/third-party/ggsock b/examples/third-party/ggsock index 4f6b1c3..9934b3d 160000 --- a/examples/third-party/ggsock +++ b/examples/third-party/ggsock @@ -1 +1 @@ -Subproject commit 4f6b1c3b16c70743c1e880e37eabc48992c305f2 +Subproject commit 9934b3d94961ddcf48633deb0076bb41901b17e6 diff --git a/examples/third-party/imgui/CMakeLists.txt b/examples/third-party/imgui/CMakeLists.txt index 8885597..150760f 100644 --- a/examples/third-party/imgui/CMakeLists.txt +++ b/examples/third-party/imgui/CMakeLists.txt @@ -32,7 +32,55 @@ target_link_libraries(imgui PRIVATE ) if (GGWAVE_SUPPORT_SDL2) - if (NOT EMSCRIPTEN) + if (MINGW) + find_package(PkgConfig REQUIRED) + pkg_search_module(SDL2 REQUIRED sdl2) + + add_library(imgui-sdl2 ${GGWAVE_LIBRARY_TYPE} + imgui/examples/libs/gl3w/GL/gl3w.c + imgui-extra/imgui_impl.cpp + imgui-extra/imgui_impl_sdl.cpp + imgui-extra/imgui_impl_opengl3.cpp + ) + + target_include_directories(imgui-sdl2 PUBLIC + imgui/examples/libs/gl3w + ${SDL2_INCLUDE_DIRS} + ) + + target_include_directories(imgui-sdl2 PRIVATE + imgui + imgui-extra + ) + + target_link_libraries(imgui-sdl2 PUBLIC + imgui + opengl32 + ${SDL2_LIBRARIES} + stdc++ + ) + + target_link_libraries(imgui-sdl2 PRIVATE + ${CMAKE_DL_LIBS} + ${CMAKE_THREAD_LIBS_INIT} + ${ADDITIONAL_LIBRARIES} + ) + elseif (EMSCRIPTEN) + add_library(imgui-sdl2 ${GGWAVE_LIBRARY_TYPE} + imgui-extra/imgui_impl.cpp + imgui-extra/imgui_impl_sdl.cpp + imgui-extra/imgui_impl_opengl3.cpp + ) + + target_include_directories(imgui-sdl2 PRIVATE + imgui + imgui-extra + ) + + target_link_libraries(imgui-sdl2 PUBLIC + imgui + ) + else() find_package(OpenGL REQUIRED) add_library(imgui-sdl2 ${GGWAVE_LIBRARY_TYPE} @@ -63,20 +111,5 @@ if (GGWAVE_SUPPORT_SDL2) ${CMAKE_THREAD_LIBS_INIT} ${ADDITIONAL_LIBRARIES} ) - else() - add_library(imgui-sdl2 ${GGWAVE_LIBRARY_TYPE} - imgui-extra/imgui_impl.cpp - imgui-extra/imgui_impl_sdl.cpp - imgui-extra/imgui_impl_opengl3.cpp - ) - - target_include_directories(imgui-sdl2 PRIVATE - imgui - imgui-extra - ) - - target_link_libraries(imgui-sdl2 PUBLIC - imgui - ) endif() endif()