# "Embedded x86" (EL/IX) toolchain.

set tc1 [snToolChain EmbeddedX86Target]
${tc1} SetLongName "GNUPro (Embedded x86 linux)"
${tc1} SetIsEmbedded 1
${tc1} SetDebuggerName i686-elix-linux-gnu-gdb
${tc1} SetShortName x86
${tc1} AddRule CC .c.o i686-elix-linux-gnu-gcc "-c $<"
${tc1} AddRuleInfo CC "C" "Compile a C file"

#DEBUG FLAGS
${tc1} AddRuleFlagSet CC Debug "" DBG_DEFAULT
${tc1} AddRuleFlagSet CC Debug "" DBG_NONE
${tc1} AddRuleFlagSet CC Debug "-g" DBG_STD
#$tc1 AddRuleFlagSet CC Debug "-Z7" DBG_OLD

#OPRIMIZATION FLAGS
${tc1} AddRuleFlagSet CC Optimize "" OPT_DEFAULT
${tc1} AddRuleFlagSet CC Optimize "-O0" OPT_NONE
${tc1} AddRuleFlagSet CC Optimize "-Os" OPT_SIZE
${tc1} AddRuleFlagSet CC Optimize "-O1" OPT_L1
${tc1} AddRuleFlagSet CC Optimize "-O2" OPT_L2
${tc1} AddRuleFlagSet CC Optimize "-O3" OPT_L3

#CODE GENERATION FLAGS
${tc1} AddRuleFlagSet CC CodeGen "" CG_DEFAULT
${tc1} AddRuleFlagSet CC CodeGen "-fpic" CG_PIC
${tc1} AddRuleFlagSet CC CodeGen "-fshared-data" CG_SHAREDATA
${tc1} AddRuleFlagSet CC CodeGen "-fshort-enums" CG_SHORTENUMS
#WARNING FLAGS
${tc1} AddRuleFlagSet CC Warning "" WN_DEFAULT
${tc1} AddRuleFlagSet CC Warning "-w" WN_NONE
${tc1} AddRuleFlagSet CC Warning "-pedantic" WN_ANSI
${tc1} AddRuleFlagSet CC Warning "-W" WN_STD
${tc1} AddRuleFlagSet CC Warning "-Wall" WN_ALL
${tc1} AddRuleFlagSet CC Warning "-Werror" WN_ERR

${tc1} SetDefinesSpecProc CC GNUProcessDefines
${tc1} SetIncludeSpecProc CC GNUProcessIncludePaths

${tc1} AddRule CPP .cpp.o "i686-elix-linux-gnu-g++" "-c $<"
${tc1} AddRuleInfo CPP "C++" "Compile a C++ file"
${tc1} AddRuleSuffix CPP .C.o
${tc1} AddRuleSuffix CPP .cc.o
${tc1} AddRuleSuffix CPP .cxx.o

#DEBUG FLAGS
${tc1} AddRuleFlagSet CPP Debug "" DBG_DEFAULT
${tc1} AddRuleFlagSet CPP Debug "-g" DBG_STD
#$tc1 AddRuleFlagSet CPP Debug "-g2" DBG_OLD

#OPRIMIZATION FLAGS
${tc1} AddRuleFlagSet CPP Optimize "" OPT_DEFAULT
${tc1} AddRuleFlagSet CPP Optimize "-O0" OPT_NONE
${tc1} AddRuleFlagSet CPP Optimize "-Os" OPT_SIZE
${tc1} AddRuleFlagSet CPP Optimize "-O1" OPT_L1
${tc1} AddRuleFlagSet CPP Optimize "-O2" OPT_L2
${tc1} AddRuleFlagSet CPP Optimize "-O3" OPT_L3

#CODE GENERATION FLAGS
${tc1} AddRuleFlagSet CPP CodeGen "" CG_DEFAULT
${tc1} AddRuleFlagSet CPP CodeGen "-fnonnull-objects" CG_NONULL
${tc1} AddRuleFlagSet CPP CodeGen "-fpic" CG_PIC
${tc1} AddRuleFlagSet CPP CodeGen "-finline-functions" CG_INLINE

#WARNING FLAGS
${tc1} AddRuleFlagSet CPP Warning "" WN_DEFAULT
${tc1} AddRuleFlagSet CPP Warning "-w" WN_NONE
${tc1} AddRuleFlagSet CPP Warning "-pedantic" WN_ANSI
${tc1} AddRuleFlagSet CPP Warning "-W" WN_STD
${tc1} AddRuleFlagSet CPP Warning "-Wall" WN_ALL
${tc1} AddRuleFlagSet CPP Warning "-Werror" WN_ERR

${tc1} SetDefinesSpecProc CPP GNUProcessDefines
${tc1} SetIncludeSpecProc CPP GNUProcessIncludePaths

${tc1} AddExeLinkerTool i686-elix-linux-gnu-gcc
${tc1} AddExeLinkerRule "-o"

${tc1} AddLibLinkerTool i686-elix-linux-gnu-ar
${tc1} AddLibLinkerRule "-r"

${tc1} AddRule JAVA .java.o "i686-elix-linux-gnu-gcj" "-c $<"
${tc1} AddRuleInfo JAVA "Java" "Compile a Java file"

${tc1} AddExeLinkerEntryPointFlag JAVA "--main="
${tc1} AddRuleSuffix JAVA .class

${tc1} SetDefinesSpecProc JAVA GNUProcessDefines
${tc1} SetIncludeSpecProc JAVA GNUProcessIncludePaths

#DEBUG FLAGS
${tc1} AddRuleFlagSet JAVA Debug "" DBG_DEFAULT
${tc1} AddRuleFlagSet JAVA Debug "-g" DBG_STD


#OPRIMIZATION FLAGS
${tc1} AddRuleFlagSet JAVA Optimize "" OPT_DEFAULT
${tc1} AddRuleFlagSet JAVA Optimize "-O0" OPT_NONE
${tc1} AddRuleFlagSet JAVA Optimize "-Os" OPT_SIZE
${tc1} AddRuleFlagSet JAVA Optimize "-O1" OPT_L1
${tc1} AddRuleFlagSet JAVA Optimize "-O2" OPT_L2
${tc1} AddRuleFlagSet JAVA Optimize "-O3" OPT_L3

#CODE GENERATION FLAGS
${tc1} AddRuleFlagSet JAVA CodeGen "" CG_DEFAULT
${tc1} AddRuleFlagSet JAVA CodeGen "-fnonnull-objects" CG_NONULL
${tc1} AddRuleFlagSet JAVA CodeGen "-fpic" CG_PIC
${tc1} AddRuleFlagSet JAVA CodeGen "-finline-functions" CG_INLINE
${tc1} AddRuleFlagSet JAVA CodeGen "-fno-bounds-check" CG_NOBOUND

#WARNING FLAGS
${tc1} AddRuleFlagSet JAVA Warning "" WN_DEFAULT
${tc1} AddRuleFlagSet JAVA Warning "-w" WN_NONE
${tc1} AddRuleFlagSet JAVA Warning "-pedantic" WN_ANSI
${tc1} AddRuleFlagSet JAVA Warning "-W" WN_STD
${tc1} AddRuleFlagSet JAVA Warning "-Wall" WN_ALL
${tc1} AddRuleFlagSet JAVA Warning "-Werror" WN_ERR
${tc1} AddRuleFlagSet JAVA Warning "-Wredundant-modifiers\
  -Wunsupported-jdk11" WN_STRICT_JAVA
