Skip to content

Commit

Permalink
issue #171: changing default linking mode in grbcxx wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
alberto-scolari committed Feb 14, 2024
1 parent dc0396c commit eda38c9
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 33 deletions.
31 changes: 16 additions & 15 deletions cmake/AddGRBInstall.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ set( HYBRID_BACKEND_INSTALL_DIR "${BINARY_LIBRARIES_INSTALL_DIR}/hybrid" )
#
function( addBackendWrapperGenOptions backend )
set( multiValueArgs "COMPILER_COMMAND;RUNENV;RUNNER"
"COMPILE_DEFINITIONS;COMPILE_OPTIONS;LINK_FLAGS"
"COMPILE_DEFINITIONS;COMPILE_OPTIONS;LINK_FLAGS;LIB_DIR"
)
cmake_parse_arguments( parsed "${options}" "${oneValueArgs}"
"${multiValueArgs}" "${ARGN}"
Expand All @@ -82,12 +82,15 @@ function( addBackendWrapperGenOptions backend )
message( FATAL_ERROR "cannot find ${backend} among available backends")
endif()

assert_valid_variables( parsed_LIB_DIR )

set( ${backend}_WRAPPER_COMPILER_COMMAND "${parsed_COMPILER_COMMAND}" PARENT_SCOPE )
if( NOT parsed_COMPILER_COMMAND )
set( ${backend}_WRAPPER_COMPILER_COMMAND "${CMAKE_CXX_COMPILER}" PARENT_SCOPE )
endif()
set( ${backend}_WRAPPER_RUNENV "${parsed_RUNENV}" PARENT_SCOPE )
set( ${backend}_WRAPPER_RUNNER "${parsed_RUNNER}" PARENT_SCOPE )
set( ${backend}_LIB_DIR "${parsed_LIB_DIR}" PARENT_SCOPE )

set( ${backend}_WRAPPER_COMPILE_DEFINITIONS "${parsed_COMPILE_DEFINITIONS}" PARENT_SCOPE )

Expand Down Expand Up @@ -116,33 +119,33 @@ endif()
if( WITH_REFERENCE_BACKEND )
addBackendWrapperGenOptions( "reference"
COMPILE_DEFINITIONS "${REFERENCE_SELECTION_DEFS}"
LINK_FLAGS "'${SHMEM_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
LIB_DIR "${SHMEM_BACKEND_INSTALL_DIR}"
LINK_FLAGS "${NUMA_LFLAG}"
)
endif()

if( WITH_OMP_BACKEND )
addBackendWrapperGenOptions( "reference_omp"
COMPILE_DEFINITIONS "${REFERENCE_OMP_SELECTION_DEFS}"
LINK_FLAGS "'${SHMEM_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
LIB_DIR "${SHMEM_BACKEND_INSTALL_DIR}"
LINK_FLAGS "${NUMA_LFLAG}"
)
endif()

# dependent backends
if( WITH_HYPERDAGS_BACKEND )
addBackendWrapperGenOptions( "hyperdags"
COMPILE_DEFINITIONS "${HYPERDAGS_SELECTION_DEFS};${HYPERDAGS_INCLUDE_DEFS}"
LINK_FLAGS "'${HYPERDAGS_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
LIB_DIR "${HYPERDAGS_BACKEND_INSTALL_DIR}"
LINK_FLAGS "${NUMA_LFLAG}"
)
endif()

if( WITH_NONBLOCKING_BACKEND )
addBackendWrapperGenOptions( "nonblocking"
COMPILE_DEFINITIONS "${NONBLOCKING_SELECTION_DEFS};${NONBLOCKING_INCLUDE_DEFS}"
LINK_FLAGS "'${SHMEM_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
LIB_DIR "${SHMEM_BACKEND_INSTALL_DIR}"
LINK_FLAGS "${NUMA_LFLAG}"
)
endif()

Expand Down Expand Up @@ -173,9 +176,8 @@ if( WITH_BSP1D_BACKEND OR WITH_HYBRID_BACKEND )
COMPILER_COMMAND "${LPF_CXX_COMPILER}"
RUNNER "${LPFRUN_CMD}"
COMPILE_DEFINITIONS "${LPF_INCLUDE_DEFS};${BSP1D_SELECTION_DEFS}"
LINK_FLAGS "'${BSP1D_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
"-llpf_hl" "-lpthread" "-lm" "-ldl"
LIB_DIR "${BSP1D_BACKEND_INSTALL_DIR}"
LINK_FLAGS "${NUMA_LFLAG}" "-lpthread" "-lm"
)
endif()

Expand All @@ -184,9 +186,8 @@ if( WITH_BSP1D_BACKEND OR WITH_HYBRID_BACKEND )
COMPILER_COMMAND "${LPF_CXX_COMPILER}"
RUNNER "${LPFRUN_CMD}"
COMPILE_DEFINITIONS "${LPF_INCLUDE_DEFS};${HYBRID_SELECTION_DEFS}"
LINK_FLAGS "'${HYBRID_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
"-llpf_hl" "-lpthread" "-lm" "-ldl"
LIB_DIR "${HYBRID_BACKEND_INSTALL_DIR}"
LINK_FLAGS "${NUMA_LFLAG}" "-lpthread" "-lm"
)
endif()
endif()
Expand Down
23 changes: 16 additions & 7 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ foreach( backend ${AVAILABLE_BACKENDS} )

