New platform selection system in build system

This commit is contained in:
Max Wash
2020-04-01 12:41:26 +01:00
parent 1e237adbc0
commit bee0a8ff9f
3 changed files with 55 additions and 29 deletions

44
cmake/platform.cmake Normal file
View File

@@ -0,0 +1,44 @@
macro(subdirlist result curdir)
file(GLOB children RELATIVE ${curdir} ${curdir}/*)
set(dirlist "")
foreach (child ${children})
if (IS_DIRECTORY ${curdir}/${child})
list(APPEND dirlist ${child})
endif()
endforeach()
set(${result} ${dirlist})
endmacro()
function (platform_config)
set(available_platforms "")
set(available_platforms_list "")
subdirlist(platforms ${CMAKE_CURRENT_SOURCE_DIR}/photon/libc/sys)
foreach (platform ${platforms})
subdirlist(machines ${CMAKE_CURRENT_SOURCE_DIR}/photon/libc/sys/${platform}/machine)
foreach (machine ${machines})
set(available_platforms "${available_platforms}${machine}-${platform} ")
list(APPEND available_platforms_list ${machine}-${platform})
endforeach (machine)
endforeach (platform)
if (${ARGC} LESS 1)
message(FATAL_ERROR "No target specified!\n"
"Available targets: ${available_platforms}")
endif ()
set(target ${ARGV0})
list(FIND available_platforms_list ${target} target_idx)
if (${target_idx} EQUAL -1)
message(FATAL_ERROR "${target} is not a valid target!\n"
"Available targets: ${available_platforms}")
endif ()
string(REPLACE "-" ";" target_parts ${target})
list(GET target_parts 1 platform)
list(GET target_parts 0 machine)
set(machine ${machine} PARENT_SCOPE)
set(platform ${platform} PARENT_SCOPE)
endfunction (platform_config)