#This is the main CMAKE for build all components.
# pg_config bin
set(TGT_pgconfig_SRC
    ${CMAKE_CURRENT_SOURCE_DIR}/pg_config.cpp
)
SET(TGT_pgconfig_INC
    ${PROJECT_SRC_DIR}/common/port
    ${PROJECT_SRC_DIR}/common/interfaces/libpq
    ${PROJECT_SRC_DIR}/include/libpq
    ${PROJECT_SRC_DIR}/bin/pg_basebackup 
    ${PROJECT_SRC_DIR}/bin/pg_rewind 
    ${PROJECT_SRC_DIR}/lib/gstrace
    ${PROJECT_TRUNK_DIR}/distribute/include 
    ${KERBEROS_INCLUDE_PATH}
)

SET(pgconfig_DEF_OPTIONS ${MACRO_OPTIONS})
SET(pgconfig_COMPILE_OPTIONS ${OPTIMIZE_OPTIONS} ${OS_OPTIONS} ${PROTECT_OPTIONS} ${WARNING_OPTIONS} ${BIN_SECURE_OPTIONS} ${CHECK_OPTIONS} -fstack-protector-all)
SET(pgconfig_LINK_OPTIONS ${BIN_LINK_OPTIONS})
SET(pgconfig_LINK_LIBS libpgport.a -lcrypt -ldl -lm -lssl -lcrypto -lsecurec -lrt -lz -lminiunz)
add_bintarget(pg_config TGT_pgconfig_SRC TGT_pgconfig_INC "${pgconfig_DEF_OPTIONS}" "${pgconfig_COMPILE_OPTIONS}" "${pgconfig_LINK_OPTIONS}" "${pgconfig_LINK_LIBS}")
add_dependencies(pg_config pgport_static)
target_link_directories(pg_config PUBLIC
    ${LIBOPENSSL_LIB_PATH} ${PROTOBUF_LIB_PATH} ${LIBPARQUET_LIB_PATH} ${KERBEROS_LIB_PATH} ${CMAKE_BINARY_DIR}/lib
    ${LIBCURL_LIB_PATH} ${ZLIB_LIB_PATH} ${LIBOBS_LIB_PATH} ${LIBEDIT_LIB_PATH} ${LIBCGROUP_LIB_PATH} ${LZ4_LIB_PATH} ${SECURE_LIB_PATH} 
)

get_target_property(VAL_COMPILE_DEFINITIONS pg_config COMPILE_DEFINITIONS)
get_target_property(VAL_COMPILE_OPTIONS pg_config COMPILE_OPTIONS)
get_target_property(VAL_LINK_LIBRARIES pg_config LINK_LIBRARIES)
set(VAL_INCLUDE_DIRECTORIES ${LIBODBC_INCLUDE_PATH} ${LIBOBS_INCLUDE_PATH} ${LIBCGROUP_INCLUDE_PATH} ${LIBOPENSSL_INCLUDE_PATH} ${LIBORC_INCLUDE_PATH} ${LIBPARQUET_INCLUDE_PATH} ${PROTOBUF_INCLUDE_PATH} ${BOOST_INCLUDE_PATH} ${LIBLLVM_INCLUDE_PATH} ${KERBEROS_INCLUDE_PATH} ${CJSON_INCLUDE_PATH} ${NUMA_INCLUDE_PATH} ${ZLIB_INCLUDE_PATH} ${LZ4_INCLUDE_PATH} ${LIBCURL_INCLUDE_PATH} ${DCF_INCLUDE_PATH} ${EVENT_INCLUDE_PATH} ${LIBHOTPATCH_INCLUDE_PATH})
set(VAL_LINK_DIRECTORIES ${LIBODBC_LIB_PATH} ${LIBOBS_LIB_PATH} ${LIBCGROUP_LIB_PATH} ${LIBOPENSSL_LIB_PATH} ${LIBORC_LIB_PATH} ${LIBPARQUET_LIB_PATH} ${PROTOBUF_LIB_PATH} ${BOOST_LIB_PATH} ${LIBLLVM_LIB_PATH} ${KERBEROS_LIB_PATH} ${CJSON_LIB_PATH} ${NUMA_LIB_PATH} ${ZLIB_LIB_PATH} ${LZ4_LIB_PATH} ${LIBCURL_LIB_PATH} ${DCF_LIB_PATH} ${EVENT_LIB_PATH} ${LIBHOTPATCH_LIB_PATH})

list_to_string("${OPTIMIZE_LEVEL}" OPTIMIZE_LEVEL_STR "")
list_to_string("${VAL_COMPILE_DEFINITIONS}" VAL_COMPILE_DEFINITIONS_STR "-D")
list_to_string("${VAL_INCLUDE_DIRECTORIES}" VAL_INCLUDE_DIRECTORIES_STR "-I")
list_to_string("${VAL_LINK_DIRECTORIES}" VAL_LINK_DIRECTORIES_STR "-L")
list_to_string("${VAL_COMPILE_OPTIONS}" VAL_COMPILE_OPTIONS_STR "")
list_to_string("${VAL_LINK_LIBRARIES}" VAL_LINK_LIBRARIES_STR "")
set(VAL_CONFIGURE "\"\'--gcc-version=${GCC_VERSION}\' \'--prefix=${prefix_home}\' \'--3rd=${3RD_PATH}\' \'ENABLE_THREAD_SAFETY=${ENABLE_THREAD_SAFETY}\' \'--without-readline\' \'--without-zlib\' \'ENABLE_MULTIPLE_NODES=${ENABLE_MULTIPLE_NODES}\' \'ENABLE_PRIVATEGAUSS=${ENABLE_PRIVATEGAUSS}\' \'CFLAGS=${OPTIMIZE_LEVEL_STR}\' \'CC=g++\' \"")
set(VAL_CC "\" g++ \"")
set(VAL_CPPFLAGS "\"${VAL_INCLUDE_DIRECTORIES_STR}\"")
set(VAL_CFLAGS "\"${VAL_COMPILE_DEFINITIONS_STR} ${VAL_COMPILE_OPTIONS_STR}\"")
set(VAL_CFLAGS_SL "\" -fpic \"")
set(VAL_LDFLAGS "\"${VAL_LINK_DIRECTORIES_STR}\"")
set(VAL_LDFLAGS_EX "\" \"")
set(VAL_LDFLAGS_SL "\" \"")
set(VAL_LIBS "\"${VAL_LINK_LIBRARIES_STR}\"")
set(pgconfig_DEF_OPTIONS "VAL_CONFIGURE=${VAL_CONFIGURE}" "VAL_CC=${VAL_CC}" "VAL_CPPFLAGS=${VAL_CPPFLAGS}" "VAL_CFLAGS=${VAL_CFLAGS}" "VAL_CFLAGS_SL=${VAL_CFLAGS_SL}" "VAL_LDFLAGS=${VAL_LDFLAGS}" "VAL_LDFLAGS_EX=${VAL_LDFLAGS_EX}" "VAL_LDFLAGS_SL=${VAL_LDFLAGS_SL}" "VAL_LIBS=${VAL_LIBS}" ${VAL_COMPILE_DEFINITIONS})

set_target_properties(pg_config PROPERTIES COMPILE_DEFINITIONS "${pgconfig_DEF_OPTIONS}")

install(TARGETS pg_config RUNTIME DESTINATION bin)

