Generate SDK Hash
This commit is contained in:
parent
2568b05053
commit
bf24ace78e
@ -20,14 +20,13 @@ include(cmake/util/util.cmake)
|
|||||||
# Sanity Checks
|
# Sanity Checks
|
||||||
string(CONCAT ARM_SANITY_CHECK
|
string(CONCAT ARM_SANITY_CHECK
|
||||||
"include(CheckSymbolExists)\n"
|
"include(CheckSymbolExists)\n"
|
||||||
"check_symbol_exists(\"__arm__\" \"\" IS_ARM_TARGETING)"
|
"check_symbol_exists(\"__arm__\" \"\" IS_ARM_TARGETING)\n"
|
||||||
)
|
)
|
||||||
if(BUILD_ARM_COMPONENTS)
|
if(BUILD_ARM_COMPONENTS)
|
||||||
string(CONCAT ARM_SANITY_CHECK
|
string(APPEND ARM_SANITY_CHECK
|
||||||
"${ARM_SANITY_CHECK}\n"
|
|
||||||
"if(NOT IS_ARM_TARGETING)\n"
|
"if(NOT IS_ARM_TARGETING)\n"
|
||||||
" message(FATAL_ERROR \"ARM-Targeting Compiler Required\")\n"
|
" message(FATAL_ERROR \"ARM-Targeting Compiler Required\")\n"
|
||||||
"endif()"
|
"endif()\n"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
cmake_language(EVAL CODE "${ARM_SANITY_CHECK}")
|
cmake_language(EVAL CODE "${ARM_SANITY_CHECK}")
|
||||||
@ -63,13 +62,12 @@ string(CONCAT COMPILE_FLAGS_SETUP
|
|||||||
"set(CMAKE_SKIP_BUILD_RPATH TRUE)\n"
|
"set(CMAKE_SKIP_BUILD_RPATH TRUE)\n"
|
||||||
|
|
||||||
# Always Build Shared Libraries
|
# Always Build Shared Libraries
|
||||||
"set(BUILD_SHARED_LIBS TRUE CACHE BOOL \"\" FORCE)"
|
"set(BUILD_SHARED_LIBS TRUE CACHE BOOL \"\" FORCE)\n"
|
||||||
)
|
)
|
||||||
if(BUILD_ARM_COMPONENTS)
|
if(BUILD_ARM_COMPONENTS)
|
||||||
string(CONCAT COMPILE_FLAGS_SETUP
|
string(APPEND COMPILE_FLAGS_SETUP
|
||||||
"${COMPILE_FLAGS_SETUP}\n"
|
|
||||||
# Disable C++11 String ABI
|
# Disable C++11 String ABI
|
||||||
"add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)"
|
"add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)\n"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
cmake_language(EVAL CODE "${COMPILE_FLAGS_SETUP}")
|
cmake_language(EVAL CODE "${COMPILE_FLAGS_SETUP}")
|
||||||
@ -128,15 +126,32 @@ if(BUILD_ARM_COMPONENTS)
|
|||||||
install(EXPORT sdk DESTINATION "${MCPI_SDK_DIR}" FILE "sdk-targets.cmake")
|
install(EXPORT sdk DESTINATION "${MCPI_SDK_DIR}" FILE "sdk-targets.cmake")
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sdk.cmake"
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sdk.cmake"
|
||||||
# Sanity Check
|
# Sanity Check
|
||||||
"${ARM_SANITY_CHECK}\n"
|
"${ARM_SANITY_CHECK}"
|
||||||
# Compile Flags
|
# Compile Flags
|
||||||
"${COMPILE_FLAGS_SETUP}\n"
|
"${COMPILE_FLAGS_SETUP}"
|
||||||
# Log
|
# Log
|
||||||
"message(STATUS \"Using Reborn SDK v${MCPI_VERSION}\")\n"
|
"message(STATUS \"Using Reborn SDK v${MCPI_VERSION}\")\n"
|
||||||
# Include Targets
|
# Include Targets
|
||||||
"include(\"\${CMAKE_CURRENT_LIST_DIR}/sdk-targets.cmake\")\n"
|
"include(\"\${CMAKE_CURRENT_LIST_DIR}/sdk-targets.cmake\")\n"
|
||||||
)
|
)
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sdk.cmake" DESTINATION "${MCPI_SDK_DIR}")
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sdk.cmake" DESTINATION "${MCPI_SDK_DIR}")
|
||||||
|
# Calculate Hash Of SDK
|
||||||
|
string(CONCAT SDK_HASH_SCRIPT
|
||||||
|
# Prepare
|
||||||
|
"set(dir \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${MCPI_SDK_DIR}\")\n"
|
||||||
|
"set(out \"\${dir}/.hash\")\n"
|
||||||
|
# Calculate Hashes
|
||||||
|
"set(content \"\")\n"
|
||||||
|
"file(GLOB_RECURSE files LIST_DIRECTORIES FALSE \"\${dir}/*\")\n"
|
||||||
|
"foreach(file IN LISTS files)\n"
|
||||||
|
" file(SHA256 \"\${file}\" hash)\n"
|
||||||
|
" cmake_path(RELATIVE_PATH file BASE_DIRECTORY \"\${dir}\")\n"
|
||||||
|
" string(APPEND content \"\${hash} \${file}\\n\")\n"
|
||||||
|
"endforeach()\n"
|
||||||
|
# Write File
|
||||||
|
"file(WRITE \"\${out}\" \"\${content}\")\n"
|
||||||
|
)
|
||||||
|
install(CODE "${SDK_HASH_SCRIPT}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Packaging
|
# Packaging
|
||||||
|
@ -1,18 +1,20 @@
|
|||||||
|
# Target
|
||||||
|
set(target "arm-none-linux-gnueabihf")
|
||||||
|
|
||||||
# Pick Archive
|
# Pick Archive
|
||||||
set(toolchain_version "13.3.rel1")
|
set(toolchain_version "13.3.rel1")
|
||||||
execute_process(COMMAND uname -m OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND uname -m OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
if(arch STREQUAL "x86_64")
|
if(arch STREQUAL "x86_64")
|
||||||
set(toolchain_file "arm-gnu-toolchain-${toolchain_version}-x86_64-arm-none-linux-gnueabihf.tar.xz")
|
set(toolchain_file "arm-gnu-toolchain-${toolchain_version}-x86_64-${target}.tar.xz")
|
||||||
elseif(arch STREQUAL "aarch64" OR arch STREQUAL "armv8b" OR arch STREQUAL "armv8l")
|
elseif(arch STREQUAL "aarch64" OR arch STREQUAL "armv8b" OR arch STREQUAL "armv8l")
|
||||||
set(toolchain_file "arm-gnu-toolchain-${toolchain_version}-aarch64-arm-none-linux-gnueabihf.tar.xz")
|
set(toolchain_file "arm-gnu-toolchain-${toolchain_version}-aarch64-${target}.tar.xz")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unable To Download Prebuilt ARMHF Toolchain")
|
message(FATAL_ERROR "Unable To Download Prebuilt ARMHF Toolchain")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Download If Needed
|
# Download If Needed
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(prebuilt-armhf-toolchain
|
||||||
prebuilt-armhf-toolchain
|
|
||||||
URL "${CMAKE_CURRENT_LIST_DIR}/../../archives/${toolchain_file}"
|
URL "${CMAKE_CURRENT_LIST_DIR}/../../archives/${toolchain_file}"
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(prebuilt-armhf-toolchain)
|
FetchContent_MakeAvailable(prebuilt-armhf-toolchain)
|
||||||
@ -20,8 +22,8 @@ set(toolchain_dir "${prebuilt-armhf-toolchain_SOURCE_DIR}")
|
|||||||
|
|
||||||
# Force Toolchain
|
# Force Toolchain
|
||||||
file(WRITE "${toolchain_dir}/toolchain.cmake"
|
file(WRITE "${toolchain_dir}/toolchain.cmake"
|
||||||
"set(CMAKE_C_COMPILER \"\${CMAKE_CURRENT_LIST_DIR}/bin/arm-none-linux-gnueabihf-gcc\")\n"
|
"set(CMAKE_C_COMPILER \"\${CMAKE_CURRENT_LIST_DIR}/bin/${target}-gcc\")\n"
|
||||||
"set(CMAKE_CXX_COMPILER \"\${CMAKE_CURRENT_LIST_DIR}/bin/arm-none-linux-gnueabihf-g++\")\n"
|
"set(CMAKE_CXX_COMPILER \"\${CMAKE_CURRENT_LIST_DIR}/bin/${target}-g++\")\n"
|
||||||
"set(CMAKE_SYSTEM_NAME \"Linux\")\n"
|
"set(CMAKE_SYSTEM_NAME \"Linux\")\n"
|
||||||
"set(CMAKE_SYSTEM_PROCESSOR \"arm\")\n"
|
"set(CMAKE_SYSTEM_PROCESSOR \"arm\")\n"
|
||||||
"set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n"
|
"set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n"
|
||||||
@ -30,14 +32,14 @@ force_set(MCPI_CMAKE_TOOLCHAIN_FILE "${toolchain_dir}/toolchain.cmake" FILEPATH)
|
|||||||
|
|
||||||
# Build Sysroot
|
# Build Sysroot
|
||||||
set(sysroot_dir "${CMAKE_CURRENT_BINARY_DIR}/bundled-armhf-sysroot")
|
set(sysroot_dir "${CMAKE_CURRENT_BINARY_DIR}/bundled-armhf-sysroot")
|
||||||
if("${toolchain_dir}/bin/arm-none-linux-gnueabihf-gcc" IS_NEWER_THAN "${sysroot_dir}")
|
if("${toolchain_dir}/bin/${target}-gcc" IS_NEWER_THAN "${sysroot_dir}")
|
||||||
# Create Directory
|
# Create Directory
|
||||||
file(REMOVE_RECURSE "${sysroot_dir}")
|
file(REMOVE_RECURSE "${sysroot_dir}")
|
||||||
file(MAKE_DIRECTORY "${sysroot_dir}")
|
file(MAKE_DIRECTORY "${sysroot_dir}")
|
||||||
|
|
||||||
# Copy Files From Toolchain
|
# Copy Files From Toolchain
|
||||||
file(
|
file(
|
||||||
COPY "${toolchain_dir}/arm-none-linux-gnueabihf/libc/"
|
COPY "${toolchain_dir}/${target}/libc/"
|
||||||
DESTINATION "${sysroot_dir}"
|
DESTINATION "${sysroot_dir}"
|
||||||
USE_SOURCE_PERMISSIONS
|
USE_SOURCE_PERMISSIONS
|
||||||
FILES_MATCHING
|
FILES_MATCHING
|
||||||
@ -53,13 +55,12 @@ if("${toolchain_dir}/bin/arm-none-linux-gnueabihf-gcc" IS_NEWER_THAN "${sysroot_
|
|||||||
file(GLOB_RECURSE files LIST_DIRECTORIES FALSE "${sysroot_dir}/*")
|
file(GLOB_RECURSE files LIST_DIRECTORIES FALSE "${sysroot_dir}/*")
|
||||||
foreach(file IN LISTS files)
|
foreach(file IN LISTS files)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND "${toolchain_dir}/bin/arm-none-linux-gnueabihf-strip" "${file}"
|
COMMAND "${toolchain_dir}/bin/${target}-strip" "${file}"
|
||||||
RESULT_VARIABLE ret
|
RESULT_VARIABLE ret
|
||||||
ERROR_QUIET
|
ERROR_QUIET
|
||||||
)
|
)
|
||||||
# Check Result
|
|
||||||
if(NOT ret EQUAL 0)
|
|
||||||
# Delete Invalid Files
|
# Delete Invalid Files
|
||||||
|
if(NOT ret EQUAL 0)
|
||||||
file(REMOVE "${file}")
|
file(REMOVE "${file}")
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
3
dependencies/minecraft-pi/CMakeLists.txt
vendored
3
dependencies/minecraft-pi/CMakeLists.txt
vendored
@ -5,8 +5,7 @@ include(FetchContent)
|
|||||||
## Minecraft: Pi Edition
|
## Minecraft: Pi Edition
|
||||||
|
|
||||||
# Download
|
# Download
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(minecraft-pi
|
||||||
minecraft-pi
|
|
||||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/minecraft-pi-0.1.1.tar.gz"
|
URL "${CMAKE_CURRENT_SOURCE_DIR}/minecraft-pi-0.1.1.tar.gz"
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(minecraft-pi)
|
FetchContent_MakeAvailable(minecraft-pi)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user