diff options
author | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2017-01-21 22:12:42 +0100 |
---|---|---|
committer | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2017-01-23 18:23:40 +0100 |
commit | 6c87f62b90b1edd12087b7bdce78883b5d52c5e9 (patch) | |
tree | 31862c522d83b734e51145e85932c6ab0efc393b | |
parent | 23dddf8e1ce0d0ff14f15e2be0da8c9893f5e360 (diff) | |
download | efl-6c87f62b90b1edd12087b7bdce78883b5d52c5e9.tar.gz |
build: make eina working
This brings in the checks for all the headers and function that are
required in eina. With this commit only a few other checks are missing.
This is NOT tested on windows or mac os i can just verify that it runs
here on a arch linux system.
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | cmake/config/common.cmake | 20 | ||||
-rw-r--r-- | cmake/config/eina.cmake | 2 | ||||
-rw-r--r-- | cmake/helpers/CommonHeaderChecks.cmake | 80 | ||||
-rw-r--r-- | src/lib/efl/config.h.cmake | 18 |
5 files changed, 114 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 756297dbb7..6604e12880 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,5 +45,5 @@ configure_file( configure_file( ${PROJECT_SOURCE_DIR}/src/lib/efl/Efl_Config.h.cmake ${PROJECT_BINARY_DIR}/src/lib/efl/Efl_Config.h) - +EFL_HEADER_CHECKS_FINALIZE(${PROJECT_BINARY_DIR}/src/lib/efl/config_headers.h) EFL_FINALIZE() diff --git a/cmake/config/common.cmake b/cmake/config/common.cmake index 5a89bc162e..270463d7b0 100644 --- a/cmake/config/common.cmake +++ b/cmake/config/common.cmake @@ -7,8 +7,6 @@ find_package(Threads REQUIRED) pkg_check_modules(CHECK check) -CHECK_INCLUDE_FILE(sys/mman.h HAVE_SYS_MMAN_H) - set(VMAJ ${PROJECT_VERSION_MAJOR}) set(VMIN ${PROJECT_VERSION_MINOR}) set(VMIC ${PROJECT_VERSION_PATCH}) @@ -17,6 +15,13 @@ set(EFL_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) set(EFL_VERSION_MINOR ${PROJECT_VERSION_MINOR}) set(MODULE_ARCH "v-${VMAJ}.${VMIN}") +#change when on windows +if (WIN32) + set(SHARED_LIB_SUFFIX ".dll") +else() + set(SHARED_LIB_SUFFIX ".so") +endif() + EFL_OPTION(BUILD_PROFILE "How to build EFL" dev CHOICE release;dev;debug) EFL_OPTION(EFL_NOLEGACY_API_SUPPORT "Whenever to disable non-Eo (Legacy) APIs" ON) EFL_OPTION(EFL_EO_API_SUPPORT "Whenever to enable new Eo APIs" ON) @@ -24,5 +29,16 @@ if(NOT EFL_EO_API_SUPPORT) EFL_OPTION_SET_MESSAGE(EFL_EO_API_SUPPORT "Risky!") endif() + +#define all our header / function checks +include(./CommonHeaderChecks) + + #this is needed to build efl set(EFL_BETA_API_SUPPORT 1) + +#if there are thread init support from cmake then efl has threads + +if (CMAKE_THREAD_LIBS_INIT) + set(EFL_HAVE_THREADS 1) +endif()
\ No newline at end of file diff --git a/cmake/config/eina.cmake b/cmake/config/eina.cmake index 6865f3b210..6a8f7d0d08 100644 --- a/cmake/config/eina.cmake +++ b/cmake/config/eina.cmake @@ -60,8 +60,6 @@ CHECK_SYMBOL_EXISTS(bswap_16 byteswap.h EINA_HAVE_BSWAP16) CHECK_SYMBOL_EXISTS(bswap_32 byteswap.h EINA_HAVE_BSWAP32) CHECK_SYMBOL_EXISTS(bswap_64 byteswap.h EINA_HAVE_BSWAP64) -CHECK_SYMBOL_EXISTS(clock_gettime time.h HAVE_CLOCK_GETTIME) - if(ENABLE_VALGRIND) pkg_check_modules(VG REQUIRED valgrind) SET_GLOBAL(NVALGRIND OFF) diff --git a/cmake/helpers/CommonHeaderChecks.cmake b/cmake/helpers/CommonHeaderChecks.cmake new file mode 100644 index 0000000000..aab83f73f9 --- /dev/null +++ b/cmake/helpers/CommonHeaderChecks.cmake @@ -0,0 +1,80 @@ +unset(HEADER_FILE_CONTENT CACHE) + +macro(HEADER_CHECK header var) + CHECK_INCLUDE_FILE(${header} ${var}) + if (${${var}}) + set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n" CACHE INTERNAL "") + else() + set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n" CACHE INTERNAL "") + endif() +endmacro() + +macro(FUNC_CHECK func header var) + CHECK_SYMBOL_EXISTS(${func} ${header} ${var}) + if (${${var}} ) + set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n" CACHE INTERNAL "") + else() + set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n" CACHE INTERNAL "") + endif() +endmacro() + +macro(TYPE_CHECK func header var) + set(CMAKE_EXTRA_INCLUDE_FILES ${header}) + CHECK_TYPE_SIZE(${func} ${var}) + unset(CMAKE_EXTRA_INCLUDE_FILES) + if (${${var}} GREATER 0) + set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n" CACHE INTERNAL "") + else() + set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n" CACHE INTERNAL "") + endif() +endmacro() + + +FUNC_CHECK(geteuid unistd.h HAVE_GETEUID) +FUNC_CHECK(getuid unistd.h HAVE_GETUID) +FUNC_CHECK(getpagesize unistd.h HAVE_GETPAGESIZE) +FUNC_CHECK(strlcpy bsd/string.h HAVE_STRLCPY) +FUNC_CHECK(mmap sys/mman.h HAVE_MMAP) +FUNC_CHECK(fchmod sys/stat.h HAVE_FCHMOD) +FUNC_CHECK(clock_gettime time.h HAVE_CLOCK_GETTIME) +FUNC_CHECK(fstatat sys/stat.h HAVE_ATFILE_SOURCE) +FUNC_CHECK(dirfd "dirent.h;sys/types.h" HAVE_DIRFD) +FUNC_CHECK(fpathconf "unistd.h" HAVE_FPATHCONF) +FUNC_CHECK(fpathconf "unistd.h" HAVE_FPATHCONF) +FUNC_CHECK(listxattr "sys/types.h;sys/xattr.h" HAVE_LISTXATTR) +FUNC_CHECK(setxattr "sys/types.h;sys/xattr.h" HAVE_SETXATTR) +FUNC_CHECK(getxattr "sys/types.h;sys/xattr.h" HAVE_GETXATTR) + +set(CMAKE_REQUIRED_LIBRARIES "-ldl") +FUNC_CHECK(dlopen dlfcn.h HAVE_DLOPEN) +unset(CMAKE_REQUIRED_LIBRARIES) + +FUNC_CHECK(mtrace mcheck.h HAVE_MTRACE) +FUNC_CHECK(strerror_r string.h HAVE_STRERROR_R) +set(CMAKE_REQUIRED_LIBRARIES "-lrt") +FUNC_CHECK(shm_open "sys/mman.h;sys/stat.h;fcntl.h" HAVE_SHM_OPEN) + + +set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE=1") +FUNC_CHECK(sched_getcpu sched.h HAVE_SCHED_GETCPU) +FUNC_CHECK(splice fcntl.h HAVE_SPLICE) +FUNC_CHECK(fcntl fcntl.h HAVE_FCNTL) +set(CMAKE_REQUIRED_LIBRARIES "-ldl") +FUNC_CHECK(dladdr dlfcn.h HAVE_DLADDR) + +TYPE_CHECK(siginfo_t signal.h HAVE_SIGINFO_T) + +HEADER_CHECK(stdlib.h HAVE_STDLIB_H) +HEADER_CHECK(sys/mman.h HAVE_SYS_MMAN_H) +HEADER_CHECK(dirent.h HAVE_DIRENT_H) +HEADER_CHECK(iconv.h HAVE_ICONV_H) +HEADER_CHECK(sys/auxv.h HAVE_SYS_AUXV_H) +HEADER_CHECK(asm/hwcap.h HAVE_ASM_HWCAP_H) +HEADER_CHECK(mcheck.h HAVE_MCHECK_H) +HEADER_CHECK(sys/types.h HAVE_SYS_TYPES_H) +HEADER_CHECK(execinfo.h HAVE_EXECINFO_H) +HEADER_CHECK(libunwind.h HAVE_UNWIND) + +function(EFL_HEADER_CHECKS_FINALIZE file) + file(WRITE ${file} ${HEADER_FILE_CONTENT}) +endfunction()
\ No newline at end of file diff --git a/src/lib/efl/config.h.cmake b/src/lib/efl/config.h.cmake index 7b26ea35ca..2331f4ba5a 100644 --- a/src/lib/efl/config.h.cmake +++ b/src/lib/efl/config.h.cmake @@ -2,7 +2,8 @@ #define CONFIG_H #define _GNU_SOURCE -#cmakedefine HAVE_SYS_MMAN_H 1 + +#include "config_headers.h" #define VMAJ @VMAJ@ #define VMIN @VMIN@ @@ -10,13 +11,24 @@ #define VREV @VREV@ #cmakedefine NVALGRIND 1 -#cmakedefine HAVE_CLOCK_GETTIME 1 #cmakedefine EINA_STATIC_BUILD_CHAINED_POOL 1 #cmakedefine EINA_STATIC_BUILD_ONE_BIG 1 #cmakedefine EINA_STATIC_BUILD_PASS_THROUGH 1 #define MODULE_ARCH "@MODULE_ARCH@" -#define SHARED_LIB_SUFFIX "bla" +#define SHARED_LIB_SUFFIX "@SHARED_LIB_SUFFIX@" + +#if defined (HAVE_LISTXATTR) && defined (HAVE_SETXATTR) && defined (HAVE_GETXATTR) +#define HAVE_XATTR +#endif + +//for now statically define that to one +#define STRERROR_R_CHAR_P 1 + +#cmakedefine EFL_ALWAYS_INLINE @EFL_ALWAYS_INLINE@ +#cmakedefine EFL_HAVE_OSX_SPINLOCK 1 +#cmakedefine EFL_HAVE_POSIX_THREADS_SPINLOCK 1 +#cmakedefine EFL_HAVE_THREADS 1 #endif |