69 lines
2.0 KiB
CMake
69 lines
2.0 KiB
CMake
# sets out_var to YES if filename has extension .h or .hpp, NO otherwise
|
|
function(is_header out_var filename)
|
|
set(res "NO")
|
|
get_filename_component(ext "${filename}" LAST_EXT)
|
|
if((ext STREQUAL ".h") OR (ext STREQUAL ".hpp"))
|
|
set(res "YES")
|
|
endif()
|
|
set("${out_var}" "${res}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(remove_prefix out prefix str)
|
|
string(LENGTH "${prefix}" len)
|
|
string(SUBSTRING "${str}" ${len} -1 res)
|
|
set("${out}" "${res}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(is_prefix out prefix str)
|
|
string(LENGTH "${prefix}" plen)
|
|
string(LENGTH "${str}" slen)
|
|
if(plen GREATER slen)
|
|
set(res NO)
|
|
else()
|
|
string(SUBSTRING "${str}" 0 ${plen} pstr)
|
|
if(pstr STREQUAL prefix)
|
|
set(res YES)
|
|
else()
|
|
set(res NO)
|
|
endif()
|
|
endif()
|
|
set(${out} ${res} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(create_build_dirs)
|
|
foreach(src IN LISTS ARGV)
|
|
get_filename_component(d "${src}" DIRECTORY)
|
|
if(IS_ABSOLUTE "${d}")
|
|
file(RELATIVE_PATH d "${CMAKE_CURRENT_SOURCE_DIR}" "${src}")
|
|
endif()
|
|
list(APPEND dirs "${d}")
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES dirs)
|
|
foreach(dir IN LISTS dirs)
|
|
make_directory("${CMAKE_CURRENT_BINARY_DIR}/${dir}")
|
|
endforeach()
|
|
endfunction()
|
|
|
|
function(fdb_find_sources out)
|
|
file(GLOB res
|
|
LIST_DIRECTORIES false
|
|
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
CONFIGURE_DEPENDS "*.cpp" "*.c" "*.h" "*.hpp")
|
|
file(GLOB_RECURSE res_includes
|
|
LIST_DIRECTORIES false
|
|
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
CONFIGURE_DEPENDS "include/*.cpp" "include/*.c" "include/*.h" "include/*.hpp")
|
|
file(GLOB_RECURSE res_workloads
|
|
LIST_DIRECTORIES false
|
|
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/workloads"
|
|
CONFIGURE_DEPENDS "workloads/*.cpp" "workloads/*.c" "workloads/*.h" "workloads/*.hpp")
|
|
|
|
foreach(f IN LISTS res_includes)
|
|
list(APPEND res "include/${f}")
|
|
endforeach()
|
|
foreach(f IN LISTS res_workloads)
|
|
list(APPEND res "workloads/${f}")
|
|
endforeach()
|
|
set(${out} "${res}" PARENT_SCOPE)
|
|
endfunction()
|