@@ -90,9 +90,73 @@ check_linker()
9090 return 0
9191}
9292
93- # Clean up any temporary files we created previously
94-
95- rm -f src/Makevars.R_STRIP_LINKER_OPTION
93+ # Takes an argument with the name of the Makevars file to modify (assuming it
94+ # is in src/ and modifies it accordingly. If the second parameter is set to
95+ # "create-if-missing" it will create the file if it is not already there.
96+ modify_makevars()
97+ {
98+ MAKEVARS_FILE="$1"
99+ CREATE_IF_MISSING="$2"
100+
101+ # Clean up any temporary files we created previously
102+ rm -f src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION
103+
104+ # If there is a pre-existing Makevars file, go through it and remove the
105+ # line where we assign to R_STRIP_LINKER_OPTION. Also, if there is already
106+ # a line that assigns to PKG_LIBS, make sure it adds
107+ # $(R_STRIP_LINKER_OPTION) to the end. Store the results in
108+ # src/Makevars.R_STRIP_LINKER_OPTION
109+
110+ FOUND_PKG_LIBS_ASSIGNMENT=0
111+
112+ if [ -f "src/$MAKEVARS_FILE" ]; then
113+ while read -r LINE || [ -n "$LINE" ]; do
114+ case "$LINE" in
115+ *PKG_LIBS*=*)
116+ case "$LINE" in
117+ *R_STRIP_LINKER_OPTION*)
118+ echo $LINE >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION ;;
119+ *)
120+ echo "$LINE \$(R_STRIP_LINKER_OPTION)" \
121+ >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION ;;
122+ esac
123+ FOUND_PKG_LIBS_ASSIGNMENT=1
124+ ;;
125+ *R_STRIP_LINKER_OPTION*) ;;
126+ *) echo $LINE >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION ;;
127+ esac
128+ done <src/$MAKEVARS_FILE
129+
130+ # Place the proper value in R_STRIP_LINKER_OPTION
131+ echo "R_STRIP_LINKER_OPTION=\"$ARGUMENT\"" \
132+ >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION
133+
134+ # If there wasn't an assignment to PKG_LIBS already in place, then we need
135+ # to add one to get our R_STRIP_LINKER_OPTION in there.
136+
137+ if [ $FOUND_PKG_LIBS_ASSIGNMENT -eq 0 ]; then
138+ echo "PKG_LIBS = \$(R_STRIP_LINKER_OPTION)" \
139+ >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION
140+ fi
141+ elif [ "$CREATE_IF_MISSING" = "create-if-missing" ]; then
142+ # Place the proper value in R_STRIP_LINKER_OPTION
143+ echo "R_STRIP_LINKER_OPTION=\"$ARGUMENT\"" \
144+ >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION
145+ echo "PKG_LIBS = \$(R_STRIP_LINKER_OPTION)" \
146+ >> src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION
147+ fi
148+
149+ if [ -f src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION ]; then
150+ if [ -f src/$MAKEVARS_FILE ]; then
151+ mv src/$MAKEVARS_FILE src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION.bak
152+ fi
153+
154+ mv src/$MAKEVARS_FILE.R_STRIP_LINKER_OPTION src/$MAKEVARS_FILE
155+ fi
156+
157+ # This function always suceeds (even if it does nothing)
158+ return 0
159+ }
96160
97161# Set the string we want to pass
98162ARGUMENT=""
123187if [ "$ARGUMENT" != "" ]; then
124188 echo "Compatible linkers found."
125189
126- # If there is a pre-existing Makevars file, go through it and remove the
127- # line where we assign to R_STRIP_LINKER_OPTION. Also, if there is already
128- # a line that assigns to PKG_LIBS, make sure it adds
129- # $(R_STRIP_LINKER_OPTION) to the end. Store the results in
130- # src/Makevars.R_STRIP_LINKER_OPTION
131-
132- FOUND_PKG_LIBS_ASSIGNMENT=0
133-
134- if [ -f src/Makevars ]; then
135- while read -r LINE || [ -n "$LINE" ]; do
136- case "$LINE" in
137- *PKG_LIBS*=*)
138- case "$LINE" in
139- *R_STRIP_LINKER_OPTION*)
140- echo $LINE >> src/Makevars.R_STRIP_LINKER_OPTION ;;
141- *)
142- echo "$LINE \$(R_STRIP_LINKER_OPTION)" \
143- >> src/Makevars.R_STRIP_LINKER_OPTION ;;
144- esac
145- FOUND_PKG_LIBS_ASSIGNMENT=1
146- ;;
147- *R_STRIP_LINKER_OPTION*) ;;
148- *) echo $LINE >> src/Makevars.R_STRIP_LINKER_OPTION ;;
149- esac
150- done <src/Makevars
151- fi
152-
153- # Place the proper value in R_STRIP_LINKER_OPTION
154-
155- echo "R_STRIP_LINKER_OPTION=\"$ARGUMENT\"" \
156- >> src/Makevars.R_STRIP_LINKER_OPTION
157-
158- # If there wasn't an assignment to PKG_LIBS already in place, then we need
159- # to add one to get our R_STRIP_LINKER_OPTION in there.
160-
161- if [ $FOUND_PKG_LIBS_ASSIGNMENT -eq 0 ]; then
162- echo "PKG_LIBS = \$(R_STRIP_LINKER_OPTION)" \
163- >> src/Makevars.R_STRIP_LINKER_OPTION
164- fi
165- fi
166-
167- # If we created a src/Makevars.R_STRIP_LINKER_OPTION file, then backup the
168- # current Makevars file and rename our modified version to Makevars.
169-
170- if [ -f src/Makevars.R_STRIP_LINKER_OPTION ]; then
171- if [ -f src/Makevars ]; then
172- mv src/Makevars src/Makevars.R_STRIP_LINKER_OPTION.bak
173- fi
174-
175- mv src/Makevars.R_STRIP_LINKER_OPTION src/Makevars
176- fi
190+ modify_makevars Makevars create-if-missing
191+ modify_makevars Makevars.win
192+ fi
0 commit comments