1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7 FATAL_ERROR)
3 # This needs to be done before any languages are enabled or
4 # projects are created.
5 INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/CMake/VisualStudioToolset.cmake")
8 SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
9 include_directories(${CMAKE_CURRENT_BINARY_DIR})
12 SET(PACKAGE_NAME "hhvm")
13 SET(PACKAGE_VERSION "3.16.0-dev")
14 SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
15 SET(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
16 SET(PACKAGE_BUGREPORT "https://github.com/facebook/hhvm/issues")
18 PROJECT(${PACKAGE_NAME} C CXX ASM)
20 enable_language(ASM_MASM)
23 MARK_AS_ADVANCED(CLEAR CMAKE_INSTALL_PREFIX)
25 # CMake really likes finding libraries inside OS X frameworks. This can
26 # create super unexpected results, such as the LDAP framework, where the
27 # ldap.h header there just consists of "#include <ldap.h>" -- obviously
28 # assuming /usr/include appears on the include path before that framework
29 # (which wasn't really supposed to be on the include path at all). This
30 # leads to a hilarious recursive include and general fireworks. Instead,
31 # tell CMake to search frameworks *last*, if it doesn't find something in
32 # /usr (or MacPorts/Homebrew).
33 SET(CMAKE_FIND_FRAMEWORK "LAST")
34 MARK_AS_ADVANCED(CMAKE_OSX_ARCHITECTURES
35 CMAKE_OSX_DEPLOYMENT_TARGET
39 # Check architecture OS
40 IF(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
41 MESSAGE(FATAL_ERROR "HHVM requires a 64bit OS")
44 # Enable ccache if present and not already enabled system wide.
45 option(SKIP_CCACHE "Skip detecting/enabling ccache - no effect if ccache enabled system wide" FALSE)
47 find_program(CCACHE_FOUND ccache)
49 if (NOT ("${CMAKE_CXX_COMPILER} ${CMAKE_C_COMPILER}" MATCHES ".*ccache.*"))
50 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_FOUND})
51 message(STATUS "Found ccache: ${CCACHE_FOUND} - enabling ccache as compiler wrapper")
53 message(STATUS "Found ccache - ccache already in use as C and/or CXX compiler wrapper")
56 endif(NOT SKIP_CCACHE)
59 IF(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third-party/CMakeLists.txt")
60 MESSAGE(FATAL_ERROR "third-party/CMakeLists.txt missing. "
61 "Try updating your submodule with:
63 git submodule update --init --recursive
67 INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/CMake/HPHPFunctions.cmake")
68 INCLUDE(CheckFunctionExists)
70 SET(HPHP_HOME ${CMAKE_CURRENT_SOURCE_DIR})
71 SET(TP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third-party")
72 SET(TP_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/third-party")
76 ADD_SUBDIRECTORY(third-party)
77 ADD_SUBDIRECTORY(hphp)
79 # use GNU install dirs (e.g. lib64 instead of lib)
80 INCLUDE(GNUInstallDirs)
83 FILE(GLOB HHVM_CMAKE_FILES "CMake/*.cmake")
85 FILES ${HHVM_CMAKE_FILES}
86 DESTINATION "${CMAKE_INSTALL_LIBDIR}/hhvm/CMake"