Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorJeff Johnston2018-01-31 23:38:29 +0000
committerJeff Johnston2018-01-31 23:49:06 +0000
commit33eeb12ae8e2f0dbf1cf244c3aae57928a5d4188 (patch)
tree6e2102fe3fc3a5e9aeb1960d52e384be41fc95e1 /build
parentf6b60ed850cee3589d8373ebe666447a3d2660e4 (diff)
downloadorg.eclipse.cdt-33eeb12ae8e2f0dbf1cf244c3aae57928a5d4188.tar.gz
org.eclipse.cdt-33eeb12ae8e2f0dbf1cf244c3aae57928a5d4188.tar.xz
org.eclipse.cdt-33eeb12ae8e2f0dbf1cf244c3aae57928a5d4188.zip
Bug 530000 - Add Meson Build support
- rewrite unconfigure Meson Property page logic to parse the output of meson --help and form the controls accordingly - do not add an entry for help option - add environment variable text entry to unconfigured property page to allow the user to add things such as CFLAGS=xxxxx - fix MesonBuildConfiguration to only use the MESON_ENV property when running meson for the first time and to prepend the current environment first to ensure local path, etc.. is still set, otherwise it won't be able to find commands it needs such as execvp - parse the environment text string to look for entries that use single or double quotes so that entries may use the = sign or spaces - when building, have ninja use the -v option so that the compile and link commands are output to the console Change-Id: I40d04234a7de74417c43f4c39bb2e21c86deb8a2
Diffstat (limited to 'build')
-rw-r--r--build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java60
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java10
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java262
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/Messages.java4
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/messages.properties4
5 files changed, 211 insertions, 129 deletions
diff --git a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java
index 22c4518841c..5be0271507d 100644
--- a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java
+++ b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java
@@ -17,6 +17,8 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.eclipse.cdt.core.CommandLauncherManager;
import org.eclipse.cdt.core.ConsoleOutputStream;
@@ -139,11 +141,17 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
argsList.add(getBuildDirectory().toString());
+ Map<String, String> envMap = System.getenv();
+ List<String> envList = new ArrayList<>();
+ for (Map.Entry<String, String> entry : envMap.entrySet()) {
+ envList.add(entry.getKey() + "=" + entry.getValue());
+ }
String envStr = getProperty(IMesonConstants.MESON_ENV);
- String[] env = new String[0];
if (envStr != null) {
- env = envStr.split(IMesonConstants.MESON_ENV_SEPARATOR); //$NON-NLS-1$
+ envList.addAll(stripEnvVars(envStr));
}
+ String[] env = envList.toArray(new String[0]);
+
ICommandLauncher launcher = CommandLauncherManager.getInstance().getCommandLauncher(this);
launcher.setProject(getProject());
@@ -176,12 +184,8 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
buildCommand = "ninja";
}
-
- String envStr = getProperty(IMesonConstants.MESON_ENV);
String[] env = new String[0];
- if (envStr != null) {
- env = envStr.split(envStr);
- }
+
ICommandLauncher launcher = CommandLauncherManager.getInstance().getCommandLauncher(this);
launcher.setProject(getProject());
@@ -195,7 +199,7 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
outStream.write(String.join(" ", ninjaPath.toString() + '\n')); //$NON-NLS-1$
org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(getBuildDirectory().toString());
- launcher.execute(ninjaPath, new String[0], env, workingDir, monitor);
+ launcher.execute(ninjaPath, new String[] {"-v"}, env, workingDir, monitor); //$NON-NLS-1$
if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(), SubMonitor.convert(monitor)) != ICommandLauncher.OK) {
String errMsg = launcher.getErrorMessage();
console.getErrorStream().write(String.format(Messages.MesonBuildConfiguration_RunningNinjaFailure, errMsg));
@@ -295,5 +299,45 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
}
}
}
+
+ /**
+ * Strip a command of VAR=VALUE pairs that appear ahead or behind the command and add
+ * them to a list of environment variables.
+ *
+ * @param command - command to strip
+ * @param envVars - ArrayList to add environment variables to
+ * @return stripped command
+ */
+ public static List<String> stripEnvVars(String envString) {
+ Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\").*"); //$NON-NLS-1$
+ Pattern p2 = Pattern.compile("(\\w+[=]'.*?').*"); //$NON-NLS-1$
+ Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+).*"); //$NON-NLS-1$
+ boolean finished = false;
+ List<String> envVars = new ArrayList<>();
+ while (!finished) {
+ Matcher m1 = p1.matcher(envString);
+ if (m1.matches()) {
+ envString = envString.replaceFirst("\\w+[=]\\\".*?\\\"","").trim(); //$NON-NLS-1$ //$NON-NLS-2$
+ String s = m1.group(1).trim();
+ envVars.add(s.replaceAll("\\\"", "")); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ Matcher m2 = p2.matcher(envString);
+ if (m2.matches()) {
+ envString = envString.replaceFirst("\\w+[=]'.*?'", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$
+ String s = m2.group(1).trim();
+ envVars.add(s.replaceAll("'", "")); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ Matcher m3 = p3.matcher(envString);
+ if (m3.matches()) {
+ envString = envString.replaceFirst("\\w+[=][^\\s]+", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$
+ envVars.add(m3.group(1).trim());
+ } else {
+ finished = true;
+ }
+ }
+ }
+ }
+ return envVars;
+ }
}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java
index 31d45e07318..8809d4010ce 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java
@@ -14,6 +14,7 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
public class MesonPropertyCheckbox implements IMesonPropertyPageControl {
@@ -26,11 +27,18 @@ public class MesonPropertyCheckbox implements IMesonPropertyPageControl {
this.initialValue = initialValue;
checkbox = new Button(composite, SWT.CHECK);
GridData data = new GridData(GridData.FILL, GridData.FILL, true, false);
- data.horizontalSpan = 2;
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalSpan = 1;
checkbox.setText(name);
checkbox.setLayoutData(data);
checkbox.setSelection(initialValue);
checkbox.setToolTipText(tooltip);
+ GridData data2 = new GridData(GridData.FILL, GridData.FILL, true, false);
+ data2.grabExcessHorizontalSpace = true;
+ data2.horizontalSpan = 1;
+ Label label = new Label(composite, SWT.NONE);
+ label.setText(tooltip);
+ label.setLayoutData(data2);
}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java
index 518fa6362bf..5a40ec6d229 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java
@@ -45,11 +45,14 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PropertyPage;
/**
- * Property page for CMake projects. The only thing we have here at the moment is a button
- * to launch the CMake GUI configurator (cmake-qt-gui).
+ * Property page for Meson projects. For unconfigured projects, we use the meson command and parse
+ * the output of the --help option. Otherwise, we use the meson configure command to find current
+ * options and what may be changed via a meson configure call.
*
* We assume that the build directory is in project/build/configname, which is where
* the CMake project wizard puts it. We also assume that "cmake-gui" is in the user's
@@ -61,6 +64,7 @@ public class MesonPropertyPage extends PropertyPage {
private List<IMesonPropertyPageControl> componentList = new ArrayList<>();
private boolean configured;
private CBuildConfiguration buildConfig;
+ private Text envText;
@Override
protected Control createContents(Composite parent) {
@@ -97,25 +101,73 @@ public class MesonPropertyPage extends PropertyPage {
}
} else {
- Map<String, String> argMap = new HashMap<>();
- String mesonArgs = buildConfig.getProperty(IMesonConstants.MESON_ARGUMENTS);
- if (mesonArgs != null) {
- String[] argStrings = mesonArgs.split("\\s+");
- for (String argString : argStrings) {
- String[] s = argString.split("=");
- if (s.length == 2) {
- argMap.put(s[0], s[1]);
- } else {
- argMap.put(argString, "true");
- }
+ ICommandLauncher launcher = CommandLauncherManager.getInstance().getCommandLauncher(project.getActiveBuildConfig().getAdapter(ICBuildConfiguration.class));
+ Process p = launcher.execute(new Path("meson"), new String[] { "-h"}, new String[0], sourceDir, new NullProgressMonitor());
+ ByteArrayOutputStream stdout = new ByteArrayOutputStream();
+ ByteArrayOutputStream stderr = new ByteArrayOutputStream();
+ int rc = -1;
+ try {
+ if (launcher.waitAndRead(stdout, stderr, new NullProgressMonitor()) == ICommandLauncher.OK) {
+ p.waitFor();
}
+ rc = p.exitValue();
+ } catch (InterruptedException e) {
+ // ignore for now
}
-
- String defaultBuildType = "release";
- if (configName.contains("debug")) { //$NON-NLS-1$
- defaultBuildType = "debug"; //$NON-NLS-1$
+ if (rc == 0) {
+ Map<String, String> argMap = new HashMap<>();
+ String mesonArgs = buildConfig.getProperty(IMesonConstants.MESON_ARGUMENTS);
+ if (mesonArgs != null) {
+ String[] argStrings = mesonArgs.split("\\s+");
+ for (String argString : argStrings) {
+ String[] s = argString.split("=");
+ if (s.length == 2) {
+ argMap.put(s[0], s[1]);
+ } else {
+ argMap.put(argString, "true");
+ }
+ }
+ }
+
+ Group group = new Group(composite, SWT.BORDER);
+ GridLayout layout = new GridLayout(2, true);
+ layout.marginLeft = 10;
+ layout.marginRight = 10;
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_BOTH));
+ group.setText("Environment");
+
+ Label envLabel = new Label(group, SWT.NONE);
+ envLabel.setText(Messages.MesonPropertyPage_env_label);
+ GridData data = new GridData(GridData.FILL, GridData.FILL, true, false);
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalSpan = 1;
+ envLabel.setLayoutData(data);
+
+
+ String mesonEnv = buildConfig.getProperty(IMesonConstants.MESON_ENV);
+
+ envText = new Text(group, SWT.BORDER);
+ if (mesonEnv != null) {
+ envText.setText(mesonEnv);
+ }
+ envText.setToolTipText(Messages.MesonPropertyPage_env_tooltip);
+ data = new GridData(GridData.FILL, GridData.FILL, true, false);
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalSpan = 1;
+ envText.setLayoutData(data);
+
+ // default buildtype based on active build configuration
+ // user can always override and we will use override from then on
+ String defaultBuildType = "release"; //$NON-NLS-1$
+ if (configName.contains("debug")) { //$NON-NLS-1$
+ defaultBuildType = "debug"; //$NON-NLS-1$
+ }
+ if (argMap.get("buildtype") == null) { //$NON-NLS-1$
+ argMap.put("buildtype", defaultBuildType); //$NON-NLS-1$
+ }
+ componentList = parseHelpOutput(stdout, composite, argMap, defaultBuildType);
}
- componentList = defaultOptions(composite, argMap, defaultBuildType);
}
} catch (CoreException e2) {
// TODO Auto-generated catch block
@@ -201,14 +253,85 @@ public class MesonPropertyPage extends PropertyPage {
} else {
StringBuilder mesonargs = new StringBuilder();
for (IMesonPropertyPageControl control : componentList) {
- System.out.println(control.getUnconfiguredString());
mesonargs.append(control.getUnconfiguredString());
mesonargs.append(" "); //$NON-NLS-1$
}
buildConfig.setProperty(IMesonConstants.MESON_ARGUMENTS, mesonargs.toString());
+ buildConfig.setProperty(IMesonConstants.MESON_ENV, envText.getText().trim());
}
return true;
}
+ /**
+ * Parse output of meson help call to determine options to show to user
+ * @param stdout - ByteArrayOutputStream containing output of command
+ * @param composite - Composite to add Controls to
+ * @return - list of Controls
+ */
+ List<IMesonPropertyPageControl> parseHelpOutput(ByteArrayOutputStream stdout, Composite composite, Map<String, String> argMap, String defaultBuildType) {
+ List<IMesonPropertyPageControl> controls = new ArrayList<>();
+
+ Group group = new Group(composite, SWT.BORDER);
+ GridLayout layout = new GridLayout(2, true);
+ layout.marginLeft = 10;
+ layout.marginRight = 10;
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_BOTH));
+ group.setText(Messages.MesonPropertyPage_options_group);
+
+ try {
+ String output = stdout.toString(StandardCharsets.UTF_8.name()).replaceAll("\\r?\\n\\s+", " "); //$NON-NLS-1$ //$NON-NLS-2$
+ String[] lines = output.split("--"); //$NON-NLS-1$
+ Pattern optionPattern = Pattern.compile("(([a-z-]+)\\s+(([A-Z_][A-Z_]+))?\\s*(\\{.*?\\})?([^\\[\\]]*))");
+ Pattern descPattern1 = Pattern.compile("([^\\.]+).*");
+ Pattern descPattern = Pattern.compile("([^\\(]*)(\\(default\\:\\s+([^\\)]+)\\).*)");
+ for (String line : lines) {
+// System.out.println(line);
+ Matcher optionMatcher = optionPattern.matcher(line);
+ if (optionMatcher.matches() && !optionMatcher.group(2).equals("help")) {
+// System.out.println("group 1 is " + (optionMatcher.group(1) != null ? optionMatcher.group(1).trim() : null));
+// System.out.println("group 2 is " + (optionMatcher.group(2) != null ? optionMatcher.group(2).trim() : null));
+// System.out.println("group 3 is " + (optionMatcher.group(3) != null ? optionMatcher.group(3).trim() : null));
+// System.out.println("group 4 is " + (optionMatcher.group(4) != null ? optionMatcher.group(4).trim() : null));
+// System.out.println("group 5 is " + (optionMatcher.group(5) != null ? optionMatcher.group(5).trim() : null));
+// System.out.println("group 6 is " + (optionMatcher.group(6) != null ? optionMatcher.group(6).trim() : null));
+ if (optionMatcher.group(3) != null) {
+ String defaultValue = argMap.get(optionMatcher.group(2));
+ String description = optionMatcher.group(6);
+ Matcher m = descPattern1.matcher(optionMatcher.group(6));
+ if (m.matches()) {
+ description = m.group(1).trim();
+ }
+ IMesonPropertyPageControl control = new MesonPropertyText(group, optionMatcher.group(2), defaultValue, description);
+ controls.add(control);
+ } else if (optionMatcher.group(5) != null) {
+ String defaultValue = argMap.get(optionMatcher.group(2));
+ Matcher m = descPattern.matcher(optionMatcher.group(6));
+ if (m.matches()) {
+ String valueString = optionMatcher.group(5).replaceAll("\\{", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ valueString = valueString.replaceAll("\\}", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ String[] values = valueString.split(","); //$NON-NLS-1$
+ if (defaultValue == null) {
+ defaultValue = m.group(3).trim();
+ }
+ IMesonPropertyPageControl control = new MesonPropertyCombo(group, optionMatcher.group(2), values, defaultValue, m.group(1).trim());
+ controls.add(control);
+ }
+ } else {
+ boolean defaultValue = false;
+ if (argMap.containsKey(optionMatcher.group(2))) {
+ defaultValue = Boolean.getBoolean(argMap.get(optionMatcher.group(2)));
+ }
+ IMesonPropertyPageControl control = new MesonPropertySpecialCheckbox(group, optionMatcher.group(2), defaultValue, optionMatcher.group(6));
+ controls.add(control);
+ }
+ }
+
+ }
+ } catch (UnsupportedEncodingException e) {
+ return controls;
+ }
+ return controls;
+ }
/**
* Parse output of meson configure call to determine options to show to user
@@ -355,105 +478,4 @@ public class MesonPropertyPage extends PropertyPage {
return controls;
}
- /**
- * Create list of options for initial meson call
- * @param stdout - ByteArrayOutputStream containing output of command
- * @param composite - Composite to add Controls to
- * @return - list of Controls
- */
- List<IMesonPropertyPageControl> defaultOptions(Composite composite, Map<String, String> argMap, String defaultBuildType) {
- List<IMesonPropertyPageControl> controls = new ArrayList<>();
-
- Group group = new Group(composite, SWT.BORDER);
- group.setLayout(new GridLayout(2, true));
- group.setLayoutData(new GridData(GridData.FILL_BOTH));
- group.setText("Options");
-
- IMesonPropertyPageControl prefix = new MesonPropertyText(group, "prefix", argMap.get("--prefix"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_prefix_tooltip);
- controls.add(prefix);
- IMesonPropertyPageControl libdir = new MesonPropertyText(group, "libdir", argMap.get("--libdir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_libdir_tooltip);
- controls.add(libdir);
- IMesonPropertyPageControl libexecdir = new MesonPropertyText(group, "libexecdir", argMap.get("--libexecdir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_libexecdir_tooltip);
- controls.add(libexecdir);
- IMesonPropertyPageControl bindir = new MesonPropertyText(group, "bindir", argMap.get("--bindir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_bindir_tooltip);
- controls.add(bindir);
- IMesonPropertyPageControl sbindir = new MesonPropertyText(group, "sbindir", argMap.get("--sbindir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_sbindir_tooltip);
- controls.add(sbindir);
- IMesonPropertyPageControl includedir = new MesonPropertyText(group, "includedir", argMap.get("--includedir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_includedir_tooltip);
- controls.add(includedir);
- IMesonPropertyPageControl datadir = new MesonPropertyText(group, "datadir", argMap.get("--datadir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_datadir_tooltip);
- controls.add(datadir);
- IMesonPropertyPageControl mandir = new MesonPropertyText(group, "mandir", argMap.get("--mandir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_mandir_tooltip);
- controls.add(mandir);
- IMesonPropertyPageControl infodir = new MesonPropertyText(group, "infodir", argMap.get("--infodir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_infodir_tooltip);
- controls.add(infodir);
- IMesonPropertyPageControl localedir = new MesonPropertyText(group, "localedir", argMap.get("--localedir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_localedir_tooltip);
- controls.add(localedir);
- IMesonPropertyPageControl sysconfdir = new MesonPropertyText(group, "sysconfdir", argMap.get("--sysconfdir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_sysconfdir_tooltip);
- controls.add(sysconfdir);
- IMesonPropertyPageControl localstatedir = new MesonPropertyText(group, "localstatedir", argMap.get("--localstatedir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_localstatedir_tooltip);
- controls.add(localstatedir);
- IMesonPropertyPageControl sharedstatedir = new MesonPropertyText(group, "sharedstatedir", argMap.get("--sharedstatedir"), //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_sharedstatedir_tooltip);
- controls.add(sharedstatedir);
- IMesonPropertyPageControl buildtype = new MesonPropertyCombo(group, "buildtype", //$NON-NLS-1$
- new String[] {"plain", "debug", "debugoptimized", "release", "minsize"}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- argMap.get("--buildtype") != null ? argMap.get("--buildtype") : defaultBuildType, //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_buildtype_tooltip);
- controls.add(buildtype);
- IMesonPropertyPageControl strip = new MesonPropertySpecialCheckbox(group, "strip", argMap.get("--strip") != null, //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_strip_tooltip);
- controls.add(strip);
- IMesonPropertyPageControl unity = new MesonPropertyCombo(group, "unity", //$NON-NLS-1$
- new String[] {"on", "off", "subprojects"}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- argMap.get("--unity") != null ? argMap.get("--unity") : "off", //$NON-NLS-1$ //$NON-NLS-2$
- Messages.MesonPropertyPage_unity_tooltip);
- controls.add(unity);
- IMesonPropertyPageControl werror = new MesonPropertySpecialCheckbox(group, "werror", //$NON-NLS-1$
- argMap.get("--werror") != null, Messages.MesonPropertyPage_werror_tooltip); //$NON-NLS-1$
- controls.add(werror);
- IMesonPropertyPageControl layout = new MesonPropertyCombo(group, "layout", //$NON-NLS-1$
- new String[] {"mirror", "flat"}, //$NON-NLS-1$ //$NON-NLS-2$
- argMap.get("--mirror") != null ? argMap.get("--mirror") : "mirror", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- Messages.MesonPropertyPage_layout_tooltip);
- controls.add(layout);
- IMesonPropertyPageControl default_library = new MesonPropertyCombo(group, "default-library", //$NON-NLS-1$
- new String[] {"shared", "static"}, //$NON-NLS-1$ //$NON-NLS-2$
- argMap.get("--default-library") != null ? argMap.get("--default-library") : "shared", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- Messages.MesonPropertyPage_default_library_tooltip);
- controls.add(default_library);
- IMesonPropertyPageControl warnlevel = new MesonPropertyCombo(group, "warnlevel", //$NON-NLS-1$
- new String[] {"1","2","3"}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- argMap.get("--warnlevel") != null ? argMap.get("--warnlevel") : "1", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- Messages.MesonPropertyPage_warnlevel_tooltip);
- controls.add(warnlevel);
- IMesonPropertyPageControl stdsplit = new MesonPropertySpecialCheckbox(group, "stdsplit", //$NON-NLS-1$
- argMap.get("--stdsplit") != null, Messages.MesonPropertyPage_stdsplit_tooltip); //$NON-NLS-1$
- controls.add(stdsplit);
- IMesonPropertyPageControl errorlogs = new MesonPropertySpecialCheckbox(group, "errorlogs", //$NON-NLS-1$
- argMap.get("--errorlogs") != null, Messages.MesonPropertyPage_errorlogs_tooltip); //$NON-NLS-1$
- controls.add(errorlogs);
- IMesonPropertyPageControl cross_file = new MesonPropertyText(group, "cross-file", //$NON-NLS-1$
- argMap.get("--cross-file"), Messages.MesonPropertyPage_cross_file_tooltip); //$NON-NLS-1$
- controls.add(cross_file);
- IMesonPropertyPageControl wrap_mode = new MesonPropertyCombo(group, "wrap-mode", //$NON-NLS-1$
- new String[] {"default", "nofallback", "nodownload"}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- argMap.get("--wrap-mode") != null ? argMap.get("--wrap-mode") : "default", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- Messages.MesonPropertyPage_wrap_mode_tooltip);
- controls.add(wrap_mode);
-
- return controls;
- }
} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/Messages.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/Messages.java
index 7e3ec684443..aef4f6a5f60 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/Messages.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/Messages.java
@@ -23,6 +23,10 @@ public class Messages extends NLS {
public static String MesonPropertyPage_configure_failed;
public static String MesonPropertyPage_terminated_rc;
+ public static String MesonPropertyPage_options_group;
+ public static String MesonPropertyPage_env_tooltip;
+ public static String MesonPropertyPage_env_label;
+
public static String MesonPropertyPage_prefix_tooltip;
public static String MesonPropertyPage_libdir_tooltip;
public static String MesonPropertyPage_libexecdir_tooltip;
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/messages.properties b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/messages.properties
index 55734e34786..7ba5cc72633 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/messages.properties
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/messages.properties
@@ -17,6 +17,10 @@ MesonPropertyPage_meson_error=Meson configurator encountered an error:
MesonPropertyPage_configure_failed=Meson configure command failed (see console output)
MesonPropertyPage_terminated_rc=Command terminated with rc={0}\n
+MesonPropertyPage_options_group=Options
+MesonPropertyPage_env_tooltip=Environment variables for initial meson call
+MesonPropertyPage_env_label=Environment
+
MesonPropertyPage_prefix_tooltip=Installation prefix
MesonPropertyPage_libdir_tooltip=Library directory
MesonPropertyPage_libexecdir_tooltip=Library executable directory

Back to the top