# Link the target for normal use or debugging.
# A shell script is used to try linking without unnecessary libraries.
-$(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
- $(CCC) version.c -o objects/version.o
+$(VIMTARGET): auto/config.mk $(OBJ) objects/version.o
@$(BUILD_DATE_MSG)
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(VIMTARGET) $(OBJ) $(ALL_LIBS)" \
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+ PROG="vim" \
sh $(srcdir)/link.sh
xxd/xxd$(EXEEXT): xxd/xxd.c
# Unittests
# It's build just like Vim to satisfy all dependencies.
-$(JSON_TEST_TARGET): auto/config.mk objects $(JSON_TEST_OBJ)
- $(CCC) version.c -o objects/version.o
+$(JSON_TEST_TARGET): auto/config.mk $(JSON_TEST_OBJ) objects/version.o
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(JSON_TEST_TARGET) $(JSON_TEST_OBJ) $(ALL_LIBS)" \
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+ PROG="json_test" \
sh $(srcdir)/link.sh
-$(KWORD_TEST_TARGET): auto/config.mk objects $(KWORD_TEST_OBJ)
- $(CCC) version.c -o objects/version.o
+$(KWORD_TEST_TARGET): auto/config.mk $(KWORD_TEST_OBJ) objects/version.o
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(KWORD_TEST_TARGET) $(KWORD_TEST_OBJ) $(ALL_LIBS)" \
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+ PROG="kword_test" \
sh $(srcdir)/link.sh
-$(MEMFILE_TEST_TARGET): auto/config.mk objects $(MEMFILE_TEST_OBJ)
- $(CCC) version.c -o objects/version.o
+$(MEMFILE_TEST_TARGET): auto/config.mk $(MEMFILE_TEST_OBJ) objects/version.o
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(MEMFILE_TEST_TARGET) $(MEMFILE_TEST_OBJ) $(ALL_LIBS)" \
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+ PROG="memfile_test" \
sh $(srcdir)/link.sh
-$(MESSAGE_TEST_TARGET): auto/config.mk objects $(MESSAGE_TEST_OBJ)
- $(CCC) version.c -o objects/version.o
+$(MESSAGE_TEST_TARGET): auto/config.mk $(MESSAGE_TEST_OBJ) objects/version.o
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(MESSAGE_TEST_TARGET) $(MESSAGE_TEST_OBJ) $(ALL_LIBS)" \
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+ PROG="message_test" \
sh $(srcdir)/link.sh
# install targets
objects/userfunc.o: userfunc.c
$(CCC) -o $@ userfunc.c
+objects/version.o: version.c
+ $(CCC) -o $@ version.c
+
objects/vim9class.o: vim9class.c
$(CCC) -o $@ vim9class.c
# Otherwise this script is fail-safe, falling back to the original full link
# command if anything fails.
-echo "$LINK " >link.cmd
+echo "$LINK " >link_$PROG.cmd
exit_value=0
if test "$LINK_AS_NEEDED" = yes; then
echo "link.sh: \$LINK_AS_NEEDED set to 'yes': invoking linker directly."
- cat link.cmd
- if sh link.cmd; then
+ cat link_$PROG.cmd
+ if sh link_$PROG.cmd; then
exit_value=0
echo "link.sh: Linked fine"
else
# - Don't remove the last -lm: On HP-UX Vim links OK but crashes when the GTK
# GUI is started, because the "floor" symbol could not be resolved.
#
- cat link.cmd
- if sh link.cmd; then
+ cat link_$PROG.cmd
+ if sh link_$PROG.cmd; then
touch auto/link.sed
- cp link.cmd linkit.sh
+ cp link_$PROG.cmd linkit_$PROG.sh
for libname in SM ICE nsl dnet dnet_stub inet socket dir elf iconv Xt Xmu Xp Xpm X11 Xdmcp x w perl dl pthread thread readline m crypt attr; do
cont=yes
while test -n "$cont"; do
- if grep "l$libname " linkit.sh >/dev/null; then
- if test ! -f link1.sed; then
+ if grep "l$libname " linkit_$PROG.sh >/dev/null; then
+ if test ! -f link1_$PROG.sed; then
echo "link.sh: OK, linking works, let's try omitting a few libraries."
echo "link.sh: See auto/link.log for details."
rm -f auto/link.log
fi
- echo "s/-l$libname *//" >link1.sed
- sed -f auto/link.sed <link.cmd >linkit2.sh
- sed -f link1.sed <linkit2.sh >linkit.sh
+ echo "s/-l$libname *//" >link1_$PROG.sed
+ sed -f auto/link.sed <link_$PROG.cmd >linkit2_$PROG.sh
+ sed -f link1_$PROG.sed <linkit2_$PROG.sh >linkit_$PROG.sh
# keep the last -lm
- if test $libname != "m" || grep "lm " linkit.sh >/dev/null; then
+ if test $libname != "m" || grep "lm " linkit_$PROG.sh >/dev/null; then
echo "link.sh: Trying to omit the $libname library..."
- cat linkit.sh >>auto/link.log
+ cat linkit_$PROG.sh >>auto/link.log
# Redirect this link output, it may contain error messages which
# should be ignored.
- if sh linkit.sh >>auto/link.log 2>&1; then
+ if sh linkit_$PROG.sh >>auto/link.log 2>&1; then
echo "link.sh: Vim doesn't need the $libname library!"
- cat link1.sed >>auto/link.sed
+ cat link1_$PROG.sed >>auto/link.sed
rm -f auto/pathdef.c
else
echo "link.sh: Vim DOES need the $libname library."
cont=
- cp link.cmd linkit.sh
+ cp link_$PROG.cmd linkit_$PROG.sh
fi
else
cont=
- cp link.cmd linkit.sh
+ cp link_$PROG.cmd linkit_$PROG.sh
fi
else
cont=
- cp link.cmd linkit.sh
+ cp link_$PROG.cmd linkit_$PROG.sh
fi
done
done
if test ! -f auto/pathdef.c; then
$MAKE objects/pathdef.o
fi
- if test ! -f link1.sed; then
+ if test ! -f link1_$PROG.sed; then
echo "link.sh: Linked fine, no libraries can be omitted"
- touch link3.sed
+ touch link3_$PROG.sed
fi
else
exit_value=$?
#
if test -s auto/link.sed; then
echo "link.sh: Using auto/link.sed file to omit a few libraries"
- sed -f auto/link.sed <link.cmd >linkit.sh
- cat linkit.sh
- if sh linkit.sh; then
+ sed -f auto/link.sed <link_$PROG.cmd >linkit_$PROG.sh
+ cat linkit_$PROG.sh
+ if sh linkit_$PROG.sh; then
exit_value=0
echo "link.sh: Linked fine with a few libraries omitted"
else
exit_value=$?
echo "link.sh: Linking failed, making auto/link.sed empty and trying again"
- mv -f auto/link.sed link2.sed
+ mv -f auto/link.sed link2_$PROG.sed
touch auto/link.sed
rm -f auto/pathdef.c
$MAKE objects/pathdef.o
fi
fi
-if test -f auto/link.sed -a ! -s auto/link.sed -a ! -f link3.sed; then
+if test -f auto/link.sed -a ! -s auto/link.sed -a ! -f link3_$PROG.sed; then
echo "link.sh: Using unmodified link command"
- cat link.cmd
- if sh link.cmd; then
+ cat link_$PROG.cmd
+ if sh link_$PROG.cmd; then
exit_value=0
echo "link.sh: Linked OK"
else
exit_value=$?
- if test -f link2.sed; then
+ if test -f link2_$PROG.sed; then
echo "link.sh: Linking doesn't work at all, removing auto/link.sed"
rm -f auto/link.sed
fi
#
# cleanup
#
-rm -f link.cmd linkit.sh link1.sed link2.sed link3.sed linkit2.sh
+rm -f link_$PROG.cmd linkit_$PROG.sh link1_$PROG.sed link2_$PROG.sed \
+ link3_$PROG.sed linkit2_$PROG.sh
#
# return an error code if something went wrong