More CMake Tweaks
This commit is contained in:
parent
9a521ebca2
commit
513628d91f
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,4 +12,3 @@
|
|||||||
/*.AppImage
|
/*.AppImage
|
||||||
/core*
|
/core*
|
||||||
/qemu_*
|
/qemu_*
|
||||||
/cmake/.prebuilt-armhf-toolchain
|
|
||||||
|
@ -99,10 +99,14 @@ project(minecraft-pi-reborn)
|
|||||||
include(cmake/util.cmake)
|
include(cmake/util.cmake)
|
||||||
|
|
||||||
# Sanity Checks
|
# Sanity Checks
|
||||||
if(BUILD_NATIVE_COMPONENTS AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" AND NOT MCPI_IS_MIXED_BUILD)
|
set(IS_ARM_TARGETING FALSE)
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
||||||
|
set(IS_ARM_TARGETING TRUE)
|
||||||
|
endif()
|
||||||
|
if(BUILD_NATIVE_COMPONENTS AND NOT IS_ARM_TARGETING AND NOT MCPI_IS_MIXED_BUILD)
|
||||||
message(FATAL_ERROR "Project is configured as a mixed-buld, but MCPI_IS_MIXED_BUILD is disabled.")
|
message(FATAL_ERROR "Project is configured as a mixed-buld, but MCPI_IS_MIXED_BUILD is disabled.")
|
||||||
endif()
|
endif()
|
||||||
if(BUILD_ARM_COMPONENTS AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
if(BUILD_ARM_COMPONENTS AND NOT IS_ARM_TARGETING)
|
||||||
message(FATAL_ERROR "ARM-Targeting Compiler Required")
|
message(FATAL_ERROR "ARM-Targeting Compiler Required")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
12
cmake/embed-resource.cmake
Normal file
12
cmake/embed-resource.cmake
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Read Hex Data
|
||||||
|
file(READ "${EMBED_IN}" data HEX)
|
||||||
|
|
||||||
|
# Convert Hex Data For C Compatibility
|
||||||
|
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," data "${data}")
|
||||||
|
|
||||||
|
# Get C Name
|
||||||
|
get_filename_component(name "${EMBED_IN}" NAME)
|
||||||
|
string(MAKE_C_IDENTIFIER "${name}" name)
|
||||||
|
|
||||||
|
# Write Data
|
||||||
|
file(WRITE "${EMBED_OUT}" "#include <stddef.h>\nconst unsigned char ${name}[] = {${data}};\nconst size_t ${name}_len = sizeof (${name});\n")
|
@ -9,20 +9,32 @@ set(CMAKE_SYSTEM_NAME "Linux")
|
|||||||
set(CMAKE_SYSTEM_PROCESSOR "arm")
|
set(CMAKE_SYSTEM_PROCESSOR "arm")
|
||||||
unset(CMAKE_TOOLCHAIN_FILE CACHE)
|
unset(CMAKE_TOOLCHAIN_FILE CACHE)
|
||||||
|
|
||||||
# Download If Needed
|
# Pick URL
|
||||||
if(NOT EXISTS "${CMAKE_C_COMPILER}")
|
execute_process(COMMAND uname -m OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
# Pick URL
|
if(arch STREQUAL "x86_64")
|
||||||
execute_process(COMMAND uname -m OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
if(arch STREQUAL "x86_64")
|
|
||||||
set(toolchain_url "https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz")
|
set(toolchain_url "https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz")
|
||||||
set(toolchain_sha256 "aa074fa8371a4f73fecbd16bd62c8b1945f23289e26414794f130d6ccdf8e39c")
|
set(toolchain_sha256 "aa074fa8371a4f73fecbd16bd62c8b1945f23289e26414794f130d6ccdf8e39c")
|
||||||
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_url "https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-aarch64-arm-none-linux-gnueabihf.tar.xz")
|
set(toolchain_url "https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-aarch64-arm-none-linux-gnueabihf.tar.xz")
|
||||||
set(toolchain_sha256 "fccd7af76988da2b077f939eb2a78baa9935810918d2bf3f837bc74f52efa825")
|
set(toolchain_sha256 "fccd7af76988da2b077f939eb2a78baa9935810918d2bf3f837bc74f52efa825")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unable To Download Prebuilt ARMHF Toolchain")
|
message(FATAL_ERROR "Unable To Download Prebuilt ARMHF Toolchain")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Check Toolchain
|
||||||
|
set(toolchain_valid FALSE)
|
||||||
|
if(EXISTS "${toolchain_dir}/.last_sha256")
|
||||||
|
file(STRINGS "${toolchain_dir}/.last_sha256" toolchain_last_sha256)
|
||||||
|
if(toolchain_last_sha256 STREQUAL toolchain_sha256)
|
||||||
|
set(toolchain_valid TRUE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(NOT toolchain_valid)
|
||||||
|
file(REMOVE_RECURSE "${toolchain_dir}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Download If Needed
|
||||||
|
if(NOT EXISTS "${CMAKE_C_COMPILER}")
|
||||||
# Download
|
# Download
|
||||||
message(STATUS "Downloading Prebuilt ARMHF Toolchain...")
|
message(STATUS "Downloading Prebuilt ARMHF Toolchain...")
|
||||||
file(REMOVE_RECURSE "${toolchain_dir}")
|
file(REMOVE_RECURSE "${toolchain_dir}")
|
||||||
@ -36,6 +48,12 @@ if(NOT EXISTS "${CMAKE_C_COMPILER}")
|
|||||||
)
|
)
|
||||||
FetchContent_Populate(prebuilt-armhf-toolchain)
|
FetchContent_Populate(prebuilt-armhf-toolchain)
|
||||||
|
|
||||||
|
# Write Last SHA256
|
||||||
|
file(WRITE "${toolchain_dir}/.last_sha256" "${toolchain_sha256}")
|
||||||
|
|
||||||
|
# Write .gitignore
|
||||||
|
file(WRITE "${toolchain_dir}/.gitignore" "/*\n")
|
||||||
|
|
||||||
# Force Sysroot Rebuild
|
# Force Sysroot Rebuild
|
||||||
file(REMOVE_RECURSE "${sysroot_dir}")
|
file(REMOVE_RECURSE "${sysroot_dir}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -10,22 +10,17 @@ function(install_symlink target link)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Embed Resources
|
# Embed Resources
|
||||||
|
set(util_list_dir "${CMAKE_CURRENT_LIST_DIR}")
|
||||||
function(embed_resource target file)
|
function(embed_resource target file)
|
||||||
# Read Hex Data
|
|
||||||
file(READ "${file}" data HEX)
|
|
||||||
# Convert Hex Data For C Compatibility
|
|
||||||
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," data "${data}")
|
|
||||||
# Get C Name
|
# Get C Name
|
||||||
get_filename_component(name "${file}" NAME)
|
get_filename_component(name "${file}" NAME)
|
||||||
string(MAKE_C_IDENTIFIER "${name}" name)
|
string(MAKE_C_IDENTIFIER "${name}" name)
|
||||||
# Write Data
|
# Add Command
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${name}.c" "#include <stddef.h>\nconst unsigned char ${name}[] = {${data}};\nconst size_t ${name}_len = sizeof (${name});\n")
|
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
|
||||||
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
|
ARGS "-DEMBED_IN=${CMAKE_CURRENT_SOURCE_DIR}/${file}" "-DEMBED_OUT=${CMAKE_CURRENT_BINARY_DIR}/${name}.c" "-P" "${util_list_dir}/embed-resource.cmake"
|
||||||
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${file}" "${util_list_dir}/embed-resource.cmake"
|
||||||
|
)
|
||||||
# Add To Target
|
# Add To Target
|
||||||
target_sources("${target}" PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${name}.c")
|
target_sources("${target}" PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${name}.c")
|
||||||
# Mark Dependency
|
|
||||||
set_property(
|
|
||||||
DIRECTORY
|
|
||||||
APPEND
|
|
||||||
PROPERTY CMAKE_CONFIGURE_DEPENDS "${file}"
|
|
||||||
)
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
2
dependencies/zenity/src
vendored
2
dependencies/zenity/src
vendored
@ -1 +1 @@
|
|||||||
Subproject commit d673e9aab842d7151d92eb9164872dc05e748db2
|
Subproject commit 7dc886e7d217bb2ecaa2d771e08443b92c36fe28
|
@ -1,5 +1,5 @@
|
|||||||
# Example Mods
|
# Example Mods
|
||||||
This is an example of a mod that cane be built using the modding SDK.
|
This is an example of a mod that can be built using the modding SDK.
|
||||||
|
|
||||||
* **Expanded Creative Mod**: This specific mod adds even more items and blocks to the Creative Inventory. It was originally by [@Bigjango13](https://github.com/bigjango13).
|
* **Expanded Creative Mod**: This specific mod adds even more items and blocks to the Creative Inventory. It was originally by [@Bigjango13](https://github.com/bigjango13).
|
||||||
* **Chat Commands Mod**: This specific mod makes an chat message starting with a ``/`` handled by the MCPI API.
|
* **Chat Commands Mod**: This specific mod makes an chat message starting with a ``/`` handled by the MCPI API.
|
||||||
|
@ -16,8 +16,8 @@ if(NOT MCPI_HEADLESS_MODE)
|
|||||||
target_link_libraries(GLESv1_CM PRIVATE glfw PUBLIC reborn-util PRIVATE dl PRIVATE m)
|
target_link_libraries(GLESv1_CM PRIVATE glfw PUBLIC reborn-util PRIVATE dl PRIVATE m)
|
||||||
# Shaders
|
# Shaders
|
||||||
if(MCPI_USE_GLES1_COMPATIBILITY_LAYER)
|
if(MCPI_USE_GLES1_COMPATIBILITY_LAYER)
|
||||||
embed_resource(GLESv1_CM src/compatibility-layer/shaders/main.vert)
|
embed_resource(GLESv1_CM src/compatibility-layer/shaders/main.vsh)
|
||||||
embed_resource(GLESv1_CM src/compatibility-layer/shaders/main.frag)
|
embed_resource(GLESv1_CM src/compatibility-layer/shaders/main.fsh)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -78,14 +78,14 @@ static GLuint compile_shader(const char *vertex_shader_text, const int vertex_sh
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Shader
|
// Shader
|
||||||
extern unsigned char main_vert[];
|
extern unsigned char main_vsh[];
|
||||||
extern size_t main_vert_len;
|
extern size_t main_vsh_len;
|
||||||
extern unsigned char main_frag[];
|
extern unsigned char main_fsh[];
|
||||||
extern size_t main_frag_len;
|
extern size_t main_fsh_len;
|
||||||
static GLuint get_shader() {
|
static GLuint get_shader() {
|
||||||
static GLuint program = 0;
|
static GLuint program = 0;
|
||||||
if (program == 0) {
|
if (program == 0) {
|
||||||
program = compile_shader((const char *) main_vert, main_vert_len, (const char *) main_frag, main_frag_len);
|
program = compile_shader((const char *) main_vsh, main_vsh_len, (const char *) main_fsh, main_fsh_len);
|
||||||
}
|
}
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user