diff --git a/CMakeLists.txt b/CMakeLists.txt index 59bdd86..0b116ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,9 +23,24 @@ include(FetchContent) # --- Dependencies ----------------------------------------------------------- # System packages are preferred; anything missing is fetched. find_package(OpenGL REQUIRED) -find_package(PkgConfig REQUIRED) +# libepoxy: pkg-config where available (Linux, MSYS2), else a plain header/library search +# (MSVC + vcpkg ships no pkg-config by default). if(NOT TARGET PkgConfig::EPOXY) - pkg_check_modules(EPOXY REQUIRED IMPORTED_TARGET epoxy) + find_package(PkgConfig QUIET) + if(PkgConfig_FOUND) + pkg_check_modules(EPOXY QUIET IMPORTED_TARGET epoxy) + endif() + if(NOT TARGET PkgConfig::EPOXY) + find_path(EPOXY_INCLUDE_DIR epoxy/gl.h) + find_library(EPOXY_LIBRARY NAMES epoxy libepoxy epoxy-0) + if(NOT EPOXY_INCLUDE_DIR OR NOT EPOXY_LIBRARY) + message(FATAL_ERROR "libepoxy not found (install it, e.g. pacman -S libepoxy, " + "pacman -S mingw-w64-ucrt-x86_64-libepoxy or vcpkg install libepoxy)") + endif() + add_library(PkgConfig::EPOXY UNKNOWN IMPORTED) + set_target_properties(PkgConfig::EPOXY PROPERTIES IMPORTED_LOCATION "${EPOXY_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${EPOXY_INCLUDE_DIR}") + endif() endif() if(NOT TARGET glfw) diff --git a/README.md b/README.md index c183dc5..ada82b4 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,12 @@ ninja -C build ./build/hd2d_demo ``` +Windows: in the MSYS2 **UCRT64** shell, +`pacman -S --needed mingw-w64-ucrt-x86_64-{gcc,cmake,ninja,pkgconf,glfw,glm,libepoxy}` and the +same `cmake` / `ninja` commands. With Visual Studio, `vcpkg install glfw3 glm libepoxy` and pass +`-DCMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake`. libepoxy is found through +pkg-config when present, else by a plain header/library search. + The asset path is baked in at configure time (`HD2D_ASSET_DIR`), so the demo can be run from any working directory.