diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 1c3c197..5a88972 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -142,6 +142,29 @@ jobs: shell: bash run: test -e lib/libGLEW.a + build_mingw: + # The CMake configure and build commands are platform agnostic and should work equally + # well on Windows or Mac. You can convert this to a matrix build if you need + # cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ubuntu-latest + container: ubuntu:18.04 + + steps: + - uses: actions/checkout@v2 + + - name: Install dependencies + run: apt update && apt install -y cmake g++-mingw-w64-x86-64 make libgl1-mesa-dev libx11-dev libxext-dev + + - name: Configure CMake + shell: bash + run: cmake . -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE="$GITHUB_WORKSPACE/glew-cmake/mingw.cmake" + + - name: Build test + shell: bash + run: cmake --build . + + build_mac: runs-on: macos-latest diff --git a/CMakeLists.txt b/CMakeLists.txt index d48ba5d..2b8f367 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,13 +182,20 @@ if(glew-cmake_BUILD_SHARED) endif() target_compile_definitions(libglew_shared PRIVATE GLEW_BUILD) + if(MINGW) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) + target_link_options(libglew_shared PRIVATE -nostdlib) + else() + target_link_libraries(libglew_shared PRIVATE -nostdlib) + endif() + endif() list(APPEND GLEW_TARGETS libglew_shared) endif() foreach(GLEW_TARGET ${GLEW_TARGETS}) target_compile_definitions(${GLEW_TARGET} PUBLIC ${DEFINITIONS}) target_include_directories(${GLEW_TARGET} PUBLIC ${INCLUDE_DIR}) - target_link_libraries(${GLEW_TARGET} ${LIBRARIES}) + target_link_libraries(${GLEW_TARGET} PUBLIC ${LIBRARIES}) set_target_properties(${GLEW_TARGET} PROPERTIES VERSION ${GLEW_VERSION}) endforeach() diff --git a/glew-cmake/mingw.cmake b/glew-cmake/mingw.cmake new file mode 100644 index 0000000..d834751 --- /dev/null +++ b/glew-cmake/mingw.cmake @@ -0,0 +1,16 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) + +# cross compilers to use for C, C++ and Fortran +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) +set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) + +# target environment on the build host system +set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) + +# modify default behavior of FIND_XXX() commands +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +