mirror of
https://gitee.com/an-tao/drogon.git
synced 2024-12-02 03:38:03 +08:00
Fixes for FreeBSD (#440)
* Use uuid(3) to generate UUIDs on FreeBSD FreeBSD is now handled like Windows so additional UUID libraries are not required. * Modify build.sh script to work on FreeBSD - /bin/bash -> /usr/bin/env bash - nproc -> sysctl -n hw.ncpu
This commit is contained in:
parent
c754d65cf0
commit
375498a5a6
@ -92,7 +92,7 @@ find_package(Jsoncpp REQUIRED)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC Jsoncpp_lib)
|
||||
list(APPEND INCLUDE_DIRS_FOR_DYNAMIC_VIEW ${JSONCPP_INCLUDE_DIRS})
|
||||
|
||||
if(NOT WIN32)
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT WIN32)
|
||||
find_package(UUID REQUIRED)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE UUID_lib)
|
||||
|
||||
@ -109,7 +109,7 @@ if(NOT WIN32)
|
||||
else()
|
||||
message(FATAL_ERROR "uuid lib error")
|
||||
endif()
|
||||
endif(NOT WIN32)
|
||||
endif(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT WIN32)
|
||||
|
||||
find_package(Brotli)
|
||||
if(Brotli_FOUND)
|
||||
|
16
build.sh
16
build.sh
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#build drogon
|
||||
function build_drogon() {
|
||||
@ -58,16 +58,22 @@ make_flags=''
|
||||
cmake_gen=''
|
||||
parallel=1
|
||||
|
||||
if [ $(uname) = 'FreeBSD' ]; then
|
||||
nproc=$(sysctl -n hw.ncpu)
|
||||
else
|
||||
nproc=$(nproc)
|
||||
fi
|
||||
|
||||
# simulate ninja's parallelism
|
||||
case $(nproc) in
|
||||
case nproc in
|
||||
1)
|
||||
parallel=$(( $(nproc) + 1 ))
|
||||
parallel=$(( nproc + 1 ))
|
||||
;;
|
||||
2)
|
||||
parallel=$(( $(nproc) + 1 ))
|
||||
parallel=$(( nproc + 1 ))
|
||||
;;
|
||||
*)
|
||||
parallel=$(( $(nproc) + 2 ))
|
||||
parallel=$(( nproc + 2 ))
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -14,9 +14,9 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
find_dependency(Jsoncpp REQUIRED)
|
||||
find_dependency(Trantor REQUIRED)
|
||||
if(NOT WIN32)
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT WIN32)
|
||||
find_dependency(UUID REQUIRED)
|
||||
endif(NOT WIN32)
|
||||
endif(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT WIN32)
|
||||
find_dependency(ZLIB REQUIRED)
|
||||
if(@pg_FOUND@)
|
||||
find_dependency(pg)
|
||||
|
@ -335,6 +335,19 @@ std::string getUuid()
|
||||
std::string ret{binaryStringToHex((const unsigned char *)str, len)};
|
||||
free(str);
|
||||
return ret;
|
||||
#elif defined __FreeBSD__
|
||||
uuid_t *uuid = new uuid_t;
|
||||
char* binstr = (char *) malloc(16);
|
||||
uuidgen(uuid, 1);
|
||||
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||
uuid_enc_le(binstr, uuid);
|
||||
#else /* _BYTE_ORDER != _LITTLE_ENDIAN */
|
||||
uuid_enc_be(binstr, uuid);
|
||||
#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
|
||||
delete uuid;
|
||||
std::string ret{binaryStringToHex((const unsigned char *)binstr, 16)};
|
||||
free(binstr);
|
||||
return ret;
|
||||
#elif defined _WIN32
|
||||
uuid_t uu;
|
||||
UuidCreate(&uu);
|
||||
|
2
trantor
2
trantor
@ -1 +1 @@
|
||||
Subproject commit 5ab4a4c85eb119fae96541d7f6723ba4ecef4791
|
||||
Subproject commit d74f4475ef317da8fc968f1fb6aa8dbcc076c933
|
Loading…
Reference in New Issue
Block a user