aboutsummaryrefslogtreecommitdiff
path: root/scripts/toolchains
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@gmail.com>2020-01-18 00:36:08 +0100
committerVictor Romero <romerosanchezv@gmail.com>2020-01-17 15:36:08 -0800
commit38b959022cec1b865489d97a697eda84b49cc4e5 (patch)
tree20fcc2f8eedbb65f7067a1d6e077d2c616111e48 /scripts/toolchains
parentf56645c3fd9a1561c430e90ce00836489b372ef8 (diff)
downloadvcpkg-38b959022cec1b865489d97a697eda84b49cc4e5.tar.gz
vcpkg-38b959022cec1b865489d97a697eda84b49cc4e5.zip
Add support for building with MinGW (#9137)
* Add support for building with MinGW Tested with MSYS2 MinGW 8.3.0, gcc-mcf.lhmouse MinGW 9.2.1, and StephanTLavavej/mingw-distro! * Add MinGW toolchain From your MinGW configured shell you could just use vcpkg to configure packages. An x64-mingw triplet would look like: ``` set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_ENV_PASSTHROUGH PATH) set(VCPKG_CMAKE_SYSTEM_NAME MinGW) ``` * Add MinGW community tripplets x64 tested with https://github.com/StephanTLavavej/mingw-distro x86, arm64, arm tested with https://github.com/mstorsjo/llvm-mingw
Diffstat (limited to 'scripts/toolchains')
-rw-r--r--scripts/toolchains/mingw.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/scripts/toolchains/mingw.cmake b/scripts/toolchains/mingw.cmake
new file mode 100644
index 000000000..def98799f
--- /dev/null
+++ b/scripts/toolchains/mingw.cmake
@@ -0,0 +1,40 @@
+if(NOT _VCPKG_MINGW_TOOLCHAIN)
+set(_VCPKG_MINGW_TOOLCHAIN 1)
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "")
+endif()
+
+# Need to override MinGW from VCPKG_CMAKE_SYSTEM_NAME
+set(CMAKE_SYSTEM_NAME Windows CACHE STRING "" FORCE)
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(CMAKE_SYSTEM_PROCESSOR i686 CACHE STRING "")
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "")
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ set(CMAKE_SYSTEM_PROCESSOR armv7 CACHE STRING "")
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "")
+endif()
+
+foreach(lang C CXX)
+ set(CMAKE_${lang}_COMPILER_TARGET "${CMAKE_SYSTEM_PROCESSOR}-windows-gnu" CACHE STRING "")
+endforeach()
+
+get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE )
+if(NOT _CMAKE_IN_TRY_COMPILE)
+ string(APPEND CMAKE_C_FLAGS_INIT " ${VCPKG_C_FLAGS} ")
+ string(APPEND CMAKE_CXX_FLAGS_INIT " ${VCPKG_CXX_FLAGS} ")
+ string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ")
+ string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ")
+ string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ")
+ string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ")
+
+ string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
+ string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
+ if(VCPKG_CRT_LINKAGE STREQUAL "static")
+ string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT "-static ")
+ string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-static ")
+ endif()
+endif()
+endif()