Skip to content

Commit

Permalink
Homogenize paths for source files during compilation
Browse files Browse the repository at this point in the history
Why:

* Compiling a .o file alone will compile with "-c file.c"
* Compiling a .lo file alone will create the corresponding .o files with "-c ./file.c"
* Building with "make -j1" will only execute the .lo rules; the .o rules will
  be skipped since the .o files are already created from the .lo rules with
  option "-c ./file.c"
* Building with "make -j2" will execute the .lo rules and the .o rules in
  parallel with option "-c file.c"
* assert() captures the path of the source file (taken from the -c option) in
  the compiled binary in order to display the source of the assertion error
* Hence the compiled binaries are not reproducible depending on the number of
  make parallel jobs

Example:

* when compiling examples/ldns-dane with "make -j1", the binary contains the
  string "./examples/ldns-dane.c"
* when compiling examples/ldns-dane with "make -j2", the binary contains the
  string "examples/ldns-dane.c"
  • Loading branch information
duthils committed Oct 7, 2022
1 parent 5d5c95a commit d8464d7
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ all: setup-builddir lib linktest manpages @P5_DNS_LDNS@ @PYLDNS@ @DRILL@ @EXAMPL
$(COMP_LIB) $(LIBSSL_CPPFLAGS) -c $< -o $@

$(LDNS_LOBJS) $(LIBLOBJS) $(DRILL_LOBJS) $(EXAMPLE_LOBJS):
$(COMP_LIB) $(LIBSSL_CPPFLAGS) -c $(srcdir)/$(@:.lo=.c) -o $@
$(COMP_LIB) $(LIBSSL_CPPFLAGS) -c $(@:.lo=.c) -o $@

setup-builddir:
@if test ! -d compat ; then mkdir compat ; fi
Expand Down

0 comments on commit d8464d7

Please sign in to comment.