Skip to content

Commit b7dcf19

Browse files
Merge branch 'master' of github.com:CopernicaMarketingSoftware/PHP-CPP
2 parents a60b979 + ea0989a commit b7dcf19

File tree

2 files changed

+266
-1
lines changed

2 files changed

+266
-1
lines changed

CMakeLists.txt

Lines changed: 265 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,265 @@
1+
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
2+
3+
PROJECT(phpcpp)
4+
5+
# Use CMake File with following options
6+
# PHPCPP_COMPILE_TS Set flag if PHP was compiled with thread safe
7+
# PHPCPP_MSVCRT_STATIC Set flag if you want to compile the MSVC runtime as a static library
8+
# PHPCPP_ARCH Set to "x86_64" if architecture and PHP was compiled under x64 or "x86" for 32 bit
9+
# PHPCPP_PHP_PATH The path to PHP sources
10+
11+
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR})
12+
13+
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
14+
ADD_DEFINITIONS(-DZEND_DEBUG=1)
15+
ELSE()
16+
ADD_DEFINITIONS(-DZEND_DEBUG=0)
17+
ENDIF()
18+
19+
IF (PHPCPP_COMPILE_TS)
20+
ADD_DEFINITIONS(-DZTS)
21+
ENDIF()
22+
23+
ADD_DEFINITIONS(-D_MSC_STDINT_H_)
24+
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
25+
ADD_DEFINITIONS(-DBUILDING_PHPCPP)
26+
ADD_DEFINITIONS(-DZEND_WIN32_KEEP_INLINE)
27+
28+
IF (MSVC)
29+
# Should compile MSVC runtime static or dll
30+
IF (PHPCPP_MSVCRT_STATIC)
31+
MESSAGE("Compile PHPCPP with static runtime")
32+
33+
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
34+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
35+
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
36+
37+
ELSE()
38+
MESSAGE("Compile PHPCPP with dynamic runtime")
39+
40+
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
41+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
42+
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD")
43+
44+
ENDIF()
45+
46+
IF (${PHPCPP_ARCH} STREQUAL "x86_64")
47+
ADD_DEFINITIONS(-DPHP_WIN32 -DZEND_WIN32)
48+
ELSE()
49+
ADD_DEFINITIONS(-DPHP_WIN32 -DZEND_WIN32 -D_USE_32BIT_TIME_T)
50+
ENDIF()
51+
52+
SET(ADDITIONAL_COMPILER_FLAGS "/W3")
53+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADDITIONAL_COMPILER_FLAGS}")
54+
ENDIF ()
55+
56+
INCLUDE_DIRECTORIES(
57+
"${PHPCPP_PHP_PATH}/"
58+
"${PHPCPP_PHP_PATH}/main"
59+
"${PHPCPP_PHP_PATH}/Zend"
60+
"${PHPCPP_PHP_PATH}/TSRM"
61+
"${PHPCPP_PHP_PATH}/ext"
62+
"${PHPCPP_PHP_PATH}/build/main"
63+
"${PHPCPP_PHP_PATH}/build/Zend"
64+
)
65+
SET(PHP_LIBS "php")
66+
SET(PHP_LIB_PATH "")
67+
68+
IF (${PHPCPP_ARCH} STREQUAL "x86_64")
69+
SET(PHP_LIB_PATH "x64/")
70+
ENDIF()
71+
72+
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
73+
IF (PHPCPP_COMPILE_TS)
74+
SET(PHP_LIBS ${PHP_LIBS} "php7ts_debug")
75+
SET(PHP_LIB_PATH "${PHP_LIB_PATH}Debug_TS")
76+
ELSE()
77+
SET(PHP_LIBS ${PHP_LIBS} "php7_debug")
78+
SET(PHP_LIB_PATH "${PHP_LIB_PATH}Debug")
79+
ENDIF()
80+
ELSE()
81+
IF (PHPCPP_COMPILE_TS)
82+
SET(PHP_LIBS ${PHP_LIBS} "php7ts")
83+
SET(PHP_LIB_PATH "${PHP_LIB_PATH}Release_TS")
84+
ELSE()
85+
SET(PHP_LIBS ${PHP_LIBS} "php7")
86+
SET(PHP_LIB_PATH "${PHP_LIB_PATH}Release")
87+
ENDIF()
88+
ENDIF()
89+
90+
SET(PHPCPP_COMMON_SOURCES
91+
common/modifiers.cpp
92+
common/streambuf.cpp
93+
)
94+
95+
SET(PHPCPP_COMMON_HEADERS
96+
common/extensionbase.h
97+
common/includes.h
98+
common/streambuf.h
99+
)
100+
101+
ADD_LIBRARY(phpcpp-common STATIC
102+
${PHPCPP_COMMON_HEADERS}
103+
${PHPCPP_COMMON_SOURCES}
104+
)
105+
106+
set_target_properties(phpcpp-common
107+
PROPERTIES
108+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
109+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
110+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
111+
)
112+
113+
SET(PHPCPP_ZEND_SOURCES
114+
zend/base.cpp
115+
zend/callable.cpp
116+
zend/classbase.cpp
117+
zend/classimpl.cpp
118+
zend/constant.cpp
119+
zend/constantfuncs.cpp
120+
zend/eval.cpp
121+
zend/exception_handler.cpp
122+
zend/exists.cpp
123+
zend/extension.cpp
124+
zend/extensionimpl.cpp
125+
zend/fatalerror.cpp
126+
zend/file.cpp
127+
zend/function.cpp
128+
zend/functor.cpp
129+
zend/global.cpp
130+
zend/globals.cpp
131+
zend/hashmember.cpp
132+
zend/ini.cpp
133+
zend/inivalue.cpp
134+
zend/iteratorimpl.cpp
135+
zend/members.cpp
136+
zend/module.cpp
137+
zend/namespace.cpp
138+
zend/object.cpp
139+
zend/sapi.cpp
140+
zend/script.cpp
141+
zend/streambuf.cpp
142+
zend/streams.cpp
143+
zend/super.cpp
144+
zend/value.cpp
145+
zend/valueiterator.cpp
146+
zend/zendcallable.cpp
147+
zend/zval.cpp
148+
)
149+
150+
SET(PHPCPP_ZEND_HEADERS
151+
zend/arithmetic.h
152+
zend/boolmember.h
153+
zend/callable.h
154+
zend/classimpl.h
155+
zend/compileroptions.h
156+
zend/constantimpl.h
157+
zend/delayedfree.h
158+
zend/executestate.h
159+
zend/extensionimpl.h
160+
zend/extensionpath.h
161+
zend/floatmember.h
162+
zend/functor.h
163+
zend/hashiterator.h
164+
zend/includes.h
165+
zend/init.h
166+
zend/invaliditerator.h
167+
zend/iteratorimpl.h
168+
zend/lowercase.h
169+
zend/member.h
170+
zend/method.h
171+
zend/module.h
172+
zend/nativefunction.h
173+
zend/notimplemented.h
174+
zend/nullmember.h
175+
zend/numericmember.h
176+
zend/objectimpl.h
177+
zend/opcodes.h
178+
zend/origexception.h
179+
zend/parametersimpl.h
180+
zend/property.h
181+
zend/string.h
182+
zend/stringmember.h
183+
zend/symbol.h
184+
zend/symbol.h
185+
zend/traverseiterator.h
186+
zend/valueiteratorimpl.h
187+
)
188+
189+
SET(PHPCPP_HEADERS_INCLUDE
190+
include/argument.h
191+
include/array.h
192+
include/arrayaccess.h
193+
include/base.h
194+
include/byref.h
195+
include/byval.h
196+
include/call.h
197+
include/class.h
198+
include/classbase.h
199+
include/classtype.h
200+
include/constant.h
201+
include/countable.h
202+
include/deprecated.h
203+
include/errors.h
204+
include/exception.h
205+
include/extension.h
206+
include/fatalerror.h
207+
include/file.h
208+
include/function.h
209+
include/global.h
210+
include/globals.h
211+
include/hashmember.h
212+
include/hashparent.h
213+
include/ini.h
214+
include/inivalue.h
215+
include/interface.h
216+
include/iterator.h
217+
include/modifiers.h
218+
include/namespace.h
219+
include/noexcept.h
220+
include/object.h
221+
include/parameters.h
222+
include/platform.h
223+
include/script.h
224+
include/serializable.h
225+
include/streams.h
226+
include/super.h
227+
include/thread_local.h
228+
include/traversable.h
229+
include/type.h
230+
include/value.h
231+
include/valueiterator.h
232+
include/version.h
233+
include/visibility.h
234+
include/zendcallable.h
235+
include/zval.h
236+
)
237+
238+
LINK_DIRECTORIES(${PHP_LIB_PATH})
239+
240+
IF (PHPCPP_SHARED)
241+
ADD_LIBRARY(phpcpp SHARED
242+
${PHPCPP_HEADERS_INCLUDE}
243+
${PHPCPP_ZEND_HEADERS}
244+
${PHPCPP_ZEND_SOURCES}
245+
phpcpp.h
246+
)
247+
248+
TARGET_LINK_LIBRARIES(phpcpp phpcpp-common ${PHP_LIBS})
249+
ELSE()
250+
ADD_LIBRARY(phpcpp STATIC
251+
${PHPCPP_HEADERS_INCLUDE}
252+
${PHPCPP_ZEND_HEADERS}
253+
${PHPCPP_ZEND_SOURCES}
254+
phpcpp.h
255+
)
256+
257+
TARGET_LINK_LIBRARIES(phpcpp STATIC phpcpp-common ${PHP_LIBS})
258+
ENDIF()
259+
260+
SET_TARGET_PROPERTIES(phpcpp
261+
PROPERTIES
262+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
263+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
264+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
265+
)

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ install:
230230
${LN} ${INSTALL_LIB}/${PHP_STATIC_LIBRARY} ${INSTALL_LIB}/libphpcpp.a; \
231231
fi
232232
if `which ldconfig`; then \
233-
sudo ldconfig; \
233+
ldconfig; \
234234
fi
235235

236236
uninstall:

0 commit comments

Comments
 (0)