forked from Mirrors/openclonk
Fix UPnP auto-detection
Auto-detecting UPnP might fail when CMake was invoked multiple times. This would result in a broken build because the compiler would not find <natupnp.h>.issue1247
parent
0ecd30ad9e
commit
804bf41c92
|
@ -1,6 +1,6 @@
|
||||||
# OpenClonk, http://www.openclonk.org
|
# OpenClonk, http://www.openclonk.org
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009-2014, The OpenClonk Team and contributors
|
# Copyright (c) 2009-2015, The OpenClonk Team and contributors
|
||||||
#
|
#
|
||||||
# Distributed under the terms of the ISC license; see accompanying file
|
# Distributed under the terms of the ISC license; see accompanying file
|
||||||
# "COPYING" for details.
|
# "COPYING" for details.
|
||||||
|
@ -63,6 +63,8 @@ option(USE_SYSTEM_TINYXML "Use system tinyxml library" OFF)
|
||||||
unset(OC_BUILD_MULTIPROCESSOR CACHE)
|
unset(OC_BUILD_MULTIPROCESSOR CACHE)
|
||||||
unset(USE_APPLE_CLANG CACHE)
|
unset(USE_APPLE_CLANG CACHE)
|
||||||
|
|
||||||
|
unset(HAVE_NATUPNP_H CACHE)
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# Check for compiler quirks and features
|
# Check for compiler quirks and features
|
||||||
############################################################################
|
############################################################################
|
||||||
|
@ -774,11 +776,6 @@ if(USE_CONSOLE)
|
||||||
CHECK_INCLUDE_FILE_CXX(readline.h HAVE_READLINE_H)
|
CHECK_INCLUDE_FILE_CXX(readline.h HAVE_READLINE_H)
|
||||||
CHECK_INCLUDE_FILE_CXX(readline/readline.h HAVE_READLINE_READLINE_H)
|
CHECK_INCLUDE_FILE_CXX(readline/readline.h HAVE_READLINE_READLINE_H)
|
||||||
endif()
|
endif()
|
||||||
CHECK_INCLUDE_FILE_CXX(natupnp.h HAVE_NATUPNP_H)
|
|
||||||
if(WIN32 AND NOT HAVE_NATUPNP_H)
|
|
||||||
include_directories(thirdparty/natupnp)
|
|
||||||
set(HAVE_NATUPNP_H TRUE CACHE BOOL "natupnp.h available" FORCE)
|
|
||||||
endif()
|
|
||||||
CHECK_INCLUDE_FILES_CXX("X11/Xlib.h;X11/extensions/Xrandr.h" HAVE_X11_EXTENSIONS_XRANDR_H)
|
CHECK_INCLUDE_FILES_CXX("X11/Xlib.h;X11/extensions/Xrandr.h" HAVE_X11_EXTENSIONS_XRANDR_H)
|
||||||
CHECK_INCLUDE_FILES_CXX("X11/Xlib.h;X11/keysym.h" HAVE_X11_KEYSYM_H)
|
CHECK_INCLUDE_FILES_CXX("X11/Xlib.h;X11/keysym.h" HAVE_X11_KEYSYM_H)
|
||||||
|
|
||||||
|
@ -844,22 +841,19 @@ if(HAVE_EXECINFO_H)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(HAVE_NATUPNP_H)
|
find_package(Upnp)
|
||||||
|
if(NOT UPNP_FOUND)
|
||||||
|
list(APPEND OC_SYSTEM_SOURCES
|
||||||
|
src/network/C4Network2UPnPDummy.cpp
|
||||||
|
)
|
||||||
|
elseif(UPNP_STYLE STREQUAL "Win32")
|
||||||
list(APPEND OC_SYSTEM_SOURCES
|
list(APPEND OC_SYSTEM_SOURCES
|
||||||
src/network/C4Network2UPnPWin32.cpp
|
src/network/C4Network2UPnPWin32.cpp
|
||||||
)
|
)
|
||||||
else()
|
elseif(UPNP_STYLE STREQUAL "libupnp")
|
||||||
FIND_PACKAGE(Upnp)
|
list(APPEND OC_SYSTEM_SOURCES
|
||||||
SET(HAVE_UPNP ${UPNP_FOUND})
|
src/network/C4Network2UPnPLinux.cpp
|
||||||
if(UPNP_FOUND)
|
)
|
||||||
list(APPEND OC_SYSTEM_SOURCES
|
|
||||||
src/network/C4Network2UPnPLinux.cpp
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
list(APPEND OC_SYSTEM_SOURCES
|
|
||||||
src/network/C4Network2UPnPDummy.cpp
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(USE_CONSOLE)
|
if(USE_CONSOLE)
|
||||||
|
@ -1369,7 +1363,7 @@ if (WIN32)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(HAVE_UPNP)
|
if(UPNP_FOUND)
|
||||||
include_directories(${UPNP_INCLUDE_DIR})
|
include_directories(${UPNP_INCLUDE_DIR})
|
||||||
target_link_libraries(openclonk ${UPNP_LIBRARIES})
|
target_link_libraries(openclonk ${UPNP_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# OpenClonk, http://www.openclonk.org
|
# OpenClonk, http://www.openclonk.org
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012-2013, The OpenClonk Team and contributors
|
# Copyright (c) 2012-2015, The OpenClonk Team and contributors
|
||||||
#
|
#
|
||||||
# Distributed under the terms of the ISC license; see accompanying file
|
# Distributed under the terms of the ISC license; see accompanying file
|
||||||
# "COPYING" for details.
|
# "COPYING" for details.
|
||||||
|
@ -20,20 +20,33 @@
|
||||||
|
|
||||||
# TODO: Use pkg-config if available
|
# TODO: Use pkg-config if available
|
||||||
|
|
||||||
find_path(UPNP_INCLUDE_DIR NAMES upnp.h PATH_SUFFIXES upnp)
|
if(WIN32)
|
||||||
set(UPNP_NAMES ${UPNP_NAMES} upnp)
|
CHECK_INCLUDE_FILE_CXX(natupnp.h HAVE_NATIVE_NATUPNP)
|
||||||
set(THREADUTIL_NAMES ${THREADUTIL_NAMES} threadutil)
|
if(NOT HAVE_NATIVE_NATUPNP)
|
||||||
set(IXML_NAMES ${IXML_NAMES} ixml)
|
SET(UPNP_INCLUDE_DIR "thirdparty/natupnp")
|
||||||
find_library(UPNP_LIBRARY NAMES ${UPNP_NAMES})
|
else()
|
||||||
find_library(THREADUTIL_LIBRARY NAMES ${THREADUTIL_NAMES})
|
SET(UPNP_INCLUDE_DIR)
|
||||||
find_library(IXML_LIBRARY NAMES ${IXML_NAMES})
|
endif()
|
||||||
|
SET(UPNP_LIBRARIES)
|
||||||
|
SET(UPNP_FOUND TRUE)
|
||||||
|
SET(UPNP_STYLE "Win32")
|
||||||
|
else()
|
||||||
|
find_path(UPNP_INCLUDE_DIR NAMES upnp.h PATH_SUFFIXES upnp)
|
||||||
|
set(UPNP_NAMES ${UPNP_NAMES} upnp)
|
||||||
|
set(THREADUTIL_NAMES ${THREADUTIL_NAMES} threadutil)
|
||||||
|
set(IXML_NAMES ${IXML_NAMES} ixml)
|
||||||
|
find_library(UPNP_LIBRARY NAMES ${UPNP_NAMES})
|
||||||
|
find_library(THREADUTIL_LIBRARY NAMES ${THREADUTIL_NAMES})
|
||||||
|
find_library(IXML_LIBRARY NAMES ${IXML_NAMES})
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UPNP DEFAULT_MSG UPNP_LIBRARY THREADUTIL_LIBRARY IXML_LIBRARY UPNP_INCLUDE_DIR)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UPNP DEFAULT_MSG UPNP_LIBRARY THREADUTIL_LIBRARY IXML_LIBRARY UPNP_INCLUDE_DIR)
|
||||||
|
|
||||||
if(UPNP_FOUND)
|
if(UPNP_FOUND)
|
||||||
set(UPNP_LIBRARIES ${UPNP_LIBRARY} ${THREADUTIL_LIBRARY} ${IXML_LIBRARY})
|
set(UPNP_LIBRARIES ${UPNP_LIBRARY} ${THREADUTIL_LIBRARY} ${IXML_LIBRARY})
|
||||||
set(UPNP_INCLUDE_DIR ${UPNP_INCLUDE_DIR})
|
set(UPNP_INCLUDE_DIR ${UPNP_INCLUDE_DIR})
|
||||||
|
set(UPNP_STYLE "libupnp")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(UPNP_LIBRARY IXML_LIBRARY UPNP_INCLUDE_DIR)
|
mark_as_advanced(UPNP_LIBRARY IXML_LIBRARY UPNP_INCLUDE_DIR)
|
||||||
|
|
Loading…
Reference in New Issue