summaryrefslogtreecommitdiff
path: root/expat/CMakeLists.txt
diff options
context:
space:
mode:
authorSebastian Pipping <sebastian@pipping.org>2019-09-04 21:05:31 +0200
committerSebastian Pipping <sebastian@pipping.org>2019-09-05 17:20:06 +0200
commit27ec307136a5f6e785fea56f06d680d93a2161bf (patch)
tree3b45602158a68824d10baa1a4ad9336976a951fc /expat/CMakeLists.txt
parent4a09fc9024bd846d6ce2483c718d1abe60fd97dd (diff)
downloadlibexpat-git-27ec307136a5f6e785fea56f06d680d93a2161bf.tar.gz
CMake: Introduce option EXPAT_CHAR_TYPE=(char|ushort|wchar_t)
Diffstat (limited to 'expat/CMakeLists.txt')
-rw-r--r--expat/CMakeLists.txt48
1 files changed, 29 insertions, 19 deletions
diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt
index fd076429..253a2b05 100644
--- a/expat/CMakeLists.txt
+++ b/expat/CMakeLists.txt
@@ -64,8 +64,7 @@ if(NOT WIN32 OR _EXPAT_HELP)
"Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
mark_as_advanced(EXPAT_DEV_URANDOM)
endif()
-option(EXPAT_UNICODE "Use UTF-16 encoded chars (two bytes) instead of UTF-8" OFF)
-option(EXPAT_UNICODE_WCHAR_T "Use wchar_t to represent UTF-16 instead of unsigned short" OFF)
+set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF)
mark_as_advanced(EXPAT_ATTR_INFO)
option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
@@ -104,17 +103,24 @@ if(EXPAT_MIN_SIZE)
add_definitions(-DXML_MIN_SIZE)
endif()
-if(EXPAT_UNICODE_WCHAR_T AND NOT EXPAT_UNICODE)
- message(SEND_ERROR "Option EXPAT_UNICODE_WCHAR_T=ON may not be used without EXPAT_UNICODE=ON.")
- set(EXPAT_UNICODE ON)
-endif(EXPAT_UNICODE_WCHAR_T AND NOT EXPAT_UNICODE)
-
-if(EXPAT_BUILD_TOOLS AND (EXPAT_UNICODE AND NOT EXPAT_UNICODE_WCHAR_T))
- message(SEND_ERROR "The xmlwf tool can not be built with option EXPAT_UNICODE_WCHAR_T=OFF and EXPAT_UNICODE=ON. Either set EXPAT_UNICODE_WCHAR_T=ON or EXPAT_BUILD_TOOLS=OFF.")
+if(EXPAT_CHAR_TYPE STREQUAL "char")
+ set(_EXPAT_UNICODE OFF)
+ set(_EXPAT_UNICODE_WCHAR_T OFF)
+elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
+ set(_EXPAT_UNICODE ON)
+ set(_EXPAT_UNICODE_WCHAR_T OFF)
+ if(EXPAT_BUILD_TOOLS)
+ message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TOOLS=OFF.")
+ endif()
+elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
+ set(_EXPAT_UNICODE ON)
+ set(_EXPAT_UNICODE_WCHAR_T ON)
+else()
+ message(SEND_ERROR "Option -DEXPAT_CHAR_TYPE=(char|ushort|wchar_t) cannot be \"${EXPAT_CHAR_TYPE}\".")
endif()
-if(EXPAT_UNICODE)
- if(EXPAT_UNICODE_WCHAR_T)
+if(_EXPAT_UNICODE)
+ if(_EXPAT_UNICODE_WCHAR_T)
add_definitions(-DXML_UNICODE_WCHAR_T) # for wchar_t
else()
add_definitions(-DXML_UNICODE) # for unsigned short
@@ -200,7 +206,7 @@ if(MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)
if(WIN32)
- if(EXPAT_UNICODE_WCHAR_T)
+ if(_EXPAT_UNICODE_WCHAR_T)
set(_POSTFIX_WIDE "w")
endif()
@@ -303,7 +309,7 @@ if(EXPAT_BUILD_TOOLS)
target_link_libraries(xmlwf expat)
expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR})
- if(MINGW AND EXPAT_UNICODE_WCHAR_T)
+ if(MINGW AND _EXPAT_UNICODE_WCHAR_T)
# https://gcc.gnu.org/onlinedocs/gcc/x86-Windows-Options.html
set_target_properties(xmlwf PROPERTIES LINK_FLAGS -municode)
endif()
@@ -509,14 +515,18 @@ expat_install(
#
# Summary
#
-if(EXPAT_UNICODE)
- if(EXPAT_UNICODE_WCHAR_T)
- set(_EXPAT_CHAR_TYPE "wchar_t")
+if(EXPAT_CHAR_TYPE STREQUAL "char")
+ set(_EXPAT_CHAR_TYPE_SUMMARY "char (UTF-8)")
+elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
+ set(_EXPAT_CHAR_TYPE_SUMMARY "ushort (unsigned short, UTF-16)")
+elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
+ if(WIN32)
+ set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-16)")
else()
- set(_EXPAT_CHAR_TYPE "unsigned short")
+ set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-32) // not implemented")
endif()
else()
- set(_EXPAT_CHAR_TYPE "char")
+ set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR")
endif()
string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER)
@@ -529,7 +539,7 @@ message(STATUS " Shared libraries ........... ${EXPAT_SHARED_LIBS}")
if(WIN32)
message(STATUS " Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}")
endif()
-message(STATUS " Character type ............. ${_EXPAT_CHAR_TYPE}")
+message(STATUS " Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}")
if(WIN32)
message(STATUS " Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
endif()