Handle default values for parameters annotated with `__OnlyRxIfImpl`
[hiphop-php.git] / CMake / HPHPSetup.cmake
blobeabcefdaf31506500ac9db68d4863c9c7df224ec
1 include(Options)
3 set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS Debug DebugOpt RelWithDebInfo)
5 set(HHVM_WHOLE_ARCHIVE_LIBRARIES
6     hphp_runtime_static
7     hphp_runtime_ext
8    )
10 set(HHVM_WRAP_SYMS)
12 set(HHVM_LINK_LIBRARIES
13   ${HHVM_WRAP_SYMS}
14   hphp_analysis
15   hphp_system
16   hphp_parser
17   hphp_zend
18   hphp_util
19   hphp_hhbbc
20   jit_sort
21   ppc64-asm
22   vixl neo)
24 if(ENABLE_FASTCGI)
25   LIST(APPEND HHVM_LINK_LIBRARIES hphp_thrift)
26   LIST(APPEND HHVM_LINK_LIBRARIES hphp_proxygen)
27   include(CheckCXXSourceCompiles)
28   CHECK_CXX_SOURCE_COMPILES("#include <pthread.h>
29   int main() {
30     return pthread_mutex_timedlock();
31   }" PTHREAD_TIMEDLOCK)
32   if (NOT PTHREAD_TIMEDLOCK)
33     add_definitions(-DTHRIFT_MUTEX_EMULATE_PTHREAD_TIMEDLOCK)
34   endif()
35 endif()
37 if(HHVM_DYNAMIC_EXTENSION_DIR)
38   add_definitions(-DHHVM_DYNAMIC_EXTENSION_DIR="${HHVM_DYNAMIC_EXTENSION_DIR}")
39 else()
40   if(UNIX)
41     add_definitions(-DHHVM_DYNAMIC_EXTENSION_DIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/hhvm/extensions")
42   endif()
43 endif()
45 # Look for the chrpath tool so we can warn if it's not there
46 SET(FOUND_CHRPATH OFF)
47 IF(UNIX AND NOT APPLE)
48     find_program(CHRPATH chrpath)
49     IF (NOT CHRPATH STREQUAL "CHRPATH-NOTFOUND")
50         SET(FOUND_CHRPATH ON)
51     endif()
52 ENDIF(UNIX AND NOT APPLE)
54 LIST(APPEND CMAKE_PREFIX_PATH "$ENV{CMAKE_PREFIX_PATH}")
56 if(APPLE)
57   if(EXISTS "/opt/local/var/macports/")
58     LIST (APPEND CMAKE_PREFIX_PATH "/opt/local")
59     LIST (APPEND CMAKE_LIBRARY_PATH "/opt/local/lib/x86_64")
60   endif()
61 endif()
63 include(HPHPCompiler)
64 include(HPHPFunctions)
65 include(HPHPFindLibs)
67 # Ubuntu 15.10 and 14.04 have been failing to include a dependency on jemalloc
68 # as a these linked flags force the dependency to be recorded
69 if (JEMALLOC_ENABLED AND LINUX)
70   LIST(APPEND HHVM_LINK_LIBRARIES -Wl,--no-as-needed ${JEMALLOC_LIB} -Wl,--as-needed)
71 endif()
73 if (HHVM_VERSION_OVERRIDE)
74   parse_version("HHVM_VERSION_" ${HHVM_VERSION_OVERRIDE})
75   add_definitions("-DHHVM_VERSION_OVERRIDE")
76   add_definitions("-DHHVM_VERSION_MAJOR=${HHVM_VERSION_MAJOR}")
77   add_definitions("-DHHVM_VERSION_MINOR=${HHVM_VERSION_MINOR}")
78   add_definitions("-DHHVM_VERSION_PATCH=${HHVM_VERSION_PATCH}")
79   add_definitions("-DHHVM_VERSION_SUFFIX=\"${HHVM_VERSION_SUFFIX}\"")
80 endif()
82 add_definitions(-D_REENTRANT=1 -D_PTHREADS=1 -D__STDC_FORMAT_MACROS)
84 if (LINUX)
85   add_definitions(-D_GNU_SOURCE)
86 endif()
88 if(MSVC)
89   add_definitions(-DGLOG_NO_ABBREVIATED_SEVERITIES)
90   add_definitions(-DWIN32_LEAN_AND_MEAN)
91 endif()
93 if(CMAKE_CONFIGURATION_TYPES)
94   if(NOT MSVC)
95     message(FATAL_ERROR "Adding the appropriate defines for multi-config targets using anything other than MSVC is not yet supported!")
96   endif()
97   foreach(flag_var
98       CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
99       CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
100     set(${flag_var} "${${flag_var}} /D NDEBUG")
101   endforeach()
102 elseif(${CMAKE_BUILD_TYPE} MATCHES "Debug" OR
103        ${CMAKE_BUILD_TYPE} MATCHES "DebugOpt")
104   message("Generating DEBUG build")
105 else()
106   add_definitions(-DNDEBUG)
107   message("Generating Release build")
108 endif()
110 if(ALWAYS_ASSERT)
111   add_definitions(-DALWAYS_ASSERT=1)
112 endif()
114 if(APPLE OR FREEBSD OR MSVC)
115   add_definitions(-DSKIP_USER_CHANGE=1)
116 endif()
118 if(ENABLE_TRACE)
119     add_definitions(-DUSE_TRACE=1)
120 endif()
122 if(APPLE)
123   # We have to be a little more permissive in some cases.
124   add_definitions(-fpermissive)
126   # Skip deprecation warnings in OpenSSL.
127   add_definitions(-DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_6)
129   # Enable weak linking
130   add_definitions(-DMACOSX_DEPLOYMENT_TARGET=10.6)
131 endif()
133 if(ENABLE_FASTCGI)
134   add_definitions(-DENABLE_FASTCGI=1)
135 endif ()
137 if(DISABLE_HARDWARE_COUNTERS OR NOT LINUX)
138   add_definitions(-DNO_HARDWARE_COUNTERS=1)
139 endif ()
141 # enable the OSS options if we have any
142 add_definitions(-DHPHP_OSS=1)
144 # later versions of binutils don't play well without automake
145 add_definitions(-DPACKAGE=hhvm -DPACKAGE_VERSION=Release)
147 add_definitions(-DDEFAULT_CONFIG_DIR="${DEFAULT_CONFIG_DIR}")
149 add_definitions(-DHAVE_INTTYPES_H)
151 include_directories(${TP_DIR})
152 if (THIRD_PARTY_INCLUDE_PATHS)
153   include_directories(${THIRD_PARTY_INCLUDE_PATHS})
154   add_definitions(${THIRD_PARTY_DEFINITIONS})
155   include_directories(${HPHP_HOME}/hphp)
156   include_directories(${HPHP_HOME})
157 endif()