Skip to content

Commit 4bcc785

Browse files
committed
PugiXML 1.12.1 added
1 parent 6dc5644 commit 4bcc785

File tree

83 files changed

+28100
-14
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+28100
-14
lines changed

CMakeLists.txt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,14 @@ option(CEGUI_BUILD_GLM "Specifies whether to copy the GLM library headers.
176176
(Required to build the OpenGL renderer module for CEGUI)" TRUE)
177177

178178
option(CEGUI_BUILD_EXPAT "Specifies whether to build the expat XML parser library.
179-
(Required to build the CEGUIExpatParser module for CEGUI)" TRUE)
179+
(Required to build the CEGUIExpatParser module for CEGUI)" FALSE)
180180

181181
option(CEGUI_BUILD_XERCES "Specifies whether to build the xerces-c++ XML parser library.
182182
(Required to build the CEGUIXercesParser module for CEGUI)" FALSE)
183183

184+
option(CEGUI_BUILD_PUGIXML "Specifies whether to build the pugixml library.
185+
(Required to build the pugixml based XML parser module for CEGUI)" TRUE)
186+
184187
option(CEGUI_BUILD_TINYXML2 "Specifies whether to build the tinyxml2 library.
185188
(Required to build the tinyxml2 based XML parser module for CEGUI)" FALSE)
186189

@@ -321,6 +324,11 @@ if (CEGUI_BUILD_GLEW)
321324
set(glewDep glew)
322325
endif()
323326

327+
if (CEGUI_BUILD_PUGIXML)
328+
add_subdirectory(src/pugixml-1.12.1/CEGUI-BUILD)
329+
set(pugixmlDep pugixml)
330+
endif()
331+
324332
if (CEGUI_BUILD_TINYXML2)
325333
add_subdirectory(src/tinyxml2-9.0.0/CEGUI-BUILD)
326334
set(tinyxml2Dep tinyxml2)
@@ -365,7 +373,7 @@ add_custom_target(POST_BUILD_CLEANUP ALL DEPENDS
365373
${freetypeDep} ${fribidiDep} ${harfbuzzDep} ${raqmDep}
366374
${pcreDep} ${luaDep} ${expatDep} ${xercesDep} ${SILLYDep}
367375
${FreeImageDep} ${coronaDep} ${ILDep} ${ILUDep}
368-
${glewDep} ${tinyxml2Dep} ${minizipDep} ${toluappDep} ${glfwDep})
376+
${glewDep} ${pugixmlDep} ${tinyxml2Dep} ${minizipDep} ${toluappDep} ${glfwDep})
369377

370378
if (MSVC)
371379
add_custom_command(TARGET POST_BUILD_CLEANUP COMMAND ${CMAKE_COMMAND} -P "${CMAKE_SOURCE_DIR}/cmake/msvc_postbuild.cmake")

src/lua-5.1.4/CEGUI-BUILD/CMakeLists.txt

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,32 @@ set(DEPNAME lua)
33
file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "../src/*.c")
44
list(REMOVE_ITEM SOURCES ../src/lua.c ../src/luac.c ../src/print.c)
55

6-
set(HEADERS lua.h luaconf.h lualib.h lauxlib.h)
6+
set(HEADERS ../src/lua.h ../src/luaconf.h ../src/lualib.h ../src/lauxlib.h)
77

8-
include_directories(../src)
8+
foreach(_H_FILE ${HEADERS})
9+
# From CMake 3.20:
10+
#cmake_path(RELATIVE_PATH ${_H_FILE} "${CMAKE_CURRENT_SOURCE_DIR}/../src")
11+
get_filename_component(_H_FILE "${_H_FILE}" ABSOLUTE)
12+
file(RELATIVE_PATH _H_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../src" ${_H_FILE})
13+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../src/${_H_FILE}" "${CMAKE_BINARY_DIR}/dependencies/include/${_H_FILE}" COPYONLY)
14+
endforeach()
15+
16+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../COPYRIGHT" "${CMAKE_BINARY_DIR}/dependencies/lua-license.txt" COPYONLY)
917

1018
cegui_add_library(${DEPNAME} SOURCES NONE)
1119

1220
if (WIN32)
13-
set_target_properties(${DEPNAME} PROPERTIES
14-
DEFINE_SYMBOL LUA_BUILD_AS_DLL)
21+
set_target_properties(${DEPNAME} PROPERTIES DEFINE_SYMBOL LUA_BUILD_AS_DLL)
1522
endif()
1623

17-
foreach(_H_FILE ${HEADERS})
18-
add_custom_command(TARGET ${DEPNAME} POST_BUILD
19-
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/../src/${_H_FILE}"
20-
"${CMAKE_BINARY_DIR}/dependencies/include/${_H_FILE}")
21-
endforeach()
24+
get_property(ALL_TARGETS DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY BUILDSYSTEM_TARGETS)
25+
foreach(TARGET_NAME IN LISTS ALL_TARGETS)
2226

23-
add_custom_command(TARGET ${DEPNAME} POST_BUILD
24-
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/../COPYRIGHT"
25-
"${CMAKE_BINARY_DIR}/dependencies/lua-license.txt")
27+
target_include_directories(${TARGET_NAME}
28+
PUBLIC
29+
${CMAKE_BINARY_DIR}/dependencies/include
30+
PRIVATE
31+
../src
32+
)
2633

34+
endforeach()
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
set(DEPNAME pugixml)
2+
3+
set(PUGIXML_VERSION_MAJOR 1)
4+
set(PUGIXML_VERSION_MINOR 12)
5+
set(PUGIXML_VERSION_MICRO 1)
6+
set(PUGIXML_VERSION "${PUGIXML_VERSION_MAJOR}.${PUGIXML_VERSION_MINOR}.${PUGIXML_VERSION_MICRO}")
7+
8+
set(HEADERS ../src/pugiconfig.hpp ../src/pugixml.hpp)
9+
set(SOURCES ../src/pugixml.cpp)
10+
if (WIN32)
11+
list(APPEND SOURCES ../scripts/pugixml_dll.rc)
12+
endif()
13+
14+
foreach(_H_FILE ${HEADERS})
15+
# From CMake 3.20:
16+
#cmake_path(RELATIVE_PATH ${_H_FILE} "${CMAKE_CURRENT_SOURCE_DIR}/../src")
17+
get_filename_component(_H_FILE "${_H_FILE}" ABSOLUTE)
18+
file(RELATIVE_PATH _H_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../src" ${_H_FILE})
19+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../src/${_H_FILE}" "${CMAKE_BINARY_DIR}/dependencies/include/${_H_FILE}" COPYONLY)
20+
endforeach()
21+
22+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../LICENSE.md" "${CMAKE_BINARY_DIR}/dependencies/pugixml-license.txt" COPYONLY)
23+
24+
cegui_add_library(${DEPNAME} SOURCES HEADERS)
25+
26+
if (MSVC AND TARGET ${DEPNAME})
27+
target_compile_definitions(${DEPNAME} PUBLIC "PUGIXML_API=__declspec(dllexport)")
28+
endif()
29+
30+
get_property(ALL_TARGETS DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY BUILDSYSTEM_TARGETS)
31+
foreach(TARGET_NAME IN LISTS ALL_TARGETS)
32+
33+
target_include_directories(${TARGET_NAME}
34+
PUBLIC
35+
${CMAKE_BINARY_DIR}/dependencies/include
36+
PRIVATE
37+
../src
38+
)
39+
target_compile_definitions(${TARGET_NAME} PUBLIC "PUGIXML_NO_EXCEPTIONS" "PUGIXML_NO_XPATH")
40+
set_target_properties(${TARGET_NAME} PROPERTIES
41+
CXX_STANDARD 11
42+
CXX_STANDARD_REQUIRED ON
43+
POSITION_INDEPENDENT_CODE ON
44+
SOVERSION ${PUGIXML_VERSION_MAJOR}
45+
VERSION ${PUGIXML_VERSION})
46+
47+
endforeach()

src/pugixml-1.12.1/CMakeLists.txt

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
cmake_minimum_required(VERSION 3.4)
2+
project(pugixml VERSION 1.12 LANGUAGES CXX)
3+
4+
include(CMakePackageConfigHelpers)
5+
include(CMakeDependentOption)
6+
include(GNUInstallDirs)
7+
include(CTest)
8+
9+
cmake_dependent_option(PUGIXML_USE_VERSIONED_LIBDIR
10+
"Use a private subdirectory to install the headers and libraries" OFF
11+
"CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR" OFF)
12+
13+
cmake_dependent_option(PUGIXML_USE_POSTFIX
14+
"Use separate postfix for each configuration to make sure you can install multiple build outputs" OFF
15+
"CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR" OFF)
16+
17+
cmake_dependent_option(PUGIXML_STATIC_CRT
18+
"Use static MSVC RT libraries" OFF
19+
"MSVC" OFF)
20+
21+
cmake_dependent_option(PUGIXML_BUILD_TESTS
22+
"Build pugixml tests" OFF
23+
"BUILD_TESTING;CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR" OFF)
24+
25+
# Custom build defines
26+
set(PUGIXML_BUILD_DEFINES CACHE STRING "Build defines for custom options")
27+
separate_arguments(PUGIXML_BUILD_DEFINES)
28+
29+
# Technically not needed for this file. This is builtin CMAKE global variable.
30+
option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)
31+
32+
# Expose option to build PUGIXML as static as well when the global BUILD_SHARED_LIBS variable is set
33+
cmake_dependent_option(PUGIXML_BUILD_SHARED_AND_STATIC_LIBS
34+
"Build both shared and static libraries" OFF
35+
"BUILD_SHARED_LIBS" OFF)
36+
37+
# Expose options from the pugiconfig.hpp
38+
option(PUGIXML_WCHAR_MODE "Enable wchar_t mode" OFF)
39+
option(PUGIXML_COMPACT "Enable compact mode" OFF)
40+
41+
# Advanced options from pugiconfig.hpp
42+
option(PUGIXML_NO_XPATH "Disable XPath" OFF)
43+
option(PUGIXML_NO_STL "Disable STL" OFF)
44+
option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF)
45+
mark_as_advanced(PUGIXML_NO_XPATH PUGIXML_NO_STL PUGIXML_NO_EXCEPTIONS)
46+
47+
# Policy configuration
48+
if(POLICY CMP0091)
49+
cmake_policy(SET CMP0091 NEW) # Enables use of MSVC_RUNTIME_LIBRARY
50+
endif()
51+
52+
set(PUGIXML_PUBLIC_DEFINITIONS
53+
$<$<BOOL:${PUGIXML_WCHAR_MODE}>:PUGIXML_WCHAR_MODE>
54+
$<$<BOOL:${PUGIXML_COMPACT}>:PUGIXML_COMPACT>
55+
$<$<BOOL:${PUGIXML_NO_XPATH}>:PUGIXML_NO_XPATH>
56+
$<$<BOOL:${PUGIXML_NO_STL}>:PUGIXML_NO_STL>
57+
$<$<BOOL:${PUGIXML_NO_EXCEPTIONS}>:PUGIXML_NO_EXCEPTIONS>)
58+
59+
# This is used to backport a CMake 3.15 feature, but is also forwards compatible
60+
if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
61+
set(CMAKE_MSVC_RUNTIME_LIBRARY
62+
MultiThreaded$<$<CONFIG:Debug>:Debug>$<$<NOT:$<BOOL:${PUGIXML_STATIC_CRT}>>:DLL>)
63+
endif()
64+
65+
if (NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED)
66+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
67+
endif()
68+
69+
if (NOT DEFINED CMAKE_CXX_STANDARD)
70+
set(CMAKE_CXX_STANDARD 11)
71+
endif()
72+
73+
if (PUGIXML_USE_POSTFIX)
74+
set(CMAKE_RELWITHDEBINFO_POSTFIX _r)
75+
set(CMAKE_MINSIZEREL_POSTFIX _m)
76+
set(CMAKE_DEBUG_POSTFIX _d)
77+
endif()
78+
79+
if (CMAKE_VERSION VERSION_LESS 3.15)
80+
set(msvc-rt $<TARGET_PROPERTY:MSVC_RUNTIME_LIBRARY>)
81+
82+
set(msvc-rt-mtd-shared $<STREQUAL:${msvc-rt},MultiThreadedDebugDLL>)
83+
set(msvc-rt-mtd-static $<STREQUAL:${msvc-rt},MultiThreadedDebug>)
84+
set(msvc-rt-mt-shared $<STREQUAL:${msvc-rt},MultiThreadedDLL>)
85+
set(msvc-rt-mt-static $<STREQUAL:${msvc-rt},MultiThreaded>)
86+
unset(msvc-rt)
87+
88+
set(msvc-rt-mtd-shared $<${msvc-rt-mtd-shared}:-MDd>)
89+
set(msvc-rt-mtd-static $<${msvc-rt-mtd-static}:-MTd>)
90+
set(msvc-rt-mt-shared $<${msvc-rt-mt-shared}:-MD>)
91+
set(msvc-rt-mt-static $<${msvc-rt-mt-static}:-MT>)
92+
endif()
93+
94+
set(versioned-dir $<$<BOOL:${PUGIXML_USE_VERSIONED_LIBDIR}>:/pugixml-${PROJECT_VERSION}>)
95+
96+
set(libs)
97+
98+
if (BUILD_SHARED_LIBS)
99+
add_library(pugixml-shared SHARED
100+
${PROJECT_SOURCE_DIR}/scripts/pugixml_dll.rc
101+
${PROJECT_SOURCE_DIR}/src/pugixml.cpp)
102+
add_library(pugixml::shared ALIAS pugixml-shared)
103+
list(APPEND libs pugixml-shared)
104+
105+
set_property(TARGET pugixml-shared PROPERTY EXPORT_NAME shared)
106+
target_include_directories(pugixml-shared
107+
PUBLIC
108+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
109+
target_compile_definitions(pugixml-shared
110+
PUBLIC
111+
${PUGIXML_BUILD_DEFINES}
112+
${PUGIXML_PUBLIC_DEFINITIONS}
113+
PRIVATE
114+
$<$<CXX_COMPILER_ID:MSVC>:PUGIXML_API=__declspec\(dllexport\)>)
115+
target_compile_options(pugixml-shared
116+
PRIVATE
117+
${msvc-rt-mtd-shared}
118+
${msvc-rt-mtd-static}
119+
${msvc-rt-mt-shared}
120+
${msvc-rt-mt-static})
121+
endif()
122+
123+
if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS)
124+
add_library(pugixml-static STATIC
125+
${PROJECT_SOURCE_DIR}/src/pugixml.cpp)
126+
add_library(pugixml::static ALIAS pugixml-static)
127+
list(APPEND libs pugixml-static)
128+
129+
set_property(TARGET pugixml-static PROPERTY EXPORT_NAME static)
130+
target_include_directories(pugixml-static
131+
PUBLIC
132+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
133+
target_compile_definitions(pugixml-static
134+
PUBLIC
135+
${PUGIXML_BUILD_DEFINES}
136+
${PUGIXML_PUBLIC_DEFINITIONS})
137+
target_compile_options(pugixml-static
138+
PRIVATE
139+
${msvc-rt-mtd-shared}
140+
${msvc-rt-mtd-static}
141+
${msvc-rt-mt-shared}
142+
${msvc-rt-mt-static})
143+
endif()
144+
145+
if (BUILD_SHARED_LIBS)
146+
set(pugixml-alias pugixml-shared)
147+
else()
148+
set(pugixml-alias pugixml-static)
149+
endif()
150+
add_library(pugixml INTERFACE)
151+
target_link_libraries(pugixml INTERFACE ${pugixml-alias})
152+
add_library(pugixml::pugixml ALIAS pugixml)
153+
154+
set_target_properties(${libs}
155+
PROPERTIES
156+
MSVC_RUNTIME_LIBRARY ${CMAKE_MSVC_RUNTIME_LIBRARY}
157+
EXCLUDE_FROM_ALL ON
158+
POSITION_INDEPENDENT_CODE ON
159+
SOVERSION ${PROJECT_VERSION_MAJOR}
160+
VERSION ${PROJECT_VERSION}
161+
OUTPUT_NAME pugixml)
162+
163+
set_target_properties(${libs}
164+
PROPERTIES
165+
EXCLUDE_FROM_ALL OFF)
166+
set(install-targets pugixml ${libs})
167+
168+
configure_package_config_file(
169+
"${PROJECT_SOURCE_DIR}/scripts/pugixml-config.cmake.in"
170+
"${PROJECT_BINARY_DIR}/pugixml-config.cmake"
171+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}
172+
NO_CHECK_REQUIRED_COMPONENTS_MACRO
173+
NO_SET_AND_CHECK_MACRO)
174+
175+
write_basic_package_version_file(
176+
"${PROJECT_BINARY_DIR}/pugixml-config-version.cmake"
177+
COMPATIBILITY SameMajorVersion)
178+
179+
if (PUGIXML_USE_POSTFIX)
180+
if(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
181+
set(LIB_POSTFIX ${CMAKE_RELWITHDEBINFO_POSTFIX})
182+
elseif(CMAKE_BUILD_TYPE MATCHES MinSizeRel)
183+
set(LIB_POSTFIX ${CMAKE_MINSIZEREL_POSTFIX})
184+
elseif(CMAKE_BUILD_TYPE MATCHES Debug)
185+
set(LIB_POSTFIX ${CMAKE_DEBUG_POSTFIX})
186+
endif()
187+
endif()
188+
189+
configure_file(scripts/pugixml.pc.in pugixml.pc @ONLY)
190+
191+
if (NOT DEFINED PUGIXML_RUNTIME_COMPONENT)
192+
set(PUGIXML_RUNTIME_COMPONENT Runtime)
193+
endif()
194+
195+
if (NOT DEFINED PUGIXML_LIBRARY_COMPONENT)
196+
set(PUGIXML_LIBRARY_COMPONENT Library)
197+
endif()
198+
199+
if (NOT DEFINED PUGIXML_DEVELOPMENT_COMPONENT)
200+
set(PUGIXML_DEVELOPMENT_COMPONENT Development)
201+
endif()
202+
203+
set(namelink-component)
204+
if (NOT CMAKE_VERSION VERSION_LESS 3.12)
205+
set(namelink-component NAMELINK_COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT})
206+
endif()
207+
install(TARGETS ${install-targets}
208+
EXPORT pugixml-targets
209+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${PUGIXML_RUNTIME_COMPONENT}
210+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${PUGIXML_LIBRARY_COMPONENT} ${namelink-component}
211+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT}
212+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}${versioned-dir})
213+
214+
install(EXPORT pugixml-targets
215+
NAMESPACE pugixml::
216+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT})
217+
218+
export(EXPORT pugixml-targets
219+
NAMESPACE pugixml::)
220+
221+
install(FILES
222+
"${PROJECT_BINARY_DIR}/pugixml-config-version.cmake"
223+
"${PROJECT_BINARY_DIR}/pugixml-config.cmake"
224+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT})
225+
226+
install(FILES ${PROJECT_BINARY_DIR}/pugixml.pc
227+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT})
228+
229+
install(
230+
FILES
231+
"${PROJECT_SOURCE_DIR}/src/pugiconfig.hpp"
232+
"${PROJECT_SOURCE_DIR}/src/pugixml.hpp"
233+
DESTINATION
234+
${CMAKE_INSTALL_INCLUDEDIR}${versioned-dir} COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT})
235+
236+
if (PUGIXML_BUILD_TESTS)
237+
set(fuzz-pattern "tests/fuzz_*.cpp")
238+
set(test-pattern "tests/*.cpp")
239+
if (CMAKE_VERSION VERSION_GREATER 3.11)
240+
list(INSERT fuzz-pattern 0 CONFIGURE_DEPENDS)
241+
list(INSERT test-pattern 0 CONFIGURE_DEPENDS)
242+
endif()
243+
file(GLOB test-sources ${test-pattern})
244+
file(GLOB fuzz-sources ${fuzz-pattern})
245+
list(REMOVE_ITEM test-sources ${fuzz-sources})
246+
247+
add_custom_target(check
248+
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure)
249+
250+
add_executable(pugixml-check ${test-sources})
251+
add_test(NAME pugixml::test
252+
COMMAND pugixml-check
253+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
254+
add_dependencies(check pugixml-check)
255+
target_link_libraries(pugixml-check
256+
PRIVATE
257+
pugixml::pugixml)
258+
endif()

0 commit comments

Comments
 (0)