@@ -140,6 +140,12 @@ USE_LARGE_FILES *= define
140
140
# MinGW or mingw-w64 with gcc-3.2 or later
141
141
CCTYPE *= GCC
142
142
143
+ #
144
+ # If you are using GCC, 4.3 or later by default we add the -fwrapv option.
145
+ # See https://rt.perl.org/Ticket/Display.html?id=121505
146
+ #
147
+ # GCCWRAPV *= define
148
+
143
149
#
144
150
# If you are using Intel C++ Compiler uncomment this
145
151
#
@@ -408,6 +414,8 @@ INST_HTML = $(INST_TOP)$(INST_VER)\html
408
414
409
415
.USESHELL :
410
416
417
+ MINIBUILDOPT *=
418
+
411
419
.IF "$(CCTYPE)" == "GCC"
412
420
413
421
.IF "$(GCCCROSS)" == "define"
@@ -420,6 +428,13 @@ LIB32 = $(ARCHPREFIX)ar rc
420
428
IMPLIB = $(ARCHPREFIX ) dlltool
421
429
RSC = $(ARCHPREFIX ) windres
422
430
431
+ GCCWRAPV *= $(shell for /f "delims=. tokens=1,2,3" %i in ('$(CC) -dumpversion') do @if "%i"=="4" (if "%j" geq "3" echo define) else if "%i" geq "5" (echo define))
432
+
433
+ .IF "$(GCCWRAPV)" == "define"
434
+ BUILDOPT += -fwrapv
435
+ MINIBUILDOPT += -fwrapv
436
+ .ENDIF
437
+
423
438
i = .i
424
439
o = .o
425
440
a = .a
@@ -1139,10 +1154,10 @@ $(MINIDIR) :
1139
1154
if not exist " $( MINIDIR) " mkdir " $( MINIDIR) "
1140
1155
1141
1156
$(MINICORE_OBJ ) : $(CORE_NOCFG_H )
1142
- $(CC ) -c $(CFLAGS ) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG ) $@ ..\$ (* B).c
1157
+ $(CC ) -c $(CFLAGS ) $( MINIBUILDOPT ) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG ) $@ ..\$ (* B).c
1143
1158
1144
1159
$(MINIWIN32_OBJ ) : $(CORE_NOCFG_H )
1145
- $(CC ) -c $(CFLAGS ) -DPERL_IS_MINIPERL $(OBJOUT_FLAG ) $@ $(*B ) .c
1160
+ $(CC ) -c $(CFLAGS ) $( MINIBUILDOPT ) -DPERL_IS_MINIPERL $(OBJOUT_FLAG ) $@ $(*B ) .c
1146
1161
1147
1162
# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
1148
1163
# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
0 commit comments