Spaces:
Running
Running
File size: 8,577 Bytes
5cee033 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# Copyright 2008 Pino Toscano, <[email protected]>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
macro(POPPLER_ADD_TEST exe build_flag)
set(build_test ${${build_flag}})
# Omit the disabled test binaries from the "all" target
if(NOT build_test)
set(_add_executable_param ${_add_executable_param} EXCLUDE_FROM_ALL)
endif(NOT build_test)
add_executable(${exe} ${_add_executable_param} ${ARGN})
# if the tests are EXCLUDE_FROM_ALL, add a target "buildtests" to build all tests
# Don't try to use custom targets if building with Visual Studio
if(NOT build_test AND NOT MSVC_IDE)
get_property(_buildtestsAdded GLOBAL PROPERTY BUILDTESTS_ADDED)
if(NOT _buildtestsAdded)
add_custom_target(buildtests)
set_property(GLOBAL PROPERTY BUILDTESTS_ADDED TRUE)
endif(NOT _buildtestsAdded)
add_dependencies(buildtests ${exe})
endif(NOT build_test AND NOT MSVC_IDE)
endmacro(POPPLER_ADD_TEST)
macro(POPPLER_CREATE_INSTALL_PKGCONFIG generated_file install_location)
configure_file(${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
endmacro(POPPLER_CREATE_INSTALL_PKGCONFIG)
macro(SHOW_END_MESSAGE what value)
string(LENGTH ${what} length_what)
math(EXPR left_char "20 - ${length_what}")
set(blanks)
foreach(_i RANGE 1 ${left_char})
set(blanks "${blanks} ")
endforeach(_i)
message(" ${what}:${blanks} ${value}")
endmacro(SHOW_END_MESSAGE)
macro(SHOW_END_MESSAGE_YESNO what enabled)
if(${enabled})
set(enabled_string "yes")
else(${enabled})
set(enabled_string "no")
endif(${enabled})
show_end_message("${what}" "${enabled_string}")
endmacro(SHOW_END_MESSAGE_YESNO)
macro(POPPLER_CHECK_LINK_FLAG flag var)
set(_save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
include(CheckCXXSourceCompiles)
set(CMAKE_REQUIRED_LIBRARIES "${flag}")
check_cxx_source_compiles("int main() { return 0; }" ${var})
set(CMAKE_REQUIRED_LIBRARIES "${_save_CMAKE_REQUIRED_LIBRARIES}")
endmacro(POPPLER_CHECK_LINK_FLAG)
set(CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_SYSTEM_INCLUDE_PATH}
"${CMAKE_INSTALL_PREFIX}/include" )
set(CMAKE_SYSTEM_PROGRAM_PATH ${CMAKE_SYSTEM_PROGRAM_PATH}
"${CMAKE_INSTALL_PREFIX}/bin" )
set(CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_SYSTEM_LIBRARY_PATH}
"${CMAKE_INSTALL_PREFIX}/lib" )
# under Windows dlls may be also installed in bin/
if(WIN32)
set(CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_SYSTEM_LIBRARY_PATH}
"${CMAKE_INSTALL_PREFIX}/bin" )
endif(WIN32)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
string(TOUPPER "${CMAKE_BUILD_TYPE}" _CMAKE_BUILD_TYPE_UPPER)
set(_known_build_types RELWITHDEBINFO;RELEASE;DEBUG;DEBUGFULL;PROFILE)
# We override CMAKE_CXX_FLAGS_${_CMAKE_BUILD_TYPE_UPPER} below. If the user
# selects a CMAKE_BUILD_TYPE that is not handled by the logic below, we will
# end up dropping the previous flags (e.g. those set in a cross-compilation
# CMake toolchain file). To avoid surprising compilation errors, we emit an
# error in that case, so that the user can handle the passed CMAKE_BUILD_TYPE
# in the compiler flags logic below.
if (NOT "${_CMAKE_BUILD_TYPE_UPPER}" IN_LIST _known_build_types)
message(FATAL_ERROR "Unsupported CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
endif()
set(_save_cflags "${CMAKE_C_FLAGS}")
set(_save_cxxflags "${CMAKE_CXX_FLAGS}")
if(CMAKE_COMPILER_IS_GNUCXX)
# set the default compile warnings
set(_warn "-Wall -Wextra -Wpedantic")
set(_warn "${_warn} -Wno-unused-parameter")
set(_warn "${_warn} -Wcast-align")
set(_warn "${_warn} -Wformat-security")
set(_warn "${_warn} -Wframe-larger-than=65536")
set(_warn "${_warn} -Wlogical-op")
set(_warn "${_warn} -Wmissing-format-attribute")
set(_warn "${_warn} -Wnon-virtual-dtor")
set(_warn "${_warn} -Woverloaded-virtual")
set(_warn "${_warn} -Wmissing-declarations")
set(_warn "${_warn} -Wundef")
set(_warn "${_warn} -Wzero-as-null-pointer-constant")
set(_warn "${_warn} -Wshadow")
set(_warn "${_warn} -Wsuggest-override")
# set extra warnings
set(_warnx "${_warnx} -Wconversion")
set(_warnx "${_warnx} -Wuseless-cast")
set(DEFAULT_COMPILE_WARNINGS "${_warn}")
set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -fno-operator-names -D_DEFAULT_SOURCE")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline")
set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline")
set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
poppler_check_link_flag("-Wl,--as-needed" GCC_HAS_AS_NEEDED)
if(GCC_HAS_AS_NEEDED)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
endif(GCC_HAS_AS_NEEDED)
set(_compiler_flags_changed 1)
endif (CMAKE_COMPILER_IS_GNUCXX)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# set the default compile warnings
set(_warn "-Wall -Wextra -Wpedantic")
set(_warn "${_warn} -Wno-unused-parameter")
set(_warn "${_warn} -Wcast-align")
set(_warn "${_warn} -Wformat-security")
set(_warn "${_warn} -Wframe-larger-than=65536")
set(_warn "${_warn} -Wmissing-format-attribute")
set(_warn "${_warn} -Wnon-virtual-dtor")
set(_warn "${_warn} -Woverloaded-virtual")
set(_warn "${_warn} -Wmissing-declarations")
set(_warn "${_warn} -Wundef")
set(_warn "${_warn} -Wzero-as-null-pointer-constant")
set(_warn "${_warn} -Wshadow")
set(_warn "${_warn} -Wweak-vtables")
# set extra warnings
set(_warnx "${_warnx} -Wconversion")
set(DEFAULT_COMPILE_WARNINGS "${_warn}")
set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
# clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline")
set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
# clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
set(CMAKE_C_FLAGS_DEBUG "-g")
set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline")
set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
set(_compiler_flags_changed 1)
endif()
if(CMAKE_C_COMPILER MATCHES "icc")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-O2 -g -0b0 -noalign")
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g -Ob0 -noalign")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_C_FLAGS_DEBUG "-O2 -g -Ob0 -noalign")
set(CMAKE_C_FLAGS_DEBUGFULL "-g -Ob0 -noalign")
set(_compiler_flags_changed 1)
endif(CMAKE_C_COMPILER MATCHES "icc")
if(_compiler_flags_changed)
# Ensure that the previous CMAKE_{C,CXX}_FLAGS are included in the current configuration flags.
foreach(_build_type ${_known_build_types})
set(CMAKE_CXX_FLAGS_${_build_type} "${CMAKE_CXX_FLAGS_${_build_type}} ${_save_cxxflags}")
set(CMAKE_C_FLAGS_${_build_type} "${CMAKE_C_FLAGS_${_build_type}} ${_save_cflags}")
endforeach()
endif()
|