blob: 0fc1637e348d8b5857b0353d79854a15901ac6e8 [file] [log] [blame]
# Define Greenplum feature macros
#
function(define_greenplum_features IN_VERSION OUT_FEATURES)
if(NOT ${IN_VERSION} VERSION_LESS "4.1")
list(APPEND ${OUT_FEATURES} __HAS_ORDERED_AGGREGATES__)
endif()
if(NOT ${IN_VERSION} VERSION_LESS "4.3")
list(APPEND ${OUT_FEATURES} __HAS_FUNCTION_PROPERTIES__)
endif()
if(${IN_VERSION} VERSION_GREATER "4.3")
list(APPEND ${OUT_FEATURES} __HAS_BOOL_TO_TEXT_CAST__)
endif()
# Pass values to caller
set(${OUT_FEATURES} "${${OUT_FEATURES}}" PARENT_SCOPE)
endfunction(define_greenplum_features)
function(add_gppkg GPDB_VERSION GPDB_VARIANT GPDB_VARIANT_SHORT UPGRADE_SUPPORT)
string(TOLOWER ${GPDB_VERSION} GPDB_VERSION_LC)
string(REPLACE "." "_" VERSION_ "${GPDB_VERSION}")
# Get information about the rhel version
rh_version(RH_VERSION)
string(REGEX MATCH "([0-9])" RH_MAJOR_VERSION "${RH_VERSION}")
file(WRITE "${CMAKE_BINARY_DIR}/deploy/gppkg/${GPDB_VARIANT}_${VERSION_}_gppkg.cmake" "
file(MAKE_DIRECTORY
\"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}/BUILD\"
\"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}/SPECS\"
\"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}/RPMS\"
\"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}/gppkg\"
)
set(GPDB_VERSION \"${GPDB_VERSION}\")
set(GPDB_VERSION_LC \"${GPDB_VERSION_LC}\")
set(GPDB_VARIANT \"${GPDB_VARIANT}\")
set(GPDB_VARIANT_SHORT \"${GPDB_VARIANT_SHORT}\")
set(UPGRADE_SUPPORT \"${UPGRADE_SUPPORT}\")
set(RH_MAJOR_VERSION \"${RH_MAJOR_VERSION}\")
string(TOLOWER \"${GPDB_VARIANT}\" PORT_NAME)
configure_file(
madlib.spec.in
\"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}/SPECS/madlib.spec\"
)
configure_file(
gppkg_spec.yml.in
\"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}/gppkg/gppkg_spec.yml\"
)
if(GPPKG_BINARY AND RPMBUILD_BINARY)
add_custom_target(gppkg_${GPDB_VARIANT}_${VERSION_}
COMMAND cmake -E create_symlink \"\${MADLIB_GPPKG_RPM_SOURCE_DIR}\"
\"\${CPACK_PACKAGE_FILE_NAME}-gppkg\"
COMMAND \"\${RPMBUILD_BINARY}\" -bb SPECS/madlib.spec
COMMAND cmake -E rename \"RPMS/\${MADLIB_GPPKG_RPM_FILE_NAME}\"
\"gppkg/\${MADLIB_GPPKG_RPM_FILE_NAME}\"
COMMAND \"\${GPPKG_BINARY}\" --build gppkg
DEPENDS \"${CMAKE_BINARY_DIR}/\${CPACK_PACKAGE_FILE_NAME}.rpm\"
WORKING_DIRECTORY \"\${CMAKE_CURRENT_BINARY_DIR}/${GPDB_VERSION}\"
COMMENT \"Generating ${GPDB_VARIANT} ${GPDB_VERSION} gppkg installer...\"
VERBATIM
)
else(GPPKG_BINARY AND RPMBUILD_BINARY)
add_custom_target(gppkg_${GPDB_VARIANT}_${VERSION_}
COMMAND cmake -E echo \"Could not find gppkg and/or rpmbuild.\"
\"Please rerun cmake.\"
)
endif(GPPKG_BINARY AND RPMBUILD_BINARY)
# Unfortunately, we cannot set a dependency to the built-in package target,
# i.e., the following does not work:
# add_dependencies(gppkg package)
add_dependencies(gppkg gppkg_${GPDB_VARIANT}_${VERSION_})
")
endfunction(add_gppkg)