Skip to content

Commit 5946d68

Browse files
committed
Sync ext/com_dotnet
1 parent 3adcbd2 commit 5946d68

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

cmake/ext/com_dotnet/CMakeLists.txt

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,116 @@ check_include_files(mscoree.h HAVE_MSCOREE_H)
9696
set(HAVE_COM_DOTNET TRUE)
9797

9898
configure_file(cmake/config.h.in config.h)
99+
100+
################################################################################
101+
# Prepare tests
102+
################################################################################
103+
104+
find_program(PHP_MIDL_EXECUTABLE midl)
105+
mark_as_advanced(PHP_MIDL_EXECUTABLE)
106+
107+
if(PHP_MIDL_EXECUTABLE)
108+
add_library(php_ext_com_dotnet_comtest MODULE)
109+
110+
target_sources(
111+
php_ext_com_dotnet_comtest
112+
PRIVATE
113+
tests/comtest/comtest.cpp
114+
tests/comtest/comtest.def
115+
${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest_i.c
116+
)
117+
118+
target_include_directories(
119+
php_ext_com_dotnet_comtest
120+
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/comtest
121+
)
122+
123+
target_compile_options(php_ext_com_dotnet_comtest PRIVATE /nologo)
124+
target_link_libraries(php_ext_com_dotnet_comtest PRIVATE oleaut32)
125+
126+
add_dependencies(php_ext_com_dotnet php_ext_com_dotnet_comtest)
127+
128+
add_custom_command(
129+
OUTPUT
130+
tests/comtest/comtest.h
131+
tests/comtest/comtest_i.c
132+
tests/comtest/comtest.tlb
133+
COMMAND
134+
${PHP_MIDL_EXECUTABLE}
135+
/nologo
136+
/h ${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest.h
137+
/iid ${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest_i.c
138+
/tlb ${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest.tlb
139+
${CMAKE_CURRENT_SOURCE_DIR}/tests/comtest/comtest.idl
140+
COMMENT "[ext/com_dotnet] Generating comtest library sources"
141+
VERBATIM
142+
COMMAND_EXPAND_LISTS
143+
)
144+
145+
add_custom_target(
146+
php_ext_com_dotnet_register_comtest
147+
COMMENT "[ext/com_dotnet] Adding keys to Windows Registry for tests"
148+
COMMAND
149+
reg add
150+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}"
151+
/f > NUL
152+
COMMAND
153+
reg add
154+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}\\1.0"
155+
/d "PHP COM Test Library"
156+
/f > NUL
157+
COMMAND
158+
reg add
159+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}\\1.0\\0"
160+
/f > NUL
161+
COMMAND
162+
reg add
163+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}\\1.0\\0\\win32"
164+
/d "${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest.tlb"
165+
/f > NUL
166+
COMMAND
167+
reg add
168+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}\\1.0\\0\\win64"
169+
/d "${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest.tlb"
170+
/f > NUL
171+
COMMAND
172+
reg add
173+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}\\1.0\\FLAGS"
174+
/d 0 /f > NUL
175+
COMMAND
176+
reg add
177+
"HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}\\1.0\\HELPDIR"
178+
/d "${CMAKE_CURRENT_BINARY_DIR}/tests/comtest"
179+
/f > NUL
180+
COMMAND
181+
reg add
182+
"HKCU\\SOFTWARE\\Classes\\CLSID\\{B13FE324-D595-44C7-97D7-82CE20EDF878}"
183+
/d "PHP COM Test Document"
184+
/f > NUL
185+
COMMAND
186+
reg add
187+
"HKCU\\SOFTWARE\\Classes\\CLSID\\{B13FE324-D595-44C7-97D7-82CE20EDF878}\\InprocServer32"
188+
/d "${CMAKE_CURRENT_BINARY_DIR}/tests/comtest/comtest.dll"
189+
/f > NUL
190+
COMMAND
191+
reg add
192+
"HKCU\\SOFTWARE\\Classes\\PHPTest.Document"
193+
/d "PHP COM Test Document"
194+
/f > NUL
195+
COMMAND
196+
reg add
197+
"HKCU\\SOFTWARE\\Classes\\PHPTest.Document\\CLSID"
198+
/d "{B13FE324-D595-44C7-97D7-82CE20EDF878}"
199+
/f > NUL
200+
VERBATIM
201+
)
202+
203+
add_custom_target(
204+
php_ext_com_dotnet_unregister_comtest
205+
COMMENT "[ext/com_dotnet] Removing keys from Windows Registry for tests"
206+
COMMAND reg delete "HKCU\\SOFTWARE\\Classes\\PHPTest.Document" /f > NUL
207+
COMMAND reg delete "HKCU\\SOFTWARE\\Classes\\CLSID\\{B13FE324-D595-44C7-97D7-82CE20EDF878}" /f > NUL
208+
COMMAND reg delete "HKCU\\SOFTWARE\\Classes\\TypeLib\\{AE8685BE-3758-4BDA-91DB-1459EBA24747}" /f > NUL
209+
VERBATIM
210+
)
211+
endif()

0 commit comments

Comments
 (0)