summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Coval <philippe.coval@open.eurogiciel.org>2014-12-17 16:46:29 -0500
committerGene Cumm <gene.cumm@gmail.com>2015-01-05 20:43:13 -0500
commitbe645d7a9848847388a662f6c0f7571d52ed7a05 (patch)
tree8074428b499d413984e372b8d2a0841a4662b4cf
parent5932f124bce94b662b0b7dc9b79cdc4802d4731c (diff)
downloadsyslinux-be645d7a9848847388a662f6c0f7571d52ed7a05.tar.gz
build: sort sources to build in a more deterministic way
It has been observed that binaries contents are depending on the order of linked objects. This order is caused by GNU make's wildcard function and the position of sources on filesystem. This change tries to prevent this kind of randomness. Also consider building using -j1 flag to make it even more reproductible. Change-Id: Ie8eee7f336e6f1fa2863c4150d967afd15519f1d Bug: http://bugzilla.syslinux.org/show_bug.cgi?id=57#related Signed-off-by: Philippe Coval <philippe.coval at open.eurogiciel.org>
-rw-r--r--codepage/Makefile2
-rw-r--r--com32/cmenu/Makefile6
-rw-r--r--com32/gpllib/Makefile2
-rw-r--r--com32/hdt/Makefile2
-rw-r--r--com32/libupload/Makefile2
-rw-r--r--com32/rosh/Makefile2
-rw-r--r--com32/sysdump/Makefile4
-rw-r--r--core/Makefile10
-rw-r--r--dos/Makefile2
-rw-r--r--gpxe/src/Makefile.housekeeping12
-rw-r--r--lzo/Makefile2
-rw-r--r--memdisk/Makefile2
-rwxr-xr-xmtools/Makefile2
-rw-r--r--win32/Makefile2
-rw-r--r--win64/Makefile2
15 files changed, 27 insertions, 27 deletions
diff --git a/codepage/Makefile b/codepage/Makefile
index 18a590f3..af5258aa 100644
--- a/codepage/Makefile
+++ b/codepage/Makefile
@@ -1,6 +1,6 @@
VPATH = $(SRC)
PERL = perl
-CPSRC = $(wildcard $(SRC)/*.txt)
+CPSRC = $(sort $(wildcard $(SRC)/*.txt))
CPOBJ = $(notdir $(CPSRC))
GENFILES = $(patsubst %.txt,%.cp,$(CPOBJ))
diff --git a/com32/cmenu/Makefile b/com32/cmenu/Makefile
index 6bb52316..b81b68ed 100644
--- a/com32/cmenu/Makefile
+++ b/com32/cmenu/Makefile
@@ -32,8 +32,8 @@ LIBMENU = libmenu/syslnx.o libmenu/com32io.o libmenu/tui.o \
libmenu/menu.o libmenu/passwords.o libmenu/des.o libmenu/help.o \
$(objdir)/com32/libutil/libutil.c32 $(objdir)/com32/lib/libcom32.c32
-CMENUS = $(patsubst %.c,%.c32,$(wildcard $(SRC)/*.c))
-IMENUS = $(patsubst %.menu,%.c32,$(wildcard $(SRC)/*.menu))
+CMENUS = $(patsubst %.c,%.c32,$(sort $(wildcard $(SRC)/*.c)))
+IMENUS = $(patsubst %.menu,%.c32,$(sort $(wildcard $(SRC)/*.menu)))
MENUS = $(LIBS) $(subst $(SRC)/,,$(CMENUS) $(IMENUS))
@@ -62,7 +62,7 @@ clean: tidy menuclean
rm -f *.lss *.com
menuclean:
- rm -f $(patsubst %.menu,%.c,$(wildcard *.menu))
+ rm -f $(patsubst %.menu,%.c,$(sort $(wildcard *.menu)))
spotless: clean libclean menuclean
rm -f *~ \#* *.c32
diff --git a/com32/gpllib/Makefile b/com32/gpllib/Makefile
index e3e30d76..1fec9145 100644
--- a/com32/gpllib/Makefile
+++ b/com32/gpllib/Makefile
@@ -8,7 +8,7 @@ include $(MAKEDIR)/lib.mk
REQFLAGS += -I$(SRC)/../gplinclude -I$(SRC)/../gplinclude/zzjson
GPLDIRS := $(SRC) $(addprefix $(SRC)/,disk dmi vpd acpi zzjson)
-LIBOBJS := $(subst $(SRC)/,,$(foreach dir,$(GPLDIRS),$(patsubst %.c,%.o,$(wildcard $(dir)/*.c))))
+LIBOBJS := $(subst $(SRC)/,,$(foreach dir,$(GPLDIRS),$(patsubst %.c,%.o,$(sort $(wildcard $(dir)/*.c)))))
BINDIR = /usr/bin
LIBDIR = /usr/lib
diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile
index 80f2d0a0..61736d05 100644
--- a/com32/hdt/Makefile
+++ b/com32/hdt/Makefile
@@ -25,7 +25,7 @@ CFLAGS += -I$(com32)/cmenu/libmenu -I$(com32)
MODULES = hdt.c32
TESTFILES =
-OBJS = $(subst $(SRC)/,,$(patsubst %.c,%.o,$(wildcard $(SRC)/*.c)))
+OBJS = $(subst $(SRC)/,,$(patsubst %.c,%.o,$(sort $(wildcard $(SRC)/*.c))))
VERSION = $(shell $(SED) -n 's/\#define VERSION \"\(.*\)\"/\1/p' hdt.h)
CODENAME = $(shell $(SED) -n 's/\#define CODENAME \"\(.*\)\"/\1/p' hdt.h)
NODASH_VERSION = $(shell echo $(VERSION) | $(SED) -e 's/-/_/g' | $(SED) -e 's/\./_/g')
diff --git a/com32/libupload/Makefile b/com32/libupload/Makefile
index f9440c57..a7799136 100644
--- a/com32/libupload/Makefile
+++ b/com32/libupload/Makefile
@@ -4,7 +4,7 @@ include $(MAKEDIR)/com32.mk
REQFLAGS += -I$(SRC)
-LIBOBJS := $(notdir $(patsubst %.c,%.o,$(wildcard $(SRC)/*.c)))
+LIBOBJS := $(notdir $(patsubst %.c,%.o,$(sort $(wildcard $(SRC)/*.c))))
BINDIR = /usr/bin
LIBDIR = /usr/lib
diff --git a/com32/rosh/Makefile b/com32/rosh/Makefile
index 4d900f4f..0d49eece 100644
--- a/com32/rosh/Makefile
+++ b/com32/rosh/Makefile
@@ -27,7 +27,7 @@ include $(MAKEDIR)/rosh.mk
# official release. Otherwise, substitute a hex string that is pretty much
# guaranteed to be unique to be unique from build to build.
ifndef HEXDATE
-HEXDATE := $(shell $(PERL) $(topdir)/now.pl $(SRCS) $(wildcard *.h))
+HEXDATE := $(shell $(PERL) $(topdir)/now.pl $(SRCS) $(sort $(wildcard *.h)))
endif
ifndef DATE
DATE := $(shell sh $(topdir)/gen-id.sh $(VERSION) $(HEXDATE))
diff --git a/com32/sysdump/Makefile b/com32/sysdump/Makefile
index 240edaaa..ba9bcaed 100644
--- a/com32/sysdump/Makefile
+++ b/com32/sysdump/Makefile
@@ -27,14 +27,14 @@ CFLAGS += -I$(com32) -I$(topdir)
MODULES = sysdump.c32
TESTFILES =
-SRCS = $(wildcard $(SRC)/*.c)
+SRCS = $(sort $(wildcard $(SRC)/*.c))
OBJS = $(subst $(SRC)/,,$(patsubst %.c,%.o,$(SRCS)))
# The DATE is set on the make command line when building binaries for
# official release. Otherwise, substitute a hex string that is pretty much
# guaranteed to be unique to be unique from build to build.
ifndef HEXDATE
-HEXDATE := $(shell $(PERL) $(topdir)/now.pl $(SRCS) $(wildcard *.h))
+HEXDATE := $(shell $(PERL) $(topdir)/now.pl $(SRCS) $(sort $(wildcard *.h)))
endif
ifndef DATE
DATE := $(shell sh $(topdir)/gen-id.sh $(VERSION) $(HEXDATE))
diff --git a/core/Makefile b/core/Makefile
index ad0acb5a..26302fd6 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -39,8 +39,8 @@ BTARGET = kwdhash.gen \
isolinux.bin isolinux-debug.bin pxelinux.0 lpxelinux.0
# All primary source files for the main syslinux files
-NASMSRC := $(wildcard $(SRC)/*.asm)
-NASMHDR := $(wildcard $(SRC)/*.inc)
+NASMSRC := $(sort $(wildcard $(SRC)/*.asm))
+NASMHDR := $(sort $(wildcard $(SRC)/*.inc))
CSRC := $(shell find $(SRC) -name '*.c' -print)
SSRC := $(shell find $(SRC) -name '*.S' -print)
CHDR := $(shell find $(SRC) -name '*.h' -print)
@@ -80,9 +80,9 @@ FILTER_OBJS = %rawcon.o %plaincon.o %pxelinux-c.o %ldlinux-c.o \
ifdef EFI_BUILD
# EFI is single-threaded, and doesn't use the LZO assembly decoder
FILTER_OBJS += $(subst $(SRC)/,, \
- $(patsubst %.S,%.o, $(wildcard $(SRC)/lzo/*.S)) \
- $(patsubst %.c,%.o, $(wildcard $(SRC)/thread/*.c)) \
- $(patsubst %.S,%.o, $(wildcard $(SRC)/thread/*.S)))
+ $(patsubst %.S,%.o, $(sort $(wildcard $(SRC)/lzo/*.S))) \
+ $(patsubst %.c,%.o, $(sort $(wildcard $(SRC)/thread/*.c))) \
+ $(patsubst %.S,%.o, $(sort $(wildcard $(SRC)/thread/*.S))))
endif
COBJS = $(filter-out $(FILTER_OBJS),$(COBJ))
diff --git a/dos/Makefile b/dos/Makefile
index b9c337d5..4c930d19 100644
--- a/dos/Makefile
+++ b/dos/Makefile
@@ -34,7 +34,7 @@ SRCS = syslinux.c \
../libinstaller/getopt/getopt_long.c \
../libinstaller/bootsect_bin.c \
../libinstaller/mbr_bin.c \
- $(wildcard $(SRC)/../libfat/*.c)
+ $(sort $(wildcard $(SRC)/../libfat/*.c))
OBJS = header.o crt0.o ldlinux.o \
$(patsubst %.c,%.o,$(notdir $(SRCS)))
LIBOBJS = int2526.o conio.o memcpy.o memset.o memmove.o skipatou.o atou.o \
diff --git a/gpxe/src/Makefile.housekeeping b/gpxe/src/Makefile.housekeeping
index 1f5e115f..903ac53f 100644
--- a/gpxe/src/Makefile.housekeeping
+++ b/gpxe/src/Makefile.housekeeping
@@ -246,9 +246,9 @@ endif
#
# BIN has the form bin[-[arch-]platform]
-ARCHS := $(patsubst arch/%,%,$(wildcard arch/*))
+ARCHS := $(patsubst arch/%,%,$(sort $(wildcard arch/*)))
PLATFORMS := $(patsubst config/defaults/%.h,%,\
- $(wildcard config/defaults/*.h))
+ $(sort $(wildcard config/defaults/*.h)))
archs :
@$(ECHO) $(ARCHS)
@@ -307,8 +307,8 @@ srcdirs :
# SRCS lists all .c or .S files found in any SRCDIR
#
-SRCS += $(wildcard $(patsubst %,%/*.c,$(SRCDIRS)))
-SRCS += $(wildcard $(patsubst %,%/*.S,$(SRCDIRS)))
+SRCS += $(sort $(wildcard $(patsubst %,%/*.c,$(SRCDIRS))))
+SRCS += $(sort $(wildcard $(patsubst %,%/*.S,$(SRCDIRS))))
srcs :
@$(ECHO) $(SRCS)
@@ -677,7 +677,7 @@ endef
$(BIN)/%.objs : $(BIN)/%.tmp
$(Q)$(ECHO) $(call objs_list,$<)
$(BIN)/%.sizes : $(BIN)/%.tmp
- $(Q)$(SIZE) -t $(foreach OBJ,$(call objs_list,$<),$(wildcard $(BIN)/$(subst _,?,$(OBJ)).o)) | \
+ $(Q)$(SIZE) -t $(foreach OBJ,$(call objs_list,$<),$(sort $(wildcard $(BIN)/$(subst _,?,$(OBJ)).o))) | \
sort -g
# Get dependency list for the specified target
@@ -807,7 +807,7 @@ $(BIN)/%.o : payload/%.img
$(Q)$(LD) -b binary -r -o $@ $< --undefined obj_payload \
--defsym obj_$*=0
-BOBJS += $(patsubst payload/%.img,$(BIN)/%.o,$(wildcard payload/*.img))
+BOBJS += $(patsubst payload/%.img,$(BIN)/%.o,$(sort $(wildcard payload/*.img)))
# The "allXXXs" targets for each suffix
#
diff --git a/lzo/Makefile b/lzo/Makefile
index 0c5d2965..29f1fa62 100644
--- a/lzo/Makefile
+++ b/lzo/Makefile
@@ -15,7 +15,7 @@ include $(MAKEDIR)/build.mk
INCLUDES += -I$(SRC)/include
-LIBOBJS = $(patsubst %.c,%.o,$(subst $(SRC)/,,$(wildcard $(SRC)/src/*.c)))
+LIBOBJS = $(patsubst %.c,%.o,$(subst $(SRC)/,,$(sort $(wildcard $(SRC)/src/*.c))))
LIB = lzo.a
BINS = prepcore
diff --git a/memdisk/Makefile b/memdisk/Makefile
index e6557d87..42e56e00 100644
--- a/memdisk/Makefile
+++ b/memdisk/Makefile
@@ -23,7 +23,7 @@ NFLAGS = -dDATE='"$(DATE)"'
NINCLUDE = -I$(SRC)/
VPATH = $(SRC)
-SRCS = $(wildcard *.asm *.c *.h)
+SRCS = $(sort $(wildcard *.asm *.c *.h))
# The DATE is set on the make command line when building binaries for
# official release. Otherwise, substitute a hex string that is pretty much
diff --git a/mtools/Makefile b/mtools/Makefile
index 70269efd..0d0b1b27 100755
--- a/mtools/Makefile
+++ b/mtools/Makefile
@@ -13,7 +13,7 @@ SRCS = syslinux.c \
../libinstaller/bootsect_bin.c \
../libinstaller/ldlinux_bin.c \
../libinstaller/ldlinuxc32_bin.c \
- $(wildcard $(SRC)/../libfat/*.c)
+ $(sort $(wildcard $(SRC)/../libfat/*.c))
OBJS = $(patsubst %.c,%.o,$(notdir $(SRCS)))
.SUFFIXES: .c .o .i .s .S
diff --git a/win32/Makefile b/win32/Makefile
index 437f954e..c6485300 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -59,7 +59,7 @@ LIBSRC = ../libinstaller/fs.c \
../libinstaller/ldlinux_bin.c \
../libinstaller/ldlinuxc32_bin.c \
../libinstaller/mbr_bin.c \
- $(wildcard $(SRC)/../libfat/*.c)
+ $(sort $(wildcard $(SRC)/../libfat/*.c))
LIBOBJS = $(patsubst %.c,%.obj,$(notdir $(LIBSRC)))
LIB = syslinux.lib
diff --git a/win64/Makefile b/win64/Makefile
index ae47e2e5..359d270d 100644
--- a/win64/Makefile
+++ b/win64/Makefile
@@ -49,7 +49,7 @@ LIBSRC = ../libinstaller/fs.c \
../libinstaller/ldlinux_bin.c \
../libinstaller/ldlinuxc32_bin.c \
../libinstaller/mbr_bin.c \
- $(wildcard $(SRC)/../libfat/*.c)
+ $(sort $(wildcard $(SRC)/../libfat/*.c))
LIBOBJS = $(patsubst %.c,%.obj,$(notdir $(LIBSRC)))
LIB = syslinux.lib