summaryrefslogtreecommitdiffstats
path: root/contrib/cmake/BuildURIParser.cmake
blob: 16c8cad185850d89a94d660d69a768f2e7fe032b (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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
include(ExternalProject)

if (WIN32)
	set(URIPARSER_LIBNAME "uriparser.lib")
elseif(UNIX)
	set(URIPARSER_LIBNAME "liburiparser.a")
endif()

if (UNIX)
	set(FORCE_FPIC "CFLAGS=-fPIC")

	externalproject_add(uriparser
		URL http://ufpr.dl.sourceforge.net/project/uriparser/Sources/0.8.4/uriparser-0.8.4.zip
		URL_MD5 a24c9ba0fd1a2c6c75d02859bf337cfa
		BUILD_IN_SOURCE 0
		PREFIX ${CMAKE_BINARY_DIR}/deps/uriparser
		CONFIGURE_COMMAND
			${FORCE_FPIC}
			"<SOURCE_DIR>/configure"
			"--disable-test"
			"--disable-doc"
			"--enable-static"
			"--prefix=<INSTALL_DIR>"
	)
elseif(MSVC)
		if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
			# we cannot build 64bit with the given project -> patch
			set(VSPROJECT_PATH "win32/uriparser-vs2013")

			externalproject_add(uriparser
				URL http://ufpr.dl.sourceforge.net/project/uriparser/Sources/0.8.4/uriparser-0.8.4.zip
				URL_MD5 a24c9ba0fd1a2c6c75d02859bf337cfa
				BUILD_IN_SOURCE 1
				PREFIX ${CMAKE_BINARY_DIR}/deps/uriparser
				PATCH_COMMAND
					${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/win32/uriparser-vs2013/ &&
					${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/contrib/patches/uriparser/uriparser.vcxproj <SOURCE_DIR>/win32/uriparser-vs2013/
				CONFIGURE_COMMAND ""
				BUILD_COMMAND cd ${VSPROJECT_PATH} && devenv /Upgrade uriparser.vcxproj && msbuild /p:Configuration=Release /p:Platform=x64 /t:build uriparser.vcxproj
				INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/deps/uriparser/lib && ${CMAKE_COMMAND} -E copy win32/uriparser.lib ${CMAKE_BINARY_DIR}/deps/uriparser/lib/ && ${CMAKE_COMMAND} -E copy_directory include ${CMAKE_BINARY_DIR}/deps/uriparser/include
			)
		else()
			set(VSPROJECT_PATH "win32/Visual_Studio_2005")

			externalproject_add(uriparser
				URL http://ufpr.dl.sourceforge.net/project/uriparser/Sources/0.8.4/uriparser-0.8.4.zip
				URL_MD5 a24c9ba0fd1a2c6c75d02859bf337cfa
				BUILD_IN_SOURCE 1
				PREFIX ${CMAKE_BINARY_DIR}/deps/uriparser
				CONFIGURE_COMMAND ""
				BUILD_COMMAND cd ${VSPROJECT_PATH} && devenv /Upgrade uriparser.vcproj && msbuild /p:Configuration=Release /p:Platform=Win32 /t:build uriparser.vcxproj
				INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/deps/uriparser/lib && ${CMAKE_COMMAND} -E copy win32/uriparser.lib ${CMAKE_BINARY_DIR}/deps/uriparser/lib/ && ${CMAKE_COMMAND} -E copy_directory include ${CMAKE_BINARY_DIR}/deps/uriparser/include
			)
		endif()

else()
	externalproject_add(uriparser
		URL http://ufpr.dl.sourceforge.net/project/uriparser/Sources/0.8.4/uriparser-0.8.4.zip
		URL_MD5 a24c9ba0fd1a2c6c75d02859bf337cfa
		BUILD_IN_SOURCE 1
		PREFIX ${CMAKE_BINARY_DIR}/deps/uriparser
		PATCH_COMMAND
			${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/contrib/patches/uriparser/CMakeLists.txt <SOURCE_DIR>
		INSTALL_COMMAND 
			${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/deps/uriparser/lib && 
			${CMAKE_COMMAND} -E copy ${URIPARSER_LIBNAME} ${CMAKE_BINARY_DIR}/deps/uriparser/lib/ && 
			${CMAKE_COMMAND} -E copy_directory include ${CMAKE_BINARY_DIR}/deps/uriparser/include
	)
endif()

#
#
# elseif(MINGW)
# 	# MinGW
#
# 	externalproject_add(uriparser
# 		URL http://ufpr.dl.sourceforge.net/project/uriparser/Sources/0.8.4/uriparser-0.8.4.zip
# 		URL_MD5 a24c9ba0fd1a2c6c75d02859bf337cfa
# 		BUILD_IN_SOURCE 1
# 		PREFIX ${CMAKE_BINARY_DIR}/deps/uriparser
# 		CONFIGURE_COMMAND ""
# 		BUILD_COMMAND
# 			cd win32/MinGW &&
# 			mingw32-make.exe
# 		INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/deps/uriparser/lib && ${CMAKE_COMMAND} -E copy win32/uriparser.lib ${CMAKE_BINARY_DIR}/deps/uriparser/lib/ && ${CMAKE_COMMAND} -E copy_directory include ${CMAKE_BINARY_DIR}/deps/uriparser/include
# 	)
#
# else ()
#
# endif()

set(URIPARSER_INCLUDE_DIR ${CMAKE_BINARY_DIR}/deps/uriparser/include)

if (UNIX)
	set(URIPARSER_LIBRARY ${CMAKE_BINARY_DIR}/deps/uriparser/lib/liburiparser.a)
elseif(WIN32)
	set(URIPARSER_LIBRARY ${CMAKE_BINARY_DIR}/deps/uriparser/lib/uriparser.lib)
else()
	message(FATAL_ERROR "Unknown platform!")
endif()

set(URIPARSER_BUILT ON)