On Mon, 21 Dec 2020 at 21:40, Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > On Thu, Dec 17, 2020 at 07:25:16PM +0000, luca.boccassi@xxxxxxxxx wrote: > > From: Luca Boccassi <luca.boccassi@xxxxxxxxxxxxx> > > > > Add some minimal compat type defs, and stub out the enable/measure > > sources. Also add a way to handle the fact that mingw adds a > > .exe extension automatically in the Makefile install rules, and > > that there is not pkg-config and the libcrypto linker flag is > > different. > > > > Signed-off-by: Luca Boccassi <luca.boccassi@xxxxxxxxxxxxx> > > This commit message is outdated; can you update it? Fixed in v5. > > diff --git a/Makefile b/Makefile > > index bfe83c4..a5aa900 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -35,6 +35,11 @@ > > cc-option = $(shell if $(CC) $(1) -c -x c /dev/null -o /dev/null > /dev/null 2>&1; \ > > then echo $(1); fi) > > > > +# Support building with MinGW for minimal Windows fsverity.exe > > +ifneq ($(findstring -mingw,$(shell $(CC) -dumpmachine 2>/dev/null)),) > > +MINGW = 1 > > +endif > > + > > CFLAGS ?= -O2 > > > > override CFLAGS := -Wall -Wundef \ > > @@ -47,7 +52,7 @@ override CFLAGS := -Wall -Wundef \ > > $(call cc-option,-Wvla) \ > > $(CFLAGS) > > > > -override CPPFLAGS := -Iinclude -D_FILE_OFFSET_BITS=64 $(CPPFLAGS) > > +override CPPFLAGS := -Iinclude -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $(CPPFLAGS) > > > > ifneq ($(V),1) > > QUIET_CC = @echo ' CC ' $@; > > @@ -62,7 +67,12 @@ BINDIR ?= $(PREFIX)/bin > > INCDIR ?= $(PREFIX)/include > > LIBDIR ?= $(PREFIX)/lib > > DESTDIR ?= > > +ifneq ($(MINGW),1) > > PKGCONF ?= pkg-config > > +else > > +PKGCONF := false > > +EXEEXT := .exe > > +endif > > > > # Rebuild if a user-specified setting that affects the build changed. > > .build-config: FORCE > > @@ -87,9 +97,9 @@ CFLAGS += $(shell "$(PKGCONF)" libcrypto --cflags 2>/dev/null || echo) > > # If we are dynamically linking, when running tests we need to override > > # LD_LIBRARY_PATH as no RPATH is set > > ifdef USE_SHARED_LIB > > -RUN_FSVERITY = LD_LIBRARY_PATH=./ ./fsverity > > +RUN_FSVERITY = LD_LIBRARY_PATH=./ ./fsverity$(EXEEXT) > > else > > -RUN_FSVERITY = ./fsverity > > +RUN_FSVERITY = ./fsverity$(EXEEXT) > > endif > > > > ############################################################################## > > @@ -99,6 +109,9 @@ endif > > SOVERSION := 0 > > LIB_CFLAGS := $(CFLAGS) -fvisibility=hidden > > LIB_SRC := $(wildcard lib/*.c) > > +ifeq ($(MINGW),1) > > +LIB_SRC := $(filter-out lib/enable.c,${LIB_SRC}) > > +endif > > LIB_HEADERS := $(wildcard lib/*.h) $(COMMON_HEADERS) > > STATIC_LIB_OBJ := $(LIB_SRC:.c=.o) > > SHARED_LIB_OBJ := $(LIB_SRC:.c=.shlib.o) > > @@ -141,10 +154,13 @@ PROG_COMMON_SRC := programs/utils.c > > PROG_COMMON_OBJ := $(PROG_COMMON_SRC:.c=.o) > > FSVERITY_PROG_OBJ := $(PROG_COMMON_OBJ) \ > > programs/cmd_digest.o \ > > - programs/cmd_enable.o \ > > - programs/cmd_measure.o \ > > programs/cmd_sign.o \ > > programs/fsverity.o > > +ifneq ($(MINGW),1) > > +FSVERITY_PROG_OBJ += \ > > + programs/cmd_enable.o \ > > + programs/cmd_measure.o > > +endif > > TEST_PROG_SRC := $(wildcard programs/test_*.c) > > TEST_PROGRAMS := $(TEST_PROG_SRC:programs/%.c=%) > > > > The Makefile target to build the binary is still "fsverity", but for Windows it > actually builds "fsverity.exe". I think that when the .exe extension is added, > the name of the Makefile target should change too. Makefile targets should be > either a filename target *or* a special target, not conditionally either one. Ok, updated in v5. > > @@ -186,7 +202,7 @@ test_programs:$(TEST_PROGRAMS) > > # want to run the full tests. > > check:fsverity test_programs > > for prog in $(TEST_PROGRAMS); do \ > > - $(TEST_WRAPPER_PROG) ./$$prog || exit 1; \ > > + $(TEST_WRAPPER_PROG) ./$$prog$(EXEEXT) || exit 1; \ > > done > > The .exe extension isn't being added to the test programs when they are built. > Did you intend for building the test programs for Windows (and running them on > Windows) to be supported? Yes it probably should. Made further updates, and at least with mingw/wine make check works. Kind regards, Luca Boccassi