Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Porting to freebsd: initial, compile ok, most tests ok. #286

Merged
merged 1 commit into from
Dec 24, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
100 changes: 55 additions & 45 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
project (ClickHouse)
cmake_minimum_required (VERSION 2.6)

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# Require at least gcc 5
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5 AND NOT CMAKE_VERSION VERSION_LESS 2.8.9)
message (FATAL_ERROR "GCC version must be at least 5! For example, if GCC 5 is available under gcc-5, g++-5 names, do the following: export CC=gcc-5 CXX=g++-5; rm -rf CMakeCache.txt CMakeFiles; and re run cmake or ./release.")
endif ()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Require at least clang 3.8
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.8)
message (FATAL_ERROR "Clang version must be at least 3.8!")
Expand All @@ -16,7 +16,11 @@ else ()
endif ()

if (APPLE)
set (APPLE_EXTRA_CXX_FLAG "-Dexp10=__exp10") # Also needed for libc++
set (PLATFORM_EXTRA_CXX_FLAG "-Dexp10=__exp10") # Also needed for libc++
endif ()

if (CMAKE_SYSTEM MATCHES "FreeBSD")
set (PLATFORM_EXTRA_CXX_FLAG "-DCLOCK_MONOTONIC_COARSE=CLOCK_MONOTONIC_FAST")
endif ()

cmake_policy (SET CMP0014 OLD) # Ignore warning about CMakeLists.txt in each directory
Expand Down Expand Up @@ -85,16 +89,16 @@ if (GLIBC_COMPATIBILITY)
set (GLIBC_COMPATIBILITY_LINK_FLAGS "-Wl,--wrap=memcpy")
endif ()

if ("${CXX11_ABI}" STREQUAL ENABLE)
if (CXX11_ABI STREQUAL ENABLE)
set (CXX11_ABI_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=1")
elseif ("${CXX11_ABI}" STREQUAL DISABLE)
elseif (CXX11_ABI STREQUAL DISABLE)
set (CXX11_ABI_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")
else ()
set (CXX11_ABI_FLAGS "")
endif ()

set (CMAKE_BUILD_COLOR_MAKEFILE ON)
set (CMAKE_CXX_FLAGS "-std=gnu++1y ${APPLE_EXTRA_CXX_FLAG} -fno-omit-frame-pointer ${COMMON_WARNING_FLAGS} ${CXX_WARNING_FLAGS} ${MACHINE_FLAGS} ${GLIBC_COMPATIBILITY_COMPILE_FLAGS} ${CXX11_ABI_FLAGS}")
set (CMAKE_CXX_FLAGS "-std=gnu++1y ${PLATFORM_EXTRA_CXX_FLAG} -fno-omit-frame-pointer ${COMMON_WARNING_FLAGS} ${CXX_WARNING_FLAGS} ${MACHINE_FLAGS} ${GLIBC_COMPATIBILITY_COMPILE_FLAGS} ${CXX11_ABI_FLAGS}")
set (CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g")
set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -ggdb3 -fno-inline")
Expand All @@ -104,8 +108,12 @@ set (CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g")
set (CMAKE_C_FLAGS_DEBUG "-O0 -g3 -ggdb3 -fno-inline")

if (NOT APPLE AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_SYSTEM MATCHES "FreeBSD"))
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif ()

if (NOT APPLE)
set (CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ ${GLIBC_COMPATIBILITY_LINK_FLAGS} ${CXX11_ABI_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GLIBC_COMPATIBILITY_LINK_FLAGS} ${CXX11_ABI_FLAGS}")
endif ()

# -fuse-ld=gold - fix linkage for gcc-5.4, gcc-6.1
Expand All @@ -127,44 +135,46 @@ if (ENABLE_TESTS)
endif (ENABLE_TESTS)

# Installation prefix
set (CMAKE_INSTALL_PREFIX /usr)

include_directories (${ClickHouse_SOURCE_DIR}/contrib/libcityhash/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/liblz4/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libdivide/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libdouble-conversion/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libcpuid/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libzstd/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libfarmhash/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libmetrohash/src)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libsparsehash/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libre2/)
include_directories (${ClickHouse_BINARY_DIR}/contrib/libre2/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libzookeeper/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libtcmalloc/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Foundation/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Util/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Net/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/NetSSL_OpenSSL/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/MySQL/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/ODBC/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/SQLite/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Crypto/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/XML/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/JSON/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/MongoDB/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libpoco/Zip/include/)
include_directories (${ClickHouse_SOURCE_DIR}/contrib/libboost/boost_1_62_0/)

include_directories (${ClickHouse_SOURCE_DIR}/libs/libcommon/include/)
include_directories (${ClickHouse_BINARY_DIR}/libs/libcommon/include/)
include_directories (${ClickHouse_SOURCE_DIR}/libs/libdaemon/include/)
include_directories (${ClickHouse_SOURCE_DIR}/libs/libpocoext/include/)
include_directories (${ClickHouse_SOURCE_DIR}/libs/libmysqlxx/include/)
include_directories (${ClickHouse_SOURCE_DIR}/libs/libzkutil/include/)

include_directories (${ClickHouse_SOURCE_DIR}/dbms/include)
if (NOT CMAKE_SYSTEM MATCHES "FreeBSD")
set (CMAKE_INSTALL_PREFIX /usr)
endif ()

include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libcityhash/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/liblz4/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libdivide/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libdouble-conversion/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libcpuid/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libzstd/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libfarmhash/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libmetrohash/src)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libsparsehash/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libre2/)
include_directories (BEFORE ${ClickHouse_BINARY_DIR}/contrib/libre2/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libzookeeper/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libtcmalloc/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Foundation/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Util/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Net/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/NetSSL_OpenSSL/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/MySQL/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/ODBC/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Data/SQLite/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Crypto/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/XML/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/JSON/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/MongoDB/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libpoco/Zip/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/contrib/libboost/boost_1_62_0/)

include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/libs/libcommon/include/)
include_directories (BEFORE ${ClickHouse_BINARY_DIR}/libs/libcommon/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/libs/libdaemon/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/libs/libpocoext/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/libs/libmysqlxx/include/)
include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/libs/libzkutil/include/)

