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