summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/genie.lua
diff options
context:
space:
mode:
author Cowering <cowering@users.noreply.github.com>2015-07-23 10:33:55 -0500
committer Cowering <cowering@users.noreply.github.com>2015-07-23 10:34:50 -0500
commit0eef93728779ac9968d6b1348e4db78a398fa6b0 (patch)
treecb3f0a1297b353abca92e1195de5695a694c0929 /scripts/genie.lua
parent834982ec3b2f396cf2fca1ebd0bf8ed524c116cb (diff)
This lets MAME compile in Arch Linux GCC 5.2. 16G RAM used to prevent crash. compile with 'make SSE3=1 LTO=1'
testing GCC 5.2 MSYS2 now (NW)
Diffstat (limited to 'scripts/genie.lua')
-rw-r--r--scripts/genie.lua84
1 files changed, 68 insertions, 16 deletions
diff --git a/scripts/genie.lua b/scripts/genie.lua
index cfe0efeff9e..9c37244850c 100644
--- a/scripts/genie.lua
+++ b/scripts/genie.lua
@@ -283,6 +283,15 @@ newoption {
}
newoption {
+ trigger = "SSE3",
+ description = "SSE3 optimized code and SSE3 code generation.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
trigger = "OPENMP",
description = "OpenMP optimized code.",
allowed = {
@@ -704,8 +713,12 @@ if (_OPTIONS["targetos"]=="solaris") then
}
else
buildoptions_c {
- "-std=gnu89",
-
+-- "-std=gnu99",
+ "-std=gnu89",
+-- "-Wpedantic",
+-- "-pedantic",
+-- "-Wno-variadic-macros",
+-- "-Wno-long-long",
}
end
@@ -714,12 +727,24 @@ if _OPTIONS["CPP11"]=="1" then
buildoptions_cpp {
"-x c++",
"-std=gnu++11",
+-- "-std=c++11",
+-- "-Wpedantic",
+-- "-pedantic",
+-- "-Wno-variadic-macros",
+-- "-Wno-long-long",
+
}
else
--we compile C++ code to C++98 standard with GNU extensions
buildoptions_cpp {
"-x c++",
+-- "-Wpedantic",
+-- "-pedantic",
"-std=gnu++98",
+ "-Wno-variadic-macros",
+ "-Wno-long-long",
+ "-Wno-variadic-macros",
+-- "-std=c++98",
}
end
@@ -815,18 +840,23 @@ if _OPTIONS["OPTIMIZE"] then
}
end
if _OPTIONS["LTO"]=="1" then
--- -flto=4 -> 4 threads, reduce if you are low on memory (less than 8G)
- buildoptions {
- "-flto=4",
- }
buildoptions {
- "-fno-fat-lto-objects",
- }
- linkoptions {
- "-flto=4",
+ "-flto=1",
+-- these next flags allow MAME to compile in linux GCC 5.2. odr warnings should be fixed as LTO randomly crashes otherwise
+ "-ffat-lto-objects", "-Wodr",
+ "-flto-compression-level=9", -- lto didn't work with anything less on linux with < 12G RAM
+ "-flto-odr-type-merging",
+ "-flto-report" -- if you get an error in lto after [WPA] stage, but before [LTRANS] stage, you need more memory!
+
}
+-- same flags are needed by linker
linkoptions {
- "-fno-fat-lto-objects",
+ "-flto=1",
+-- these next flags allow MAME to compile in linux GCC 5.2. odr warnings should be fixed as LTO randomly crashes otherwise
+ "-ffat-lto-objects", "-Wodr",
+ "-flto-compression-level=9", -- lto didn't work with anything less on linux with < 12G RAM
+ "-flto-odr-type-merging",
+ "-flto-report" -- if you get an error in lto after [WPA] stage printout, but before any [LTRANS] section printout, you need more memory!
}
@@ -846,6 +876,15 @@ if _OPTIONS["SSE2"]=="1" then
}
end
+if _OPTIONS["SSE3"]=="1" then
+ buildoptions {
+ "-msse",
+ "-msse2",
+ "-msse3"
+ }
+end
+
+
if _OPTIONS["OPENMP"]=="1" then
buildoptions {
"-fopenmp",
@@ -969,14 +1008,27 @@ end
}
end
if (version >= 40800) then
- -- array bounds checking seems to be buggy in 4.8.1 (try it on video/stvvdp1.c and video/model1.c without -Wno-array-bounds)
- buildoptions {
- "-Wno-array-bounds"
- }
+-- grr.. array-bounds works on GCC5.2 linux, but fails in sqllite3.c on MingW GCC 5.1.1 for now
+-- if (version < 50000) then
+-- -- array bounds checking seems to be buggy in 4.8.1 (try it on video/stvvdp1.c and video/model1.c without -Wno-array-bounds)
+ buildoptions {
+ "-Wno-array-bounds"
+ }
+-- end
end
if (version >= 50000) then
buildoptions {
- "-D__USE_MINGW_ANSI_STDIO=1",
+ "-D__USE_MINGW_ANSI_STDIO=1", -- required or lua won't compile linux ignores this but Windows needs it
+ "-freport-bug",
+ "-D_GLIBCXX_USE_CXX11_ABI=0", -- does not seem to matter in linux, mingw needs to link printf,etc
+-- "-DNO_MEM_TRACKING", -- must comment out for mingw GCC 5.2 pedantic or get new/delete redef error
+-- next two should work, but compiler complains about end conditions that are int when loop variable is unsigned. maybe these can be fixed
+-- "-funsafe-loop-optimizations",
+-- "-Wunsafe-loop-optimizations",
+-- this six flag combo lets MAME compile with LTO=1 on linux with no errors (whew!--Cowering) someone should probably pretty this up as you can't really debug with them enabled
+ "-fdevirtualize-at-ltrans","-fgcse-sm","-fgcse-las",
+ "-fipa-pta","-fipa-icf","-fvariable-expansion-in-unroller",
+
}
end