diff options
author | Marshall Greenblatt <magreenblatt@gmail.com> | 2016-06-14 16:28:05 -0400 |
---|---|---|
committer | Marshall Greenblatt <magreenblatt@gmail.com> | 2016-06-14 17:50:55 -0400 |
commit | 15bf0204c401802f7a01f791fd03ce70b8ed47c8 (patch) | |
tree | 80ef4402f39b0ceb01a4a23c9a28bfb1514bb35c /CMakeLists.txt | |
parent | 3b557af8e8b5472da678b36db60e6139f520a756 (diff) | |
download | jcef-15bf0204c401802f7a01f791fd03ce70b8ed47c8.tar.gz |
Modernize CMake configuration and download CEF automatically (issue #224)
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 477 |
1 files changed, 52 insertions, 425 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index cd55148..a7a7e4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights +# 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. @@ -11,7 +11,7 @@ # CMake-generated project formats that have been tested with JCEF include: # # Linux: Ninja, Unix Makefiles -# Mac OS X: Ninja, Xcode 5+, Unix Makefiles +# Mac OS X: Ninja, Xcode 5+ # Windows: Ninja, Visual Studio 2010+ # # Ninja is a cross-platform open-source tool for running fast builds using @@ -19,38 +19,28 @@ # downloaded from http://martine.github.io/ninja/ or installed via a platform # package manager. # -# CMAKE STRUCTURE -# -# JCEF includes the following CMake files: -# -# CMakeLists.txt Bootstrap that sets up the CMake environment and -# loads the other CMake files. -# macros.cmake Helper macros for building JCEF. -# native/CMakeLists.txt Defines the JCEF native targets. -# third_party/cef/<platform>/libcef_dll/CMakeLists.txt -# Defines the libcef_dll_wrapper target. -# See third_party/cef/README.jcef for details. -# # BUILD REQUIREMENTS # -# The below requirements must be met to build this JCEF binary distribution. +# The below requirements must be met to build JCEF. # # - CMake version 2.8.12.1 or newer. # # - Linux requirements: # Currently supported distributions include Debian Wheezy, Ubuntu Precise, and -# related. Newer versions will likely also work but may not have been tested. +# related. Ubuntu 14.04 64-bit is recommended. Newer versions will likely also +# work but may not have been tested. # Required packages include: # build-essential # libgtk2.0-dev # # - Mac OS X requirements: -# Xcode 5 or newer building on Mac OS X 10.7 (Lion) or newer. The Xcode -# command-line tools must also be installed. +# Xcode 5 or newer building on Mac OS X 10.9 (Mavericks) or newer. Xcode 7.2 +# and OS X 10.11 are recommended. The Xcode command-line tools must also be +# installed. Only 64-bit builds are supported on OS X. # # - Windows requirements: -# Visual Studio 2010 or newer building on Windows XP SP3 or newer. 64-bit -# version of Windows 7 or newer recommended. +# Visual Studio 2010 or newer building on Windows 7 or newer. Visual Studio +# 2015 Update 2 and Windows 10 64-bit are recommended. # # BUILD EXAMPLES # @@ -88,24 +78,24 @@ # > ninja # # To perform a Windows build using a 32-bit CEF binary distribution: -# Using the Visual Studio 2013 IDE: -# > cmake -G "Visual Studio 12" .. +# Using the Visual Studio 2015 IDE: +# > cmake -G "Visual Studio 14" .. # Open jcef.sln in Visual Studio and select Build > Build Solution. # -# Using Ninja with Visual Studio 2013 command-line tools: +# Using Ninja with Visual Studio 2015 command-line tools: # (this path may be different depending on your Visual Studio installation) -# > "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" +# > "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat" # > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug .. # > ninja # # To perform a Windows build using a 64-bit CEF binary distribution: -# Using the Visual Studio 2013 IDE: -# > cmake -G "Visual Studio 12 Win64" .. +# Using the Visual Studio 2015 IDE: +# > cmake -G "Visual Studio 14 Win64" .. # Open jcef.sln in Visual Studio and select Build > Build Solution. # -# Using Ninja with Visual Studio 2013 command-line tools: +# Using Ninja with Visual Studio 2015 command-line tools: # (this path may be different depending on your Visual Studio installation) -# > "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat" +# > "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" # > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug .. # > ninja @@ -124,48 +114,43 @@ project(jcef) # Use folders in the resulting project files. set_property(GLOBAL PROPERTY OS_FOLDERS ON) + +# +# CEF configuration. +# + +# Specify the CEF distribution version. +set(CEF_VERSION "3.2704.1427.g95055fe") + # Determine the platform. if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") - set(OS_MACOSX 1) - set(OS_POSIX 1) + set(CEF_PLATFORM "macosx64") 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") + set(CEF_PLATFORM "linux64") else() - set(PROJECT_ARCH "x86") + set(CEF_PLATFORM "linux32") endif() - - if(OS_MACOSX) - # PROJECT_ARCH should be specified on Mac OS X. - message(WARNING "No PROJECT_ARCH value specified, using ${PROJECT_ARCH}") +elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") + if(CMAKE_SIZEOF_VOID_P MATCHES 8) + set(CEF_PLATFORM "windows64") + else() + set(CEF_PLATFORM "windows32") endif() endif() -if(NOT CMAKE_BUILD_TYPE AND - (${CMAKE_GENERATOR} STREQUAL "Ninja" OR ${CMAKE_GENERATOR} STREQUAL "Unix 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() +# Add this project's cmake/ directory to the module path. +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -# Include cmake macros. -set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}") -include("macros") +# Download and extract the CEF binary distribution (executes DownloadCEF.cmake). +include(DownloadCEF) +DownloadCEF("${CEF_PLATFORM}" "${CEF_VERSION}" "${CMAKE_SOURCE_DIR}/third_party/cef") -# Source include directory. -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +# Add the CEF binary distribution's cmake/ directory to the module path. +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CEF_ROOT}/cmake") -# 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). -add_definitions(-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS) +# Load the CEF configuration (executes FindCEF.cmake). +find_package(CEF REQUIRED) # @@ -229,332 +214,9 @@ endif() # -# Linux configuration. -# - -if(OS_LINUX) - # Platform-specific compiler/linker flags. - set(CEF_LIBTYPE SHARED) - # -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 - set(CEF_COMPILER_FLAGS "-fno-strict-aliasing -fPIC -fstack-protector -funwind-tables -fvisibility=default --param=ssp-buffer-size=4 -pipe -pthread -Wall -Werror -Wno-missing-field-initializers -Wno-unused-parameter") - # -std=c99 = Use the C99 language standard - set(CEF_C_COMPILER_FLAGS "-std=c99") - # -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 - set(CEF_CXX_COMPILER_FLAGS "-fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -Wsign-compare") - # -O0 = Disable optimizations - # -g = Generate debug information - set(CEF_COMPILER_FLAGS_DEBUG "-O0 -g") - # -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 - # -DNDEBUG = Not a debug build - # -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) - set(CEF_COMPILER_FLAGS_RELEASE "-O2 -fdata-sections -ffunction-sections -fno-ident -DNDEBUG -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2") - # -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) - set(CEF_LINKER_FLAGS "-fPIC -pthread -Wl,--disable-new-dtags -Wl,--fatal-warnings -Wl,-rpath,. -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro") - # -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 - set(CEF_LINKER_FLAGS_RELEASE "-Wl,-O1 -Wl,--as-needed -Wl,--gc-sections") - - include(CheckCCompilerFlag) - include(CheckCXXCompilerFlag) - - # -Wno-unused-local-typedefs = Don't warn about unused local typedefs - CHECK_C_COMPILER_FLAG(-Wno-unused-local-typedefs COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS) - if(COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS) - set(CEF_C_COMPILER_FLAGS "${CEF_C_COMPILER_FLAGS} -Wno-unused-local-typedefs") - endif() - - # -Wno-literal-suffix = Don't warn about invalid suffixes on literals - CHECK_CXX_COMPILER_FLAG(-Wno-literal-suffix COMPILER_SUPPORTS_NO_LITERAL_SUFFIX) - if(COMPILER_SUPPORTS_NO_LITERAL_SUFFIX) - set(CEF_CXX_COMPILER_FLAGS "${CEF_CXX_COMPILER_FLAGS} -Wno-literal-suffix") - endif() - - # -Wno-narrowing = Don't warn about type narrowing - CHECK_CXX_COMPILER_FLAG(-Wno-narrowing COMPILER_SUPPORTS_NO_NARROWING) - if(COMPILER_SUPPORTS_NO_NARROWING) - set(CEF_CXX_COMPILER_FLAGS "${CEF_CXX_COMPILER_FLAGS} -Wno-narrowing") - endif() - - # Target architecture. - if(PROJECT_ARCH STREQUAL "x86_64") - # 64-bit architecture. - set(CEF_DISTRIB_TYPE "linux64") - set(CEF_COMPILER_FLAGS "${CEF_COMPILER_FLAGS} -m64 -march=x86-64") - set(CEF_LINKER_FLAGS "${CEF_LINKER_FLAGS} -m64") - elseif(PROJECT_ARCH STREQUAL "x86") - # 32-bit architecture. - set(CEF_DISTRIB_TYPE "linux32") - set(CEF_COMPILER_FLAGS "${CEF_COMPILER_FLAGS} -msse2 -mfpmath=sse -mmmx -m32") - set(CEF_LINKER_FLAGS "${CEF_LINKER_FLAGS} -m32") - endif() - - # Allow the Large File Support (LFS) interface to replace the old interface. - add_definitions(-D_FILE_OFFSET_BITS=64) - - # Standard libraries. - set(CEF_STANDARD_LIBS "X11") - - # CEF directory paths. - set(CEF_DISTRIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cef/${CEF_DISTRIB_TYPE}") - set(CEF_RESOURCE_DIR "${CEF_DISTRIB_DIR}/Resources") - set(CEF_BINARY_DIR "${CEF_DISTRIB_DIR}/${CMAKE_BUILD_TYPE}") - set(CEF_BINARY_DIR_DEBUG "${CEF_DISTRIB_DIR}/Debug") - set(CEF_BINARY_DIR_RELEASE "${CEF_DISTRIB_DIR}/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 - natives_blob.bin - snapshot_blob.bin - ) - - # 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 - ) -endif() - - -# -# Mac OS X configuration. -# - -if(OS_MACOSX) - # Platform-specific compiler/linker flags. - # See also SET_XCODE_TARGET_PROPERTIES in macros.cmake. - set(CEF_LIBTYPE SHARED) - # -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 - # -Wendif-labels = Warn whenever an #else or an #endif is followed by text - # -Werror = Treat warnings as errors - # -Wextra = Enable additional warnings - # -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 - set(CEF_COMPILER_FLAGS "-fno-strict-aliasing -fstack-protector -funwind-tables -fvisibility=hidden -Wall -Wendif-labels -Werror -Wextra -Wnewline-eof -Wno-missing-field-initializers -Wno-unused-parameter") - # -std=c99 = Use the C99 language standard - set(CEF_C_COMPILER_FLAGS "-std=c99") - # -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 - set(CEF_CXX_COMPILER_FLAGS "-fno-exceptions -fno-rtti -fno-threadsafe-statics -fobjc-call-cxx-cdtors -fvisibility-inlines-hidden -std=gnu++11 -Wno-narrowing -Wsign-compare") - # -O0 = Disable optimizations - # -g = Generate debug information - set(CEF_COMPILER_FLAGS_DEBUG "-O0 -g") - # -O3 = Optimize for maximum speed plus a few extras - set(CEF_COMPILER_FLAGS_RELEASE "-O3") - # -Wl,-search_paths_first = Search for static or shared library versions in the same pass - # -Wl,-ObjC = Support creation of creation of ObjC static libraries - # -Wl,-pie = Generate position-independent code suitable for executables only - set(CEF_LINKER_FLAGS "-Wl,-search_paths_first -Wl,-ObjC -Wl,-pie") - # -Wl,-dead_strip = Strip dead code - set(CEF_LINKER_FLAGS_RELEASE "-Wl,-dead_strip") - - # 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.10 10.9 10.8 10.7) - 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.6") - set(CEF_COMPILER_FLAGS "${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") - # 64-bit architecture. - set(CEF_DISTRIB_TYPE "macosx64") - set(CMAKE_OSX_ARCHITECTURES "x86_64") - else() - # 32-bit architecture. - message(FATAL_ERROR "32-bit builds are not supported on OS X") - endif() - - # CEF directory paths. - set(CEF_DISTRIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cef/${CEF_DISTRIB_TYPE}") - set(CEF_BINARY_DIR "${CEF_DISTRIB_DIR}/$<CONFIGURATION>") - set(CEF_BINARY_DIR_DEBUG "${CEF_DISTRIB_DIR}/Debug") - set(CEF_BINARY_DIR_RELEASE "${CEF_DISTRIB_DIR}/Release") - - # CEF library paths. - set(CEF_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/Chromium Embedded Framework.framework/Chromium Embedded Framework") - set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/Chromium Embedded Framework.framework/Chromium Embedded Framework") -endif() - - -# -# Windows configuration. -# - -if(OS_WINDOWS) - # Platform-specific compiler/linker flags. - set(CEF_LIBTYPE STATIC) - # /MP = Multiprocess compilation - # /Gy = Enable function-level linking - # /GR- = Disable run-time type information - # /Zi = Enable program database - # /W4 = Warning level 4 - # /WX = Treat warnings as errors - # /wd"4100" = Ignore "unreferenced formal parameter" warning - # /wd"4127" = Ignore "conditional expression is constant" warning - # /wd"4244" = Ignore "conversion possible loss of data" warning - # /wd"4512" = Ignore "assignment operator could not be generated" warning - # /wd"4701" = Ignore "potentially uninitialized local variable" warning - # /wd"4702" = Ignore "unreachable code" warning - # /wd"4996" = Ignore "function or variable may be unsafe" warning - set(CEF_COMPILER_FLAGS "/MP /Gy /GR- /Zi /W4 /WX /wd\"4100\" /wd\"4127\" /wd\"4244\" /wd\"4512\" /wd\"4701\" /wd\"4702\" /wd\"4996\"") - # /MTd = Multithreaded debug runtime - # /Od = Disable optimizations - # /RTC1 = Enable basic run-time checks - set(CEF_COMPILER_FLAGS_DEBUG "/MTd /RTC1 /Od") - # /MT = Multithreaded release runtime - # /O2 = Optimize for maximum speed - # /Ob2 = Inline any suitable function - # /GF = Enable string pooling - # /D NDEBUG /D _NDEBUG = Not a debug build - set(CEF_COMPILER_FLAGS_RELEASE "/MT /O2 /Ob2 /GF /D NDEBUG /D _NDEBUG") - # /DEBUG = Generate debug information - set(CEF_LINKER_FLAGS_DEBUG "/DEBUG") - # /MANIFEST:NO = No default manifest (see ADD_WINDOWS_MANIFEST macro usage) - set(CEF_EXE_LINKER_FLAGS "/MANIFEST:NO") - - # Standard definitions - # -DWIN32 -D_WIN32 -D_WINDOWS = Windows platform - # -DUNICODE -D_UNICODE = Unicode build - # -DWINVER=0x0602 -D_WIN32_WINNT=0x602 = Targeting Windows 8 - # -DNOMINMAX = Use the standard's templated min/max - # -DWIN32_LEAN_AND_MEAN = Exclude less common API declarations - # -D_HAS_EXCEPTIONS=0 = Disable exceptions - add_definitions(-DWIN32 -D_WIN32 -D_WINDOWS -DUNICODE -D_UNICODE -DWINVER=0x0602 - -D_WIN32_WINNT=0x602 -DNOMINMAX -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0) - - # Standard libraries. - set(CEF_STANDARD_LIBS "comctl32.lib" "rpcrt4.lib" "shlwapi.lib") - - # Target architecture. - if(PROJECT_ARCH STREQUAL "x86_64") - # 64-bit architecture. - set(CEF_DISTRIB_TYPE "win64") - else() - # 32-bit architecture. - set(CEF_DISTRIB_TYPE "win32") - endif() - - # CEF directory paths. - set(CEF_DISTRIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cef/${CEF_DISTRIB_TYPE}") - set(CEF_RESOURCE_DIR "${CEF_DISTRIB_DIR}/Resources") - set(CEF_BINARY_DIR "${CEF_DISTRIB_DIR}/$<CONFIGURATION>") - set(CEF_BINARY_DIR_DEBUG "${CEF_DISTRIB_DIR}/Debug") - set(CEF_BINARY_DIR_RELEASE "${CEF_DISTRIB_DIR}/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 - d3dcompiler_43.dll - d3dcompiler_47.dll - libcef.dll - libEGL.dll - libGLESv2.dll - natives_blob.bin - snapshot_blob.bin - ) - if(PROJECT_ARCH STREQUAL "x86") - # Only used on 32-bit platforms. - set(CEF_BINARY_FILES - ${CEF_BINARY_FILES} - wow_helper.exe - ) - endif() - - # 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 - ) -endif() - - -# # Post-configuration actions. # -# CEF binary distribution include directory. -include_directories(${CEF_DISTRIB_DIR}) - -# Merge compiler/linker flags. -set(CMAKE_C_FLAGS "${CEF_COMPILER_FLAGS} ${CEF_C_COMPILER_FLAGS}") -set(CMAKE_C_FLAGS_DEBUG "${CEF_COMPILER_FLAGS_DEBUG} ${CEF_C_COMPILER_FLAGS_DEBUG}") -set(CMAKE_C_FLAGS_RELEASE "${CEF_COMPILER_FLAGS_RELEASE} ${CEF_C_COMPILER_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS "${CEF_COMPILER_FLAGS} ${CEF_CXX_COMPILER_FLAGS}") -set(CMAKE_CXX_FLAGS_DEBUG "${CEF_COMPILER_FLAGS_DEBUG} ${CEF_CXX_COMPILER_FLAGS_DEBUG}") -set(CMAKE_CXX_FLAGS_RELEASE "${CEF_COMPILER_FLAGS_RELEASE} ${CEF_CXX_COMPILER_FLAGS_RELEASE}") -set(CMAKE_EXE_LINKER_FLAGS "${CEF_LINKER_FLAGS} ${CEF_EXE_LINKER_FLAGS}") -set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CEF_LINKER_FLAGS_DEBUG} ${CEF_EXE_LINKER_FLAGS_DEBUG}") -set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CEF_LINKER_FLAGS_RELEASE} ${CEF_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS "${CEF_LINKER_FLAGS} ${CEF_SHARED_LINKER_FLAGS}") -set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CEF_LINKER_FLAGS_DEBUG} ${CEF_SHARED_LINKER_FLAGS_DEBUG}") -set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CEF_LINKER_FLAGS_RELEASE} ${CEF_SHARED_LINKER_FLAGS_RELEASE}") - # Generate the JCEF version header. message(STATUS "Generating native/jcef_version.h file...") execute_process( @@ -562,8 +224,8 @@ execute_process( "tools/make_version_header.py" "--header" "native/jcef_version.h" - "--platform" - "${CEF_DISTRIB_TYPE}" + "--cef-path" + "${CEF_ROOT}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULT_VARIABLE EXECUTE_RV ) @@ -571,14 +233,16 @@ if(NOT EXECUTE_RV STREQUAL "0") message(FATAL_ERROR "Execution failed with unexpected result: ${EXECUTE_RV}") endif() -macro(SET_LIBRARY_TARGET_PROPERTIES target) -endmacro() +# Copy the CEF README.txt file to the cmake build directory for use by the +# make_readme.py script. +file(COPY "${CEF_ROOT}/README.txt" DESTINATION "${CMAKE_BINARY_DIR}") + # # Include target subdirectories. # -add_subdirectory("${CEF_DISTRIB_DIR}/libcef_dll") +add_subdirectory(${CEF_LIBCEF_DLL_WRAPPER_PATH} libcef_dll_wrapper) add_subdirectory(native) @@ -586,47 +250,10 @@ add_subdirectory(native) # Display configuration settings. # -message(STATUS "*** CONFIGURATION SETTINGS ***") -message(STATUS "Generator: ${CMAKE_GENERATOR}") -message(STATUS "Platform: ${CMAKE_SYSTEM_NAME}") -message(STATUS "Project architecture: ${PROJECT_ARCH}") - -if(${CMAKE_GENERATOR} STREQUAL "Ninja" OR ${CMAKE_GENERATOR} STREQUAL "Unix Makefiles") - message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") -endif() - -if(OS_MACOSX) - message(STATUS "Base SDK: ${CMAKE_OSX_SYSROOT}") - message(STATUS "Target SDK: ${CEF_TARGET_SDK}") -endif() +PRINT_CEF_CONFIG() +message(STATUS "*** JCEF CONFIGURATION SETTINGS ***") message(STATUS "Python executable: ${PYTHON_EXECUTABLE}") - message(STATUS "Java directory: ${JAVA_DIR}") message(STATUS "JNI libraries: ${JNI_LIBRARIES}") message(STATUS "JNI include directories: ${JNI_INCLUDE_DIRS}") - -set(LIBRARIES ${CEF_STANDARD_LIBS}) -message(STATUS "Standard libraries: ${LIBRARIES}") - -get_directory_property(DEFINITIONS COMPILE_DEFINITIONS) -message(STATUS "Compiler definitions: ${DEFINITIONS}") - -message(STATUS "C_FLAGS: ${CMAKE_C_FLAGS}") -message(STATUS "C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}") -message(STATUS "C_FLAGS_RELEASE: ${CMAKE_C_FLAGS_RELEASE}") -message(STATUS "CXX_FLAGS: ${CMAKE_CXX_FLAGS}") -message(STATUS "CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}") -message(STATUS "CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}") -message(STATUS "EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") -message(STATUS "EXE_LINKER_FLAGS_DEBUG: ${CMAKE_EXE_LINKER_FLAGS_DEBUG}") -message(STATUS "EXE_LINKER_FLAGS_RELEASE: ${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -message(STATUS "SHARED_LINKER_FLAGS: ${CMAKE_SHARED_LINKER_FLAGS}") -message(STATUS "SHARED_LINKER_FLAGS_DEBUG: ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") -message(STATUS "SHARED_LINKER_FLAGS_RELEASE: ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") - -if(OS_LINUX OR OS_WINDOWS) - message(STATUS "CEF Binary files: ${CEF_BINARY_FILES}") - message(STATUS "CEF Resource files: ${CEF_RESOURCE_FILES}") -endif() - |