mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-28 13:44:02 +08:00
66 lines
1.7 KiB
CMake
66 lines
1.7 KiB
CMake
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
||
|
|
||
|
cmake_minimum_required(VERSION 3.5)
|
||
|
|
||
|
# Make file names absolute:
|
||
|
#
|
||
|
get_filename_component(filename "@filename@" ABSOLUTE)
|
||
|
get_filename_component(directory "@directory@" ABSOLUTE)
|
||
|
|
||
|
message(STATUS "extracting...
|
||
|
src='${filename}'
|
||
|
dst='${directory}'"
|
||
|
)
|
||
|
|
||
|
if(NOT EXISTS "${filename}")
|
||
|
message(FATAL_ERROR "File to extract does not exist: '${filename}'")
|
||
|
endif()
|
||
|
|
||
|
# Prepare a space for extracting:
|
||
|
#
|
||
|
set(i 1234)
|
||
|
while(EXISTS "${directory}/../ex-@name@${i}")
|
||
|
math(EXPR i "${i} + 1")
|
||
|
endwhile()
|
||
|
set(ut_dir "${directory}/../ex-@name@${i}")
|
||
|
file(MAKE_DIRECTORY "${ut_dir}")
|
||
|
|
||
|
# Extract it:
|
||
|
#
|
||
|
message(STATUS "extracting... [tar @args@]")
|
||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar @args@ ${filename} @options@
|
||
|
WORKING_DIRECTORY ${ut_dir}
|
||
|
RESULT_VARIABLE rv
|
||
|
)
|
||
|
|
||
|
if(NOT rv EQUAL 0)
|
||
|
message(STATUS "extracting... [error clean up]")
|
||
|
file(REMOVE_RECURSE "${ut_dir}")
|
||
|
message(FATAL_ERROR "Extract of '${filename}' failed")
|
||
|
endif()
|
||
|
|
||
|
# Analyze what came out of the tar file:
|
||
|
#
|
||
|
message(STATUS "extracting... [analysis]")
|
||
|
file(GLOB contents "${ut_dir}/*")
|
||
|
list(REMOVE_ITEM contents "${ut_dir}/.DS_Store")
|
||
|
list(LENGTH contents n)
|
||
|
if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}")
|
||
|
set(contents "${ut_dir}")
|
||
|
endif()
|
||
|
|
||
|
# Move "the one" directory to the final directory:
|
||
|
#
|
||
|
message(STATUS "extracting... [rename]")
|
||
|
file(REMOVE_RECURSE ${directory})
|
||
|
get_filename_component(contents ${contents} ABSOLUTE)
|
||
|
file(RENAME ${contents} ${directory})
|
||
|
|
||
|
# Clean up:
|
||
|
#
|
||
|
message(STATUS "extracting... [clean up]")
|
||
|
file(REMOVE_RECURSE "${ut_dir}")
|
||
|
|
||
|
message(STATUS "extracting... done")
|