Add Let to AST
[hiphop-php.git] / CMake / HPHPSetup.cmake
blob2f345eca85938f548882a903fbf22fa230afc135
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 if (LINUX)
11   set(HHVM_WRAP_SYMS -Wl,--wrap=pthread_create -Wl,--wrap=pthread_exit -Wl,--wrap=pthread_join)
12 else ()
13   set(HHVM_WRAP_SYMS)
14 endif ()
16 set(HHVM_LINK_LIBRARIES
17   ${HHVM_WRAP_SYMS}
18   hphp_analysis
19   hphp_facts_parser
20   hphp_system
21   hphp_parser
22   hphp_zend
23   hphp_util
24   hphp_hhbbc
25   jit_sort
26   ppc64-asm
27   vixl neo)
29 if(ENABLE_FASTCGI)
30   LIST(APPEND HHVM_LINK_LIBRARIES hphp_thrift)
31   LIST(APPEND HHVM_LINK_LIBRARIES hphp_proxygen)
32   include(CheckCXXSourceCompiles)
33   CHECK_CXX_SOURCE_COMPILES("#include <pthread.h>
34   int main() {
35     return pthread_mutex_timedlock();
36   }" PTHREAD_TIMEDLOCK)
37   if (NOT PTHREAD_TIMEDLOCK)
38     add_definitions(-DTHRIFT_MUTEX_EMULATE_PTHREAD_TIMEDLOCK)
39   endif()
40 endif()
42 if(HHVM_DYNAMIC_EXTENSION_DIR)
43   add_definitions(-DHHVM_DYNAMIC_EXTENSION_DIR="${HHVM_DYNAMIC_EXTENSION_DIR}")
44 else()
45   if(UNIX)
46     add_definitions(-DHHVM_DYNAMIC_EXTENSION_DIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/hhvm/extensions")
47   endif()
48 endif()
50 # Look for the chrpath tool so we can warn if it's not there
51 SET(FOUND_CHRPATH OFF)
52 IF(UNIX AND NOT APPLE)
53     find_program(CHRPATH chrpath)
54     IF (NOT CHRPATH STREQUAL "CHRPATH-NOTFOUND")
55         SET(FOUND_CHRPATH ON)
56     endif()
57 ENDIF(UNIX AND NOT APPLE)
59 LIST(APPEND CMAKE_PREFIX_PATH "$ENV{CMAKE_PREFIX_PATH}")
61 if(APPLE)
62   if(EXISTS "/opt/local/var/macports/")
63     LIST (APPEND CMAKE_PREFIX_PATH "/opt/local")
64     LIST (APPEND CMAKE_LIBRARY_PATH "/opt/local/lib/x86_64")
65   endif()
66 endif()
68 include(HPHPCompiler)
69 include(HPHPFunctions)
70 include(HPHPFindLibs)
72 # Ubuntu 15.10 and 14.04 have been failing to include a dependency on jemalloc
73 # as a these linked flags force the dependency to be recorded
74 if (JEMALLOC_ENABLED AND LINUX)
75   LIST(APPEND HHVM_LINK_LIBRARIES -Wl,--no-as-needed ${JEMALLOC_LIB} -Wl,--as-needed)
76 endif()
78 if (HHVM_VERSION_OVERRIDE)
79   parse_version("HHVM_VERSION_" ${HHVM_VERSION_OVERRIDE})
80   add_definitions("-DHHVM_VERSION_OVERRIDE")
81   add_definitions("-DHHVM_VERSION_MAJOR=${HHVM_VERSION_MAJOR}")
82   add_definitions("-DHHVM_VERSION_MINOR=${HHVM_VERSION_MINOR}")
83   add_definitions("-DHHVM_VERSION_PATCH=${HHVM_VERSION_PATCH}")
84   add_definitions("-DHHVM_VERSION_SUFFIX=\"${HHVM_VERSION_SUFFIX}\"")
85 endif()
87 add_definitions(-D_REENTRANT=1 -D_PTHREADS=1 -D__STDC_FORMAT_MACROS)
89 if (LINUX)
90   add_definitions(-D_GNU_SOURCE)
91 endif()
93 if(MSVC)
94   add_definitions(-DGLOG_NO_ABBREVIATED_SEVERITIES)
95   add_definitions(-DWIN32_LEAN_AND_MEAN)
96 endif()
98 if(CMAKE_CONFIGURATION_TYPES)
99   if(NOT MSVC)
100     message(FATAL_ERROR "Adding the appropriate defines for multi-config targets using anything other than MSVC is not yet supported!")
101   endif()
102   if (MSVC_NO_ASSERT_IN_DEBUG)
103     set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /D RELEASE=1 /D NDEBUG")
104     set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D RELEASE=1 /D NDEBUG")
105   else()
106     set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /D DEBUG")
107     set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D DEBUG")
108   endif()
109   foreach(flag_var
110       CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
111       CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
112     set(${flag_var} "${${flag_var}} /D RELEASE=1 /D NDEBUG")
113   endforeach()
114 elseif(${CMAKE_BUILD_TYPE} MATCHES "Debug")
115   add_definitions(-DDEBUG)
116   message("Generating DEBUG build")
117 else()
118   add_definitions(-DRELEASE=1)
119   add_definitions(-DNDEBUG)
120   message("Generating Release build")
121 endif()
123 if(ALWAYS_ASSERT)
124   add_definitions(-DALWAYS_ASSERT=1)
125 endif()
127 if(APPLE OR FREEBSD OR MSVC)
128   add_definitions(-DSKIP_USER_CHANGE=1)
129 endif()
131 if(ENABLE_TRACE)
132     add_definitions(-DUSE_TRACE=1)
133 endif()
135 if(APPLE)
136   # We have to be a little more permissive in some cases.
137   add_definitions(-fpermissive)
139   # Skip deprecation warnings in OpenSSL.
140   add_definitions(-DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_6)
142   # Enable weak linking
143   add_definitions(-DMACOSX_DEPLOYMENT_TARGET=10.6)
144 endif()
146 if(ENABLE_FASTCGI)
147   add_definitions(-DENABLE_FASTCGI=1)
148 endif ()
150 if(DISABLE_HARDWARE_COUNTERS OR NOT LINUX)
151   add_definitions(-DNO_HARDWARE_COUNTERS=1)
152 endif ()
154 # enable the OSS options if we have any
155 add_definitions(-DHPHP_OSS=1)
157 # later versions of binutils don't play well without automake
158 add_definitions(-DPACKAGE=hhvm -DPACKAGE_VERSION=Release)
160 add_definitions(-DDEFAULT_CONFIG_DIR="${DEFAULT_CONFIG_DIR}")
162 add_definitions(-DHAVE_INTTYPES_H)
164 include_directories(${TP_DIR})
165 if (THIRD_PARTY_INCLUDE_PATHS)
166   include_directories(${THIRD_PARTY_INCLUDE_PATHS})
167   add_definitions(${THIRD_PARTY_DEFINITIONS})
168   include_directories(${HPHP_HOME}/hphp)
169   include_directories(${HPHP_HOME})
170 endif()