Makefile.am: Use BUILT_SOURCES for GENERATED headers (#4068)
The previous fix when using _DEPENDENCIES was wrong because that dependency is only created for the final executable. However, the build fails when building the object file. The manual explicitly mentions that using _DEPENDENCIES is wrong for source files: > In rare cases you may need to add other kinds of files such as linker > scripts, but listing a source file in _DEPENDENCIES is wrong. If some > source file needs to be built before all the components of a program > are built, consider using the BUILT_SOURCES variable instead (see > Sources). https://www.gnu.org/software/automake/manual/automake.html#Linking Instead, using BUILT_SOURCES works, as mentioned in the manual. https://www.gnu.org/software/automake/manual/automake.html#Sources I have also removed the dependencies from i3_SOURCES since AFAIK dependencies to header files don't do anything. I have verified that modifying the header correctly re-triggers the build for i3 & i3-config-wizard. > Header files listed in a _SOURCES definition will be included in the > distribution but otherwise ignored. In case it isn’t obvious, you > should not include the header file generated by configure in a > _SOURCES variable; this file should not be distributed. Lex (.l) and > Yacc (.y) files can also be listed; see Yacc and Lex. https://www.gnu.org/software/automake/manual/automake.html#Program-Sources An alternative instead of BUILT_SOURCES that should also work in our case is found in this section: https://www.gnu.org/software/automake/manual/automake.html#Built-Sources-Example see "Recording Dependencies manually". The syntax would be: foo.$(OBJEXT): $(config_parser_SOURCES) $(command_parser_SOURCES) The benefit of this over BUILT_SOURCES is that it will work for targets other than 'all', 'check' and 'install'. However, since we don't really have such targets we don't need to do this right now. Tested extensively using this script: #!/bin/bash set -x autoreconf -fi while mkdir build && cd build && ../configure && make -j; do cd .. rm -rf build done Fixes #3670
This commit is contained in:
parent
666906b517
commit
6a37114af1
|
@ -442,7 +442,6 @@ i3_config_wizard_i3_config_wizard_SOURCES = \
|
||||||
i3-config-wizard/xcb.h
|
i3-config-wizard/xcb.h
|
||||||
|
|
||||||
i3_config_wizard_i3_config_wizard_DEPENDENCIES = \
|
i3_config_wizard_i3_config_wizard_DEPENDENCIES = \
|
||||||
$(config_parser_SOURCES) \
|
|
||||||
$(top_builddir)/libi3.a
|
$(top_builddir)/libi3.a
|
||||||
|
|
||||||
test_inject_randr15_CPPFLAGS = \
|
test_inject_randr15_CPPFLAGS = \
|
||||||
|
@ -496,9 +495,9 @@ config_parser_SOURCES = \
|
||||||
parser/GENERATED_config_tokens.h \
|
parser/GENERATED_config_tokens.h \
|
||||||
parser/GENERATED_config_call.h
|
parser/GENERATED_config_call.h
|
||||||
|
|
||||||
|
BUILT_SOURCES = $(command_parser_SOURCES) $(config_parser_SOURCES)
|
||||||
|
|
||||||
i3_SOURCES = \
|
i3_SOURCES = \
|
||||||
$(command_parser_SOURCES) \
|
|
||||||
$(config_parser_SOURCES) \
|
|
||||||
include/all.h \
|
include/all.h \
|
||||||
include/assignments.h \
|
include/assignments.h \
|
||||||
include/atoms_NET_SUPPORTED.xmacro \
|
include/atoms_NET_SUPPORTED.xmacro \
|
||||||
|
|
|
@ -32,3 +32,4 @@ strongly encouraged to upgrade.
|
||||||
• do not focus floating windows changing workspace with ConfigureNotify
|
• do not focus floating windows changing workspace with ConfigureNotify
|
||||||
• i3-dmenu-desktop: Support symlinks in search path
|
• i3-dmenu-desktop: Support symlinks in search path
|
||||||
• build: correctly provide auxiliary functions when needed
|
• build: correctly provide auxiliary functions when needed
|
||||||
|
• build: fix issues with parallel build
|
||||||
|
|
Loading…
Reference in New Issue