| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- ################################################################################
- #
- # configure
- #
- ################################################################################
- ########################################
- # FUNCTION check_includes
- ########################################
- function(check_includes files)
- foreach(F ${${files}})
- set(name ${F})
- string(REPLACE "." "_" name ${name})
- string(REPLACE "/" "_" name ${name})
- string(TOUPPER ${name} name)
- check_include_files(${F} HAVE_${name})
- #message("/* Define to 1 if you have the <${F}> header file. */")
- #message("#cmakedefine HAVE_${name} 1")
- #message("")
- endforeach()
- endfunction(check_includes)
- ########################################
- # FUNCTION check_functions
- ########################################
- function(check_functions functions)
- foreach(F ${${functions}})
- set(name ${F})
- string(TOUPPER ${name} name)
- check_function_exists(${F} HAVE_${name})
- #message("/* Define to 1 if you have the `${F}' function. */")
- #message("#cmakedefine HAVE_${name} 1")
- #message("")
- endforeach()
- endfunction(check_functions)
- ########################################
- # FUNCTION check_type_alignment
- ########################################
- function(check_type_alignment type var)
- if (NOT DEFINED ${var})
- check_c_source_runs("main(){struct s{char a;${type} b;};exit((int)&((struct s*)0)->b);}" ${var})
- #message(STATUS "Performing Test ${var} - It's still OK.")
- message(STATUS "Performing Test ${var} - Success")
- set(${var} ${${var}_EXITCODE} CACHE STRING "${type} alignment" FORCE)
- endif()
- endfunction(check_type_alignment)
- ########################################
- # FUNCTION check_symbol
- ########################################
- function(check_symbol symbol var)
- if (NOT ${var}_SYMBOL)
- foreach(f ${ARGN})
- if (NOT ${var})
- unset(${var} CACHE)
- message(STATUS "Looking for ${symbol} - ${f}")
- check_symbol_exists(${symbol} ${f} ${var})
- endif()
- endforeach()
- endif()
- set(${var}_SYMBOL 1 CACHE INTERNAL "Do not check this symbol again")
- endfunction(check_symbol)
- ########################################
- include(CheckCSourceCompiles)
- include(CheckCSourceRuns)
- include(CheckCXXSourceCompiles)
- include(CheckCXXSourceRuns)
- include(CheckFunctionExists)
- include(CheckIncludeFiles)
- include(CheckLibraryExists)
- include(CheckPrototypeDefinition)
- include(CheckStructHasMember)
- include(CheckSymbolExists)
- include(CheckTypeSize)
- include(TestBigEndian)
- if (ANDROID)
- set(LINUX 1)
- endif()
- if (IOS)
- set(CMAKE_SYSTEM_PROCESSOR "armv7")
- add_definitions(-D__arm__)
- endif()
- if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
- set(CLANG 1)
- endif()
- set(ENABLE_BINRELOC 1)
- string(TOUPPER ${CMAKE_SYSTEM_NAME} CMAKE_SYSTEM_NAME_UPPER)
- set(${CMAKE_SYSTEM_NAME_UPPER} 1)
- string(TOUPPER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_UPPER)
- string(FIND ${CMAKE_SYSTEM_PROCESSOR} "arm" ARM)
- if (NOT ${ARM} EQUAL -1)
- set(ARM 1)
- else()
- set(ARM)
- endif()
- if (${CMAKE_SYSTEM_PROCESSOR_UPPER} STREQUAL "X86_64" OR
- ${CMAKE_SYSTEM_PROCESSOR_UPPER} STREQUAL "AMD64")
- set(AMD64 1)
- set(I386 1)
- endif()
- set(${CMAKE_SYSTEM_PROCESSOR_UPPER} 1)
- set(SHRLIB_EXT ${CMAKE_SHARED_LIBRARY_SUFFIX})
- string(REPLACE "." "" SHRLIB_EXT ${SHRLIB_EXT})
- set(CASE_SENSITIVITY "true")
- set(SUPPORT_RAW_DEVICES 1)
- set(include_files_list
- aio.h
- assert.h
- atomic.h
- atomic_ops.h
- crypt.h
- ctype.h
- dirent.h
- dlfcn.h
- editline.h
- errno.h
- fcntl.h
- float.h
- grp.h
- iconv.h
- io.h
- inttypes.h
- langinfo.h
- libio.h
- linux/falloc.h
- limits.h
- locale.h
- math.h
- memory.h
- mntent.h
- mnttab.h
- ndir.h
- netconfig.h
- netinet/in.h
- poll.h
- pthread.h
- pwd.h
- rpc/rpc.h
- rpc/xdr.h
- semaphore.h
- setjmp.h
- signal.h
- socket.h
- stdarg.h
- stdint.h
- stdlib.h
- string.h
- strings.h
- sys/dir.h
- sys/file.h
- sys/ioctl.h
- sys/ipc.h
- sys/mntent.h
- sys/mnttab.h
- sys/mount.h
- sys/ndir.h
- sys/param.h
- sys/resource.h
- sys/sem.h
- sys/select.h
- sys/siginfo.h
- sys/signal.h
- sys/socket.h
- sys/sockio.h
- sys/stat.h
- sys/syscall.h
- sys/time.h
- sys/timeb.h
- sys/types.h
- sys/uio.h
- sys/wait.h
- termio.h
- termios.h
- unistd.h
- varargs.h
- vfork.h
- winsock2.h
- zlib.h
- )
- check_includes(include_files_list)
- #if test "$EDITLINE_FLG" = "Y"; then
- # AC_HEADER_DIRENT
- # AC_DEFINE(HAVE_EDITLINE_H, 1, [Define this if editline is in use])
- #fi
- set(functions_list
- accept4
- AO_compare_and_swap_full
- clock_gettime
- ctime_r
- dirname
- fallocate
- fchmod
- fsync
- flock
- fork
- getpagesize
- getcwd getwd
- gettimeofday
- gmtime_r
- initgroups
- localtime_r
- mkstemp
- mmap
- nanosleep
- poll
- posix_fadvise
- pread pwrite
- pthread_cancel
- pthread_keycreate pthread_key_create
- pthread_mutexattr_setprotocol
- pthread_mutexattr_setrobust_np
- pthread_mutex_consistent_np
- pthread_rwlockattr_setkind_np
- qsort_r
- setitimer
- semtimedop
- setpgid
- setpgrp
- setmntent getmntent
- setrlimit getrlimit
- sigaction
- sigset
- snprintf vsnprintf
- strcasecmp stricmp
- strncasecmp strnicmp
- strdup
- strerror_r
- swab _swab
- tcgetattr
- time times
- vfork
- )
- check_functions(functions_list)
- if (APPLE)
- set(HAVE_QSORT_R 0 CACHE STRING "Disabled on OS X" FORCE)
- endif()
- check_cxx_source_compiles("#include <unistd.h>\nmain(){fdatasync(0);}" HAVE_FDATASYNC)
- check_library_exists(dl dladdr "${CMAKE_LIBRARY_PREFIX}" HAVE_DLADDR)
- check_library_exists(m fegetenv "${CMAKE_LIBRARY_PREFIX}" HAVE_FEGETENV)
- check_library_exists(m llrint "${CMAKE_LIBRARY_PREFIX}" HAVE_LLRINT)
- check_library_exists(pthread sem_init "${CMAKE_LIBRARY_PREFIX}" HAVE_SEM_INIT)
- check_library_exists(pthread sem_timedwait "${CMAKE_LIBRARY_PREFIX}" HAVE_SEM_TIMEDWAIT)
- check_type_size(caddr_t HAVE_CADDR_T)
- check_c_source_compiles("#include <sys/sem.h>\nmain(){union semun s;return 0;}" HAVE_SEMUN)
- set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h sys/types.h)
- check_type_size(socklen_t HAVE_SOCKLEN_T)
- set(CMAKE_EXTRA_INCLUDE_FILES)
- check_type_size(long SIZEOF_LONG)
- check_type_size(size_t SIZEOF_SIZE_T)
- check_type_size("void *" SIZEOF_VOID_P)
- check_type_size(gid_t HAVE_GID_T)
- check_type_size(off_t HAVE_OFF_T)
- check_type_size(pid_t HAVE_PID_T)
- check_type_size(size_t HAVE_SIZE_T)
- check_type_size(uid_t HAVE_UID_T)
- if (${HAVE_OFF_T} AND ${HAVE_OFF_T} EQUAL 8)
- set(_FILE_OFFSET_BITS 64)
- endif()
- test_big_endian(WORDS_BIGENDIAN)
- check_symbol_exists(INFINITY math.h HAVE_INFINITY)
- check_symbol_exists(va_copy stdarg.h HAVE_VA_COPY)
- check_symbol(SOCK_CLOEXEC HAVE_DECL_SOCK_CLOEXEC socket.h sys/socket.h)
- set(CMAKE_EXTRA_INCLUDE_FILES Windows.h)
- check_type_size("char[MAX_PATH]" MAXPATHLEN)
- set(CMAKE_EXTRA_INCLUDE_FILES)
- set(TIMEZONE_TYPE "struct timezone")
- if (APPLE OR MINGW)
- set(TIMEZONE_TYPE "void")
- endif()
- check_prototype_definition(
- gettimeofday
- "int gettimeofday(struct timeval *tv, ${TIMEZONE_TYPE} *tz)"
- 0
- "sys/time.h"
- GETTIMEOFDAY_RETURNS_TIMEZONE
- )
- check_prototype_definition(
- getmntent
- "int getmntent(FILE *file, struct mnttab *mptr)"
- 0
- mntent.h
- GETMNTENT_TAKES_TWO_ARGUMENTS
- )
- check_struct_has_member("struct dirent" d_type dirent.h HAVE_STRUCT_DIRENT_D_TYPE)
- check_c_source_compiles("#include <unistd.h>\nmain(){getpgrp();}" GETPGRP_VOID)
- check_c_source_compiles("#include <unistd.h>\nmain(){setpgrp();}" SETPGRP_VOID)
- check_c_source_compiles("__thread int a = 42;main(){a = a + 1;}" HAVE___THREAD)
- check_c_source_compiles("#include <sys/time.h>\n#include <time.h>\nmain(){}" TIME_WITH_SYS_TIME)
- set(CMAKE_REQUIRED_LIBRARIES pthread)
- check_c_source_compiles("#include <semaphore.h>\nmain(){sem_t s;sem_init(&s,0,0);}" WORKING_SEM_INIT)
- set(CMAKE_REQUIRED_LIBRARIES)
- if (EXISTS "/proc/self/exe")
- set(HAVE__PROC_SELF_EXE 1)
- endif()
- ########################################
- if (NOT CMAKE_CROSSCOMPILING)
- check_type_alignment(long FB_ALIGNMENT)
- check_type_alignment(double FB_DOUBLE_ALIGN)
- else() # CMAKE_CROSSCOMPILING
- set(FB_ALIGNMENT 8)
- set(FB_DOUBLE_ALIGN 8)
- if (ANDROID)
- set(HAVE__PROC_SELF_EXE 1)
- endif()
- endif()
- ########################################
- if (WIN32)
- set(ENABLE_BINRELOC 0)
- set(SUPPORT_RAW_DEVICES 0)
- set(WIN_NT 1)
- set(CASE_SENSITIVITY "false")
- endif(WIN32)
- if (APPLE)
- set(ENABLE_BINRELOC 0)
- set(CASE_SENSITIVITY "false")
- endif()
- ################################################################################
|