build: add module to handle querying platform details
This commit is contained in:
+6
-7
@@ -1,12 +1,14 @@
|
||||
cmake_minimum_required(VERSION 3.25)
|
||||
project(fx C ASM)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
include (TestBigEndian)
|
||||
include(Templates)
|
||||
include(Platform)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
set(fx_source_root ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
@@ -33,10 +35,9 @@ endif ()
|
||||
|
||||
message(STATUS "Floating point support: ${fx_enable_floating_point}")
|
||||
|
||||
set(fx_system_name ${CMAKE_SYSTEM_NAME})
|
||||
string(TOLOWER ${fx_system_name} fx_system_name)
|
||||
set(fx_system_arch ${CMAKE_SYSTEM_PROCESSOR})
|
||||
string(TOLOWER ${fx_system_arch} fx_system_arch)
|
||||
get_platform_details(
|
||||
SYSTEM fx_system_name
|
||||
PROCESSOR fx_system_arch)
|
||||
|
||||
message(STATUS "Target system: ${fx_system_name}-${fx_system_arch}")
|
||||
|
||||
@@ -44,8 +45,6 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
||||
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates.cmake)
|
||||
|
||||
foreach (assembly ${fx_assemblies})
|
||||
add_subdirectory(assemblies/${assembly})
|
||||
endforeach (assembly)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
function(get_platform_details)
|
||||
set(options)
|
||||
set(one_value_args SYSTEM PROCESSOR)
|
||||
set(multi_value_args
|
||||
NAMESPACES
|
||||
DEPENDENCIES
|
||||
LIBS)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}")
|
||||
|
||||
set(system_name "")
|
||||
|
||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
set(system_name "linux")
|
||||
elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||
set(system_name "apple")
|
||||
elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
|
||||
set(system_name "win32")
|
||||
else ()
|
||||
message(FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME}")
|
||||
endif ()
|
||||
|
||||
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
|
||||
set(system_arch "amd64")
|
||||
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
|
||||
set(system_name "aarch64")
|
||||
else ()
|
||||
message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif ()
|
||||
|
||||
set(${arg_SYSTEM} ${system_name} PARENT_SCOPE)
|
||||
set(${arg_PROCESSOR} ${system_arch} PARENT_SCOPE)
|
||||
endfunction (get_platform_details)
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ static int trim_excess_items(
|
||||
{
|
||||
size_t to_trim = v->v_count - new_capacity;
|
||||
size_t start = new_capacity;
|
||||
char *item = &v->v_buf[start];
|
||||
char *item = (char *)v->v_buf + start;
|
||||
|
||||
for (size_t i = start; i < v->v_count; i++) {
|
||||
ops->v_destroy(item);
|
||||
|
||||
Reference in New Issue
Block a user