1MACRO(PRINT_LIBRARY_INFO libraryName libraryDetected compilerFlags linkerFlags) 2 IF (${libraryDetected}) 3 MESSAGE(STATUS "Found ${libraryName}") 4 5 IF (VERBOSE) 6 SET(_compilerFlags "") 7 APPEND_FLAGS(_compilerFlags ${compilerFlags}) 8 9 SET(_linkerFlags "") 10 APPEND_FLAGS(_linkerFlags ${linkerFlags}) 11 12 MESSAGE(STATUS "Compiler Flags:${_compilerFlags}") 13 MESSAGE(STATUS "Linker Flags :${_linkerFlags}") 14 ENDIF (VERBOSE) 15 ELSE (${libraryDetected}) 16 MESSAGE(STATUS ${ARGV4} "Could not find ${libraryName}") 17 ENDIF (${libraryDetected}) 18ENDMACRO(PRINT_LIBRARY_INFO) 19 20 21MACRO(SDLify _source) 22 IF (SDL2_FOUND) 23 SET_SOURCE_FILES_PROPERTIES(${_source} PROPERTIES COMPILE_FLAGS "-I${SDL2_INCLUDE_DIR} ${SDL2_CFLAGS}") 24 ENDIF (SDL2_FOUND) 25ENDMACRO(SDLify) 26 27 28# ARGV2 = library to check 29# ARGV3 = function to check 30# ARVG4 = extra required libs 31MACRO(FIND_HEADER_AND_LIB prefix headerFile) 32 IF (NOT DEFINED ${prefix}_FOUND) 33 SET(${prefix}_FOUND 0 CACHE INTERNAL "") 34 SET(_proceed 1) 35 36 IF (NOT ${headerFile} STREQUAL "") 37 FIND_PATH(${prefix}_INCLUDE_DIR ${headerFile} 38 PATHS /usr/include/x86_64-linux-gnu) # Needed for 64 bits linux 39 MARK_AS_ADVANCED(${prefix}_INCLUDE_DIR) 40 41 IF (${prefix}_INCLUDE_DIR) 42 MESSAGE(STATUS "Found ${headerFile}") 43 ELSE (${prefix}_INCLUDE_DIR) 44 SET(_proceed 0) 45 MESSAGE(STATUS "Could not find ${headerFile}") 46 ENDIF (${prefix}_INCLUDE_DIR) 47 ENDIF (NOT ${headerFile} STREQUAL "") 48 49 IF (_proceed AND NOT ${ARGV2} STREQUAL "") 50 # On Mac, search firts in port libs, else we might use an older lib coming from the system (e.g. iconv) 51 IF(APPLE) 52 FIND_LIBRARY(${prefix}_LIBRARY_DIR ${ARGV2} PATHS /opt/local/lib NO_DEFAULT_PATH) # needed for port stuff 53 ENDIF(APPLE) 54 FIND_LIBRARY(${prefix}_LIBRARY_DIR ${ARGV2}) 55 MARK_AS_ADVANCED(${prefix}_LIBRARY_DIR) 56 57 IF (${prefix}_LIBRARY_DIR) 58 MESSAGE(STATUS "Found ${ARGV2} library") 59 60 IF (NOT ${ARGV3} STREQUAL "") 61 ADM_CHECK_FUNCTION_EXISTS(${ARGV3} "${${prefix}_LIBRARY_DIR}" ${prefix}_FUNCTION_FOUND "${ARGV4}") 62 63 IF (${prefix}_FUNCTION_FOUND) 64 SET(${prefix}_FOUND 1 CACHE INTERNAL "") 65 ENDIF (${prefix}_FUNCTION_FOUND) 66 ELSE (NOT ${ARGV3} STREQUAL "") 67 SET(${prefix}_FOUND 1 CACHE INTERNAL "") 68 ENDIF (NOT ${ARGV3} STREQUAL "") 69 ELSE (${prefix}_LIBRARY_DIR) 70 MESSAGE(STATUS "Cound not find ${ARGV2} library") 71 ENDIF (${prefix}_LIBRARY_DIR) 72 ELSE (_proceed AND NOT ${ARGV2} STREQUAL "") 73 SET(${prefix}_FOUND ${_proceed} CACHE INTERNAL "") 74 ENDIF (_proceed AND NOT ${ARGV2} STREQUAL "") 75 ENDIF (NOT DEFINED ${prefix}_FOUND) 76ENDMACRO(FIND_HEADER_AND_LIB) 77 78 79MACRO (ADM_COMPILE _file _def _include _lib _varToSet _output) 80 #MESSAGE(STATUS " ADM_compile <${_file}>") 81 IF(AVIDEMUX_THIS_IS_CORE) 82 SET(src ${AVIDEMUX_TOP_SOURCE_DIR}/cmake/cmake_compile_check/${_file}) 83 ELSE() 84 SET(src ${ADM_CMAKE_DIR}/cmake_compile_check/${_file}) 85 ENDIF() 86 #MESSAGE(STATUS " Compiling <${src}>") 87 IF (NOT DEFINED ${_varToSet}_COMPILED) 88 SET(${_varToSet}_COMPILED 1 CACHE INTERNAL "") 89 TRY_COMPILE(${_varToSet} 90 ${CMAKE_BINARY_DIR} 91 ${src} 92 CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${_include}" "-DLINK_LIBRARIES:STRING=${_lib}" 93 COMPILE_DEFINITIONS ${_def} 94 OUTPUT_VARIABLE ${_output}) 95 #MESSAGE(STATUS "output=${output}") 96 ENDIF (NOT DEFINED ${_varToSet}_COMPILED) 97ENDMACRO (ADM_COMPILE) 98 99 100#ARGV3 = extra libraries 101#ARGV4 = extra compile flags 102MACRO (ADM_CHECK_FUNCTION_EXISTS _function _lib _varToSet) 103 SET(CHECK_FUNCTION_DEFINE "-DCHECK_FUNCTION_EXISTS=${_function}" ${ARGV4}) 104 SET(CHECK_FUNCTION_LIB ${_lib} ${ARGV3}) 105 106 ADM_COMPILE(CheckFunctionExists.c "${CHECK_FUNCTION_DEFINE}" "" "${CHECK_FUNCTION_LIB}" ${_varToSet} OUTPUT) 107 108 IF (${_varToSet}) 109 MESSAGE(STATUS "Found ${_function} in ${_lib}") 110 ELSE (${_varToSet}) 111 MESSAGE(STATUS "Could not find ${_function} in ${_lib}") 112 113 IF (VERBOSE) 114 MESSAGE(STATUS ${OUTPUT}) 115 ENDIF (VERBOSE) 116 ENDIF (${_varToSet}) 117ENDMACRO (ADM_CHECK_FUNCTION_EXISTS) 118 119 120MACRO (CHECK_CFLAGS_REQUIRED _file _cflags _include _lib _varToSet) 121 IF (NOT DEFINED ${_varToSet}_CFLAGS_CHECKED) 122 SET(${_varToSet}_CFLAGS_CHECKED 1 CACHE INTERNAL "") 123 124 ADM_COMPILE(${_file} ${_cflags} ${_include} ${_lib} ${_varToSet}_COMPILE_WITH logwith) 125 ADM_COMPILE(${_file} "" ${_include} ${_lib} ${_varToSet}_COMPILE_WITHOUT logwithout) 126 127 IF (${_varToSet}_COMPILE_WITH AND NOT ${_varToSet}_COMPILE_WITHOUT) 128 SET(${_varToSet} 1 CACHE INTERNAL "") 129 130 IF (VERBOSE) 131 MESSAGE(STATUS "(${_cflags}) required") 132 ENDIF (VERBOSE) 133 ELSE (${_varToSet}_COMPILE_WITH AND NOT ${_varToSet}_COMPILE_WITHOUT) 134 IF (NOT ${_varToSet}_COMPILE_WITH AND ${_varToSet}_COMPILE_WITHOUT) 135 IF (VERBOSE) 136 MESSAGE (STATUS "(${_cflags}) not required") 137 ENDIF (VERBOSE) 138 ELSE (NOT ${_varToSet}_COMPILE_WITH AND ${_varToSet}_COMPILE_WITHOUT) 139 MESSAGE(STATUS "Inconsistent compiler output with: ${${_varToSet}_COMPILE_WITH}, without: ${${_varToSet}_COMPILE_WITHOUT}") 140 MESSAGE(STATUS "${logwith}") 141 MESSAGE(STATUS "") 142 MESSAGE(STATUS "${logwithout}") 143 endif(NOT ${_varToSet}_COMPILE_WITH AND ${_varToSet}_COMPILE_WITHOUT) 144 ENDIF (${_varToSet}_COMPILE_WITH AND NOT ${_varToSet}_COMPILE_WITHOUT) 145 ENDIF (NOT DEFINED ${_varToSet}_CFLAGS_CHECKED) 146ENDMACRO (CHECK_CFLAGS_REQUIRED) 147 148 149MACRO (APPEND_FLAGS _flags) 150 IF (NOT ${_flags}) 151 SET(${_flags} "") 152 ENDIF (NOT ${_flags}) 153 154 FOREACH (_flag ${ARGN}) 155 SET(${_flags} "${${_flags}} ${_flag}") 156 ENDFOREACH (_flag ${ARGN}) 157 158 IF (${firstChar} AND ${firstChar} STREQUAL " ") 159 STRING(LENGTH "${${_flags}}" stringLength) 160 MATH(EXPR stringLength "${stringLength} - 1") 161 STRING(SUBSTRING "${${_flags}}" 1 ${stringLength} ${_flags}) 162 ENDIF (${firstChar} AND ${firstChar} STREQUAL " ") 163ENDMACRO (APPEND_FLAGS) 164 165 166#ARGV1 = flags 167MACRO (ADD_SOURCE_CFLAGS _target) 168 GET_SOURCE_FILE_PROPERTY(_flags ${_target} COMPILE_FLAGS) 169 APPEND_FLAGS(_flags ${ARGN}) 170 SET_SOURCE_FILES_PROPERTIES(${_target} PROPERTIES COMPILE_FLAGS "${_flags}") 171ENDMACRO (ADD_SOURCE_CFLAGS) 172 173 174MACRO (ADD_TARGET_CFLAGS _target) 175 GET_TARGET_PROPERTY(_flags ${_target} COMPILE_FLAGS) 176 APPEND_FLAGS(_flags ${ARGN}) 177 SET_TARGET_PROPERTIES(${_target} PROPERTIES COMPILE_FLAGS "${_flags}") 178ENDMACRO (ADD_TARGET_CFLAGS) 179 180 181MACRO (ADD_TARGET_DEFINITIONS _target) 182 SET(newflag) 183 GET_TARGET_PROPERTY(_flags ${_target} COMPILE_FLAGS) 184 185 FOREACH (_def ${ARGN}) 186 IF (${_def}) 187 APPEND_FLAGS(_flags "-D${_def}") 188 SET(newflag 1) 189 ENDIF (${_def}) 190 ENDFOREACH (_def ${ARGN}) 191 192 IF (newflag) 193 SET_TARGET_PROPERTIES(${_target} PROPERTIES COMPILE_FLAGS "${_flags}") 194 ENDIF (newflag) 195ENDMACRO (ADD_TARGET_DEFINITIONS) 196 197MACRO(DUMP_ALL_VARS) 198 get_cmake_property(_variableNames VARIABLES) 199 list (SORT _variableNames) 200 foreach (_variableName ${_variableNames}) 201 message(STATUS "${_variableName}=${${_variableName}}") 202 endforeach() 203ENDMACRO(DUMP_ALL_VARS) 204 205