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()); - String envStr = getProperty(IMesonConstants.MESON_ENV); - String[] env = new String[0]; - if (envStr != null) { - env = envStr.split(IMesonConstants.MESON_ENV_SEPARATOR); //$NON-NLS-1$ + Map envMap = System.getenv(); + List envList = new ArrayList<>(); + for (Map.Entry entry : envMap.entrySet()) { + envList.add(entry.getKey() + "=" + entry.getValue()); } + String envStr = getProperty(IMesonConstants.MESON_ENV); + if (envStr != null) { + 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 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 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 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 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 + } + if (rc == 0) { + Map 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); } - - String defaultBuildType = "release"; - if (configName.contains("debug")) { //$NON-NLS-1$ - defaultBuildType = "debug"; //$NON-NLS-1$ - } - 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 parseHelpOutput(ByteArrayOutputStream stdout, Composite composite, Map argMap, String defaultBuildType) { + List 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 defaultOptions(Composite composite, Map argMap, String defaultBuildType) { - List 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