From 0d218c64526d4684dc975785317cff77e6e21f73 Mon Sep 17 00:00:00 2001 From: Roman Tsisyk <roman@tsisyk.com> Date: Thu, 28 Jan 2016 13:52:02 +0300 Subject: [PATCH] CMake: use cache properly and don't print useless messages * Don't print information if nothing has changed * Remove -DENABLE_BUNDLED_XXX options which doesn't work * Use common names for _DIRS and _LIBRARIES variables --- CMakeLists.txt | 108 ++++++++++++++------------------ cmake/BuildLibCORO.cmake | 9 ++- cmake/BuildLibEIO.cmake | 5 -- cmake/BuildLibEV.cmake | 5 -- cmake/BuildLibGOPT.cmake | 4 -- cmake/BuildLibYAML.cmake | 15 +++-- cmake/BuildSophia.cmake | 51 ++++++++------- cmake/FindOptionalPackage.cmake | 2 +- cmake/FindReadline.cmake | 35 +++++------ cmake/FindTermcap.cmake | 16 ++--- cmake/compiler.cmake | 2 + cmake/luajit.cmake | 17 ++--- cmake/os.cmake | 11 ++-- cmake/simd.cmake | 6 +- src/CMakeLists.txt | 6 +- src/box/CMakeLists.txt | 4 +- src/lib/bit/CMakeLists.txt | 10 --- test/CMakeLists.txt | 3 + test/unit/CMakeLists.txt | 1 - 19 files changed, 143 insertions(+), 167 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f45acf269..995f398175 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ include(CheckCXXSourceCompiles) include(TestBigEndian) include(CheckFunctionExists) include(FindOptionalPackage) +include(FindPackageMessage) find_program(ECHO echo) find_program(XSLTPROC xsltproc) @@ -52,15 +53,10 @@ include(cmake/compiler.cmake) include(cmake/simd.cmake) include(cmake/atomic.cmake) include(cmake/profile.cmake) -include(cmake/FindReadline.cmake) include(cmake/FindSphinx.cmake) include(cmake/module.cmake) include(cmake/thread.cmake) -if (NOT READLINE_FOUND) - message(FATAL_ERROR "readline library not found.") -endif() - option(ENABLE_VALGRIND "Enable integration with valgrind, a memory analyzing tool" OFF) check_symbol_exists(MAP_ANON sys/mman.h HAVE_MAP_ANON) @@ -176,7 +172,9 @@ set(PACKAGE_VERSION "${PACKAGE_VERSION}.${CPACK_PACKAGE_VERSION_MINOR}") set(PACKAGE_VERSION "${PACKAGE_VERSION}.${CPACK_PACKAGE_VERSION_PATCH}") set(PACKAGE_VERSION "${PACKAGE_VERSION}.${CPACK_PACKAGE_VERSION_COMMIT}") -message(STATUS "Tarantool version is ${TARANTOOL_VERSION} (${PACKAGE_VERSION})") +find_package_message(TARANTOOL_VERSION + "Tarantool version is ${TARANTOOL_VERSION} (${PACKAGE_VERSION})" + "${PACKAGE_VERSION}") # # Specify where to look for include files. @@ -208,16 +206,14 @@ foreach(dir endif() endforeach() -message(STATUS "Module sources: ${MODULE_FULL_LUADIR}") -message(STATUS "Module libraries: ${MODULE_FULL_LIBDIR}") -message(STATUS "Module includes: ${MODULE_FULL_INCLUDEDIR}") - list(APPEND MODULE_LUAPATH "${MODULE_FULL_LUADIR}/?.lua") list(APPEND MODULE_LUAPATH "${MODULE_FULL_LUADIR}/?/init.lua") list(APPEND MODULE_LIBPATH "${MODULE_FULL_LIBDIR}/?${CMAKE_SHARED_MODULE_SUFFIX}") -message(STATUS "Module package.path: ${MODULE_LUAPATH}") -message(STATUS "Module package.cpath: ${MODULE_LIBPATH}") +find_package_message(MODULE_LUAPATH "Lua package.path: ${MODULE_LUAPATH}" + "${MODULE_LUAPATH}") +find_package_message(MODULE_LIBPATH "Lua package.cpath: ${MODULE_LIBPATH}" + "${MODULE_LIBPATH}") # # Now handle all configuration options. @@ -265,21 +261,25 @@ endif() add_custom_target(build_bundled_libs) # -# LibLUAJIT +# ReadLine # -include(luajit) +set(Readline_FIND_REQUIRED ON) +find_package(Readline) # -# LibEV +# LuaJIT +# +# Patched. # +set(ENABLE_BUNDLED_LUAJIT ON) +include(luajit) # -# Currently our code uses libev with #define EV_MULTIPLICITY 0. -# This option means that libev has a global variable with -# struct ev_loop data. -# Such design is not compatible with the dynamic version of libev -# provided by distros. +# LibEV +# +# Patched. +# set(ENABLE_BUNDLED_LIBEV ON) include(BuildLibEV) libev_build() @@ -288,8 +288,10 @@ add_dependencies(build_bundled_libs ev) # # LibEIO # -option(ENABLE_BUNDLED_LIBEIO "Enable building of the bundled libeio" ON) - +# Patched. +# +#option(ENABLE_BUNDLED_LIBEIO "Enable building of the bundled libeio" ON) +set(ENABLE_BUNDLED_LIBEIO ON) if (ENABLE_BUNDLED_LIBEIO) include(BuildLibEIO) libeio_build() @@ -299,7 +301,6 @@ else() find_package(LibEIO) endif() - # # LibCORO # @@ -316,15 +317,6 @@ include(BuildLibCORO) libcoro_build() add_dependencies(build_bundled_libs coro) -if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "86" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "amd64") - add_definitions("-DCORO_ASM") -elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") - add_definitions("-DCORO_ASM") -else() - add_definitions("-DCORO_SJLJ") -endif() - - # # LibGOPT # @@ -372,6 +364,10 @@ include(BuildMisc) libmisc_build() add_dependencies(build_bundled_libs misc) +# +# Sophia +# + include(BuildSophia) sophia_build() @@ -411,35 +407,23 @@ configure_file( "${PROJECT_BINARY_DIR}/src/trivia/config.h" ) message (STATUS "") -message (STATUS "Tarantool configuration is complete:") -message (STATUS "") -message (STATUS "VERSION: ${TARANTOOL_VERSION}") -message (STATUS "BUILD: ${TARANTOOL_BUILD}") -message (STATUS "C_COMPILER: ${TARANTOOL_C_COMPILER}") -message (STATUS "CXX_COMPILER: ${TARANTOOL_CXX_COMPILER}") -message (STATUS "C_FLAGS:${TARANTOOL_C_FLAGS}") -message (STATUS "CXX_FLAGS:${TARANTOOL_CXX_FLAGS}") -message (STATUS "PREFIX: ${CMAKE_INSTALL_PREFIX}") -message (STATUS "MODULE_DIR: ${MODULE_DIR}") -message (STATUS "ENABLE_SSE2: ${ENABLE_SSE2}") -message (STATUS "ENABLE_AVX: ${ENABLE_AVX}") -message (STATUS "ENABLE_GCOV: ${ENABLE_GCOV}") -message (STATUS "ENABLE_GPROF: ${ENABLE_GPROF}") -message (STATUS "ENABLE_VALGRIND: ${ENABLE_VALGRIND}") -message (STATUS "ENABLE_TRACE: ${ENABLE_TRACE}") -message (STATUS "ENABLE_BACKTRACE: ${ENABLE_BACKTRACE} (symbol resolve: ${HAVE_BFD})") -message (STATUS "ENABLE_BUNDLED_LUAJIT: ${ENABLE_BUNDLED_LUAJIT}") -message (STATUS "ENABLE_BUNDLED_LIBEV: ${ENABLE_BUNDLED_LIBEV}") -message (STATUS "ENABLE_BUNDLED_LIBEIO: ${ENABLE_BUNDLED_LIBEIO}") -message (STATUS "ENABLE_BUNDLED_LIBCORO: ${ENABLE_BUNDLED_LIBCORO}") -message (STATUS "ENABLE_BUNDLED_LIBYAML: ${ENABLE_BUNDLED_LIBYAML}") -message (STATUS "ENABLE_BUNDLED_MSGPUCK: ${ENABLE_BUNDLED_MSGPUCK}") -message (STATUS "ENABLE_DOC: ${ENABLE_DOC}") -message (STATUS "ENABLE_DIST: ${ENABLE_DIST}") + +set(PREFIX ${CMAKE_INSTALL_PREFIX}) +set(options VERSION BUILD C_COMPILER CXX_COMPILER C_FLAGS CXX_FLAGS PREFIX + ENABLE_SSE2 ENABLE_AVX + ENABLE_GCOV ENABLE_GPROF ENABLE_VALGRIND ENABLE_TRACE + ENABLE_BACKTRACE + ENABLE_DOC + ENABLE_DIST + ENABLE_BUNDLED_LIBYAML + ENABLE_BUNDLED_MSGPUCK) +foreach(option IN LISTS options) + if (NOT DEFINED ${option}) + set(value "${TARANTOOL_${option}}") + else () + set(value "${${option}}") + endif () + find_package_message(${option} "${option}: ${value}" ${value}) +endforeach(option) list_optional_packages() -if (TARGET_OS_DARWIN) - message (STATUS "DARWIN_BUILD_TYPE: ${DARWIN_BUILD_TYPE}") -endif() -message (STATUS "") -message (STATUS "To view or modify configuration results, check out CMakeCache.txt.") message (STATUS "") diff --git a/cmake/BuildLibCORO.cmake b/cmake/BuildLibCORO.cmake index 11cc2ae6ee..3a9c95426a 100644 --- a/cmake/BuildLibCORO.cmake +++ b/cmake/BuildLibCORO.cmake @@ -10,8 +10,13 @@ macro(libcoro_build) set(LIBCORO_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/third_party/coro) set(LIBCORO_LIBRARIES coro) - message(STATUS "Use bundled libcoro includes: ${LIBCORO_INCLUDE_DIR}/coro.h") - message(STATUS "Use bundled libcoro library: ${LIBCORO_LIBRARIES}") + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "86" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "amd64") + add_definitions("-DCORO_ASM") + elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") + add_definitions("-DCORO_ASM") + else() + add_definitions("-DCORO_SJLJ") + endif() unset(coro_src) endmacro(libcoro_build) diff --git a/cmake/BuildLibEIO.cmake b/cmake/BuildLibEIO.cmake index 64d401b29c..dea3e5635e 100644 --- a/cmake/BuildLibEIO.cmake +++ b/cmake/BuildLibEIO.cmake @@ -37,11 +37,6 @@ macro(libeio_build) set(LIBEIO_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/third_party) set(LIBEIO_LIBRARIES eio) - message(STATUS "Use bundled libeio includes: " - "${LIBEIO_INCLUDE_DIR}/tarantool_eio.h") - message(STATUS "Use bundled libeio library: " - "${LIBEIO_LIBRARIES}") - unset(eio_src) unset(eio_compile_flags) endmacro(libeio_build) diff --git a/cmake/BuildLibEV.cmake b/cmake/BuildLibEV.cmake index f8216991c0..a5a85fc9a0 100644 --- a/cmake/BuildLibEV.cmake +++ b/cmake/BuildLibEV.cmake @@ -57,11 +57,6 @@ macro(libev_build) set(LIBEV_INCLUDE_DIR ${PROJECT_BINARY_DIR}/third_party) set(LIBEV_LIBRARIES ev) - message(STATUS "Use bundled libev includes: " - "${LIBEV_INCLUDE_DIR}/tarantool_ev.h") - message(STATUS "Use bundled libev library: " - "${LIBEV_LIBRARIES}") - unset(ev_src) unset(ev_compile_flags) unset(ev_link_libraries) diff --git a/cmake/BuildLibGOPT.cmake b/cmake/BuildLibGOPT.cmake index 539d0e92e2..ef2c13d855 100644 --- a/cmake/BuildLibGOPT.cmake +++ b/cmake/BuildLibGOPT.cmake @@ -9,9 +9,5 @@ macro(libgopt_build) set(LIBGOPT_INCLUDE_DIR ${PROJECT_BINARY_DIR}/third_party/gopt) set(LIBGOPT_LIBRARIES gopt) - message(STATUS "Use bundled libgopt includes: ${LIBGOPT_INCLUDE_DIR}/gopt.h") - message(STATUS "Use bundled libgopt library: ${LIBGOPT_LIBRARIES}") - unset(gopt_src) endmacro(libgopt_build) - diff --git a/cmake/BuildLibYAML.cmake b/cmake/BuildLibYAML.cmake index 74ecc4c77c..77c717071a 100644 --- a/cmake/BuildLibYAML.cmake +++ b/cmake/BuildLibYAML.cmake @@ -10,21 +10,24 @@ macro(libyaml_build) ${PROJECT_SOURCE_DIR}/third_party/libyaml/scanner.c ${PROJECT_SOURCE_DIR}/third_party/libyaml/writer.c) + set(LIBYAML_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/third_party/libyaml) + set(LIBYAML_LIBRARIES yaml) + add_library(yaml STATIC ${yaml_src}) set(yaml_compile_flags -Wno-unused) if (CC_HAS_WNO_PARENTHESES_EQUALITY) set(yaml_compile_flags "${yaml_compile_flags} -Wno-parentheses-equality") endif() + set(yaml_compile_flags "${yaml_compile_flags} -I${LIBYAML_INCLUDE_DIRS}") set_target_properties(yaml PROPERTIES COMPILE_FLAGS "${yaml_compile_flags}") - set(LIBYAML_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/third_party/libyaml) - set(LIBYAML_LIBRARIES yaml) - # A workaround for config.h - set_target_properties(yaml PROPERTIES COMPILE_DEFINITIONS "HAVE_CONFIG_H") - include_directories(${LIBYAML_INCLUDE_DIR}) + set_target_properties(yaml PROPERTIES COMPILE_DEFINITIONS "HAVE_CONFIG_H") + + find_package_message(LIBYAML + "Using bundled libyaml" + "${LIBYAML_LIBRARIES}:${LIBYAML_INCLUDE_DIRS}") - message(STATUS "Use bundled libyaml library") unset(yaml_src) endmacro(libyaml_build) diff --git a/cmake/BuildSophia.cmake b/cmake/BuildSophia.cmake index 80ee5f0d63..96a1c39206 100644 --- a/cmake/BuildSophia.cmake +++ b/cmake/BuildSophia.cmake @@ -2,33 +2,36 @@ # macro(sophia_build) set(SOPHIA_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/third_party/sophia/sophia/sophia) - set(SOPHIA_OPTS - CFLAGS="${CMAKE_C_FLAGS}" - LDFLAGS="${CMAKE_SHARED_LINKER_FLAGS}") - separate_arguments(SOPHIA_OPTS) + set(SOPHIA_OPTS + CFLAGS="${CMAKE_C_FLAGS}" + LDFLAGS="${CMAKE_SHARED_LINKER_FLAGS}") + separate_arguments(SOPHIA_OPTS) + set(SOPHIA_DIR "${PROJECT_BINARY_DIR}/third_party/sophia") if (${PROJECT_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR}) - add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/third_party/sophia/libsophia.a - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/third_party/sophia - COMMAND $(MAKE) ${SOPHIA_OPTS} clean - COMMAND $(MAKE) ${SOPHIA_OPTS} static - DEPENDS ${CMAKE_SOURCE_DIR}/CMakeCache.txt - ) + add_custom_command(OUTPUT ${SOPHIA_DIR}/libsophia.a + WORKING_DIRECTORY ${SOPHIA_DIR} + COMMAND $(MAKE) ${SOPHIA_OPTS} clean + COMMAND $(MAKE) ${SOPHIA_OPTS} static + DEPENDS ${CMAKE_SOURCE_DIR}/CMakeCache.txt + ) else() - add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/third_party/sophia - COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/third_party/sophia + add_custom_command(OUTPUT ${SOPHIA_DIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${SOPHIA_DIR} + ) + add_custom_command(OUTPUT ${SOPHIA_DIR}/libsophia.a + WORKING_DIRECTORY ${SOPHIA_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_SOURCE_DIR}/third_party/sophia + ${SOPHIA_DIR} + COMMAND $(MAKE) ${SOPHIA_OPTS} clean + COMMAND $(MAKE) ${SOPHIA_OPTS} static + DEPENDS ${PROJECT_BINARY_DIR}/CMakeCache.txt ${SOPHIA_DIR} ) - add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/third_party/sophia/libsophia.a - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/third_party/sophia - COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/third_party/sophia ${PROJECT_BINARY_DIR}/third_party/sophia - COMMAND $(MAKE) ${SOPHIA_OPTS} clean - COMMAND $(MAKE) ${SOPHIA_OPTS} static - DEPENDS ${PROJECT_BINARY_DIR}/CMakeCache.txt ${PROJECT_BINARY_DIR}/third_party/sophia - ) endif() - add_custom_target(libsophia ALL - DEPENDS ${PROJECT_BINARY_DIR}/third_party/sophia/libsophia.a - ) - message(STATUS "Use bundled Sophia: ${PROJECT_SOURCE_DIR}/third_party/sophia/") - set (sophia_lib "${PROJECT_BINARY_DIR}/third_party/sophia/libsophia.a") + + add_custom_target(libsophia ALL DEPENDS ${SOPHIA_DIR}/libsophia.a) add_dependencies(build_bundled_libs libsophia) + + set(SOPHIA_LIBRARIES ${SOPHIA_DIR}/libsophia.a) + set(SOPHIA_INCLUDE_DIRS ${SOPHIA_INCLUDE_DIR}) endmacro(sophia_build) diff --git a/cmake/FindOptionalPackage.cmake b/cmake/FindOptionalPackage.cmake index 06267c770a..899460fef9 100644 --- a/cmake/FindOptionalPackage.cmake +++ b/cmake/FindOptionalPackage.cmake @@ -33,5 +33,5 @@ endmacro (find_optional_package) macro(list_optional_packages) file(READ ${_OptionalPackagesFile} _message) - message(STATUS "\n${_message}") + find_package_message(OPTIONAL_PACKAGES "${_message}" "${_message}") endmacro() diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake index bde282b9d1..d328df0fd7 100644 --- a/cmake/FindReadline.cmake +++ b/cmake/FindReadline.cmake @@ -5,11 +5,12 @@ # READLINE_INCLUDE_DIR # READLINE_LIBRARIES # -include(FindTermcap) + +find_package(Termcap) if (DEFINED READLINE_ROOT) set(_FIND_OPTS NO_CMAKE NO_CMAKE_SYSTEM_PATH) - FIND_LIBRARY(READLINE_READLINE_LIBRARY + FIND_LIBRARY(READLINE_LIBRARY NAMES readline HINTS ${READLINE_ROOT}/lib ${_FIND_OPTS}) @@ -18,30 +19,24 @@ if (DEFINED READLINE_ROOT) HINTS ${READLINE_ROOT}/include ${_FIND_OPTS}) else() - FIND_LIBRARY(READLINE_READLINE_LIBRARY NAMES readline) + FIND_LIBRARY(READLINE_LIBRARY NAMES readline) FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h) endif() -SET(READLINE_FOUND FALSE) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Readline + REQUIRED_VARS READLINE_INCLUDE_DIR READLINE_LIBRARY) +set(READLINE_INCLUDE_DIRS ${READLINE_INCLUDE_DIR}) +set(READLINE_LIBRARIES ${READLINE_LIBRARY}) -IF (READLINE_READLINE_LIBRARY AND READLINE_INCLUDE_DIR) - SET (READLINE_FOUND TRUE) - SET (READLINE_INCLUDE_DIR ${READLINE_INCLUDE_DIR}) - SET (READLINE_LIBRARIES ${READLINE_READLINE_LIBRARY}) +IF (READLINE_FOUND) IF (EXISTS ${READLINE_INCLUDE_DIR}/readline/rlconf.h) set(HAVE_GNU_READLINE 1) - set(libname "GNU readline") - ELSE() - set(libname "readline") ENDIF () - MESSAGE(STATUS "Found ${libname}: ${READLINE_READLINE_LIBRARY}, include dir ${READLINE_INCLUDE_DIR}") IF (TERMCAP_FOUND) - SET (READLINE_LIBRARIES ${READLINE_LIBRARIES} ${TERMCAP_LIBRARY}) - ENDIF (TERMCAP_FOUND) -ENDIF (READLINE_READLINE_LIBRARY AND READLINE_INCLUDE_DIR) + SET (READLINE_LIBRARIES ${READLINE_LIBRARIES} ${TERMCAP_LIBRARIES}) + SET (READLINE_INCLUDE_DIRS ${READLINE_INCLUDE_DIRS} ${TERMCAP_INCLUDE_DIRS}) + ENDIF() +ENDIF (READLINE_FOUND) -MARK_AS_ADVANCED( - READLINE_FOUND - READLINE_INCLUDE_DIR - READLINE_LIBRARIES - ) +MARK_AS_ADVANCED(READLINE_INCLUDE_DIRS READLINE_LIBRARIES) diff --git a/cmake/FindTermcap.cmake b/cmake/FindTermcap.cmake index 85871f5a0f..efe0c48cfb 100644 --- a/cmake/FindTermcap.cmake +++ b/cmake/FindTermcap.cmake @@ -6,15 +6,11 @@ FIND_LIBRARY(TERMCAP_LIBRARY NAMES termcap) FIND_PATH(TERMCAP_INCLUDE_DIR NAMES termcap.h) -SET (TERMCAP_FOUND FALSE) -IF (TERMCAP_LIBRARY) - SET (TERMCAP_FOUND TRUE) - MESSAGE(STATUS "Found Termcap: ${TERMCAP_LIBRARY}") -ENDIF () +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Termcap + REQUIRED_VARS TERMCAP_INCLUDE_DIR TERMCAP_LIBRARY) +set(TERMCAP_INCLUDE_DIRS ${TERMCAP_INCLUDE_DIR}) +set(TERMCAP_LIBRARIES ${TERMCAP_LIBRARY}) -MARK_AS_ADVANCED( - TERMCAP_FOUND - TERMCAP_LIBRARY - TERMCAP_INCLUDE_DIR - ) +mark_as_advanced(TERMCAP_LIBRARIES TERMCAP_INCLUDE_DIRS) diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index 487fe3e1ac..d4950505f3 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -228,6 +228,8 @@ else() set(HAVE_BUILTIN_POPCOUNTLL 0) set(HAVE_BUILTIN_BSWAP32 0) set(HAVE_BUILTIN_BSWAP64 0) + find_package_message(CC_BIT "Using slow implementation of bit operations" + "${CMAKE_COMPILER_IS_CLANG}:${CMAKE_COMPILER_IS_GNUCC}") endif() if (NOT HAVE_BUILTIN_CTZ OR NOT HAVE_BUILTIN_CTZLL) diff --git a/cmake/luajit.cmake b/cmake/luajit.cmake index 857e27641c..3bd1e2abee 100644 --- a/cmake/luajit.cmake +++ b/cmake/luajit.cmake @@ -23,9 +23,9 @@ # and, in case it is not present or can not be used, # falls back to the bundled one. # -# Adds CMake options: ENABLED_BUNDLED_LUAJIT, LUAJIT_PREFIX -# Exports CMake defines: LUAJIT_PREFIX, LUAJIT_INCLUDE, LUAJIT_LIB -# Modifies CMAKE_CFLAGS with -I${LUAJIT_INCLUDE} +# LUAJIT_FOUND +# LUAJIT_LIBRARIES +# LUAJIT_INCLUDE_DIRS # # @@ -123,10 +123,7 @@ else() endif() unset (LUAJIT_RUNS) -include_directories("${LUAJIT_INCLUDE}") - -message (STATUS "Use LuaJIT includes: ${LUAJIT_INCLUDE}") -message (STATUS "Use LuaJIT library: ${LUAJIT_LIB}") +#include_directories("${LUAJIT_INCLUDE}") macro(luajit_build) set (luajit_cc ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1}) @@ -214,3 +211,9 @@ endmacro() if (ENABLE_BUNDLED_LUAJIT) luajit_build() endif() + +set(LuaJIT_FIND_REQUIRED TRUE) +find_package_handle_standard_args(LuaJIT + REQUIRED_VARS LUAJIT_INCLUDE LUAJIT_LIB) +set(LUAJIT_INCLUDE_DIRS ${LUAJIT_INCLUDE}) +set(LUAJIT_LIBRARIES ${LUAJIT_LIB}) diff --git a/cmake/os.cmake b/cmake/os.cmake index 35a1df12c4..e33847da76 100644 --- a/cmake/os.cmake +++ b/cmake/os.cmake @@ -10,17 +10,18 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") # On 32-bit systems, support files larger than 2GB # (see man page for feature_test_macros). add_definitions("-D_FILE_OFFSET_BITS=64") - message(STATUS "Building for Linux") + find_package_message(PLATFORM "Building for Linux" "${CMAKE_SYSTEM_NAME}") elseif (${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD") set(TARGET_OS_FREEBSD 1) set(TARGET_OS_DEBIAN_FREEBSD 1) # Debian/kFreeBSD uses GNU glibc. add_definitions("-D_GNU_SOURCE") add_definitions("-D_FILE_OFFSET_BITS=64") - message(STATUS "Building for Debian/kFreeBSD") + find_package_message(PLATFORM "Building for Debian/kFreeBSD" + "${CMAKE_SYSTEM_NAME}") elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") set(TARGET_OS_FREEBSD 1) - message(STATUS "Building for FreeBSD") + find_package_message(PLATFORM "Building for FreeBSD" "${CMAKE_SYSTEM_NAME}") elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") set(TARGET_OS_DARWIN 1) @@ -40,7 +41,9 @@ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/opt/local/lib") endif() - message(STATUS "Building for Mac OS X") + find_package_message(PLATFORM "Building for OS X" "${CMAKE_SYSTEM_NAME}") + find_package_message(DARWIN_BUILD_TYPE + "DARWIN_BUILD_TYPE: ${DARWIN_BUILD_TYPE}" "${DARWIN_BUILD_TYPE}") else() message (FATAL_ERROR "Unsupported platform -- ${CMAKE_SYSTEM_NAME}") endif() diff --git a/cmake/simd.cmake b/cmake/simd.cmake index 346857b6f5..df1840022e 100644 --- a/cmake/simd.cmake +++ b/cmake/simd.cmake @@ -49,7 +49,8 @@ if (ENABLE_SSE2) message( SEND_ERROR "SSE2 is enabled, but is not supported by compiler.") else() add_compile_flags("C;CXX" "-msse2") - message(STATUS "SSE2 is enabled - target CPU must support it") + find_package_message(SSE2 "SSE2 is enabled - target CPU must supppot it" + "${CC_HAS_SSE2_INTRINSICS}") endif() endif() @@ -58,6 +59,7 @@ if (ENABLE_AVX) message(SEND_ERROR "AVX is enabled") else() add_compile_flags("C;CXX" "-mavx") - message(STATUS "AVX is enabled - target CPU must support it") + find_package_message(SSE2 "AVX is enabled - target CPU must support it" + "${CC_HAS_AVX_INTRINSICS}") endif() endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 749488b6ca..21a7d7cddf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,7 +7,9 @@ include_directories(${LIBEV_INCLUDE_DIR}) include_directories(${LIBEIO_INCLUDE_DIR}) include_directories(${LIBCORO_INCLUDE_DIR}) include_directories(${LIBGOPT_INCLUDE_DIR}) -include_directories(${READLINE_INCLUDE_DIR}) +include_directories(${LUAJIT_INCLUDE_DIRS}) +include_directories(${READLINE_INCLUDE_DIRS}) +include_directories(${LIBYAML_INCLUDE_DIRS}) include_directories(${MSGPUCK_INCLUDE_DIRS}) set(LIBUTIL_FREEBSD_SRC ${CMAKE_SOURCE_DIR}/third_party/libutil_freebsd) @@ -161,7 +163,7 @@ list(APPEND common_libraries ${LIBGOPT_LIBRARIES} ${LIBYAML_LIBRARIES} ${READLINE_LIBRARIES} - ${LUAJIT_LIB} + ${LUAJIT_LIBRARIES} ) if (TARGET_OS_LINUX OR TARGET_OS_DEBIAN_FREEBSD) diff --git a/src/box/CMakeLists.txt b/src/box/CMakeLists.txt index 7a1acb9a51..880f80c6d7 100644 --- a/src/box/CMakeLists.txt +++ b/src/box/CMakeLists.txt @@ -1,6 +1,6 @@ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/box/lua) -include_directories(${SOPHIA_INCLUDE_DIR}) +include_directories(${SOPHIA_INCLUDE_DIRS}) set(lua_sources) lua_source(lua_sources lua/load_cfg.lua) @@ -78,4 +78,4 @@ add_library(box STATIC ${bin_sources}) add_dependencies(box build_bundled_libs) -target_link_libraries(box ${sophia_lib}) +target_link_libraries(box ${SOPHIA_LIBRARIES}) diff --git a/src/lib/bit/CMakeLists.txt b/src/lib/bit/CMakeLists.txt index d30afe2216..49df397d33 100644 --- a/src/lib/bit/CMakeLists.txt +++ b/src/lib/bit/CMakeLists.txt @@ -1,13 +1,3 @@ -if ((HAVE_BUILTIN_CTZ OR HAVE_FFSL) AND - (HAVE_BUILTIN_CTZLL OR HAVE_FFSLL) AND - HAVE_BUILTIN_CLZ AND HAVE_BUILTIN_CLZLL AND - HAVE_BUILTIN_POPCOUNT AND HAVE_BUILTIN_POPCOUNTLL AND - HAVE_BUILTIN_BSWAP32 AND HAVE_BUILTIN_BSWAP64) - message(STATUS "Using compiler version of bit operations") -else() - message(WARNING "Using slow implementation of bit operations") -endif() - set(lib_sources bit.c ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7427df196f..24985f2337 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,5 +1,8 @@ enable_tnt_compile_flags() +include_directories(${LUAJIT_INCLUDE_DIRS}) +include_directories(${MSGPUCK_INCLUDE_DIRS}) + function(build_module module files) add_library(${module} SHARED ${files}) set_target_properties(${module} PROPERTIES PREFIX "") diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index ee86303788..24d268e9fb 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -4,7 +4,6 @@ set_source_files_compile_flags(${all_sources}) include_directories(${PROJECT_SOURCE_DIR}/src) include_directories(${PROJECT_BINARY_DIR}/src) -include_directories(${MSGPUCK_INCLUDE_DIRS}) include_directories(${CMAKE_SOURCE_DIR}/third_party) add_executable(rlist.test rlist.c unit.c) add_executable(stailq.test stailq.c unit.c) -- GitLab