40 lines
1023 B
Python
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)
|
|
)
|