summaryrefslogtreecommitdiffstats
path: root/CMakeScripts/ConfigEnvMinGW.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeScripts/ConfigEnvMinGW.cmake')
-rw-r--r--CMakeScripts/ConfigEnvMinGW.cmake98
1 files changed, 98 insertions, 0 deletions
diff --git a/CMakeScripts/ConfigEnvMinGW.cmake b/CMakeScripts/ConfigEnvMinGW.cmake
new file mode 100644
index 0000000..85b6564
--- /dev/null
+++ b/CMakeScripts/ConfigEnvMinGW.cmake
@@ -0,0 +1,98 @@
+# -----------------------------------------------------------------------------
+# Set the paths in this file if you want to build Inkscape from a shell other than the
+# Windows built-in command line (i.e. MSYS) or IDEs such as CodeLite. These variables
+# will be used as default if no environment variables are set.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# MinGW Configuration
+# -----------------------------------------------------------------------------
+message(STATUS "Configuring MinGW environment:")
+
+if("$ENV{MINGW_CHOST}" STREQUAL "")
+ message(WARNING " Could not detect MinGW build environment. We recommend building with MSYS2. Proceed at your own risk!")
+else()
+ message(STATUS " Detected MinGW environment provided by MSYS2")
+ set(MINGW_PATH $ENV{MINGW_PREFIX})
+endif()
+
+# -----------------------------------------------------------------------------
+# MINGW CHECKS
+# -----------------------------------------------------------------------------
+
+# Try to determine the MinGW processor architecture.
+if("$ENV{MINGW_CHOST}" STREQUAL "i686-w64-mingw32")
+ set(HAVE_MINGW64 OFF)
+ set(MINGW_ARCH i686-w64-mingw32)
+elseif("$ENV{MINGW_CHOST}" STREQUAL "x86_64-w64-mingw32")
+ set(HAVE_MINGW64 ON)
+ set(MINGW_ARCH x86_64-w64-mingw32)
+elseif("$ENV{MINGW_CHOST}" STREQUAL "aarch64-w64-mingw32")
+ set(HAVE_MINGW64 ON)
+ set(MINGW_ARCH aarch64-w64-mingw32)
+else()
+ message(FATAL_ERROR "Unable to determine MinGW processor architecture. Are you using an unsupported MinGW version?")
+endif()
+
+set(MINGW_BIN "${MINGW_PATH}/bin")
+
+if(NOT EXISTS ${MINGW_BIN})
+ message(FATAL_ERROR "MinGW binary directory does not exist: ${MINGW_BIN}")
+endif()
+
+# Eliminate error messages when not having mingw in the environment path variable.
+list(APPEND CMAKE_PROGRAM_PATH ${MINGW_BIN})
+
+set(MINGW_LIB "${MINGW_PATH}/lib")
+
+if(NOT EXISTS ${MINGW_LIB})
+ message(FATAL_ERROR "MinGW library directory does not exist: ${MINGW_LIB}")
+endif()
+
+# Add MinGW libraries to linker path.
+link_directories(${MINGW_LIB})
+
+set(MINGW_INCLUDE "${MINGW_PATH}/include")
+
+if(NOT EXISTS ${MINGW_INCLUDE})
+ message(FATAL_ERROR "MinGW include directory does not exist: ${MINGW_INCLUDE}")
+endif()
+
+# Add MinGW headers to compiler include path.
+include_directories(SYSTEM ${MINGW_INCLUDE})
+
+# -----------------------------------------------------------------------------
+# MSYS CHECKS
+# -----------------------------------------------------------------------------
+
+# Somehow the MSYS variable does not work as documented..
+if("${CMAKE_GENERATOR}" STREQUAL "MSYS Makefiles")
+ set(HAVE_MSYS ON)
+else()
+ set(HAVE_MSYS OFF)
+endif()
+
+# Set the path to the 'ar' utility for the MSYS shell as it fails to detect it properly.
+if(HAVE_MSYS)
+ message(STATUS "Configuring MSYS environment:")
+
+ if(NOT EXISTS ${CMAKE_AR})
+ set(MINGW_AR ${MINGW_BIN}/ar.exe)
+
+ if(EXISTS ${MINGW_AR})
+ set(CMAKE_AR ${MINGW_AR} CACHE FILEPATH "Archive Utility")
+ else()
+ message(FATAL_ERROR "ar.exe not found.")
+ endif()
+
+ message(STATUS " Setting path to ar.exe: ${CMAKE_AR}")
+ endif()
+endif()
+
+# -----------------------------------------------------------------------------
+# LIBRARY AND LINKER SETTINGS
+# -----------------------------------------------------------------------------
+
+# Tweak CMake into using Unix-style library names.
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".dll")