cmake/Linux.cmake (172 lines of code) (raw):
function(set_default_paths)
# noop
endfunction()
function(set_export_cmd EXPORT_CMD)
set(${EXPORT_CMD}
"export"
PARENT_SCOPE)
endfunction()
function(configure_file_pgclient)
# message (STATUS "configure_file_pgclient")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config.h.linux64
${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config_os.h.linux64
${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config_os.h)
endfunction()
function(include_directories_libpq)
# noop
endfunction()
function(include_directories_libpqport)
# noop
endfunction()
# Same as Darwin
function(add_libpqport_sources)
list(
APPEND
LIBPQ_PORT_SOURCE_NAMES
chklocale.c
inet_net_ntop.c
noblock.c
pgstrcasecmp.c
thread.c
strlcpy.c
getpeereid.c)
foreach(FILE ${LIBPQ_PORT_SOURCE_NAMES})
list(APPEND LIBPQ_PORT_SOURCES "${PGCLIENT_SRC_DIR}/port/${FILE}")
endforeach()
endfunction()
# Same as Darwin
function(target_compile_options_pq)
target_compile_options(
pq
PRIVATE # -m64
-O2
-Wall
-Wmissing-prototypes
-Wpointer-arith
-Wdeclaration-after-statement
-Wendif-labels
-Wformat-security
-fno-strict-aliasing
-fwrapv
-pthread
-fpic)
endfunction()
function(target_compile_definitions_pq)
# same should be in Darwin
target_compile_definitions(
pq
PRIVATE -D_REENTRANT
-D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS
-DLINUX
-DUSE_SSL
-DENABLE_GSS
-DFRONTEND
-DUNSAFE_STAT_OK
-D_GNU_SOURCE
-DSO_MAJOR_VERSION=5)
endfunction()
function(target_compile_options_pgport)
target_compile_options(
pqport
PRIVATE # -m64
-O2
-Wall
-Wmissing-prototypes
-Wpointer-arith
-Wdeclaration-after-statement
-Wendif-labels
-Wformat-security
-fno-strict-aliasing
-fwrapv
-fpic)
endfunction()
function(target_compile_definitions_pgport)
target_compile_definitions(pqport PRIVATE -DLINUX -DUSE_SSL -D_GNU_SOURCE
-DFRONTEND)
endfunction()
function(target_compile_options_rsodbc TARGET_NAME)
target_compile_options(
${TARGET_NAME}
PRIVATE -O2
-Wall
-c
-fmessage-length=0
-fPIC
)
endfunction()
function(target_compile_definitions_rsodbc TARGET_NAME)
target_compile_definitions(
${TARGET_NAME} PRIVATE -DLINUX -DUSE_SSL -DODBCVER=0x0352
-DBUILD_REAL_64_BIT_MODE)
endfunction()
function(target_link_options_rsodbc TARGET_NAME)
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
endfunction()
function(export_signatures TARGET_NAME)
if(${TARGET_NAME} STREQUAL "rsodbc64")
target_link_options(
${TARGET_NAME} PRIVATE
-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports.linux.list
-Wl,--no-undefined)
endif()
endfunction()
function(target_link_libraries_rsodbc TARGET_NAME)
target_link_libraries(
${TARGET_NAME}
PUBLIC ${RS_STATIC_LIBS}
pq
pqport
# rslog
pthread
resolv
keyutils
dl
rt)
target_link_options(${TARGET_NAME} PRIVATE -static-libgcc -static-libstdc++)
target_link_directories(${TARGET_NAME} PRIVATE ${CMAKE_LIBRARY_PATH})
target_link_directories(${TARGET_NAME} PRIVATE ${CMAKE_SYSTEM_LIBRARY_PATH})
endfunction()
function(get_odbc_target_libraries odbc_manager_lib_list)
set(${odbc_manager_lib_list}
odbc
PARENT_SCOPE)
endfunction()
function(set_library_suffixes)
set(CMAKE_FIND_LIBRARY_SUFFIXES
".a"
PARENT_SCOPE)
set(CMAKE_SHARED_LIBRARY_SUFFIX
".so"
PARENT_SCOPE)
endfunction()
function(set_library_prefixes)
# set(CMAKE_FIND_LIBRARY_PREFIXES "lib" PARENT_SCOPE)
# set(CMAKE_SHARED_LIBRARY_PREFIX
# ""
# PARENT_SCOPE)
endfunction()
function(get_rsodbc_deps rsodbc_deps)
message("{AWS_DEPENDENCIES} = ${AWS_DEPENDENCIES}")
# s2n only in Linux, not in Darwin
set(${rsodbc_deps}
ssl
${AWS_DEPENDENCIES}
s2n
curl
ssl
crypto
nghttp2
cares
z
krb5
gssapi_krb5
k5crypto
krb5support
com_err
PARENT_SCOPE)
endfunction()
function(basic_build_settings)
endfunction()