Adding `#include <cstdlib>` to `storage/rocksdb/rdb_datadic.h` solves the issue on FreeBSD 11.0. Not sure if this should be enclosed in a #ifdef _FreeBSD_ block
While building RocksDB I get a fatal compilation error
```
/usr/bin/c++ -DHAVE_CONFIG_H -DLZ4 -DMYSQL_DYNAMIC_PLUGIN -DOS_FREEBSD -DROCKSDB_JEMALLOC -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_PLATFORM_POSIX -DROCKSDB_SUPPORT_THREAD_LOCAL -DSNAPPY -DZLIB -DZSTD -Drocksdb_EXPORTS -Iinclude -Isql -Ipcre -Istorage/rocksdb/rocksdb -Istorage/rocksdb/rocksdb/include -isystem storage/rocksdb/rocksdb/third-party/gtest-1.7.0/fused-src -Istorage/rocksdb/rocksdb/util -I/usr/include -I/usr/local/include -O2 -pipe -fstack-protector -isystem /usr/local/include -fno-strict-aliasing -DWITH_INNODB_DISALLOW_WRITES -fno-rtti -DDBUG_OFF -fPIC -std=c++11 -MD -MT storage/rocksdb/CMakeFiles/rocksdb.dir/rdb_datadic.cc.o -MF storage/rocksdb/CMakeFiles/rocksdb.dir/rdb_datadic.cc.o.d -o storage/rocksdb/CMakeFiles/rocksdb.dir/rdb_datadic.cc.o -c storage/rocksdb/rdb_datadic.cc
In file included from storage/rocksdb/rdb_datadic.cc:26:
In file included from storage/rocksdb/./rdb_datadic.h:35:
storage/rocksdb/./ha_rocksdb.h:1066:3: warning: declaration does not declare anything [-Wmissing-declarations]
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
^
storage/rocksdb/rdb_mariadb_port.h:18:27: note: expanded from macro 'MY_ATTRIBUTE'
# define MY_ATTRIBUTE(A) __attribute__(A)
^
In file included from storage/rocksdb/rdb_datadic.cc:26:
In file included from storage/rocksdb/./rdb_datadic.h:36:
storage/rocksdb/./properties_collector.h:84:27: warning: 'AddUserKey' overrides a member function but is not marked 'override'
[-Winconsistent-missing-override]
virtual rocksdb::Status AddUserKey(const rocksdb::Slice &key,
^
storage/rocksdb/rocksdb/include/rocksdb/table_properties.h:89:18: note: overridden virtual function is here
virtual Status AddUserKey(const Slice& key, const Slice& value,
^
storage/rocksdb/rdb_datadic.cc:371:19: error: no member named 'strtoul' in namespace 'std'; did you mean simply 'strtoul'?
*ttl_duration = std::strtoull(ttl_duration_str.c_str(), nullptr, 0);
^~~~~
/usr/include/stdlib.h:113:3: note: 'strtoul' declared here
strtoul(const char * __restrict, char ** __restrict, int);
^
2 warnings and 1 error generated.
```
Adding `#include <cstdlib>` to `storage/rocksdb/rdb_datadic.h` solves the issue on FreeBSD 11.0. Not sure if this should be enclosed in a #ifdef __FreeBSD__ block
While building RocksDB I get a fatal compilation error
{noformat}
/usr/bin/c++ -DHAVE_CONFIG_H -DLZ4 -DMYSQL_DYNAMIC_PLUGIN -DOS_FREEBSD -DROCKSDB_JEMALLOC -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_PLATFORM_POSIX -DROCKSDB_SUPPORT_THREAD_LOCAL -DSNAPPY -DZLIB -DZSTD -Drocksdb_EXPORTS -Iinclude -Isql -Ipcre -Istorage/rocksdb/rocksdb -Istorage/rocksdb/rocksdb/include -isystem storage/rocksdb/rocksdb/third-party/gtest-1.7.0/fused-src -Istorage/rocksdb/rocksdb/util -I/usr/include -I/usr/local/include -O2 -pipe -fstack-protector -isystem /usr/local/include -fno-strict-aliasing -DWITH_INNODB_DISALLOW_WRITES -fno-rtti -DDBUG_OFF -fPIC -std=c++11 -MD -MT storage/rocksdb/CMakeFiles/rocksdb.dir/rdb_datadic.cc.o -MF storage/rocksdb/CMakeFiles/rocksdb.dir/rdb_datadic.cc.o.d -o storage/rocksdb/CMakeFiles/rocksdb.dir/rdb_datadic.cc.o -c storage/rocksdb/rdb_datadic.cc
{noformat}
{noformat}
In file included from storage/rocksdb/rdb_datadic.cc:26:
In file included from storage/rocksdb/./rdb_datadic.h:35:
storage/rocksdb/./ha_rocksdb.h:1066:3: warning: declaration does not declare anything [-Wmissing-declarations]
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
^
storage/rocksdb/rdb_mariadb_port.h:18:27: note: expanded from macro 'MY_ATTRIBUTE'
# define MY_ATTRIBUTE(A) __attribute__(A)
^
In file included from storage/rocksdb/rdb_datadic.cc:26:
In file included from storage/rocksdb/./rdb_datadic.h:36:
storage/rocksdb/./properties_collector.h:84:27: warning: 'AddUserKey' overrides a member function but is not marked 'override'
[-Winconsistent-missing-override]
virtual rocksdb::Status AddUserKey(const rocksdb::Slice &key,
^
storage/rocksdb/rocksdb/include/rocksdb/table_properties.h:89:18: note: overridden virtual function is here
virtual Status AddUserKey(const Slice& key, const Slice& value,
^
storage/rocksdb/rdb_datadic.cc:371:19: error: no member named 'strtoul' in namespace 'std'; did you mean simply 'strtoul'?
*ttl_duration = std::strtoull(ttl_duration_str.c_str(), nullptr, 0);
^~~~~
/usr/include/stdlib.h:113:3: note: 'strtoul' declared here
strtoul(const char * __restrict, char ** __restrict, int);
^
2 warnings and 1 error generated.
{noformat}
Adding `#include <cstdlib>` to `storage/rocksdb/rdb_datadic.h` solves the issue on FreeBSD 11.0. Not sure if this should be enclosed in a #ifdef __FreeBSD__ block
This built succesfully with all options enabled.
See build log here