73 lines
2.3 KiB
CMake
73 lines
2.3 KiB
CMake
macro(global_set Name Value)
|
|
# message("set ${Name} to " ${ARGN})
|
|
set(${Name} "${Value}" CACHE STRING "NoDesc" FORCE)
|
|
endmacro()
|
|
|
|
macro(condition_set Name Value)
|
|
if (NOT ${Name})
|
|
global_set(${Name} ${Value})
|
|
else ()
|
|
# message("exists ${Name} is " ${ARGN})
|
|
endif ()
|
|
endmacro()
|
|
|
|
|
|
set(SOURCE_FILES "" CACHE STRING "Source Files" FORCE)
|
|
macro(add_source_files)
|
|
# message(" + add_source_files ${ARGN}")
|
|
file(GLOB_RECURSE newlist ${ARGN})
|
|
|
|
foreach (filepath ${newlist})
|
|
string(FIND ${filepath} ${CMAKE_BINARY_DIR} found)
|
|
if (NOT found EQUAL 0)
|
|
set(SOURCE_FILES ${SOURCE_FILES} ${filepath} CACHE STRING "Source Files" FORCE)
|
|
endif ()
|
|
endforeach ()
|
|
endmacro()
|
|
|
|
function(JOIN VALUES GLUE OUTPUT)
|
|
string(REGEX REPLACE "([^\\]|^);" "\\1${GLUE}" _TMP_STR "${VALUES}")
|
|
string(REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") #fixes escaping
|
|
set(${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
global_set(LDFLAGS "")
|
|
global_set(CMAKE_EXE_LINKER_FLAGS "")
|
|
global_set(CMAKE_SHARED_LINKER_FLAGS "")
|
|
global_set(CMAKE_MODULE_LINKER_FLAGS "")
|
|
|
|
function(removeDuplicateSubstring stringIn stringOut)
|
|
separate_arguments(stringIn)
|
|
list(REMOVE_DUPLICATES stringIn)
|
|
string(REPLACE ";" " " stringIn "${stringIn}")
|
|
set(${stringOut} "${stringIn}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
macro(add_compile_flags WHERE)
|
|
JOIN("${ARGN}" " " STRING_ARGS)
|
|
if (${WHERE} STREQUAL C)
|
|
global_set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${STRING_ARGS}")
|
|
|
|
elseif (${WHERE} STREQUAL CXX)
|
|
global_set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STRING_ARGS}")
|
|
|
|
elseif (${WHERE} STREQUAL LD)
|
|
global_set(LDFLAGS "${LDFLAGS} ${STRING_ARGS}")
|
|
global_set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${STRING_ARGS}")
|
|
global_set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${STRING_ARGS}")
|
|
global_set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${STRING_ARGS}")
|
|
|
|
elseif (${WHERE} STREQUAL BOTH)
|
|
add_compile_flags(C ${ARGN})
|
|
add_compile_flags(CXX ${ARGN})
|
|
|
|
elseif (${WHERE} STREQUAL ALL)
|
|
add_compile_flags(C ${ARGN})
|
|
add_compile_flags(CXX ${ARGN})
|
|
add_compile_flags(LD ${ARGN})
|
|
|
|
else ()
|
|
message(FATAL_ERROR "add_compile_flags - only support: C, CXX, BOTH, LD, ALL")
|
|
endif ()
|
|
endmacro()
|