cmake/Windows.cmake (267 lines of code) (raw):

function(configure_file_pgclient) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config.h.win32 ${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config_os.h.win32 ${CMAKE_CURRENT_SOURCE_DIR}/include/pg_config_os.h) endfunction() function(include_directories_libpq) include_directories(${PGCLIENT_SRC_DIR}/include) include_directories(${PGCLIENT_SRC_DIR}/include/port/win32) include_directories(${PGCLIENT_SRC_DIR}/include/port/win32_msvc) include_directories(${PGCLIENT_SRC_DIR}/port) include_directories(${CMAKE_INCLUDE_PATH}) # kfw endfunction() function(include_directories_libpqport) include_directories(${PGCLIENT_SRC_DIR}/include) include_directories(${PGCLIENT_SRC_DIR}/include/port/win32) include_directories(${PGCLIENT_SRC_DIR}/include/port/win32_msvc) endfunction() function(add_libpqport_sources) list( APPEND LIBPQ_PORT_SOURCE_NAMES chklocale.c inet_net_ntop.c noblock.c pgsleep.c pgstrcasecmp.c thread.c) foreach(FILE ${LIBPQ_PORT_SOURCE_NAMES}) list(APPEND LIBPQ_PORT_SOURCES "${PGCLIENT_SRC_DIR}/port/${FILE}") endforeach() endfunction() function(target_compile_options_pq) target_compile_options( pq PRIVATE /nologo /W3 /WX- /diagnostics:column /EHsc /GS /Zc:wchar_t /Zc:forScope /Zc:inline /wd4018 /wd4244 /wd4273 /wd4102 /wd4090 /wd4267 /FC /errorReport:queue /MP) if(RS_BUILD_TYPE STREQUAL "Release") target_compile_options(pq PRIVATE /GF /fp:fast) endif() if(RS_BUILD_TYPE STREQUAL "Debug") target_compile_options(pq PRIVATE /Zi /Gm- /fp:precise) endif() endfunction() function(target_compile_definitions_pq) target_compile_definitions( pq PRIVATE WIN32 _WINDOWS __WINDOWS__ __WIN32__ EXEC_BACKEND WIN32_STACK_RLIMIT=4194304 _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE FRONTEND UNSAFE_STAT_OK _WIN64 USE_SSL ENABLE_GSS ENABLE_SSPI _MBCS) endfunction() function(target_compile_options_pgport) target_compile_options( pqport PRIVATE /nologo /W3 /WX- /diagnostics:column /EHsc /GS /Zc:wchar_t /Zc:forScope /Zc:inline /wd4018 /wd4244 /wd4273 /wd4102 /wd4090 /wd4267 /FC /errorReport:queue /MP) if(RS_BUILD_TYPE STREQUAL "Release") target_compile_options(pqport PRIVATE /GF /fp:fast) endif() if(RS_BUILD_TYPE STREQUAL "Debug") target_compile_options(pqport PRIVATE /Zi /Gm- /fp:precise) endif() endfunction() function(target_link_libraries_rsodbc TARGET_NAME) target_link_libraries( ${TARGET_NAME} PUBLIC ${RS_STATIC_LIBS} shell32 odbccp32 libcrypto libssl ws2_32 comdlg32 wldap32 Ncrypt User32 UserEnv bcrypt RpcRT4 winhttp WinInet Version legacy_stdio_definitions wsock32 secur32 crypt32 shlwapi kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid odbc32 odbccp32 pq pqport # rslog ) target_link_directories(${TARGET_NAME} PRIVATE ${CMAKE_LIBRARY_PATH}) target_link_directories(${TARGET_NAME} PRIVATE ${CMAKE_SYSTEM_LIBRARY_PATH}) endfunction() function(target_compile_options_rsodbc TARGET_NAME) target_compile_options( ${TARGET_NAME} PRIVATE /W3 /WX- /diagnostics:column /GL /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /std:c++17 /external:W3 /Gd /TP /FC /errorReport:queue /LTCG) if(RS_BUILD_TYPE STREQUAL "Release") target_compile_options(${TARGET_NAME} PRIVATE /fp:fast) endif() if(RS_BUILD_TYPE STREQUAL "Debug") target_compile_options(${TARGET_NAME} PRIVATE /Zi /Gm- /fp:precise /DEBUG) endif() endfunction() function(target_link_options_rsodbc TARGET_NAME) if(RS_BUILD_TYPE STREQUAL "Release") target_link_options(${TARGET_NAME} PRIVATE "/NODEFAULTLIB:libcmt") set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "/LTCG") elseif(RS_BUILD_TYPE STREQUAL "Debug") target_link_options(${TARGET_NAME} PRIVATE "/NODEFAULTLIB:libcmtd") endif() endfunction() function(export_signatures TARGET_NAME) if(${TARGET_NAME} STREQUAL "rsodbc64") target_link_options(${TARGET_NAME} PRIVATE "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/rsodbc.def") elseif(${TARGET_NAME} STREQUAL "rsodbc64-test") target_link_options(${TARGET_NAME} PRIVATE "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/rsodbc_test.def") endif() endfunction() function(target_compile_definitions_rsodbc TARGET_NAME) target_compile_definitions( ${TARGET_NAME} PRIVATE WIN32 ODBCVER=0x0352 SQL_NOUNICODEMAP USE_SSL CARES_STATICLIB _MBCS) endfunction() function(get_odbc_target_libraries odbc_manager_lib_list) set(${odbc_manager_lib_list} odbc32 PARENT_SCOPE) endfunction() function(set_export_cmd EXPORT_CMD) set(${EXPORT_CMD} "SET" PARENT_SCOPE) endfunction() function(target_compile_definitions_pgport) target_compile_definitions( pqport PRIVATE WIN32 _WINDOWS __WINDOWS__ __WIN32__ EXEC_BACKEND WIN32_STACK_RLIMIT=4194304 _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE FRONTEND USE_SSL ENABLE_SSPI ENABLE_GSS _MBCS) endfunction() function(set_library_suffixes) set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" PARENT_SCOPE) set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll" PARENT_SCOPE) endfunction() function(set_library_prefixes) set(CMAKE_FIND_LIBRARY_PREFIXES "" PARENT_SCOPE) set(CMAKE_SHARED_LIBRARY_PREFIX "" PARENT_SCOPE) message(STATUS "CMAKE_FIND_LIBRARY_PREFIXES=${CMAKE_FIND_LIBRARY_PREFIXES}") endfunction() function(get_rsodbc_deps rsodbc_deps) message(STATUS "INSIDE get_rsodbc_deps") # s2n only in Linux, not in Darwin set(${rsodbc_deps} gtest gmock cares gssapi64 ${AWS_DEPENDENCIES} PARENT_SCOPE) message(STATUS "INSIDE get_rsodbc_deps=> ${rsodbc_deps}") endfunction() function(basic_build_settings) # Set compiler flags for Debug mode if(RS_BUILD_TYPE STREQUAL "Debug") message(STATUS "Configuring Debug build") add_definitions(-DDEBUG) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zi") set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /DEBUG") endif() # Set compiler flags for Release mode if(RS_BUILD_TYPE STREQUAL "Release") message(STATUS "Configuring Release build") add_definitions(-DNDEBUG) endif() endfunction()