| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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(CMAKE_C_FLAGS "")
- global_set(CMAKE_CXX_FLAGS "")
- 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()
|