Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 51 additions & 41 deletions CMake/GenerateDCMTKConfigure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -241,9 +241,14 @@ include("${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake")
include("${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake")
include("${DCMTK_CMAKE_INCLUDE}CMake/CheckFunctionWithHeaderExists.cmake")
include(CheckCXXSymbolExists OPTIONAL)
if(NOT COMMAND CHECK_CXX_SYMBOL_EXISTS)
# fallback implementation for old CMake Versions
function(CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VAR)
# Defined with DCMTK_ prefix to avoid overriding the global command name.
if(COMMAND check_cxx_symbol_exists)
macro(DCMTK_CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VAR)
check_cxx_symbol_exists("${SYMBOL}" "${FILES}" "${VAR}")
endmacro()
else()
# Fallback for CMake versions that predate CheckCXXSymbolExists
function(DCMTK_CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VAR)
set(CODE)
foreach(FILE ${FILES})
set(CODE "${CODE}#include <${FILE}>\n")
Expand All @@ -256,7 +261,7 @@ endif()
foreach(FUNC "__FUNCTION__" "__PRETTY_FUNCTION__" "__func__")
CHECK_SYMBOL_EXISTS("${FUNC}" "" "HAVE_${FUNC}_C_MACRO")
# test if the C++ compiler also supports them (e.g. SunPro doesn't)
CHECK_CXX_SYMBOL_EXISTS("${FUNC}" "" "HAVE_${FUNC}_CXX_MACRO")
DCMTK_CHECK_CXX_SYMBOL_EXISTS("${FUNC}" "" "HAVE_${FUNC}_CXX_MACRO")
if(HAVE_${FUNC}_C_MACRO AND HAVE_${FUNC}_CXX_MACRO)
set("HAVE_${FUNC}_MACRO" 1 CACHE INTERNAL "Have symbol ${FUNC}" FORCE)
else()
Expand Down Expand Up @@ -505,48 +510,53 @@ endif()
set(CXXHEADERS ${CXXHEADERS} cstdint)
endif()

# On Windows check_function_exists fails due to symbol name mangling; use
# check_symbol_exists instead. Defined with DCMTK_ prefix to avoid
# overriding the global CHECK_FUNCTION_EXISTS command.
if(WIN32)
# CHECK_FUNCTION_EXISTS does not work correctly on Windows (due to symbol name mangling)
# use CHECK_SYMBOL_EXISTS instead
macro(CHECK_FUNCTION_EXISTS FUNCTION VAR)
macro(DCMTK_CHECK_FUNCTION_EXISTS FUNCTION VAR)
check_symbol_exists("${FUNCTION}" "${HEADERS}" "${VAR}")
endmacro()
else()
macro(DCMTK_CHECK_FUNCTION_EXISTS FUNCTION VAR)
check_function_exists("${FUNCTION}" "${VAR}")
endmacro()
endif()

