summaryrefslogtreecommitdiffstats
path: root/CMakeScripts/ConfigEnvMinGW.cmake
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:29:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:29:01 +0000
commit35a96bde514a8897f6f0fcc41c5833bf63df2e2a (patch)
tree657d15a03cc46bd099fc2c6546a7a4ad43815d9f /CMakeScripts/ConfigEnvMinGW.cmake
parentInitial commit. (diff)
downloadinkscape-35a96bde514a8897f6f0fcc41c5833bf63df2e2a.tar.xz
inkscape-35a96bde514a8897f6f0fcc41c5833bf63df2e2a.zip
Adding upstream version 1.0.2.upstream/1.0.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'CMakeScripts/ConfigEnvMinGW.cmake')
-rw-r--r--CMakeScripts/ConfigEnvMinGW.cmake116
1 files changed, 116 insertions, 0 deletions
diff --git a/CMakeScripts/ConfigEnvMinGW.cmake b/CMakeScripts/ConfigEnvMinGW.cmake
new file mode 100644
index 0000000..eaa545d
--- /dev/null
+++ b/CMakeScripts/ConfigEnvMinGW.cmake
@@ -0,0 +1,116 @@
+# -----------------------------------------------------------------------------
+# 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{MSYSTEM_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(EXISTS "${MINGW_PATH}/i686-w64-mingw32")
+ set(HAVE_MINGW64 OFF)
+ set(MINGW_ARCH i686-w64-mingw32)
+elseif(EXISTS "${MINGW_PATH}/x86_64-w64-mingw32")
+ set(HAVE_MINGW64 ON)
+ set(MINGW_ARCH x86_64-w64-mingw32)
+else()
+ message(FATAL_ERROR "Unable to determine MinGW processor architecture. Are you using an unsupported MinGW version?")
+endif()
+
+# Path to processor architecture specific binaries and libs.
+set(MINGW_ARCH_PATH "${MINGW_PATH}/${MINGW_ARCH}")
+
+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})
+
+set(MINGW_ARCH_LIB "${MINGW_ARCH_PATH}/lib")
+
+if(NOT EXISTS ${MINGW_ARCH_LIB})
+ message(FATAL_ERROR "MinGW-w64 toolchain libraries directory does not exist: ${MINGW_ARCH_LIB}")
+endif()
+
+# Add MinGW toolchain libraries to linker path.
+link_directories(${MINGW_ARCH_LIB})
+
+set(MINGW_ARCH_INCLUDE "${MINGW_ARCH_PATH}/include")
+
+if(NOT EXISTS ${MINGW_ARCH_INCLUDE})
+ message(FATAL_ERROR "MinGW-w64 toolchain include directory does not exist: ${MINGW_ARCH_INCLUDE}")
+endif()
+
+# Add MinGW toolchain headers to compiler include path.
+include_directories(${MINGW_ARCH_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")