98 lines
3.4 KiB
CMake
98 lines
3.4 KiB
CMake
# -----------------------------------------------------------------------------
|
|
# 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")
|