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