File: FindMiniUPNP.cmake

package info (click to toggle)
simutrans 124.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,880 kB
  • sloc: cpp: 160,224; ansic: 9,382; sh: 1,237; awk: 1,081; makefile: 932; javascript: 2
file content (72 lines) | stat: -rw-r--r-- 2,273 bytes parent folder | download
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
#
# This file is part of the Simutrans project under the Artistic License.
# (see LICENSE.txt)
#
#
# Locate MiniUPNP library.
# This module defines
#  MiniUPNP_FOUND, if miniupnp library and headers have been found
#  MiniUPNP_LIBRARY, the miniupnp variant
#  MiniUPNP_INCLUDE_DIR, where to find miniupnpc.h and family)
#  MiniUPNP_VERSION, the API version of MiniUPNP
#


if (MiniUPNP_INCLUDE_DIR AND MiniUPNP_LIBRARY)
	# Already in cache, be silent
	set(MiniUPNP_FIND_QUIETLY TRUE)
endif ()

find_path(MiniUPNP_INCLUDE_DIR miniupnpc.h
	HINTS $ENV{MINIUPNP_INCLUDE_DIR}
	PATH_SUFFIXES miniupnpc
)

find_library(MiniUPNP_LIBRARY miniupnpc
	HINTS $ENV{MINIUPNP_LIBRARY}
)

find_library(MiniUPNP_STATIC_LIBRARY libminiupnpc.a
	HINTS $ENV{MINIUPNP_STATIC_LIBRARY}
)

set(MiniUPNP_INCLUDE_DIRS ${MiniUPNP_INCLUDE_DIR})
set(MiniUPNP_LIBRARIES ${MiniUPNP_LIBRARY})
set(MiniUPNP_STATIC_LIBRARIES ${MiniUPNP_STATIC_LIBRARY})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
	MiniUPNP DEFAULT_MSG
	MiniUPNP_LIBRARY
	MiniUPNP_INCLUDE_DIR
)

if (MiniUPNP_FOUND)
	file(STRINGS "${MiniUPNP_INCLUDE_DIR}/miniupnpc.h" MiniUPNP_API_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+[0-9]+")
	if (MiniUPNP_API_VERSION_STR MATCHES "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+([0-9]+)")
		set(MiniUPNP_API_VERSION "${CMAKE_MATCH_1}")
	endif()

	if (MiniUPNP_API_VERSION GREATER_EQUAL 10 AND NOT MiniUPNP_FIND_QUIETLY)
		message(STATUS "Found MiniUPNP API version ${MiniUPNP_API_VERSION}")
	endif()
endif()

mark_as_advanced(MiniUPNP_INCLUDE_DIR MiniUPNP_LIBRARY MiniUPNP_STATIC_LIBRARY)

if (MiniUPNP_FOUND)
	if (NOT TARGET MiniUPNP::MiniUPNP)
		add_library(MiniUPNP::MiniUPNP UNKNOWN IMPORTED)
	endif (NOT TARGET MiniUPNP::MiniUPNP)

	set_target_properties(MiniUPNP::MiniUPNP PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MiniUPNP_INCLUDE_DIRS}")
	set_target_properties(MiniUPNP::MiniUPNP PROPERTIES IMPORTED_LOCATION "${MiniUPNP_LIBRARIES}")
	if (MINGW)
	    # MinGW needs an additional link flags 
	    set_property(TARGET MiniUPNP::MiniUPNP PROPERTY INTERFACE_LINK_LIBRARIES "-liphlpapi -lws2_32")
	endif (MINGW)
	if (MSVC)
	    set_property(TARGET MiniUPNP::MiniUPNP PROPERTY INTERFACE_LINK_LIBRARIES "iphlpapi.lib")
	endif (MSVC)
endif (MiniUPNP_FOUND)