1 2# Override... 3SET(CMAKE_C_FLAGS $ENV{CFLAGS}) 4SET(CMAKE_CXX_FLAGS $ENV{CXXFLAGS}) 5SET(CMAKE_LD_FLAGS $ENV{LDFLAGS}) 6 7IF(${CMAKE_CXX_COMPILER} MATCHES ".*[cC]lang.*") 8 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__STRICT_ANSI__ -Qunused-arguments ") 9 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STRICT_ANSI__ -Qunused-arguments ") 10ENDIF(${CMAKE_CXX_COMPILER} MATCHES ".*[cC]lang.*") 11 12IF (NOT CMAKE_CXX_COMPILER_WORKS MATCHES "^${CMAKE_CXX_COMPILER_WORKS}$") 13 SET(FRESH_BUILD 1) 14ENDIF (NOT CMAKE_CXX_COMPILER_WORKS MATCHES "^${CMAKE_CXX_COMPILER_WORKS}$") 15# 16# 17include(admCrossCompile) 18MESSAGE(STATUS "[BUILD] EXTRA Cflags:${CMAKE_C_FLAGS}") 19MESSAGE(STATUS "[BUILD] EXTRA CXXflags:${CMAKE_CXX_FLAGS}") 20MESSAGE(STATUS "[BUILD] EXTRA LDflags:${CMAKE_LD_FLAGS}") 21MESSAGE(STATUS "[BUILD] Compiler ${CMAKE_CXX_COMPILER}") 22MESSAGE(STATUS "[BUILD] Linker ${CMAKE_LINKER}") 23# 24MESSAGE(STATUS "Top Source dir is ${AVIDEMUX_TOP_SOURCE_DIR}") 25MESSAGE("") 26 27PROJECT(${ADM_PROJECT}) 28 29IF (${Avidemux_SOURCE_DIR} MATCHES ${Avidemux_BINARY_DIR}) 30 MESSAGE("Please do an out-of-tree build:") 31 MESSAGE("rm CMakeCache.txt; mkdir build; cd build; cmake ..; make") 32 MESSAGE(FATAL_ERROR "in-tree-build detected") 33ENDIF (${Avidemux_SOURCE_DIR} MATCHES ${Avidemux_BINARY_DIR}) 34 35if (${CMAKE_VERSION} VERSION_GREATER 2.8.5) 36 include(GenerateExportHeader) 37else (${CMAKE_VERSION} VERSION_GREATER 2.8.5) 38 include(_GenerateExportHeader) 39endif (${CMAKE_VERSION} VERSION_GREATER 2.8.5) 40 41IF(WIN32) 42 IF(NOT CROSS) 43 # Add the rootfs 44 IF(NOT VS_ROOT) 45 SET(VS_ROOT "f:/mingw") 46 ENDIF(NOT VS_ROOT) 47 MESSAGE(STATUS "VS:using ${VS_ROOT} to import libs and headers") 48 INCLUDE_DIRECTORIES(${VS_ROOT}/include) 49 LINK_DIRECTORIES(${VS_ROOT}/lib) 50 LINK_DIRECTORIES(${VS_ROOT}/bin) 51 # Add prefix and suffix so that libraries xxx.dll.a can be found 52 SET(CMAKE_FIND_LIBRARY_PREFIXES lib ) 53 SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll.a .a ) 54 ENDIF(NOT CROSS) 55ENDIF(WIN32) 56 57 58 59INCLUDE(admConfigHelper) 60include(admGetRevision) 61 62IF (FRESH_BUILD) 63 MESSAGE("") 64ENDIF (FRESH_BUILD) 65 66######################################## 67# Global options 68######################################## 69OPTION(VERBOSE "" OFF) 70 71IF (NOT CMAKE_BUILD_TYPE) 72 SET(CMAKE_BUILD_TYPE "Release") 73ENDIF (NOT CMAKE_BUILD_TYPE) 74 75######################################## 76# Avidemux system specific tweaks 77######################################## 78INCLUDE(admDetermineSystem) 79 80# Address sanitizer only works with llvm/clang 81IF(${CMAKE_CXX_COMPILER} MATCHES ".*[cC]lang.*") 82 IF (ASAN) 83 MESSAGE(STATUS "Address Sanitizer activated") 84 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer") 85 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") 86 SET(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -fsanitize=address ") 87 ELSE (ASAN) 88 MESSAGE(STATUS "Address Sanitizer not activated") 89 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ") 90 ENDIF (ASAN) 91ENDIF(${CMAKE_CXX_COMPILER} MATCHES ".*[cC]lang.*") 92 93IF (ADM_CPU_ALTIVEC) 94 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ADM_ALTIVEC_FLAGS}") 95 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADM_ALTIVEC_FLAGS}") 96ENDIF (ADM_CPU_ALTIVEC) 97 98IF (CMAKE_SYSTEM_NAME MATCHES "Linux") 99 # jog shuttle is only available on Linux due to its interface 100 SET(USE_JOG 1) 101ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux") 102 103IF (WIN32) 104 SET(BIN_DIR .) 105 106 IF (MINGW) 107 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-enable-auto-image-base -Wl,-enable-auto-import") 108 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-enable-auto-import") 109 110 IF (CMAKE_BUILD_TYPE STREQUAL "Release") 111 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-s") 112 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-s") 113 ENDIF (CMAKE_BUILD_TYPE STREQUAL "Release") 114 ENDIF (MINGW) 115ELSE (WIN32) 116 SET(BIN_DIR bin) 117ENDIF (WIN32) 118 119if (CMAKE_COMPILER_IS_GNUCC) 120 add_definitions("-Wattributes") 121endif (CMAKE_COMPILER_IS_GNUCC) 122# MacOsX stuff 123IF(APPLE) 124 set (CMAKE_OSX_ARCHITECTURES "x86_64") 125 SET(CMAKE_INSTALL_NAME_DIR @executable_path/../lib) # Make sure we are relative to bundle 126ENDIF(APPLE) 127 128######################################## 129# Standard Avidemux defines 130######################################## 131# Define internal flags for GTK+ and Qt4 builds. These are turned off 132# if a showstopper is found. CLI is automatically assumed as possible 133# since it uses the minimum set of required libraries and CMake will 134# fail if these aren't met. 135 136SET(AVIDEMUX_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}") 137MARK_AS_ADVANCED(AVIDEMUX_INSTALL_DIR) 138include(admInstallDir) 139 140IF (CMAKE_BUILD_TYPE STREQUAL "Debug") 141 SET(ADM_DEBUG 1) 142ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug") 143######################################## 144# Subversion 145######################################## 146 147MESSAGE("") 148MESSAGE(STATUS "Checking for SCM") 149MESSAGE(STATUS "****************") 150IF(RELEASE OR AVIDEMUX_EXTERNAL_BUILD) 151 SET( ADM_SUBVERSION 0) 152ELSE() 153 admGetRevision( ${CMAKE_SOURCE_DIR} ADM_SUBVERSION) 154ENDIF() 155MESSAGE("") 156include(avidemuxVersion) 157 158 159######################################## 160# Check for libraries 161######################################## 162SET(MSG_DISABLE_OPTION "Disabled per request") 163INCLUDE(admCheckRequiredLibs) 164IF(NOT PLUGINS) 165INCLUDE(admCheckMiscLibs) 166INCLUDE(FindThreads) 167 168 if (NOT APPLE) 169 INCLUDE(admCheckNvEnc) 170 checkNvEnc() 171 endif (NOT APPLE) 172#INCLUDE(admCheckXvba) 173#checkXvba() 174ENDIF(NOT PLUGINS) 175 176######################################## 177# Check functions and includes 178######################################## 179IF (NOT SYSTEM_HEADERS_CHECKED) 180 MESSAGE(STATUS "Checking system headers") 181 MESSAGE(STATUS "***********************") 182 183 INCLUDE(CheckIncludeFiles) 184 INCLUDE(CheckFunctionExists) 185 186 if (MSVC) 187 include_directories("${AVIDEMUX_TOP_SOURCE_DIR}/foreignBuilds/msvc/include") 188 set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "${AVIDEMUX_TOP_SOURCE_DIR}/foreignBuilds/msvc/include") 189 endif (MSVC) 190 191 set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${CMAKE_INCLUDE_PATH}) 192 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) 193 194 CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H) # internal use, mpeg2enc, mplex 195 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H) # internal use, mpeg2enc, mplex 196 SET(SYSTEM_HEADERS_CHECKED 1 CACHE BOOL "") 197 MARK_AS_ADVANCED(SYSTEM_HEADERS_CHECKED) 198 199 MESSAGE("") 200ENDIF (NOT SYSTEM_HEADERS_CHECKED) 201 202# Check we have yasm, mandatory for x86/amd64 203MESSAGE(STATUS "Bonanza") 204include(admYasm) 205 206 207