Skip to content

Commit bd1f391

Browse files
issue #171: changing default linking mode in grbcxx wrapper
1 parent b2ab699 commit bd1f391

File tree

3 files changed

+44
-33
lines changed

3 files changed

+44
-33
lines changed

cmake/AddGRBInstall.cmake

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ set( HYBRID_BACKEND_INSTALL_DIR "${BINARY_LIBRARIES_INSTALL_DIR}/hybrid" )
7272
#
7373
function( addBackendWrapperGenOptions backend )
7474
set( multiValueArgs "COMPILER_COMMAND;RUNENV;RUNNER"
75-
"COMPILE_DEFINITIONS;COMPILE_OPTIONS;LINK_FLAGS"
75+
"COMPILE_DEFINITIONS;COMPILE_OPTIONS;LINK_FLAGS;LIB_DIR"
7676
)
7777
cmake_parse_arguments( parsed "${options}" "${oneValueArgs}"
7878
"${multiValueArgs}" "${ARGN}"
@@ -82,12 +82,15 @@ function( addBackendWrapperGenOptions backend )
8282
message( FATAL_ERROR "cannot find ${backend} among available backends")
8383
endif()
8484

85+
assert_valid_variables( parsed_LIB_DIR )
86+
8587
set( ${backend}_WRAPPER_COMPILER_COMMAND "${parsed_COMPILER_COMMAND}" PARENT_SCOPE )
8688
if( NOT parsed_COMPILER_COMMAND )
8789
set( ${backend}_WRAPPER_COMPILER_COMMAND "${CMAKE_CXX_COMPILER}" PARENT_SCOPE )
8890
endif()
8991
set( ${backend}_WRAPPER_RUNENV "${parsed_RUNENV}" PARENT_SCOPE )
9092
set( ${backend}_WRAPPER_RUNNER "${parsed_RUNNER}" PARENT_SCOPE )
93+
set( ${backend}_LIB_DIR "${parsed_LIB_DIR}" PARENT_SCOPE )
9194

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

@@ -116,33 +119,33 @@ endif()
116119
if( WITH_REFERENCE_BACKEND )
117120
addBackendWrapperGenOptions( "reference"
118121
COMPILE_DEFINITIONS "${REFERENCE_SELECTION_DEFS}"
119-
LINK_FLAGS "'${SHMEM_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
120-
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
122+
LIB_DIR "${SHMEM_BACKEND_INSTALL_DIR}"
123+
LINK_FLAGS "${NUMA_LFLAG}"
121124
)
122125
endif()
123126

124127
if( WITH_OMP_BACKEND )
125128
addBackendWrapperGenOptions( "reference_omp"
126129
COMPILE_DEFINITIONS "${REFERENCE_OMP_SELECTION_DEFS}"
127-
LINK_FLAGS "'${SHMEM_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
128-
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
130+
LIB_DIR "${SHMEM_BACKEND_INSTALL_DIR}"
131+
LINK_FLAGS "${NUMA_LFLAG}"
129132
)
130133
endif()
131134

132135
# dependent backends
133136
if( WITH_HYPERDAGS_BACKEND )
134137
addBackendWrapperGenOptions( "hyperdags"
135138
COMPILE_DEFINITIONS "${HYPERDAGS_SELECTION_DEFS};${HYPERDAGS_INCLUDE_DEFS}"
136-
LINK_FLAGS "'${HYPERDAGS_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
137-
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
139+
LIB_DIR "${HYPERDAGS_BACKEND_INSTALL_DIR}"
140+
LINK_FLAGS "${NUMA_LFLAG}"
138141
)
139142
endif()
140143

141144
if( WITH_NONBLOCKING_BACKEND )
142145
addBackendWrapperGenOptions( "nonblocking"
143146
COMPILE_DEFINITIONS "${NONBLOCKING_SELECTION_DEFS};${NONBLOCKING_INCLUDE_DEFS}"
144-
LINK_FLAGS "'${SHMEM_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
145-
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
147+
LIB_DIR "${SHMEM_BACKEND_INSTALL_DIR}"
148+
LINK_FLAGS "${NUMA_LFLAG}"
146149
)
147150
endif()
148151

@@ -173,9 +176,8 @@ if( WITH_BSP1D_BACKEND OR WITH_HYBRID_BACKEND )
173176
COMPILER_COMMAND "${LPF_CXX_COMPILER}"
174177
RUNNER "${LPFRUN_CMD}"
175178
COMPILE_DEFINITIONS "${LPF_INCLUDE_DEFS};${BSP1D_SELECTION_DEFS}"
176-
LINK_FLAGS "'${BSP1D_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
177-
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
178-
"-llpf_hl" "-lpthread" "-lm" "-ldl"
179+
LIB_DIR "${BSP1D_BACKEND_INSTALL_DIR}"
180+
LINK_FLAGS "${NUMA_LFLAG}" "-lpthread" "-lm"
179181
)
180182
endif()
181183

@@ -184,9 +186,8 @@ if( WITH_BSP1D_BACKEND OR WITH_HYBRID_BACKEND )
184186
COMPILER_COMMAND "${LPF_CXX_COMPILER}"
185187
RUNNER "${LPFRUN_CMD}"
186188
COMPILE_DEFINITIONS "${LPF_INCLUDE_DEFS};${HYBRID_SELECTION_DEFS}"
187-
LINK_FLAGS "'${HYBRID_BACKEND_INSTALL_DIR}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
188-
"'${ALP_UTILS_INSTALL_DIR}/lib${ALP_UTILS_LIBRARY_OUTPUT_NAME}.a'" "${NUMA_LFLAG}"
189-
"-llpf_hl" "-lpthread" "-lm" "-ldl"
189+
LIB_DIR "${HYBRID_BACKEND_INSTALL_DIR}"
190+
LINK_FLAGS "${NUMA_LFLAG}" "-lpthread" "-lm"
190191
)
191192
endif()
192193
endif()

