Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUMakefileUtil.java')
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUMakefileUtil.java233
1 files changed, 233 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUMakefileUtil.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUMakefileUtil.java
new file mode 100644
index 00000000000..0f1383b61a9
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUMakefileUtil.java
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006, 2007 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ * Red Hat Inc. - modified for Automake editor usage
+ *******************************************************************************/
+package org.eclipse.cdt.internal.autotools.ui.editors.automake;
+
+
+/**
+ * GNUMakefile
+ */
+public class GNUMakefileUtil extends PosixMakefileUtil {
+
+ public static boolean isInclude(String line) {
+ line = line.trim();
+ boolean isInclude = line.startsWith(GNUMakefileConstants.DIRECTIVE_INCLUDE) && line.length() > 7 && Character.isWhitespace(line.charAt(7));
+ boolean isDashInclude = line.startsWith("-" + GNUMakefileConstants.DIRECTIVE_INCLUDE) && line.length() > 8 && Character.isWhitespace(line.charAt(8)); //$NON-NLS-1$
+ boolean isSInclude = line.startsWith("s" + GNUMakefileConstants.DIRECTIVE_INCLUDE) && line.length() > 8 && Character.isWhitespace(line.charAt(8)); //$NON-NLS-1$
+ return isInclude || isDashInclude || isSInclude;
+ }
+
+ public static boolean isVPath(String line) {
+ line = line.trim();
+ return line.equals(GNUMakefileConstants.DIRECTIVE_VPATH) || line.startsWith(GNUMakefileConstants.DIRECTIVE_VPATH) && line.length() > 5 && Character.isWhitespace(line.charAt(5));
+ }
+
+ public static boolean isExport(String line) {
+ line = line.trim();
+ return line.equals(GNUMakefileConstants.VARIABLE_EXPORT) || line.startsWith(GNUMakefileConstants.VARIABLE_EXPORT) && line.length() > 6 && Character.isWhitespace(line.charAt(6));
+ }
+
+ public static boolean isUnExport(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.DIRECTIVE_UNEXPORT) && line.length() > 8 && Character.isWhitespace(line.charAt(8));
+ }
+
+ public static boolean isDefine(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.VARIABLE_DEFINE) && line.length() > 6 && Character.isWhitespace(line.charAt(6));
+ }
+
+ public static boolean isEndef(String line) {
+ return line.trim().equals(GNUMakefileConstants.TERMINAL_ENDEF);
+ }
+
+ public static boolean isOverride(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.VARIABLE_OVERRIDE) && line.length() > 8 && Character.isWhitespace(line.charAt(8));
+ }
+
+ public static boolean isIf(String line) {
+ line = line.trim();
+ return (line.startsWith(GNUMakefileConstants.CONDITIONAL_IF) && line.length() > 2 && Character.isWhitespace(line.charAt(2))) ||
+ (line.startsWith(GNUMakefileConstants.AT_CONDITIONAL_IF) && line.length() > 3 && Character.isWhitespace(line.charAt(3)));
+ }
+
+ public static boolean isIfeq(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.CONDITIONAL_IFEQ) && line.length() > 4 && Character.isWhitespace(line.charAt(4));
+ }
+
+ public static boolean isIfneq(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.CONDITIONAL_IFNEQ) && line.length() > 5 && Character.isWhitespace(line.charAt(5));
+ }
+
+ public static boolean isIfdef(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.CONDITIONAL_IFDEF) && line.length() > 5 && Character.isWhitespace(line.charAt(5));
+ }
+
+ public static boolean isIfndef(String line) {
+ line = line.trim();
+ return line.startsWith(GNUMakefileConstants.CONDITIONAL_IFNDEF) && line.length() > 6 && Character.isWhitespace(line.charAt(6));
+ }
+
+ public static boolean isElse(String line) {
+ return line.trim().equals(GNUMakefileConstants.CONDITIONAL_ELSE);
+ }
+
+ public static boolean isEndif(String line) {
+ return line.trim().equals(GNUMakefileConstants.TERMINAL_ENDIF) ||
+ line.trim().startsWith(GNUMakefileConstants.AT_TERMINAL_ENDIF);
+ }
+
+ public static boolean isOverrideDefine(String line) {
+ line = line.trim();
+ if (line.startsWith(GNUMakefileConstants.VARIABLE_OVERRIDE)) {
+ int i = 8;
+ while(i < line.length() && Character.isWhitespace(line.charAt(i))) {
+ i++;
+ }
+ if (line.startsWith(GNUMakefileConstants.VARIABLE_DEFINE, i)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean isTargetVariable(String line) {
+ line = line.trim();
+ int index = Util.indexOf(line, ':');
+ if (index > 1) {
+ line = line.substring(index + 1).trim();
+ int equal = Util.indexOf(line, '=');
+ if (equal > 1) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean isVariableDefinition(String line) {
+ return isOverrideDefine(line)
+ || isTargetVariable(line)
+ || isDefine(line)
+ || isOverride(line)
+ || isExport(line)
+ || isMacroDefinition(line);
+ }
+
+ /**
+ * @param line
+ * @return
+ */
+ public static boolean isStaticTargetRule(String line) {
+ line = line.trim();
+ int colon1 = Util.indexOf(line, ':');
+ if (colon1 > 0) {
+ // move pass colon1
+ line = line.substring(colon1 + 1);
+ int colon2 = Util.indexOf(line, ':');
+ // Catch operator "::" not a static pattern rule
+ return (colon2 > 0);
+ }
+ return false;
+ }
+
+ /**
+ * @param line
+ * @return
+ */
+ public static boolean isGNUTargetRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ colon++;
+ // Catch VariableDefiniton with operator ":="
+ if (colon < line.length()) {
+ return line.charAt(colon) != '=';
+ }
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isPhonyRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_PHONY);
+ }
+ return false;
+ }
+
+ public static boolean isIntermediateRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_INTERMEDIATE);
+ }
+ return false;
+ }
+
+ public static boolean isSecondaryRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_SECONDARY);
+ }
+ return false;
+ }
+
+ public static boolean isDeleteOnErrorRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_DELETE_ON_ERROR);
+ }
+ return false;
+ }
+
+ public static boolean isLowResolutionTimeRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_LOW_RESOLUTION_TIME);
+ }
+ return false;
+ }
+
+ public static boolean isExportAllVariablesRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_EXPORT_ALL_VARIABLES);
+ }
+ return false;
+ }
+
+ public static boolean isNotParallelRule(String line) {
+ line = line.trim();
+ int colon = Util.indexOf(line, ':');
+ if (colon > 0) {
+ line = line.substring(0, colon).trim();
+ return line.equals(GNUMakefileConstants.RULE_NOT_PARALLEL);
+ }
+ return false;
+ }
+
+}

Back to the top