1CMAKE_MINIMUM_REQUIRED(VERSION 2.8) 2PROJECT(WebKit) 3 4# Set a default build type if and only if user did not define one as command 5# line options and he did not give custom CFLAGS or CXXFLAGS. Otherwise, flags 6# from default build type would overwrite user-defined ones. 7IF (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_C_FLAGS AND NOT CMAKE_CXX_FLAGS) 8 SET(CMAKE_BUILD_TYPE Release) 9ENDIF () 10SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") 11 12SET(JAVASCRIPTCORE_DIR "${CMAKE_SOURCE_DIR}/JavaScriptCore") 13SET(WEBCORE_DIR "${CMAKE_SOURCE_DIR}/WebCore") 14SET(WEBKIT_DIR "${CMAKE_SOURCE_DIR}/WebKit") 15SET(TOOLS_DIR "${CMAKE_SOURCE_DIR}/../Tools") 16SET(DERIVED_SOURCES_WEBCORE_DIR "${CMAKE_BINARY_DIR}/DerivedSources/WebCore") 17SET(DERIVED_SOURCES_JAVASCRIPTCORE_DIR "${CMAKE_BINARY_DIR}/DerivedSources/JavaScriptCore") 18 19INCLUDE(WebKitMacros) 20INCLUDE(WebKitFS) 21INCLUDE(WebKitHelpers) 22INCLUDE(WebKitFeatures) 23 24# ----------------------------------------------------------------------------- 25# Determine which port will be built 26# ----------------------------------------------------------------------------- 27SET(ALL_PORTS Efl WinCE) 28SET(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_PORTS})") 29 30LIST(FIND ALL_PORTS ${PORT} RET) 31IF (${RET} EQUAL -1) 32 MESSAGE(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") 33ENDIF () 34 35# ----------------------------------------------------------------------------- 36# Find common packages (used by all ports) 37# ----------------------------------------------------------------------------- 38FIND_PACKAGE(BISON REQUIRED) 39FIND_PACKAGE(FLEX REQUIRED) 40FIND_PACKAGE(Gperf REQUIRED) 41FIND_PACKAGE(Perl REQUIRED) 42FIND_PACKAGE(PythonInterp REQUIRED) 43 44# ----------------------------------------------------------------------------- 45# Determine the target processor 46# ----------------------------------------------------------------------------- 47STRING(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} LOWERCASE_CMAKE_SYSTEM_PROCESSOR) 48IF (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") 49 SET(WTF_CPU_ARM 1) 50ELSEIF (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)") 51 SET(WTF_CPU_X86_64 1) 52ELSEIF (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|x86)") 53 SET(WTF_CPU_X86 1) 54ELSE () 55 MESSAGE(FATAL_ERROR "Unknown CPU '${CMAKE_SYSTEM_PROCESSOR}'") 56ENDIF () 57 58# ----------------------------------------------------------------------------- 59# Determine the operating system 60# ----------------------------------------------------------------------------- 61IF (CMAKE_SYSTEM_NAME MATCHES "Linux") 62 SET(WTF_OS_UNIX 1) 63 64 IF (APPLE) 65 SET(WTF_OS_MAC_OS_X 1) 66 ENDIF () 67ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows") 68 SET(WTF_OS_WINDOWS 1) 69ELSE () 70 MESSAGE(FATAL_ERROR "Unknown OS '${CMAKE_SYSTEM_NAME}'") 71ENDIF () 72 73# ----------------------------------------------------------------------------- 74# Default target names (can be overrriden in Options${PORT}.cmake file) 75# ----------------------------------------------------------------------------- 76SET(JSC_EXECUTABLE_NAME JSC) 77SET(WTF_LIBRARY_NAME WTF) 78SET(JavaScriptCore_LIBRARY_NAME JavaScriptCore) 79SET(WebCore_LIBRARY_NAME WebCore) 80SET(WebKit_LIBRARY_NAME WebKit) 81 82# ----------------------------------------------------------------------------- 83# Default library types 84# ----------------------------------------------------------------------------- 85OPTION(SHARED_CORE "build WTF, JavaScriptCore and WebCore as shared libraries") 86 87IF (SHARED_CORE) 88 SET(WTF_LIBRARY_TYPE SHARED) 89 SET(JavaScriptCore_LIBRARY_TYPE SHARED) 90 SET(WebCore_LIBRARY_TYPE SHARED) 91ELSE () 92 SET(WTF_LIBRARY_TYPE STATIC) 93 SET(JavaScriptCore_LIBRARY_TYPE STATIC) 94 SET(WebCore_LIBRARY_TYPE STATIC) 95ENDIF () 96 97SET(WebKit_LIBRARY_TYPE SHARED) 98 99# ----------------------------------------------------------------------------- 100# Port-specific options 101# ----------------------------------------------------------------------------- 102INCLUDE(OptionsCommon) 103INCLUDE(Options${PORT}) 104 105# ----------------------------------------------------------------------------- 106# Define packaging 107# ----------------------------------------------------------------------------- 108INCLUDE(WebKitPackaging) 109 110# ----------------------------------------------------------------------------- 111# Add module directories 112# ----------------------------------------------------------------------------- 113ADD_SUBDIRECTORY(JavaScriptCore) 114ADD_SUBDIRECTORY(WebCore) 115ADD_SUBDIRECTORY(WebKit) 116 117# ----------------------------------------------------------------------------- 118# Add test browser if exists 119# ----------------------------------------------------------------------------- 120INCLUDE_IF_EXISTS(${TOOLS_DIR}/CMakeLists${PORT}.txt) 121 122# ----------------------------------------------------------------------------- 123# Set compiler flags for all targets 124# ----------------------------------------------------------------------------- 125WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WTF_LIBRARY_NAME}) 126WEBKIT_SET_EXTRA_COMPILER_FLAGS(${JavaScriptCore_LIBRARY_NAME}) 127WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WebCore_LIBRARY_NAME}) 128WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WebKit_LIBRARY_NAME}) 129 130# ----------------------------------------------------------------------------- 131# Create the configuration file 132# ----------------------------------------------------------------------------- 133CONFIGURE_FILE(cmakeconfig.h.cmake ${CMAKE_BINARY_DIR}/cmakeconfig.h @ONLY) 134 135# ----------------------------------------------------------------------------- 136# Prints a summary of all enabled/disabled features 137# ----------------------------------------------------------------------------- 138WEBKIT_PRINT_FEATURES() 139