CHECK_FUNCTION_EXISTS(_findfirst HAVE__FINDFIRST)
CHECK_FUNCTION_EXISTS(_set_output_format HAVE__SET_OUTPUT_FORMAT)
CHECK_FUNCTION_EXISTS(atoll HAVE_ATOLL)
CHECK_FUNCTION_EXISTS(cuserid HAVE_CUSERID)
CHECK_FUNCTION_EXISTS(fgetln HAVE_FGETLN)
CHECK_FUNCTION_EXISTS(flock HAVE_FLOCK)
CHECK_FUNCTION_EXISTS(fork HAVE_FORK)
CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
CHECK_FUNCTION_EXISTS(ftime HAVE_FTIME)
CHECK_FUNCTION_EXISTS(geteuid HAVE_GETEUID)
CHECK_FUNCTION_EXISTS(getgrnam HAVE_GETGRNAM)
CHECK_FUNCTION_EXISTS(gethostbyaddr_r HAVE_GETHOSTBYADDR_R)
CHECK_FUNCTION_EXISTS(gethostbyname_r HAVE_GETHOSTBYNAME_R)
CHECK_FUNCTION_EXISTS(gethostid HAVE_GETHOSTID)
CHECK_FUNCTION_EXISTS(getlogin HAVE_GETLOGIN)
CHECK_FUNCTION_EXISTS(getlogin_r HAVE_GETLOGIN_R)
CHECK_FUNCTION_EXISTS(getpwnam HAVE_GETPWNAM)
CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
CHECK_FUNCTION_EXISTS(getuid HAVE_GETUID)
CHECK_FUNCTION_EXISTS(gmtime_r HAVE_GMTIME_R)
CHECK_FUNCTION_EXISTS(localtime_r HAVE_LOCALTIME_R)
CHECK_FUNCTION_EXISTS(lockf HAVE_LOCKF)
CHECK_FUNCTION_EXISTS(lstat HAVE_LSTAT)
CHECK_FUNCTION_EXISTS(malloc_debug HAVE_MALLOC_DEBUG)
CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
CHECK_FUNCTION_EXISTS(setuid HAVE_SETUID)
CHECK_FUNCTION_EXISTS(sleep HAVE_SLEEP)
CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY)
CHECK_FUNCTION_EXISTS(sysinfo HAVE_SYSINFO)
CHECK_FUNCTION_EXISTS(uname HAVE_UNAME)
CHECK_FUNCTION_EXISTS(usleep HAVE_USLEEP)
CHECK_FUNCTION_EXISTS(waitpid HAVE_WAITPID)
DCMTK_CHECK_FUNCTION_EXISTS(_findfirst HAVE__FINDFIRST)
DCMTK_CHECK_FUNCTION_EXISTS(_set_output_format HAVE__SET_OUTPUT_FORMAT)
DCMTK_CHECK_FUNCTION_EXISTS(atoll HAVE_ATOLL)
DCMTK_CHECK_FUNCTION_EXISTS(cuserid HAVE_CUSERID)
DCMTK_CHECK_FUNCTION_EXISTS(fgetln HAVE_FGETLN)
DCMTK_CHECK_FUNCTION_EXISTS(flock HAVE_FLOCK)
DCMTK_CHECK_FUNCTION_EXISTS(fork HAVE_FORK)
DCMTK_CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
DCMTK_CHECK_FUNCTION_EXISTS(ftime HAVE_FTIME)
DCMTK_CHECK_FUNCTION_EXISTS(geteuid HAVE_GETEUID)
DCMTK_CHECK_FUNCTION_EXISTS(getgrnam HAVE_GETGRNAM)
DCMTK_CHECK_FUNCTION_EXISTS(gethostbyaddr_r HAVE_GETHOSTBYADDR_R)
DCMTK_CHECK_FUNCTION_EXISTS(gethostbyname_r HAVE_GETHOSTBYNAME_R)
DCMTK_CHECK_FUNCTION_EXISTS(gethostid HAVE_GETHOSTID)
DCMTK_CHECK_FUNCTION_EXISTS(getlogin HAVE_GETLOGIN)
DCMTK_CHECK_FUNCTION_EXISTS(getlogin_r HAVE_GETLOGIN_R)
DCMTK_CHECK_FUNCTION_EXISTS(getpwnam HAVE_GETPWNAM)
DCMTK_CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
DCMTK_CHECK_FUNCTION_EXISTS(getuid HAVE_GETUID)
DCMTK_CHECK_FUNCTION_EXISTS(gmtime_r HAVE_GMTIME_R)
DCMTK_CHECK_FUNCTION_EXISTS(localtime_r HAVE_LOCALTIME_R)
DCMTK_CHECK_FUNCTION_EXISTS(lockf HAVE_LOCKF)
DCMTK_CHECK_FUNCTION_EXISTS(lstat HAVE_LSTAT)
DCMTK_CHECK_FUNCTION_EXISTS(malloc_debug HAVE_MALLOC_DEBUG)
DCMTK_CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
DCMTK_CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
DCMTK_CHECK_FUNCTION_EXISTS(setuid HAVE_SETUID)
DCMTK_CHECK_FUNCTION_EXISTS(sleep HAVE_SLEEP)
DCMTK_CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
DCMTK_CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY)
DCMTK_CHECK_FUNCTION_EXISTS(sysinfo HAVE_SYSINFO)
DCMTK_CHECK_FUNCTION_EXISTS(uname HAVE_UNAME)
DCMTK_CHECK_FUNCTION_EXISTS(usleep HAVE_USLEEP)
DCMTK_CHECK_FUNCTION_EXISTS(waitpid HAVE_WAITPID)

CHECK_SYMBOL_EXISTS(strcasestr "string.h" HAVE_PROTOTYPE_STRCASESTR)

Expand Down