list( APPEND backend_list "\"${backend}\"" )
joinAndAppend( compiler_list ${backend}_WRAPPER_COMPILER_COMMAND )
joinAndAppend( library_dir ${backend}_LIB_DIR )

joinAndAppend( runenv_list ${backend}_WRAPPER_RUNENV )
joinAndAppend( runner_list ${backend}_WRAPPER_RUNNER )
Expand All @@ -75,7 +76,13 @@ endforeach( )
# sourcing the resulting setenv makes the quotes seem as part of the
# executable name. Until this is fixed, we do not support spaces in
# the LPF install path (FIXME)
list( JOIN backend_list " " AVAILABLE_BACKENDS_SPACED )

macro( joinWithNewLine inListName outListName )
list( JOIN ${inListName} "\n" tmp_spaced )
set( ${outListName} "\n${tmp_spaced}\n" )
endmacro( joinWithNewLine )

joinWithNewLine( backend_list AVAILABLE_BACKENDS_SPACED )
list( JOIN LPFRUN_CMD " " LPFRUN_CMD_SPACED )
list( JOIN MANUALRUN " " MANUALRUN_SPACED )
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/setenv.in ${CMAKE_CURRENT_BINARY_DIR}/setenv @ONLY )
Expand All @@ -85,13 +92,15 @@ list( TRANSFORM cflags PREPEND "-D" )
list( APPEND cflags "${COMMON_WRAPPER_OPTIONS}" )
joinAndAppend( COMMON_FLAGS_SPACED cflags )

list( JOIN compiler_list " " BACKEND_COMPILERS_SPACED )
list( JOIN compile_options_list " " BACKEND_CFLAGS_SPACED )
list( JOIN link_flags_list " " BACKEND_LFLAGS_SPACED )
joinWithNewLine( compiler_list BACKEND_COMPILERS_SPACED )
joinWithNewLine( library_dir LIBRARY_DIRS_SPACED )

joinWithNewLine( compile_options_list BACKEND_CFLAGS_SPACED )
joinWithNewLine( link_flags_list BACKEND_LFLAGS_SPACED )
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/grbcxx.in ${CMAKE_CURRENT_BINARY_DIR}/grbcxx @ONLY )

list( JOIN runenv_list " " BACKEND_RUNENV_SPACED )
list( JOIN runner_list " " BACKEND_RUNNER_SPACED )
joinWithNewLine( runenv_list BACKEND_RUNENV_SPACED )
joinWithNewLine( runner_list BACKEND_RUNNER_SPACED )
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/grbrun.in ${CMAKE_CURRENT_BINARY_DIR}/grbrun @ONLY )

# install them to the install folder with execute permission
Expand All @@ -107,7 +116,7 @@ install( FILES ${CMAKE_CURRENT_BINARY_DIR}/setenv

### GENERATE CMAKE INFRASTRUCTURE INSIDE INSTALLATION DIRECTORY

include(CMakePackageConfigHelpers)
include( CMakePackageConfigHelpers )

# write file with version information
write_basic_package_version_file(
Expand Down
23 changes: 12 additions & 11 deletions src/grbcxx.in
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ BACKENDCFLAGS=(@BACKEND_CFLAGS_SPACED@)
BACKENDLFLAGS=(@BACKEND_LFLAGS_SPACED@)
COMMONCFLAGS=@COMMON_FLAGS_SPACED@
VERSION="@VERSION@"
BACKEND_LIBRARY_OUTPUT_NAME="@BACKEND_LIBRARY_OUTPUT_NAME@"
LIBRARY_DIRS=(@LIBRARY_DIRS_SPACED@)

declare -a ARGS
LINK=true
LINK="dynamic"
SHOW="eval"
BACKEND=${BACKENDS[0]}
CXXSTD=c++11
Expand All @@ -39,16 +41,14 @@ while [[ $# -gt 0 ]]; do
BACKEND=$1
shift
;;
-c)
ARGS+=("-c")
LINK=false
--link-alp-static)
LINK="static"
;;
--show)
SHOW=echo
;;
--std=*)
CXXSTD="${option#*=}"
shift
;;
--version)
echo "This is ALP/GraphBLAS version ${VERSION}"
Expand Down Expand Up @@ -88,14 +88,15 @@ then
exit 255
fi

LFLAGS=
if ${LINK}
then
LFLAGS=${BACKENDLFLAGS[${BACKENDID}]}
if [[ "${LINK}" == "dynamic" ]]; then
LIB="-L '${LIBRARY_DIRS[${BACKENDID}]}' -l${BACKEND_LIBRARY_OUTPUT_NAME}"
else
LIB="'${LIBRARY_DIRS[${BACKENDID}]}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
fi
LFLAGS="${LIB} ${BACKENDLFLAGS[${BACKENDID}]}"

COMPILER=${BACKENDCOMPILERS[${BACKENDID}]}
COMPILER="${BACKENDCOMPILERS[${BACKENDID}]}"

CMD="${COMPILER} -std=${CXXSTD} -I'${INCLUDEDIR}' ${COMMONCFLAGS} ${BACKENDCFLAGS[${BACKENDID}]} "${ARGS[@]}" "$@" ${LFLAGS}"
CMD="${COMPILER} -std=${CXXSTD} -I'${INCLUDEDIR}' ${COMMONCFLAGS} ${BACKENDCFLAGS[${BACKENDID}]} ${ARGS[@]} "$@" ${LFLAGS}"

${SHOW} "${CMD}"

0 comments on commit eda38c9

Please sign in to comment.