50 lines
1.6 KiB
CMake
50 lines
1.6 KiB
CMake
#
|
|
# Usage: cmake -DPREFIX=/prefix/path -P fix-python-install-scheme.cmake
|
|
#
|
|
|
|
#
|
|
# On Windows Python hardcodes the installation scheme to be ${PREFIX}/Scripts
|
|
# and ${PREFIX}/Lib, but we, in Krita, use the posix scheme.
|
|
#
|
|
# It is not possible to change the scheme in Python without recompiling it
|
|
# (as of Python 3.10), so we just fix the scheme after installation.
|
|
#
|
|
|
|
# for IN_LIST to be available
|
|
cmake_minimum_required(VERSION 3.3)
|
|
|
|
if (DEFINED ENV{DESTDIR})
|
|
set(DESTDIR $ENV{DESTDIR})
|
|
cmake_path(ABSOLUTE_PATH PREFIX NORMALIZE)
|
|
cmake_path(ABSOLUTE_PATH DESTDIR NORMALIZE)
|
|
|
|
cmake_path(GET PREFIX RELATIVE_PART RELATIVE_PREFIX)
|
|
# message("prefix ${PREFIX}")
|
|
# message("relprefix ${RELATIVE_PREFIX}")
|
|
|
|
cmake_path(APPEND NEWPREFIX ${DESTDIR} ${RELATIVE_PREFIX})
|
|
set(PREFIX ${NEWPREFIX})
|
|
# message("finalprefix ${PREFIX}")
|
|
endif()
|
|
|
|
file(GLOB PREFIX_CONTENT LIST_DIRECTORIES TRUE RELATIVE ${PREFIX} "${PREFIX}/*")
|
|
|
|
if ("Scripts" IN_LIST PREFIX_CONTENT)
|
|
if (NOT "bin" IN_LIST PREFIX_CONTENT)
|
|
message(STATUS "Renaming ./Scripts -> ./bin at ${PREFIX}")
|
|
file(RENAME "${PREFIX}/Scripts" "${PREFIX}/bin")
|
|
else()
|
|
file(COPY "${PREFIX}/Scripts" DESTINATION "${PREFIX}/bin")
|
|
file(REMOVE_RECURSE "${PREFIX}/Scripts/")
|
|
endif()
|
|
endif()
|
|
|
|
if ("Lib" IN_LIST PREFIX_CONTENT)
|
|
if (NOT "lib" IN_LIST PREFIX_CONTENT)
|
|
message(STATUS "Renaming ./Lib -> ./lib at ${PREFIX}")
|
|
file(RENAME "${PREFIX}/Lib" "${PREFIX}/lib")
|
|
else()
|
|
file(COPY "${PREFIX}/Lib/" DESTINATION "${PREFIX}/lib")
|
|
file(REMOVE_RECURSE "${PREFIX}/Lib/")
|
|
endif()
|
|
endif()
|