summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt27
-rw-r--r--src/Common/Sizes.hpp11
-rw-r--r--toolchains/MinGW.cmake13
-rw-r--r--vendor/mingw/libglew32.abin0 -> 793580 bytes
-rw-r--r--vendor/mingw/libglfw3.abin0 -> 291560 bytes
5 files changed, 43 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5fffbda..d0c036f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,12 +7,24 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Enable assertions for RelWithDebInfo builds.
string(REPLACE "-DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+set(GLEW_USE_STATIC_LIBS ON)
+
find_package(glfw3 3.3 REQUIRED)
find_package(GLEW REQUIRED)
+find_package(OpenGL REQUIRED)
+
+# Vendored shared libraries for MinGW-w64
+# for cross-compiling to Windows from macOS
+if (WIN32)
+ set_target_properties(glfw PROPERTIES
+ IMPORTED_IMPLIB_RELEASE "${CMAKE_SOURCE_DIR}/vendor/mingw/libglfw3.a"
+ )
-if (LINUX)
- find_package(OpenGL REQUIRED)
-endif (LINUX)
+ set_target_properties(GLEW::glew_s PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${CMAKE_SOURCE_DIR}/vendor/mingw/libglew32.a"
+ INTERFACE_LINK_LIBRARIES "" # Tries importing OpenGL.framework on macOS otherwise
+ )
+endif (WIN32)
add_executable(meowcraft
src/main.cpp
@@ -68,11 +80,12 @@ add_executable(meowcraft
src/Common/Casts.hpp
src/World/VoxelTraversal.hpp
)
-target_link_libraries(meowcraft glfw GLEW::GLEW)
-if (LINUX)
- target_link_libraries(meowcraft OpenGL)
-endif (LINUX)
+if (WIN32)
+ set(LINK_FLAGS "-static-libgcc -static-libstdc++ -static -mwindows")
+endif (WIN32)
+
+target_link_libraries(meowcraft PRIVATE glfw GLEW::glew_s OpenGL::GL ${LINK_FLAGS})
function(make_includable input_file output_file)
file(READ ${input_file} content)
diff --git a/src/Common/Sizes.hpp b/src/Common/Sizes.hpp
index de49d3d..036c98b 100644
--- a/src/Common/Sizes.hpp
+++ b/src/Common/Sizes.hpp
@@ -44,4 +44,13 @@ ASSERT_SIZE(U64, 8);
ASSERT_SIZE(F32, 4);
ASSERT_SIZE(F64, 8);
-ASSERT_SIZE(Bool, 1); \ No newline at end of file
+ASSERT_SIZE(Bool, 1);
+
+// MinGW doesn't define uint that I like to use
+// in template definitions, so we need to define it here.
+
+#ifdef __MINGW32__
+
+#define uint uint32_t
+
+#endif
diff --git a/toolchains/MinGW.cmake b/toolchains/MinGW.cmake
new file mode 100644
index 0000000..d75ebcb
--- /dev/null
+++ b/toolchains/MinGW.cmake
@@ -0,0 +1,13 @@
+set(CMAKE_SYSTEM_NAME Windows)
+set(CMAKE_SYSTEM_PROCESSOR x86_64)
+
+SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
+SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
+
+# MinGW toolchain installed through Homebrew
+set(CMAKE_FIND_ROOT_PATH /usr/local/Cellar/mingw-w64/11.0.1/toolchain-x86_64/x86_64-w64-mingw32)
+
+# Don't search for programs in the host environment, or at least try not to
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) \ No newline at end of file
diff --git a/vendor/mingw/libglew32.a b/vendor/mingw/libglew32.a
new file mode 100644
index 0000000..e312f03
--- /dev/null
+++ b/vendor/mingw/libglew32.a
Binary files differ
diff --git a/vendor/mingw/libglfw3.a b/vendor/mingw/libglfw3.a
new file mode 100644
index 0000000..d3a2564
--- /dev/null
+++ b/vendor/mingw/libglfw3.a
Binary files differ