| MACRO(RECURSIVE_FIND_DIR return_list dir pattern) |
| FILE(GLOB_RECURSE new_list "${dir}/${pattern}") |
| SET(dir_list "") |
| FOREACH(file_path ${new_list}) |
| GET_FILENAME_COMPONENT(dir_path ${file_path} PATH) |
| SET(dir_list ${dir_list} ${dir_path}) |
| ENDFOREACH() |
| LIST(REMOVE_DUPLICATES dir_list) |
| SET(${return_list} ${dir_list}) |
| ENDMACRO() |
|
|
| MACRO(RECURSIVE_FIND_FILE return_list dir pattern) |
| FILE(GLOB_RECURSE new_list "${dir}/${pattern}") |
| SET(dir_list "") |
| FOREACH(file_path ${new_list}) |
| SET(dir_list ${dir_list} ${file_path}) |
| ENDFOREACH() |
| LIST(REMOVE_DUPLICATES dir_list) |
| SET(${return_list} ${dir_list}) |
| ENDMACRO() |
|
|
| MACRO(RECURSIVE_FIND_FILE_EXCLUDE_DIR return_list dir exclude_dir pattern) |
| FILE(GLOB_RECURSE new_list "${dir}/${pattern}") |
| SET(dir_list "") |
| FOREACH(file_path ${new_list}) |
| IF (file_path MATCHES ".*\/${exclude_dir}\/.*") |
| continue() |
| endif() |
| SET(dir_list ${dir_list} ${file_path}) |
| ENDFOREACH() |
| LIST(REMOVE_DUPLICATES dir_list) |
| SET(${return_list} ${dir_list}) |
| ENDMACRO() |
|
|
| MACRO(RECURSIVE_FIND_FILE_APPEND return_list dir pattern) |
| RECURSIVE_FIND_FILE( append_list ${dir} ${pattern} ) |
| LIST(APPEND ${return_list} ${append_list}) |
| ENDMACRO() |
|
|
| MACRO(SOURCE_FILES return_list dir pattern) |
| FILE(GLOB new_list "${dir}/${pattern}") |
| SET(dir_list "") |
| FOREACH(file_path ${new_list}) |
| LIST(APPEND dir_list ${file_path}) |
| ENDFOREACH() |
| LIST(REMOVE_DUPLICATES dir_list) |
| SET(${return_list} ${dir_list}) |
| ENDMACRO() |
|
|
| function(EXTRACT_JSON_ARRAY json_file json_field_path fields values) |
| set(VALUES "") |
| set(FIELDS "") |
| foreach(var ${${json_file}}) |
| |
| |
| if("${var}" MATCHES "${json_field_path}") |
| string(REGEX MATCH "[^${json_field_path}]([A-Z,a-z,0-9,_,]+)" VALUE "${var}") |
| |
| list(APPEND FIELDS ${VALUE}) |
| list(APPEND VALUES "${${var}}") |
| endif() |
| endforeach() |
| set(${fields} ${FIELDS} PARENT_SCOPE) |
| set(${values} ${VALUES} PARENT_SCOPE) |
| endfunction() |
|
|
| function(FORM_DEFINITIONS fields values definitions) |
| set(DEFINITIONS "") |
| list(LENGTH ${fields} LEN) |
| |
| MATH(EXPR LEN "${LEN}-1") |
| foreach(i RANGE ${LEN}) |
| list(GET ${fields} ${i} DEFINITION) |
| list(GET ${values} ${i} VALUE) |
| set(DEFINITIONS "${DEFINITIONS} #define ${DEFINITION}\t ${VALUE}\n") |
| endforeach() |
| set(${definitions} ${DEFINITIONS} PARENT_SCOPE) |
| endfunction() |
|
|
| function(UNIQUE_JSON_KEYS priority_fields priority_values secondary_fields secondary_values merged_fields merged_values) |
| |
| set(MERGED_FIELDS ${${priority_fields}}) |
| set(MERGED_VALUES ${${priority_values}}) |
| |
| list(LENGTH ${secondary_fields} LEN) |
| |
| MATH(EXPR LEN "${LEN}-1") |
| |
| foreach(i RANGE ${LEN}) |
| list(GET ${secondary_fields} ${i} FIELD) |
| list(GET ${secondary_values} ${i} VALUE) |
| list(FIND MERGED_FIELDS ${FIELD} INDEX) |
| if (${INDEX} GREATER -1) |
| continue() |
| endif() |
| list(APPEND MERGED_FIELDS ${FIELD}) |
| list(APPEND MERGED_VALUES ${VALUE}) |
| endforeach() |
| set(${merged_fields} ${MERGED_FIELDS} PARENT_SCOPE) |
| set(${merged_values} ${MERGED_VALUES} PARENT_SCOPE) |
| endfunction() |
|
|
| MACRO(HEADER_FILES return_list dir) |
| FILE(GLOB new_list "${dir}/*.h") |
| SET(${return_list} ${new_list}) |
| ENDMACRO() |
|
|
| function(INSTALL_DEPENDENCY dir name url branch type) |
| if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/${dir}") |
| message("Creating libraries folder") |
| FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/${dir}") |
| endif() |
| if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${dir}/${name}") |
| message("${name} is already installed") |
| return() |
| endif() |
| if(${type} STREQUAL "git") |
| message("Cloning into: ${url}") |
| |
| execute_process( |
| COMMAND git clone --recurse-submodules ${url} ${name} |
| WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${dir} |
| ) |
| if(NOT "${branch}" STREQUAL "") |
| message("Checking out branch: ${branch}") |
| execute_process( |
| COMMAND git -c advice.detachedHead=false checkout ${branch} |
| WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${dir}/${name} |
| ) |
| execute_process( |
| COMMAND git submodule update --init |
| WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${dir}/${name} |
| ) |
| execute_process( |
| COMMAND git submodule sync |
| WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${dir}/${name} |
| ) |
| execute_process( |
| COMMAND git submodule update |
| WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${dir}/${name} |
| ) |
| endif() |
| else() |
| message("No mechanism exists to install this library.") |
| endif() |
| endfunction() |
|
|
| MACRO(SUB_DIRS return_dirs dir) |
| FILE(GLOB list "${PROJECT_SOURCE_DIR}/${dir}/*") |
| SET(dir_list "") |
| FOREACH(file_path ${list}) |
| SET(dir_list ${dir_list} ${file_path}) |
| ENDFOREACH() |
| set(${return_dirs} ${dir_list}) |
| ENDMACRO() |
|
|