mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-24 21:44:45 +03:00
clean up byte order detection
Check for existence of the expected functions and macros and error out if nothing appropriate can be found.
This commit is contained in:
parent
8b4b647d77
commit
4ac1bf2d47
@ -1,12 +1,12 @@
|
||||
add_executable(nominatim export.c geometry.cpp import.c index.c input.c nominatim.c postgresql.c sprompt.c)
|
||||
include(CheckIncludeFile)
|
||||
CHECK_INCLUDE_FILE(byteswap.h HAVE_BYTESWAP_H)
|
||||
CHECK_INCLUDE_FILE(sys/endian.h HAVE_SYS_ENDIAN_H)
|
||||
if(HAVE_BYTESWAP_H)
|
||||
target_compile_definitions(nominatim PRIVATE HAVE_BYTESWAP_H)
|
||||
endif(HAVE_BYTESWAP_H)
|
||||
if(HAVE_SYS_ENDIAN_H)
|
||||
target_compile_definitions(nominatim PRIVATE HAVE_SYS_ENDIAN_H)
|
||||
endif(HAVE_SYS_ENDIAN_H)
|
||||
|
||||
CHECK_SYMBOL_EXISTS(bswap_32 "byteswap.h" HAVE_BYTESWAP)
|
||||
CHECK_SYMBOL_EXISTS(bswap32 "sys/endian.h" HAVE_SYS_ENDIAN)
|
||||
|
||||
target_compile_definitions(nominatim
|
||||
PRIVATE HAVE_BYTESWAP=$<BOOL:${HAVE_BYTESWAP}>
|
||||
PRIVATE HAVE_SYS_ENDIAN=$<BOOL:${HAVE_SYS_ENDIAN}>
|
||||
)
|
||||
|
||||
target_link_libraries(nominatim ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${PostgreSQL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
|
@ -7,20 +7,32 @@
|
||||
#define PG_OID_INT8 20
|
||||
#define PG_OID_INT4 23
|
||||
|
||||
#if defined(HAVE_BYTESWAP_H)
|
||||
#if HAVE_BYTESWAP
|
||||
#include <byteswap.h>
|
||||
#elif defined(HAVE_SYS_ENDIAN_H)
|
||||
#define PG_BSWAP32(x) bswap_32(x)
|
||||
#define PG_BSWAP64(x) bswap_64(x)
|
||||
#elif HAVE_SYS_ENDIAN
|
||||
#include <sys/endian.h>
|
||||
#define PG_BSWAP32(x) bswap32(x)
|
||||
#define PG_BSWAP64(x) bswap64(x)
|
||||
#else
|
||||
#error "No appropriate byteswap found for your system."
|
||||
#endif
|
||||
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
#define PGint16(x) (x)
|
||||
#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||
#define PGint32(x) (x)
|
||||
#define PGint64(x) (x)
|
||||
#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
||||
#define PGint32(x) PG_BSWAP32(x)
|
||||
#define PGint64(x) PG_BSWAP64(x)
|
||||
#elif defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)
|
||||
#define PGint32(x) (x)
|
||||
#define PGint64(x) (x)
|
||||
#elif defined(_BYTE_ORDER) && (_BYTE_ORDER == _LITTLE_ENDIAN)
|
||||
#define PGint32(x) PG_BSWAP32(x)
|
||||
#define PGint64(x) PG_BSWAP64(x)
|
||||
#else
|
||||
#define PGint16(x) __bswap_16 (x)
|
||||
#define PGint32(x) __bswap_32 (x)
|
||||
#define PGint64(x) __bswap_64 (x)
|
||||
#error "Cannot determine byte order."
|
||||
#endif
|
||||
|
||||
const char *build_conninfo(const char *db, const char *username, const char *password, const char *host, const char *port);
|
||||
|
Loading…
Reference in New Issue
Block a user