]> git.sesse.net Git - casparcg/blobdiff - dependencies64/cef/windows/cmake/cef_macros.cmake
Upgrade CEF to 3.3029.1611.g44e39a8 / Chromium 58.0.3029.81.
[casparcg] / dependencies64 / cef / windows / cmake / cef_macros.cmake
diff --git a/dependencies64/cef/windows/cmake/cef_macros.cmake b/dependencies64/cef/windows/cmake/cef_macros.cmake
new file mode 100644 (file)
index 0000000..8aee772
--- /dev/null
@@ -0,0 +1,370 @@
+# 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 macros.\r
+#\r
+\r
+# Print the current CEF configuration.\r
+macro(PRINT_CEF_CONFIG)\r
+  message(STATUS "*** CEF CONFIGURATION SETTINGS ***")\r
+  message(STATUS "Generator:                    ${CMAKE_GENERATOR}")\r
+  message(STATUS "Platform:                     ${CMAKE_SYSTEM_NAME}")\r
+  message(STATUS "Project architecture:         ${PROJECT_ARCH}")\r
+\r
+  if(${CMAKE_GENERATOR} STREQUAL "Ninja" OR ${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")\r
+    message(STATUS "Build type:                   ${CMAKE_BUILD_TYPE}")\r
+  endif()\r
+\r
+  message(STATUS "Binary distribution root:     ${_CEF_ROOT}")\r
+\r
+  if(OS_MACOSX)\r
+    message(STATUS "Base SDK:                     ${CMAKE_OSX_SYSROOT}")\r
+    message(STATUS "Target SDK:                   ${CEF_TARGET_SDK}")\r
+  endif()\r
+\r
+  if(OS_WINDOWS)\r
+    message(STATUS "CEF Windows sandbox:          ${USE_SANDBOX}")\r
+    message(STATUS "Visual Studio ATL support:    ${USE_ATL}")\r
+  endif()\r
+\r
+  set(_libraries ${CEF_STANDARD_LIBS})\r
+  if(OS_WINDOWS AND USE_SANDBOX)\r
+    list(APPEND _libraries ${CEF_SANDBOX_STANDARD_LIBS})\r
+  endif()\r
+  message(STATUS "Standard libraries:           ${_libraries}")\r
+\r
+  message(STATUS "Compile defines:              ${CEF_COMPILER_DEFINES}")\r
+  message(STATUS "Compile defines (Debug):      ${CEF_COMPILER_DEFINES_DEBUG}")\r
+  message(STATUS "Compile defines (Release):    ${CEF_COMPILER_DEFINES_RELEASE}")\r
+  message(STATUS "C compile flags:              ${CEF_COMPILER_FLAGS} ${CEF_C_COMPILER_FLAGS}")\r
+  message(STATUS "C compile flags (Debug):      ${CEF_COMPILER_FLAGS_DEBUG} ${CEF_C_COMPILER_FLAGS_DEBUG}")\r
+  message(STATUS "C compile flags (Release):    ${CEF_COMPILER_FLAGS_RELEASE} ${CEF_C_COMPILER_FLAGS_RELEASE}")\r
+  message(STATUS "C++ compile flags:            ${CEF_COMPILER_FLAGS} ${CEF_CXX_COMPILER_FLAGS}")\r
+  message(STATUS "C++ compile flags (Debug):    ${CEF_COMPILER_FLAGS_DEBUG} ${CEF_CXX_COMPILER_FLAGS_DEBUG}")\r
+  message(STATUS "C++ compile flags (Release):  ${CEF_COMPILER_FLAGS_RELEASE} ${CEF_CXX_COMPILER_FLAGS_RELEASE}")\r
+  message(STATUS "Exe link flags:               ${CEF_LINKER_FLAGS} ${CEF_EXE_LINKER_FLAGS}")\r
+  message(STATUS "Exe link flags (Debug):       ${CEF_LINKER_FLAGS_DEBUG} ${CEF_EXE_LINKER_FLAGS_DEBUG}")\r
+  message(STATUS "Exe link flags (Release):     ${CEF_LINKER_FLAGS_RELEASE} ${CEF_EXE_LINKER_FLAGS_RELEASE}")\r
+  message(STATUS "Shared link flags:            ${CEF_LINKER_FLAGS} ${CEF_SHARED_LINKER_FLAGS}")\r
+  message(STATUS "Shared link flags (Debug):    ${CEF_LINKER_FLAGS_DEBUG} ${CEF_SHARED_LINKER_FLAGS_DEBUG}")\r
+  message(STATUS "Shared link flags (Release):  ${CEF_LINKER_FLAGS_RELEASE} ${CEF_SHARED_LINKER_FLAGS_RELEASE}")\r
+\r
+  if(OS_LINUX OR OS_WINDOWS)\r
+    message(STATUS "CEF Binary files:             ${CEF_BINARY_FILES}")\r
+    message(STATUS "CEF Resource files:           ${CEF_RESOURCE_FILES}")\r
+  endif()\r
+endmacro()\r
+\r
+# Append platform specific sources to a list of sources.\r
+macro(APPEND_PLATFORM_SOURCES name_of_list)\r
+  if(OS_LINUX AND ${name_of_list}_LINUX)\r
+    list(APPEND ${name_of_list} ${${name_of_list}_LINUX})\r
+  endif()\r
+  if(OS_POSIX AND ${name_of_list}_POSIX)\r
+    list(APPEND ${name_of_list} ${${name_of_list}_POSIX})\r
+  endif()\r
+  if(OS_WINDOWS AND ${name_of_list}_WINDOWS)\r
+    list(APPEND ${name_of_list} ${${name_of_list}_WINDOWS})\r
+  endif()\r
+  if(OS_MACOSX AND ${name_of_list}_MACOSX)\r
+    list(APPEND ${name_of_list} ${${name_of_list}_MACOSX})\r
+  endif()\r
+endmacro()\r
+\r
+# Determine the target output directory based on platform and generator.\r
+macro(SET_CEF_TARGET_OUT_DIR)\r
+  if(${CMAKE_GENERATOR} STREQUAL "Ninja" OR\r
+     ${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")\r
+    # By default Ninja and Make builds don't create a subdirectory named after\r
+    # the configuration.\r
+    set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")\r
+\r
+    # Output binaries (executables, libraries) to the correct directory.\r
+    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CEF_TARGET_OUT_DIR})\r
+    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CEF_TARGET_OUT_DIR})\r
+  else()\r
+    set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")\r
+  endif()\r
+endmacro()\r
+\r
+# Copy a list of files from one directory to another. Relative files paths are maintained.\r
+# The path component of the source |file_list| will be removed.\r
+macro(COPY_FILES target file_list source_dir target_dir)\r
+  foreach(FILENAME ${file_list})\r
+    set(source_file ${source_dir}/${FILENAME})\r
+    get_filename_component(target_name ${FILENAME} NAME)\r
+    set(target_file ${target_dir}/${target_name})\r
+    if(IS_DIRECTORY ${source_file})\r
+      add_custom_command(\r
+        TARGET ${target}\r
+        POST_BUILD\r
+        COMMAND ${CMAKE_COMMAND} -E copy_directory "${source_file}" "${target_file}"\r
+        VERBATIM\r
+        )\r
+    else()\r
+      add_custom_command(\r
+        TARGET ${target}\r
+        POST_BUILD\r
+        COMMAND ${CMAKE_COMMAND} -E copy_if_different "${source_file}" "${target_file}"\r
+        VERBATIM\r
+        )\r
+    endif()\r
+  endforeach()\r
+endmacro()\r
+\r
+\r
+#\r
+# Linux macros.\r
+#\r
+\r
+if(OS_LINUX)\r
+\r
+# Use pkg-config to find Linux libraries and update compiler/linker variables.\r
+macro(FIND_LINUX_LIBRARIES libraries)\r
+  # Read pkg-config info into variables.\r
+  execute_process(COMMAND pkg-config --cflags ${libraries} OUTPUT_VARIABLE FLL_CFLAGS)\r
+  execute_process(COMMAND pkg-config --libs-only-L --libs-only-other ${libraries} OUTPUT_VARIABLE FLL_LDFLAGS)\r
+  execute_process(COMMAND pkg-config --libs-only-l ${libraries} OUTPUT_VARIABLE FLL_LIBS)\r
+\r
+  # Strip leading and trailing whitepspace.\r
+  STRING(STRIP "${FLL_CFLAGS}"  FLL_CFLAGS)\r
+  STRING(STRIP "${FLL_LDFLAGS}" FLL_LDFLAGS)\r
+  STRING(STRIP "${FLL_LIBS}"    FLL_LIBS)\r
+\r
+  # Convert to a list.\r
+  separate_arguments(FLL_CFLAGS)\r
+  separate_arguments(FLL_LDFLAGS)\r
+  separate_arguments(FLL_LIBS)\r
+\r
+  # Update build variables.\r
+  list(APPEND CEF_C_COMPILER_FLAGS    ${FLL_CFLAGS})\r
+  list(APPEND CEF_CXX_COMPILER_FLAGS  ${FLL_CFLAGS})\r
+  list(APPEND CEF_EXE_LINKER_FLAGS    ${FLL_LDFLAGS})\r
+  list(APPEND CEF_SHARED_LINKER_FLAGS ${FLL_LDFLAGS})\r
+  list(APPEND CEF_STANDARD_LIBS       ${FLL_LIBS})\r
+endmacro()\r
+\r
+# Set SUID permissions on the specified executable.\r
+macro(SET_LINUX_SUID_PERMISSIONS target executable)\r
+  add_custom_command(\r
+    TARGET ${target}\r
+    POST_BUILD\r
+    COMMAND ${CMAKE_COMMAND} -E echo ""\r
+    COMMAND ${CMAKE_COMMAND} -E echo "*** Run the following command manually to set SUID permissions ***"\r
+    COMMAND ${CMAKE_COMMAND} -E echo "EXE=\"${executable}\" && sudo -- chown root:root $EXE && sudo -- chmod 4755 $EXE"\r
+    COMMAND ${CMAKE_COMMAND} -E echo ""\r
+    VERBATIM\r
+    )\r
+endmacro()\r
+\r
+endif(OS_LINUX)\r
+\r
+\r
+#\r
+# Mac OS X macros.\r
+#\r
+\r
+if(OS_MACOSX)\r
+\r
+# Fix the framework rpath in the helper executable.\r
+macro(FIX_MACOSX_HELPER_FRAMEWORK_RPATH target)\r
+  # The helper is in $app_name.app/Contents/Frameworks/$app_name Helper.app/Contents/MacOS/\r
+  # so set rpath up to Contents/ so that the loader can find Frameworks/.\r
+  set_target_properties(${target} PROPERTIES INSTALL_RPATH "@executable_path/../../../..")\r
+  set_target_properties(${target} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)\r
+endmacro()\r
+\r
+# Fix the framework rpath in the main executable.\r
+macro(FIX_MACOSX_MAIN_FRAMEWORK_RPATH target)\r
+  # The main app is at $app_name.app/Contents/MacOS/$app_name\r
+  # so set rpath up to Contents/ so that the loader can find Frameworks/.\r
+  set_target_properties(${target} PROPERTIES INSTALL_RPATH "@executable_path/..")\r
+  set_target_properties(${target} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)\r
+endmacro()\r
+\r
+# Manually process and copy over resource files.\r
+macro(COPY_MACOSX_RESOURCES resource_list prefix_list target source_dir app_path)\r
+  foreach(FILENAME ${resource_list})\r
+    # Remove one or more prefixes from the source paths.\r
+    set(TARGET_FILENAME "${FILENAME}")\r
+    foreach(PREFIX ${prefix_list})\r
+      string(REGEX REPLACE "^.*${PREFIX}" "" TARGET_FILENAME ${TARGET_FILENAME})\r
+    endforeach()\r
+\r
+    # Determine the absolute source and target paths.\r
+    set(TARGET_PATH "${app_path}/Contents/Resources/${TARGET_FILENAME}")\r
+    if(IS_ABSOLUTE ${FILENAME})\r
+      set(SOURCE_PATH ${FILENAME})\r
+    else()\r
+      set(SOURCE_PATH "${source_dir}/${FILENAME}")\r
+    endif()\r
+\r
+    if(${FILENAME} MATCHES ".xib$")\r
+      # Change the target file extension.\r
+      string(REGEX REPLACE ".xib$" ".nib" TARGET_PATH ${TARGET_PATH})\r
+\r
+      get_filename_component(TARGET_DIRECTORY ${TARGET_PATH} PATH)\r
+      add_custom_command(\r
+        TARGET ${target}\r
+        POST_BUILD\r
+        # Create the target directory.\r
+        COMMAND ${CMAKE_COMMAND} -E make_directory "${TARGET_DIRECTORY}"\r
+        # Compile the XIB file to a NIB.\r
+        COMMAND /usr/bin/ibtool --output-format binary1 --compile "${TARGET_PATH}" "${SOURCE_PATH}"\r
+        VERBATIM\r
+        )\r
+    elseif(NOT ${TARGET_FILENAME} STREQUAL "Info.plist")\r
+      # Copy the file as-is.\r
+      add_custom_command(\r
+        TARGET ${target}\r
+        POST_BUILD\r
+        COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_PATH}" "${TARGET_PATH}"\r
+        VERBATIM\r
+        )\r
+    endif()\r
+  endforeach()\r
+endmacro()\r
+\r
+endif(OS_MACOSX)\r
+\r
+\r
+#\r
+# Windows macros.\r
+#\r
+\r
+if(OS_WINDOWS)\r
+\r
+# Add custom manifest files to an executable target.\r
+macro(ADD_WINDOWS_MANIFEST manifest_path target extension)\r
+  add_custom_command(\r
+    TARGET ${target}\r
+    POST_BUILD\r
+    COMMAND "mt.exe" -nologo\r
+            -manifest \"${manifest_path}/${target}.${extension}.manifest\" \"${manifest_path}/compatibility.manifest\"\r
+            -outputresource:"${CEF_TARGET_OUT_DIR}/${target}.${extension}"\;\#1\r
+    COMMENT "Adding manifest..."\r
+    )\r
+endmacro()\r
+\r
+endif(OS_WINDOWS)\r
+\r
+\r
+#\r
+# Target configuration macros.\r
+#\r
+\r
+# Add a logical target that can be used to link the specified libraries into an\r
+# executable target.\r
+macro(ADD_LOGICAL_TARGET target debug_lib release_lib)\r
+  add_library(${target} ${CEF_LIBTYPE} IMPORTED)\r
+  set_target_properties(${target} PROPERTIES\r
+    IMPORTED_LOCATION "${release_lib}"\r
+    IMPORTED_LOCATION_DEBUG "${debug_lib}"\r
+    IMPORTED_LOCATION_RELEASE "${release_lib}"\r
+    )\r
+endmacro()\r
+\r
+# Set common target properties. Use SET_LIBRARY_TARGET_PROPERTIES() or\r
+# SET_EXECUTABLE_TARGET_PROPERTIES() instead of calling this macro directly.\r
+macro(SET_COMMON_TARGET_PROPERTIES target)\r
+  # Compile flags.\r
+  target_compile_options(${target} PUBLIC ${CEF_COMPILER_FLAGS} ${CEF_CXX_COMPILER_FLAGS})\r
+  target_compile_options(${target} PUBLIC $<$<CONFIG:Debug>:${CEF_COMPILER_FLAGS_DEBUG} ${CEF_CXX_COMPILER_FLAGS_DEBUG}>)\r
+  target_compile_options(${target} PUBLIC $<$<CONFIG:Release>:${CEF_COMPILER_FLAGS_RELEASE} ${CEF_CXX_COMPILER_FLAGS_RELEASE}>)\r
+\r
+  # Compile definitions.\r
+  target_compile_definitions(${target} PUBLIC ${CEF_COMPILER_DEFINES})\r
+  target_compile_definitions(${target} PUBLIC $<$<CONFIG:Debug>:${CEF_COMPILER_DEFINES_DEBUG}>)\r
+  target_compile_definitions(${target} PUBLIC $<$<CONFIG:Release>:${CEF_COMPILER_DEFINES_RELEASE}>)\r
+\r
+  # Include directories.\r
+  target_include_directories(${target} PUBLIC ${CEF_INCLUDE_PATH})\r
+\r
+  # Linker flags.\r
+  if(CEF_LINKER_FLAGS)\r
+    string(REPLACE ";" " " _flags_str "${CEF_LINKER_FLAGS}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS ${_flags_str})\r
+  endif()\r
+  if(CEF_LINKER_FLAGS_DEBUG)\r
+    string(REPLACE ";" " " _flags_str "${CEF_LINKER_FLAGS_DEBUG}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS_DEBUG ${_flags_str})\r
+  endif()\r
+  if(CEF_LINKER_FLAGS_RELEASE)\r
+    string(REPLACE ";" " " _flags_str "${CEF_LINKER_FLAGS_RELEASE}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS_RELEASE ${_flags_str})\r
+  endif()\r
+\r
+  if(OS_MACOSX)\r
+    # Set Xcode target properties.\r
+    set_target_properties(${target} PROPERTIES\r
+      XCODE_ATTRIBUTE_ALWAYS_SEARCH_USER_PATHS                    NO\r
+      XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD                 "gnu++11"   # -std=gnu++11\r
+      XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME                     NO          # -fno-objc-link-runtime\r
+      XCODE_ATTRIBUTE_CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS  YES         # -Wobjc-missing-property-synthesis\r
+      XCODE_ATTRIBUTE_COPY_PHASE_STRIP                            NO\r
+      XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING[variant=Release]        YES         # -Wl,-dead_strip\r
+      XCODE_ATTRIBUTE_GCC_C_LANGUAGE_STANDARD                     "c99"       # -std=c99\r
+      XCODE_ATTRIBUTE_GCC_CW_ASM_SYNTAX                           NO          # No -fasm-blocks\r
+      XCODE_ATTRIBUTE_GCC_DYNAMIC_NO_PIC                          NO\r
+      XCODE_ATTRIBUTE_GCC_ENABLE_CPP_EXCEPTIONS                   NO          # -fno-exceptions\r
+      XCODE_ATTRIBUTE_GCC_ENABLE_CPP_RTTI                         NO          # -fno-rtti\r
+      XCODE_ATTRIBUTE_GCC_ENABLE_PASCAL_STRINGS                   NO          # No -mpascal-strings\r
+      XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN              YES         # -fvisibility-inlines-hidden\r
+      XCODE_ATTRIBUTE_GCC_OBJC_CALL_CXX_CDTORS                    YES         # -fobjc-call-cxx-cdtors\r
+      XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN                  YES         # -fvisibility=hidden\r
+      XCODE_ATTRIBUTE_GCC_THREADSAFE_STATICS                      NO          # -fno-threadsafe-statics\r
+      XCODE_ATTRIBUTE_GCC_TREAT_WARNINGS_AS_ERRORS                YES         # -Werror\r
+      XCODE_ATTRIBUTE_GCC_VERSION                                 "com.apple.compilers.llvm.clang.1_0"\r
+      XCODE_ATTRIBUTE_GCC_WARN_ABOUT_MISSING_NEWLINE              YES         # -Wnewline-eof\r
+      XCODE_ATTRIBUTE_USE_HEADERMAP                               NO\r
+      OSX_ARCHITECTURES_DEBUG                                     "${CMAKE_OSX_ARCHITECTURES}"\r
+      OSX_ARCHITECTURES_RELEASE                                   "${CMAKE_OSX_ARCHITECTURES}"\r
+      )\r
+  endif()\r
+endmacro()\r
+\r
+# Set library-specific properties.\r
+macro(SET_LIBRARY_TARGET_PROPERTIES target)\r
+  SET_COMMON_TARGET_PROPERTIES(${target})\r
+\r
+  # Shared library linker flags.\r
+  if(CEF_SHARED_LINKER_FLAGS)\r
+    string(REPLACE ";" " " _flags_str "${CEF_SHARED_LINKER_FLAGS}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS ${_flags_str})\r
+  endif()\r
+  if(CEF_SHARED_LINKER_FLAGS_DEBUG)\r
+    string(REPLACE ";" " " _flags_str "${CEF_SHARED_LINKER_FLAGS_DEBUG}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS_DEBUG ${_flags_str})\r
+  endif()\r
+  if(CEF_SHARED_LINKER_FLAGS_RELEASE)\r
+    string(REPLACE ";" " " _flags_str "${CEF_SHARED_LINKER_FLAGS_RELEASE}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS_RELEASE ${_flags_str})\r
+  endif()\r
+endmacro()\r
+\r
+# Set executable-specific properties.\r
+macro(SET_EXECUTABLE_TARGET_PROPERTIES target)\r
+  SET_COMMON_TARGET_PROPERTIES(${target})\r
+\r
+  # Executable linker flags.\r
+  if(CEF_EXE_LINKER_FLAGS)\r
+    string(REPLACE ";" " " _flags_str "${CEF_EXE_LINKER_FLAGS}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS ${_flags_str})\r
+  endif()\r
+  if(CEF_EXE_LINKER_FLAGS_DEBUG)\r
+    string(REPLACE ";" " " _flags_str "${CEF_EXE_LINKER_FLAGS_DEBUG}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS_DEBUG ${_flags_str})\r
+  endif()\r
+  if(CEF_EXE_LINKER_FLAGS_RELEASE)\r
+    string(REPLACE ";" " " _flags_str "${CEF_EXE_LINKER_FLAGS_RELEASE}")\r
+    set_property(TARGET ${target} PROPERTY LINK_FLAGS_RELEASE ${_flags_str})\r
+  endif()\r
+endmacro()\r