--- /dev/null
+# Copyright (c) 2016 The Chromium Embedded Framework Authors. All rights\r
+# reserved. Use of this source code is governed by a BSD-style license that\r
+# can be found in the LICENSE file.\r
+\r
+# Must be loaded via FindCEF.cmake.\r
+if(NOT DEFINED _CEF_ROOT_EXPLICIT)\r
+ message(FATAL_ERROR "Use find_package(CEF) to load this file.")\r
+endif()\r
+\r
+\r
+#\r
+# Shared configuration.\r
+#\r
+\r
+# Determine the platform.\r
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")\r
+ set(OS_MACOSX 1)\r
+ set(OS_POSIX 1)\r
+elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")\r
+ set(OS_LINUX 1)\r
+ set(OS_POSIX 1)\r
+elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")\r
+ set(OS_WINDOWS 1)\r
+endif()\r
+\r
+# Determine the project architecture.\r
+if(NOT DEFINED PROJECT_ARCH)\r
+ if(CMAKE_SIZEOF_VOID_P MATCHES 8)\r
+ set(PROJECT_ARCH "x86_64")\r
+ else()\r
+ set(PROJECT_ARCH "x86")\r
+ endif()\r
+\r
+ if(OS_MACOSX)\r
+ # PROJECT_ARCH should be specified on Mac OS X.\r
+ message(WARNING "No PROJECT_ARCH value specified, using ${PROJECT_ARCH}")\r
+ endif()\r
+endif()\r
+\r
+# Determine the build type.\r
+if(NOT CMAKE_BUILD_TYPE AND\r
+ (${CMAKE_GENERATOR} STREQUAL "Ninja" OR ${CMAKE_GENERATOR} STREQUAL "Unix Makefiles"))\r
+ # CMAKE_BUILD_TYPE should be specified when using Ninja or Unix Makefiles.\r
+ set(CMAKE_BUILD_TYPE Release)\r
+ message(WARNING "No CMAKE_BUILD_TYPE value selected, using ${CMAKE_BUILD_TYPE}")\r
+endif()\r
+\r
+\r
+# Path to the include directory.\r
+set(CEF_INCLUDE_PATH "${_CEF_ROOT}")\r
+\r
+# Path to the libcef_dll_wrapper target.\r
+set(CEF_LIBCEF_DLL_WRAPPER_PATH "${_CEF_ROOT}/libcef_dll")\r
+\r
+\r
+# Shared compiler/linker flags.\r
+list(APPEND CEF_COMPILER_DEFINES\r
+ # Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't \r
+ # in the C++ standard (e.g. UINT8_MAX, INT64_MIN, etc)\r
+ __STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS\r
+ )\r
+\r
+\r
+#\r
+# Linux configuration.\r
+#\r
+\r
+if(OS_LINUX)\r
+ # Platform-specific compiler/linker flags.\r
+ set(CEF_LIBTYPE SHARED)\r
+ list(APPEND CEF_COMPILER_FLAGS\r
+ -fno-strict-aliasing # Avoid assumptions regarding non-aliasing of objects of different types\r
+ -fPIC # Generate position-independent code for shared libraries\r
+ -fstack-protector # Protect some vulnerable functions from stack-smashing (security feature)\r
+ -funwind-tables # Support stack unwinding for backtrace()\r
+ -fvisibility=hidden # Give hidden visibility to declarations that are not explicitly marked as visible\r
+ --param=ssp-buffer-size=4 # Set the minimum buffer size protected by SSP (security feature, related to stack-protector)\r
+ -pipe # Use pipes rather than temporary files for communication between build stages\r
+ -pthread # Use the pthread library\r
+ -Wall # Enable all warnings\r
+ -Werror # Treat warnings as errors\r
+ -Wno-missing-field-initializers # Don't warn about missing field initializers\r
+ -Wno-unused-parameter # Don't warn about unused parameters\r
+ )\r
+ list(APPEND CEF_C_COMPILER_FLAGS\r
+ -std=c99 # Use the C99 language standard\r
+ )\r
+ list(APPEND CEF_CXX_COMPILER_FLAGS\r
+ -fno-exceptions # Disable exceptions\r
+ -fno-rtti # Disable real-time type information\r
+ -fno-threadsafe-statics # Don't generate thread-safe statics\r
+ -fvisibility-inlines-hidden # Give hidden visibility to inlined class member functions\r
+ -std=gnu++11 # Use the C++11 language standard including GNU extensions\r
+ -Wsign-compare # Warn about mixed signed/unsigned type comparisons\r
+ )\r
+ list(APPEND CEF_COMPILER_FLAGS_DEBUG\r
+ -O0 # Disable optimizations\r
+ -g # Generate debug information\r
+ )\r
+ list(APPEND CEF_COMPILER_FLAGS_RELEASE\r
+ -O2 # Optimize for maximum speed\r
+ -fdata-sections # Enable linker optimizations to improve locality of reference for data sections\r
+ -ffunction-sections # Enable linker optimizations to improve locality of reference for function sections\r
+ -fno-ident # Ignore the #ident directive\r
+ -U_FORTIFY_SOURCE # Undefine _FORTIFY_SOURCE in case it was previously defined\r
+ -D_FORTIFY_SOURCE=2 # Add memory and string function protection (security feature, related to stack-protector)\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS\r
+ -fPIC # Generate position-independent code for shared libraries\r
+ -pthread # Use the pthread library\r
+ -Wl,--disable-new-dtags # Don't generate new-style dynamic tags in ELF\r
+ -Wl,--fatal-warnings # Treat warnings as errors\r
+ -Wl,-rpath,. # Set rpath so that libraries can be placed next to the executable\r
+ -Wl,-z,noexecstack # Mark the stack as non-executable (security feature)\r
+ -Wl,-z,now # Resolve symbols on program start instead of on first use (security feature)\r
+ -Wl,-z,relro # Mark relocation sections as read-only (security feature)\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS_RELEASE\r
+ -Wl,-O1 # Enable linker optimizations\r
+ -Wl,--as-needed # Only link libraries that export symbols used by the binary\r
+ -Wl,--gc-sections # Remove unused code resulting from -fdata-sections and -function-sections\r
+ )\r
+ list(APPEND CEF_COMPILER_DEFINES\r
+ _FILE_OFFSET_BITS=64 # Allow the Large File Support (LFS) interface to replace the old interface\r
+ )\r
+ list(APPEND CEF_COMPILER_DEFINES_RELEASE\r
+ NDEBUG # Not a debug build\r
+ )\r
+\r
+ include(CheckCCompilerFlag)\r
+ include(CheckCXXCompilerFlag)\r
+\r
+ CHECK_C_COMPILER_FLAG(-Wno-unused-local-typedefs COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS)\r
+ if(COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS)\r
+ list(APPEND CEF_C_COMPILER_FLAGS\r
+ -Wno-unused-local-typedefs # Don't warn about unused local typedefs\r
+ )\r
+ endif()\r
+\r
+ CHECK_CXX_COMPILER_FLAG(-Wno-literal-suffix COMPILER_SUPPORTS_NO_LITERAL_SUFFIX)\r
+ if(COMPILER_SUPPORTS_NO_LITERAL_SUFFIX)\r
+ list(APPEND CEF_CXX_COMPILER_FLAGS\r
+ -Wno-literal-suffix # Don't warn about invalid suffixes on literals\r
+ )\r
+ endif()\r
+\r
+ CHECK_CXX_COMPILER_FLAG(-Wno-narrowing COMPILER_SUPPORTS_NO_NARROWING)\r
+ if(COMPILER_SUPPORTS_NO_NARROWING)\r
+ list(APPEND CEF_CXX_COMPILER_FLAGS\r
+ -Wno-narrowing # Don't warn about type narrowing\r
+ )\r
+ endif()\r
+\r
+ if(PROJECT_ARCH STREQUAL "x86_64")\r
+ # 64-bit architecture.\r
+ list(APPEND CEF_COMPILER_FLAGS\r
+ -m64\r
+ -march=x86-64\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS\r
+ -m64\r
+ )\r
+ elseif(PROJECT_ARCH STREQUAL "x86")\r
+ # 32-bit architecture.\r
+ list(APPEND CEF_COMPILER_FLAGS\r
+ -msse2\r
+ -mfpmath=sse\r
+ -mmmx\r
+ -m32\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS\r
+ -m32\r
+ )\r
+ endif()\r
+\r
+ # Standard libraries.\r
+ set(CEF_STANDARD_LIBS\r
+ X11\r
+ )\r
+\r
+ # CEF directory paths.\r
+ set(CEF_RESOURCE_DIR "${_CEF_ROOT}/Resources")\r
+ set(CEF_BINARY_DIR "${_CEF_ROOT}/${CMAKE_BUILD_TYPE}")\r
+ set(CEF_BINARY_DIR_DEBUG "${_CEF_ROOT}/Debug")\r
+ set(CEF_BINARY_DIR_RELEASE "${_CEF_ROOT}/Release")\r
+\r
+ # CEF library paths.\r
+ set(CEF_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/libcef.so")\r
+ set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/libcef.so")\r
+\r
+ # List of CEF binary files.\r
+ set(CEF_BINARY_FILES\r
+ chrome-sandbox\r
+ libcef.so\r
+ natives_blob.bin\r
+ snapshot_blob.bin\r
+ )\r
+\r
+ # List of CEF resource files.\r
+ set(CEF_RESOURCE_FILES\r
+ cef.pak\r
+ cef_100_percent.pak\r
+ cef_200_percent.pak\r
+ cef_extensions.pak\r
+ devtools_resources.pak\r
+ icudtl.dat\r
+ locales\r
+ )\r
+endif()\r
+\r
+\r
+#\r
+# Mac OS X configuration.\r
+#\r
+\r
+if(OS_MACOSX)\r
+ # Platform-specific compiler/linker flags.\r
+ # See also Xcode target properties in cef_macros.cmake.\r
+ set(CEF_LIBTYPE SHARED)\r
+ list(APPEND CEF_COMPILER_FLAGS\r
+ -fno-strict-aliasing # Avoid assumptions regarding non-aliasing of objects of different types\r
+ -fstack-protector # Protect some vulnerable functions from stack-smashing (security feature)\r
+ -funwind-tables # Support stack unwinding for backtrace()\r
+ -fvisibility=hidden # Give hidden visibility to declarations that are not explicitly marked as visible\r
+ -Wall # Enable all warnings\r
+ -Werror # Treat warnings as errors\r
+ -Wextra # Enable additional warnings\r
+ -Wendif-labels # Warn whenever an #else or an #endif is followed by text\r
+ -Wnewline-eof # Warn about no newline at end of file\r
+ -Wno-missing-field-initializers # Don't warn about missing field initializers\r
+ -Wno-unused-parameter # Don't warn about unused parameters\r
+ )\r
+ list(APPEND CEF_C_COMPILER_FLAGS\r
+ -std=c99 # Use the C99 language standard\r
+ )\r
+ list(APPEND CEF_CXX_COMPILER_FLAGS\r
+ -fno-exceptions # Disable exceptions\r
+ -fno-rtti # Disable real-time type information\r
+ -fno-threadsafe-statics # Don't generate thread-safe statics\r
+ -fobjc-call-cxx-cdtors # Call the constructor/destructor of C++ instance variables in ObjC objects\r
+ -fvisibility-inlines-hidden # Give hidden visibility to inlined class member functions\r
+ -std=gnu++11 # Use the C++11 language standard including GNU extensions\r
+ -Wno-narrowing # Don't warn about type narrowing\r
+ -Wsign-compare # Warn about mixed signed/unsigned type comparisons\r
+ )\r
+ list(APPEND CEF_COMPILER_FLAGS_DEBUG\r
+ -O0 # Disable optimizations\r
+ -g # Generate debug information\r
+ )\r
+ list(APPEND CEF_COMPILER_FLAGS_RELEASE\r
+ -O3 # Optimize for maximum speed plus a few extras\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS\r
+ -Wl,-search_paths_first # Search for static or shared library versions in the same pass\r
+ -Wl,-ObjC # Support creation of ObjC static libraries\r
+ -Wl,-pie # Generate position-independent code suitable for executables only\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS_RELEASE\r
+ -Wl,-dead_strip # Strip dead code\r
+ )\r
+\r
+ include(CheckCXXCompilerFlag)\r
+\r
+ CHECK_CXX_COMPILER_FLAG(-Wno-undefined-var-template COMPILER_SUPPORTS_NO_UNDEFINED_VAR_TEMPLATE)\r
+ if(COMPILER_SUPPORTS_NO_UNDEFINED_VAR_TEMPLATE)\r
+ list(APPEND CEF_CXX_COMPILER_FLAGS\r
+ -Wno-undefined-var-template # Don't warn about potentially uninstantiated static members\r
+ )\r
+ endif()\r
+\r
+ # Standard libraries.\r
+ set(CEF_STANDARD_LIBS\r
+ -lpthread\r
+ "-framework Cocoa"\r
+ "-framework AppKit"\r
+ )\r
+\r
+ # Find the newest available base SDK.\r
+ execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)\r
+ foreach(OS_VERSION 10.11 10.10 10.9)\r
+ set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")\r
+ if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")\r
+ set(CMAKE_OSX_SYSROOT ${SDK})\r
+ endif()\r
+ endforeach()\r
+\r
+ # Target SDK.\r
+ set(CEF_TARGET_SDK "10.9")\r
+ list(APPEND CEF_COMPILER_FLAGS\r
+ -mmacosx-version-min=${CEF_TARGET_SDK}\r
+ )\r
+ set(CMAKE_OSX_DEPLOYMENT_TARGET ${CEF_TARGET_SDK})\r
+\r
+ # Target architecture.\r
+ if(PROJECT_ARCH STREQUAL "x86_64")\r
+ set(CMAKE_OSX_ARCHITECTURES "x86_64")\r
+ else()\r
+ set(CMAKE_OSX_ARCHITECTURES "i386")\r
+ endif()\r
+\r
+ # CEF directory paths.\r
+ set(CEF_BINARY_DIR "${_CEF_ROOT}/$<CONFIGURATION>")\r
+ set(CEF_BINARY_DIR_DEBUG "${_CEF_ROOT}/Debug")\r
+ set(CEF_BINARY_DIR_RELEASE "${_CEF_ROOT}/Release")\r
+\r
+ # CEF library paths.\r
+ set(CEF_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/Chromium Embedded Framework.framework/Chromium Embedded Framework")\r
+ set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/Chromium Embedded Framework.framework/Chromium Embedded Framework")\r
+endif()\r
+\r
+\r
+#\r
+# Windows configuration.\r
+#\r
+\r
+if(OS_WINDOWS)\r
+ # Configure use of the sandbox.\r
+ option(USE_SANDBOX "Enable or disable use of the sandbox." ON)\r
+ if(USE_SANDBOX AND NOT MSVC_VERSION EQUAL 1900)\r
+ # The cef_sandbox.lib static library is currently built with VS2015. It will\r
+ # not link successfully with other VS versions.\r
+ set(USE_SANDBOX OFF)\r
+ endif()\r
+\r
+ # Configure use of official build compiler settings.\r
+ # When using an official build the "Debug" build is actually a Release build\r
+ # with DCHECKs enabled. In order to link the sandbox the Debug build must\r
+ # be configured with some Release-related compiler settings.\r
+ option(USE_OFFICIAL_BUILD_SANDBOX "Enable or disable use of an official build sandbox." ON)\r
+ if(NOT USE_SANDBOX)\r
+ # Don't need official build settings when the sandbox is off.\r
+ set(USE_OFFICIAL_BUILD_SANDBOX OFF)\r
+ endif()\r
+\r
+ # Consumers who run into LNK4099 warnings can pass /Z7 instead (see issue #385).\r
+ set(CEF_DEBUG_INFO_FLAG "/Zi" CACHE STRING "Optional flag specifying specific /Z flag to use")\r
+\r
+ # Platform-specific compiler/linker flags.\r
+ set(CEF_LIBTYPE STATIC)\r
+ list(APPEND CEF_COMPILER_FLAGS\r
+ /MP # Multiprocess compilation\r
+ /Gy # Enable function-level linking\r
+ /GR- # Disable run-time type information\r
+ /W4 # Warning level 4\r
+ /WX # Treat warnings as errors\r
+ /wd4100 # Ignore "unreferenced formal parameter" warning\r
+ /wd4127 # Ignore "conditional expression is constant" warning\r
+ /wd4244 # Ignore "conversion possible loss of data" warning\r
+ /wd4481 # Ignore "nonstandard extension used: override" warning\r
+ /wd4512 # Ignore "assignment operator could not be generated" warning\r
+ /wd4701 # Ignore "potentially uninitialized local variable" warning\r
+ /wd4702 # Ignore "unreachable code" warning\r
+ /wd4996 # Ignore "function or variable may be unsafe" warning\r
+ ${CEF_DEBUG_INFO_FLAG}\r
+ )\r
+ if(USE_OFFICIAL_BUILD_SANDBOX)\r
+ # CMake adds /RTC1, /D"_DEBUG" and a few other values by default for Debug\r
+ # builds. We can't link the sandbox with those values so clear the CMake\r
+ # defaults here.\r
+ set(CMAKE_CXX_FLAGS_DEBUG "")\r
+\r
+ list(APPEND CEF_COMPILER_FLAGS_DEBUG\r
+ /MT # Multithreaded release runtime\r
+ )\r
+ else()\r
+ list(APPEND CEF_COMPILER_FLAGS_DEBUG\r
+ /MTd # Multithreaded debug runtime\r
+ /RTC1 # Disable optimizations\r
+ /Od # Enable basic run-time checks\r
+ )\r
+ endif()\r
+ list(APPEND CEF_COMPILER_FLAGS_RELEASE\r
+ /MT # Multithreaded release runtime\r
+ /O2 # Optimize for maximum speed\r
+ /Ob2 # Inline any suitable function\r
+ /GF # Enable string pooling\r
+ )\r
+ list(APPEND CEF_LINKER_FLAGS_DEBUG\r
+ /DEBUG # Generate debug information\r
+ )\r
+ list(APPEND CEF_EXE_LINKER_FLAGS\r
+ /MANIFEST:NO # No default manifest (see ADD_WINDOWS_MANIFEST macro usage)\r
+ /LARGEADDRESSAWARE # Allow 32-bit processes to access 3GB of RAM\r
+ )\r
+ list(APPEND CEF_COMPILER_DEFINES\r
+ WIN32 _WIN32 _WINDOWS # Windows platform\r
+ UNICODE _UNICODE # Unicode build\r
+ WINVER=0x0601 _WIN32_WINNT=0x601 # Targeting Windows 7\r
+ NOMINMAX # Use the standard's templated min/max\r
+ WIN32_LEAN_AND_MEAN # Exclude less common API declarations\r
+ _HAS_EXCEPTIONS=0 # Disable exceptions\r
+ )\r
+ if(USE_OFFICIAL_BUILD_SANDBOX)\r
+ list(APPEND CEF_COMPILER_DEFINES_DEBUG\r
+ NDEBUG _NDEBUG # Not a debug build\r
+ DCHECK_ALWAYS_ON=1 # DCHECKs are enabled\r
+ )\r
+ endif()\r
+ list(APPEND CEF_COMPILER_DEFINES_RELEASE\r
+ NDEBUG _NDEBUG # Not a debug build\r
+ )\r
+\r
+ # Standard libraries.\r
+ set(CEF_STANDARD_LIBS\r
+ comctl32.lib\r
+ rpcrt4.lib\r
+ shlwapi.lib\r
+ ws2_32.lib\r
+ )\r
+\r
+ # CEF directory paths.\r
+ set(CEF_RESOURCE_DIR "${_CEF_ROOT}/Resources")\r
+ set(CEF_BINARY_DIR "${_CEF_ROOT}/$<CONFIGURATION>")\r
+ set(CEF_BINARY_DIR_DEBUG "${_CEF_ROOT}/Debug")\r
+ set(CEF_BINARY_DIR_RELEASE "${_CEF_ROOT}/Release")\r
+\r
+ # CEF library paths.\r
+ set(CEF_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/libcef.lib")\r
+ set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/libcef.lib")\r
+\r
+ # List of CEF binary files.\r
+ set(CEF_BINARY_FILES\r
+ chrome_elf.dll\r
+ d3dcompiler_43.dll\r
+ d3dcompiler_47.dll\r
+ libcef.dll\r
+ libEGL.dll\r
+ libGLESv2.dll\r
+ natives_blob.bin\r
+ snapshot_blob.bin\r
+ )\r
+\r
+ # List of CEF resource files.\r
+ set(CEF_RESOURCE_FILES\r
+ cef.pak\r
+ cef_100_percent.pak\r
+ cef_200_percent.pak\r
+ cef_extensions.pak\r
+ devtools_resources.pak\r
+ icudtl.dat\r
+ locales\r
+ )\r
+\r
+ if(USE_SANDBOX)\r
+ list(APPEND CEF_COMPILER_DEFINES\r
+ PSAPI_VERSION=1 # Required by cef_sandbox.lib\r
+ CEF_USE_SANDBOX # Used by apps to test if the sandbox is enabled\r
+ )\r
+\r
+ # Libraries required by cef_sandbox.lib.\r
+ set(CEF_SANDBOX_STANDARD_LIBS\r
+ dbghelp.lib\r
+ psapi.lib\r
+ version.lib\r
+ winmm.lib\r
+ )\r
+\r
+ # CEF sandbox library paths.\r
+ set(CEF_SANDBOX_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/cef_sandbox.lib")\r
+ set(CEF_SANDBOX_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/cef_sandbox.lib")\r
+ endif()\r
+\r
+ # Configure use of ATL.\r
+ option(USE_ATL "Enable or disable use of ATL." ON)\r
+ if(USE_ATL)\r
+ # Determine if the Visual Studio install supports ATL.\r
+ get_filename_component(VC_BIN_DIR ${CMAKE_CXX_COMPILER} DIRECTORY)\r
+ get_filename_component(VC_DIR ${VC_BIN_DIR} DIRECTORY)\r
+ if(NOT IS_DIRECTORY "${VC_DIR}/atlmfc")\r
+ set(USE_ATL OFF)\r
+ endif()\r
+ endif()\r
+\r
+ if(USE_ATL)\r
+ list(APPEND CEF_COMPILER_DEFINES\r
+ CEF_USE_ATL # Used by apps to test if ATL support is enabled\r
+ )\r
+ endif()\r
+endif()\r