Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/ci-macvim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,12 @@ jobs:
sed -i.bak -f ci/config.mk.clang-12.sed src/auto/config.mk
fi

if ${{ matrix.publish == true }}; then
# Only do link-time optimizations for publish builds, so the other
# ones can still finish quickly to give quick feedbacks.
sed -i.bak -f ci/config.mk.lto.sed src/auto/config.mk
fi

- name: Modify configure result
if: matrix.publish
run: |
Expand Down Expand Up @@ -230,6 +236,11 @@ jobs:
check_arch "${VIM_BIN}"
check_arch "${MACVIM_BIN}"

# Build the unit test binaries first so if they fail, it'll be at a different step from the actual test. Also,
# with link-time-optimizations, this help prevent them from using up the timeout in the tests.
- name: Build test binaries
run: make -C src unittesttargets

- name: Test
timeout-minutes: 20
run: make test
Expand Down
3 changes: 3 additions & 0 deletions ci/config.mk.lto.sed
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Add link-time optimization for even better performance
/^CFLAGS[[:blank:]]*=/s/$/ -flto/
/^LDFLAGS[[:blank:]]*=/s/$/ -flto/
18 changes: 8 additions & 10 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2066,8 +2066,7 @@ CCC = $(CCC_NF) $(ALL_CFLAGS)

# 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) version.c version.h
@$(BUILD_DATE_MSG)
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(VIMTARGET) $(OBJ) $(ALL_LIBS)" \
Expand Down Expand Up @@ -2271,29 +2270,25 @@ testclean:

# 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)
@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) \
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)
@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) \
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)
@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) \
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)
@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) \
Expand Down Expand Up @@ -3509,6 +3504,9 @@ objects/usercmd.o: usercmd.c
objects/userfunc.o: userfunc.c
$(CCC) -o $@ userfunc.c

objects/version.o: version.c
$(CCC) -o $@ version.c

objects/vim9cmds.o: vim9cmds.c
$(CCC) -o $@ vim9cmds.c

Expand Down