summaryrefslogtreecommitdiffstats
path: root/contrib/cmake/BuildXercesC.cmake
blob: fa2050edf6ea622dfe44fe48199a3d8dcc4a72cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# see http://www.kitware.com/products/html/BuildingExternalProjectsWithCMake2.8.html
# see http://tools.cinemapub.be/opendcp/opendcp-0.19-src/contrib/CMakeLists.txt

include(ExternalProject)
if(MSVC)
	set(VC_VERSION VC12)
	# see https://en.wikipedia.org/wiki/Visual_C%2B%2B

	# CMAKE_CXX_COMPILER_VERSION=16.0.40219.1
	# MSVC_VERSION=1600

	if (OFF)
	elseif(MSVC_VERSION LESS 1310)
		message(FATAL_ERROR "MSVC 7.1 or higher is required")
	elseif(MSVC_VERSION LESS 1400)
		set(VC_VERSION VC7.1)
	elseif(MSVC_VERSION LESS 1500)
		set(VC_VERSION VC8)
	elseif(MSVC_VERSION LESS 1600)
		set(VC_VERSION VC9)
	elseif(MSVC_VERSION LESS 1700)
		set(VC_VERSION VC10)
	elseif(MSVC_VERSION LESS 1800)
		set(VC_VERSION VC11)
	elseif (MSVC_VERSION LESS 1900)
		set(VC_VERSION VC12)
	else()
		# set(VC_PLATFORM /p:PlatformToolset=v140)
	endif()
	
	set(VSPROJECT_PATH "projects/Win32/${VC_VERSION}/xerces-all/XercesLib")
	
	set(XERCESC_BUILD_PATH_SUFFIX Win32)
	set(XERCESC_BUILD_PLATFORM Win32)
	if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
		set(XERCESC_BUILD_PATH_SUFFIX Win64)
		set(XERCESC_BUILD_PLATFORM x64)
	endif()
	
	externalproject_add(xerces-c
		URL http://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.2.1.tar.gz
		URL_MD5 fe951ca5d93713db31b026fab2d042d7
		BUILD_IN_SOURCE 1
		PREFIX ${CMAKE_BINARY_DIR}/deps/xerces-c
		CONFIGURE_COMMAND ""
		# BUILD_COMMAND cd ${VSPROJECT_PATH} && msbuild /p:Configuration=Static\ Release /p:Platform=x64 /p:RuntimeLibrary=MD_DynamicRelease ${VC_PLATFORM} /t:build XercesLib.vcxproj
		# INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory Build/Win64/${VC_VERSION}/Static\ Release/ ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/ && ${CMAKE_COMMAND} -E copy_directory src/ ${CMAKE_BINARY_DIR}/deps/xerces-c/include/
		BUILD_COMMAND cd ${VSPROJECT_PATH} && msbuild /p:Configuration=Release /p:Platform=${XERCESC_BUILD_PLATFORM} ${VC_PLATFORM} /t:build XercesLib.vcxproj
		INSTALL_COMMAND 
			${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/deps/xerces-c/lib &&
			${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Release &&
			${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug &&
			${CMAKE_COMMAND} -E copy_directory Build/${XERCESC_BUILD_PATH_SUFFIX}/${VC_VERSION}/Release/ ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/ && 
			${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/xerces-c_3_2.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Release/ && 
			${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/xerces-c_3_2.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug/ && 
			${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/xerces-c_3_2.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ && 
			${CMAKE_COMMAND} -E copy_directory src/ ${CMAKE_BINARY_DIR}/deps/xerces-c/include/
		)
else()
	externalproject_add(xerces-c
		URL http://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.2.1.tar.gz
		URL_MD5 fe951ca5d93713db31b026fab2d042d7
		BUILD_IN_SOURCE 0
		PREFIX ${CMAKE_BINARY_DIR}/deps/xerces-c
		CONFIGURE_COMMAND 
			"<SOURCE_DIR>/configure" 
			"--enable-static" 
			"--enable-shared"
			"--prefix=<INSTALL_DIR>"
	)
endif()	

# TODO: --with-curl=DIR 

set(XercesC_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/deps/xerces-c/include)

if (APPLE)
	set(XercesC_LIBRARIES ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/libxerces-c.dylib)
elseif(UNIX)
	set(XercesC_LIBRARIES ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/libxerces-c.so)
elseif(WIN32)
	# set(XercesC_LIBRARIES ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/xerces-c_static_3.lib)
	set(XercesC_LIBRARIES ${CMAKE_BINARY_DIR}/deps/xerces-c/lib/xerces-c_3.lib)
else()
	message(FATAL_ERROR "Unknown platform!")
endif()

SET(XercesC_BUILT ON)