Set optimization level in the Xcode native way.
@@ -20,7 +20,7 @@ from .. import mlog
import uuid, os, operator
import typing as T
-from ..mesonlib import MesonException
+from ..mesonlib import MesonException, OptionKey
from ..interpreter import Interpreter
INDENT = '\t'
@@ -47,6 +47,14 @@ LANGNAMEMAP = {'c': 'C',
'objc': 'OBJC',
'objcpp': 'OBJCPLUSPLUS',
}
+OPT2XCODEOPT = {'0': '0',
+ 'g': '0',
+ '1': '1',
+ '2': '2',
+ '3': '3',
+ 's': 's',
+ }
+
class PbxItem:
def __init__(self, value, comment = ''):
@@ -187,7 +195,7 @@ class XCodeBackend(backends.Backend):
return str(uuid.uuid4()).upper().replace('-', '')[:24]
def get_target_dir(self, target):
- dirname = os.path.join(target.get_subdir(), self.environment.coredata.get_option(mesonlib.OptionKey('buildtype')))
+ dirname = os.path.join(target.get_subdir(), self.environment.coredata.get_option(OptionKey('buildtype')))
os.makedirs(os.path.join(self.environment.get_build_dir(), dirname), exist_ok=True)
return dirname
@@ -858,7 +866,7 @@ class XCodeBackend(backends.Backend):
settings_dict.add_item('EXECUTABLE_SUFFIX', f'"{suffix}"')
settings_dict.add_item('GCC_GENERATE_DEBUGGING_SYMBOLS', 'YES')
settings_dict.add_item('GCC_INLINES_ARE_PRIVATE_EXTERN', 'NO')
- settings_dict.add_item('GCC_OPTIMIZATION_LEVEL', 0)
+ settings_dict.add_item('GCC_OPTIMIZATION_LEVEL', OPT2XCODEOPT[self.get_option_for_target(OptionKey('optimization'), target)])
if target.has_pch:
# Xcode uses GCC_PREFIX_HEADER which only allows one file per target/executable. Precompiling various header files and
# applying a particular pch to each source file will require custom scripts (as a build phase) and build flags per each