include_directories (BEFORE ${ClickHouse_SOURCE_DIR}/dbms/include)

include_directories (/usr/local/include/)

Expand Down
2 changes: 1 addition & 1 deletion cmake/create_init_script.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ macro (create_init_script daemonname)
set (tmp_file_name ${filename}.init)

set (SED_INPLACE_SUFFIX "")
if (APPLE)
if (APPLE OR CMAKE_SYSTEM MATCHES "FreeBSD")
set (SED_INPLACE_SUFFIX "''")
endif ()
add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${tmp_file_name}
Expand Down
18 changes: 16 additions & 2 deletions cmake/find_glib.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ find_path (GLIB_INCLUDE_DIR NAMES glib.h HINTS ${GLIB_INCLUDE_HINTS})
find_path (GLIB_CONFIG_INCLUDE_DIR NAMES glibconfig.h HINTS ${GLIB_INCLUDE_HINTS})
include_directories (${GLIB_INCLUDE_DIR})
include_directories (${GLIB_CONFIG_INCLUDE_DIR})

if (APPLE)
set (INTL_HINTS "/usr/local/opt/gettext/lib")
if (USE_STATIC_LIBRARIES)
Expand All @@ -34,6 +35,19 @@ if (APPLE)
find_library (CORE_FOUNDATION_LIB CoreFoundation)
find_library (CARBON_LIB Carbon)
set (GLIB_LIBS ${GLIB_LIB} ${INTL_LIB} ${ICONV_LIB} ${CORE_FOUNDATION_LIB} ${CARBON_LIB})
else (APPLE)

elseif (CMAKE_SYSTEM MATCHES "FreeBSD")
set (ICONV_HINTS "")
set (INTL_HINTS "")
if (USE_STATIC_LIBRARIES)
find_library (ICONV_LIB libiconv.a HINTS ${ICONV_HINTS})
find_library (INTL_LIB libintl.a HINTS ${INTL_HINTS})
else ()
find_library (ICONV_LIB iconv HINTS ${ICONV_HINTS})
find_library (INTL_LIB intl HINTS ${INTL_HINTS})
endif ()
set (GLIB_LIBS ${GLIB_LIB} ${INTL_LIB} ${ICONV_LIB})
else ()

