Files
chinook/chinook/compiler/_options.py
T

40 lines
1023 B
Python

from dataclasses import dataclass
from dataclasses import field
from pathlib import Path
from typing import Self
from ..models import Optimization
from ..models import StdC
from ..models import StdCpp
@dataclass
class CompilerOptions:
pic: bool = False
debug: bool = False
stdc: StdC = StdC.C11
stdcpp: StdCpp = StdCpp.C14
optlevel: Optimization = Optimization.NONE
incdirs: list[Path] = field(default_factory=list)
libdirs: list[Path] = field(default_factory=list)
objfiles: list[Path] = field(default_factory=list)
archives: list[str] = field(default_factory=list)
defines: list[str] = field(default_factory=list)
flags: list[str] = field(default_factory=list)
def __deepcopy__(self, memo) -> Self:
return CompilerOptions(
self.pic,
self.debug,
self.stdc,
self.stdcpp,
self.optlevel,
list(self.incdirs),
list(self.libdirs),
list(self.objfiles),
list(self.archives),
list(self.defines),
list(self.flags)
)