@@ -31,24 +31,65 @@ nodist_stage1flex_SOURCES = \
3131 $(SKELINCLUDES )
3232
3333if CROSS
34- stage1flex_LDADD =
34+
3535stage1flex_SOURCES += \
3636 lib/malloc.c \
3737 lib/realloc.c
38- stage1flex_LINK = $(LIBTOOL ) --tag=CC --mode=link $(CC_FOR_BUILD ) \
39- $(CFLAGS_FOR_BUILD ) $(LDFLAGS_FOR_BUILD ) -o $@
40-
41- $(stage1flex_OBJECTS ) : CC=$(CC_FOR_BUILD )
42- $(stage1flex_OBJECTS ) : CFLAGS=$(CFLAGS_FOR_BUILD ) -DUSE_CONFIG_FOR_BUILD
43- $(stage1flex_OBJECTS ) : CPP=$(CPP_FOR_BUILD )
44- $(stage1flex_OBJECTS ) : CPPFLAGS=$(CPPFLAGS_FOR_BUILD )
45- $(stage1flex_OBJECTS ) : LDFLAGS=$(LDFLAGS_FOR_BUILD )
38+
39+ stage1flex_CPPFLAGS = -DUSE_CONFIG_FOR_BUILD $(AM_CPPFLAGS )
40+
41+ # This also overrides AM_LIBTOOLFLAGS and AM_LDFLAGS
42+ stage1flex_LINK = $(LIBTOOL ) $(AM_V_lt ) --tag=CC $(LIBTOOLFLAGS ) \
43+ --mode=link $(CC_FOR_BUILD ) $(CFLAGS_FOR_BUILD ) \
44+ $(LDFLAGS_FOR_BUILD ) -o $@
45+
46+ stage1flex_LDADD =
47+
4648else
49+
50+ stage1flex_CPPFLAGS = $(AM_CPPFLAGS )
51+
52+ stage1flex_LINK = $(LIBTOOL ) $(AM_V_lt ) --tag=CC $(LIBTOOLFLAGS ) \
53+ --mode=link $(CCLD ) $(CFLAGS ) $(LDFLAGS ) -o $@
54+
4755stage1flex_LDADD = $(LDADD )
48- stage1flex_LINK = $(LINK )
49- stage1flex_CFLAGS = $(AM_CFLAGS )
56+
5057endif
5158
59+ # Suppress build warnings when compiling and linking stage1flex.
60+ stage1flex_CFLAGS =
61+
62+ # Override the 'stage1flex$(EXEEXT)' target automake would generate.
63+ # If the compiler is not $(CC_FOR_BUILD) when this target is invoked,
64+ # delete the object files that would be linked to 'stage1flex' to force
65+ # rebuild all of them.
66+
67+ stage1flex$(EXEEXT ) : $(stage1flex_OBJECTS ) $(stage1flex_DEPENDENCIES ) $(EXTRA_stage1flex_DEPENDENCIES )
68+ @rm -f stage1flex$(EXEEXT )
69+ @{ test ' x$(CC)' = ' x$(CC_FOR_BUILD)' && test ' x$(CPP)' = ' x$(CPP_FOR_BUILD)' ; } || { \
70+ rm -f src/stage1flex-* .$(OBJEXT ) ; \
71+ echo ' error: stage1flex must be built with a native compiler' 1>&2 ; \
72+ false ; \
73+ }
74+ $(AM_V_CCLD )$(stage1flex_LINK ) $(stage1flex_OBJECTS ) $(stage1flex_LDADD ) $(LIBS )
75+
76+ # This target is not managed by automake.
77+
78+ stage1bin/flex$(BUILD_EXEEXT ) :
79+ @if test ' x$(EXEEXT)' ! = ' x$(BUILD_EXEEXT)' ; then rm -f stage1flex$(EXEEXT ) ; else : ; fi
80+ @if test ' x$(OBJEXT)' ! = ' x$(BUILD_OBJEXT)' ; then rm -f src/stage1flex-* .$(OBJEXT ) ; else : ; fi
81+ $(MAKE ) $(AM_MAKEFLAGS ) \
82+ CC=' $(CC_FOR_BUILD)' \
83+ CPP=' $(CPP_FOR_BUILD)' \
84+ CFLAGS=' $(CFLAGS_FOR_BUILD)' \
85+ CPPFLAGS=' $(CPPFLAGS_FOR_BUILD)' \
86+ LDFLAGS=' $(LDFLAGS_FOR_BUILD)' \
87+ EXEEXT=' $(BUILD_EXEEXT)' \
88+ OBJEXT=' $(BUILD_OBJEXT)' \
89+ stage1flex$(BUILD_EXEEXT )
90+ $(MKDIR_P ) stage1bin
91+ $(INSTALL ) -m 700 stage1flex$(BUILD_EXEEXT ) $@
92+
5293flex_SOURCES = \
5394 $(COMMON_SOURCES )
5495
@@ -108,11 +149,15 @@ EXTRA_DIST += \
108149
109150MOSTLYCLEANFILES += \
110151 $(SKELINCLUDES ) \
152+ src/stage1flex-*.$(BUILD_OBJEXT ) \
111153 src/stage1scan.c \
112154 src/stage2scan.c \
113155 src/stage2compare
114156
115- CLEANFILES += stage1flex$(EXEEXT )
157+ CLEANFILES += \
158+ stage1bin/flex$(BUILD_EXEEXT ) \
159+ stage1flex$(BUILD_EXEEXT ) \
160+ stage1flex$(EXEEXT )
116161
117162SKELINCLUDES = \
118163 src/cpp-flex.h \
@@ -137,8 +182,8 @@ src/go-flex.h: src/go-flex.skl src/mkskel.sh
137182# The input and output file names are fixed for deterministic scanner
138183# generation. If scan.l is not modified by builders, stage1scan.c should
139184# be bit-identical to the scan.c pregenerated on release.
140- src/stage1scan.c : src/scan.l stage1flex $( EXEEXT )
141- ( cd $( srcdir) /src && $( abs_builddir) /stage1flex $( EXEEXT ) \
185+ src/stage1scan.c : src/scan.l stage1bin/flex $( BUILD_EXEEXT )
186+ ( cd $( srcdir) /src && $( abs_builddir) /stage1bin/flex $( BUILD_EXEEXT ) \
142187 $(AM_LFLAGS ) $(LFLAGS ) -o scan.c -t scan.l ) > $@ || \
143188 { s=$$ ? ; rm -f $@ ; exit $$ s; }
144189
0 commit comments