set (GLIB_LIBS ${GLIB_LIB})
endif (APPLE)
endif ()
10 changes: 5 additions & 5 deletions cmake/find_libmysqlclient.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
set (MYSQL_HINTS "/usr/local/opt/mysql/lib")
set (MYSQL_INCLUDE_HINTS "/usr/local/opt/mysql/include")
set (MYSQL_LIB_PATHS "/usr/local/opt/mysql/lib" "/usr/local/lib/mysql/")
set (MYSQL_INCLUDE_PATHS "/usr/local/opt/mysql/include")
if (USE_STATIC_LIBRARIES)
find_library (STATIC_MYSQLCLIENT_LIB libmysqlclient.a HINTS ${MYSQL_HINTS})
find_library (STATIC_MYSQLCLIENT_LIB libmysqlclient.a PATHS ${MYSQL_LIB_PATHS})
else ()
find_library (MYSQLCLIENT_LIB mysqlclient HINTS ${MYSQL_HINTS})
find_library (MYSQLCLIENT_LIB mysqlclient PATHS ${MYSQL_LIB_PATHS})
endif ()
find_path (MYSQL_INCLUDE_DIR NAMES mysql.h PATH_SUFFIXES mysql HINTS ${MYSQL_INCLUDE_HINTS})
find_path (MYSQL_INCLUDE_DIR NAMES mysql.h PATH_SUFFIXES mysql PATHS ${MYSQL_INCLUDE_PATHS})
include_directories (${MYSQL_INCLUDE_DIR})
1 change: 1 addition & 0 deletions contrib/libcpuid/include/cpuid/cpuid_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ static int get_total_cpus(void)
#endif

#if defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__ || defined __bsdi__ || defined __QNX__
#include <sys/types.h>
#include <sys/sysctl.h>

static int get_total_cpus(void)
Expand Down
14 changes: 9 additions & 5 deletions contrib/libpoco/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,18 +138,22 @@ if (UNIX AND NOT ANDROID )
# Standard 'must be' defines
if (APPLE)
add_definitions( -DPOCO_HAVE_IPv6 -DPOCO_NO_STAT64)
set(SYSLIBS dl)
else (APPLE)
set(SYSLIBS ${CMAKE_DL_LIBS})
elseif (CMAKE_SYSTEM MATCHES "FreeBSD")
add_definitions(-D__BSD_VISIBLE ) # better #include <sys/cdefs.h>
add_definitions(-D_XOPEN_SOURCE=700 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DPOCO_HAVE_IPv6)
set(SYSLIBS pthread ${CMAKE_DL_LIBS} rt)
else ()
add_definitions(-D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DPOCO_HAVE_FD_EPOLL -DPOCO_HAVE_IPv6)
set(SYSLIBS pthread dl rt)
endif (APPLE)
set(SYSLIBS pthread ${CMAKE_DL_LIBS} rt)
endif ()
endif(UNIX AND NOT ANDROID )

if (CMAKE_SYSTEM MATCHES "SunOS")
add_definitions( -DPOCO_OS_FAMILY_UNIX )
# Standard 'must be' defines
add_definitions( -D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 )
set(SYSLIBS pthread socket xnet nsl resolv rt dl)
set(SYSLIBS pthread socket xnet nsl resolv rt ${CMAKE_DL_LIBS})
endif(CMAKE_SYSTEM MATCHES "SunOS")

if (CMAKE_COMPILER_IS_MINGW)
Expand Down
2 changes: 1 addition & 1 deletion contrib/libpoco/Net/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ if(WIN32)
else()
set(SYSLIBS ${SYSLIBS} "ws2_32.lib" "iphlpapi.lib")
endif()
elseif(NOT APPLE)
elseif(NOT APPLE AND NOT CMAKE_SYSTEM MATCHES "FreeBSD")
if (USE_STATIC_LIBRARIES)
set(SYSLIBS ${SYSLIBS} "libanl.a")
else()
Expand Down
6 changes: 3 additions & 3 deletions contrib/libpoco/Net/src/DNS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
/// set default DNS timeout to 60 seconds
const Poco::Timespan Poco::Net::DNS::DEFAULT_DNS_TIMEOUT = Poco::Timespan(60, 0);

