diff options
| -rw-r--r-- | CMakeLists.txt | 27 | ||||
| -rw-r--r-- | src/Common/Sizes.hpp | 11 | ||||
| -rw-r--r-- | toolchains/MinGW.cmake | 13 | ||||
| -rw-r--r-- | vendor/mingw/libglew32.a | bin | 0 -> 793580 bytes | |||
| -rw-r--r-- | vendor/mingw/libglfw3.a | bin | 0 -> 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 differdiff --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 |
