Files
chinook/chinook/compiler/_options.py
T
2026-06-25 02:45:43 +00:00

40 lines
1005 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: set[Path] = field(default_factory=set)
libdirs: set[Path] = field(default_factory=set)
objfiles: set[Path] = field(default_factory=set)
archives: set[str] = field(default_factory=set)
defines: set[str] = field(default_factory=set)
flags: set[str] = field(default_factory=set)
def __deepcopy__(self, memo) -> Self:
return CompilerOptions(
self.pic,
self.debug,
self.stdc,
self.stdcpp,
self.optlevel,
set(self.incdirs),
set(self.libdirs),
set(self.objfiles),
set(self.archives),
set(self.defines),
set(self.flags)
)