#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
/** getaddrinfo иногда работает бесконечно долго.
* Этот код использует getaddrinfo_a c некоторым таймаутом.
*
Expand Down Expand Up @@ -224,7 +224,7 @@ HostEntry DNS::hostByName(const std::string& hostname, const Poco::Timespan * ti
struct addrinfo hints;
std::memset(&hints, 0, sizeof(hints));
hints.ai_flags = hintFlags;
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
int rc = GetAddrinfo::instance().getaddrinfo(hostname.c_str(), NULL, &hints, &pAI, timeout_);
#else
(void)timeout_;
Expand Down Expand Up @@ -278,7 +278,7 @@ HostEntry DNS::hostByAddress(const IPAddress& address, const Poco::Timespan * ti
struct addrinfo hints;
std::memset(&hints, 0, sizeof(hints));
hints.ai_flags = hintFlags;
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
int rc = GetAddrinfo::instance().getaddrinfo(fqname, NULL, &hints, &pAI, timeout_);
#else
(void)timeout_;
Expand Down
1 change: 1 addition & 0 deletions contrib/libpoco/cmake/FindMySQL.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
find_path(MYSQL_INCLUDE_DIR mysql.h
PATHS
/usr/include/mysql
/usr/local/include/mysql
/opt/mysql/mysql/include
Expand Down
8 changes: 8 additions & 0 deletions contrib/libtcmalloc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@ add_definitions(
-fno-builtin-memalign -fno-builtin-posix_memalign -fno-builtin-valloc -fno-builtin-pvalloc
)

if(CMAKE_SYSTEM MATCHES "FreeBSD" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_definitions(-Wno-unused-but-set-variable)
endif()

if(CMAKE_SYSTEM MATCHES "FreeBSD")
add_definitions(-D_GNU_SOURCE)
endif()

include_directories (include src)

message(STATUS "Building: tcmalloc_minimal_internal")
Expand Down
2 changes: 1 addition & 1 deletion contrib/libtcmalloc/include/gperftools/tcmalloc.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
#define TC_VERSION_STRING "gperftools 2.5"

/* For struct mallinfo, if it's defined. */
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
# include <malloc.h>
#else
struct mallinfo {
Expand Down
13 changes: 8 additions & 5 deletions contrib/libtcmalloc/src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
#define HAVE_FCNTL_H 1

/* Define to 1 if you have the <features.h> header file. */
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
#define HAVE_FEATURES_H 1
#endif

Expand All @@ -99,15 +99,17 @@
//#define HAVE_LIBUNWIND_H 1

/* Define to 1 if you have the <linux/ptrace.h> header file. */
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
#define HAVE_LINUX_PTRACE_H 1
#endif

/* Define if this is Linux that has SIGEV_THREAD_ID */
#define HAVE_LINUX_SIGEV_THREAD_ID 1

/* Define to 1 if you have the <malloc.h> header file. */
#if !defined(__FreeBSD__)
#define HAVE_MALLOC_H 1
#endif

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
Expand All @@ -122,7 +124,7 @@
#define HAVE_POLL_H 1

/* define if libc has program_invocation_name */
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
#define HAVE_PROGRAM_INVOCATION_NAME 1
#endif

Expand Down Expand Up @@ -155,7 +157,8 @@
#define HAVE_STRING_H 1

/* Define to 1 if the system has the type `struct mallinfo'. */
#ifndef __APPLE__
//#if !defined(__APPLE__) && !defined(__FreeBSD__)
#if !defined(__APPLE__)
#define HAVE_STRUCT_MALLINFO 1
#endif

Expand Down Expand Up @@ -211,7 +214,7 @@
#define HAVE___ATTRIBUTE__ 1

/* Define to 1 if compiler supports __environ */
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
#define HAVE___ENVIRON 1
#endif

Expand Down
16 changes: 12 additions & 4 deletions dbms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
include_directories (include)
include_directories (/usr/include/mysql)
include_directories (BEFORE include)
#include_directories (/usr/include/mysql)

add_subdirectory (src)

Expand Down Expand Up @@ -50,7 +50,7 @@ list(REMOVE_ITEM dbms_sources
src/Databases/DatabaseCloud.cpp
src/Common/StringUtils.cpp)

if (APPLE)
if (APPLE OR CMAKE_SYSTEM MATCHES "FreeBSD")
list(REMOVE_ITEM dbms_headers
include/DB/Common/AIO.h
include/DB/IO/WriteBufferAIO.h
Expand Down Expand Up @@ -109,6 +109,12 @@ if (APPLE)
set(APPLE_ICONV_LIB iconv)
endif()

if (CMAKE_SYSTEM MATCHES "FreeBSD")
set(PLATFORM_LIBS "execinfo")
else()
set(PLATFORM_LIBS "")
endif()

target_link_libraries(dbms
common
zkutil
Expand All @@ -125,7 +131,9 @@ target_link_libraries(dbms
PocoDataODBC
PocoMongoDB
${APPLE_ICONV_LIB}
dl ${LTDL_LIB})
${PLATFORM_LIBS}
${CMAKE_DL_LIBS}
${LTDL_LIB})

add_dependencies (dbms
common
Expand Down