src/CMakeLists.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ foreach( backend ${AVAILABLE_BACKENDS} )
5959

6060
list( APPEND backend_list "\"${backend}\"" )
6161
joinAndAppend( compiler_list ${backend}_WRAPPER_COMPILER_COMMAND )
62+
joinAndAppend( library_dir ${backend}_LIB_DIR )
6263

6364
joinAndAppend( runenv_list ${backend}_WRAPPER_RUNENV )
6465
joinAndAppend( runner_list ${backend}_WRAPPER_RUNNER )
@@ -75,7 +76,13 @@ endforeach( )
7576
# sourcing the resulting setenv makes the quotes seem as part of the
7677
# executable name. Until this is fixed, we do not support spaces in
7778
# the LPF install path (FIXME)
78-
list( JOIN backend_list " " AVAILABLE_BACKENDS_SPACED )
79+
80+
macro( joinWithNewLine inListName outListName )
81+
list( JOIN ${inListName} "\n" tmp_spaced )
82+
set( ${outListName} "\n${tmp_spaced}\n" )
83+
endmacro( joinWithNewLine )
84+
85+
joinWithNewLine( backend_list AVAILABLE_BACKENDS_SPACED )
7986
list( JOIN LPFRUN_CMD " " LPFRUN_CMD_SPACED )
8087
list( JOIN MANUALRUN " " MANUALRUN_SPACED )
8188
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/setenv.in ${CMAKE_CURRENT_BINARY_DIR}/setenv @ONLY )
@@ -85,13 +92,15 @@ list( TRANSFORM cflags PREPEND "-D" )
8592
list( APPEND cflags "${COMMON_WRAPPER_OPTIONS}" )
8693
joinAndAppend( COMMON_FLAGS_SPACED cflags )
8794

88-
list( JOIN compiler_list " " BACKEND_COMPILERS_SPACED )
89-
list( JOIN compile_options_list " " BACKEND_CFLAGS_SPACED )
90-
list( JOIN link_flags_list " " BACKEND_LFLAGS_SPACED )
95+
joinWithNewLine( compiler_list BACKEND_COMPILERS_SPACED )
96+
joinWithNewLine( library_dir LIBRARY_DIRS_SPACED )
97+
98+
joinWithNewLine( compile_options_list BACKEND_CFLAGS_SPACED )
99+
joinWithNewLine( link_flags_list BACKEND_LFLAGS_SPACED )
91100
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/grbcxx.in ${CMAKE_CURRENT_BINARY_DIR}/grbcxx @ONLY )
92101

93-
list( JOIN runenv_list " " BACKEND_RUNENV_SPACED )
94-
list( JOIN runner_list " " BACKEND_RUNNER_SPACED )
102+
joinWithNewLine( runenv_list BACKEND_RUNENV_SPACED )
103+
joinWithNewLine( runner_list BACKEND_RUNNER_SPACED )
95104
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/grbrun.in ${CMAKE_CURRENT_BINARY_DIR}/grbrun @ONLY )
96105

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

108117
### GENERATE CMAKE INFRASTRUCTURE INSIDE INSTALLATION DIRECTORY
109118

110-
include(CMakePackageConfigHelpers)
119+
include( CMakePackageConfigHelpers )
111120

112121
# write file with version information
113122
write_basic_package_version_file(

src/grbcxx.in

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ BACKENDCFLAGS=(@BACKEND_CFLAGS_SPACED@)
2424
BACKENDLFLAGS=(@BACKEND_LFLAGS_SPACED@)
2525
COMMONCFLAGS=@COMMON_FLAGS_SPACED@
2626
VERSION="@VERSION@"
27+
BACKEND_LIBRARY_OUTPUT_NAME="@BACKEND_LIBRARY_OUTPUT_NAME@"
28+
LIBRARY_DIRS=(@LIBRARY_DIRS_SPACED@)
2729

2830
declare -a ARGS
29-
LINK=true
31+
LINK="dynamic"
3032
SHOW="eval"
3133
BACKEND=${BACKENDS[0]}
3234
CXXSTD=c++11
@@ -39,16 +41,14 @@ while [[ $# -gt 0 ]]; do
3941
BACKEND=$1
4042
shift
4143
;;
42-
-c)
43-
ARGS+=("-c")
44-
LINK=false
44+
--link-alp-static)
45+
LINK="static"
4546
;;
4647
--show)
4748
SHOW=echo
4849
;;
4950
--std=*)
5051
CXXSTD="${option#*=}"
51-
shift
5252
;;
5353
--version)
5454
echo "This is ALP/GraphBLAS version ${VERSION}"
@@ -88,14 +88,15 @@ then
8888
exit 255
8989
fi
9090

91-
LFLAGS=
92-
if ${LINK}
93-
then
94-
LFLAGS=${BACKENDLFLAGS[${BACKENDID}]}
91+
if [[ "${LINK}" == "dynamic" ]]; then
92+
LIB="-L '${LIBRARY_DIRS[${BACKENDID}]}' -l${BACKEND_LIBRARY_OUTPUT_NAME}"
93+
else
94+
LIB="'${LIBRARY_DIRS[${BACKENDID}]}/lib${BACKEND_LIBRARY_OUTPUT_NAME}.a'"
9595
fi
96+
LFLAGS="${LIB} ${BACKENDLFLAGS[${BACKENDID}]}"
9697

97-
COMPILER=${BACKENDCOMPILERS[${BACKENDID}]}
98+
COMPILER="${BACKENDCOMPILERS[${BACKENDID}]}"
9899

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

101102
${SHOW} "${CMD}"

0 commit comments

Comments
 (0)