package net.sf.eclipsefp.haskell.ghccompiler.core; public enum GhcParameter { VERSION ("--version",GhcParameterType.GENERAL), //$NON-NLS-1$ NUMERIC_VERSION ( "--numeric-version",GhcParameterType.GENERAL), //$NON-NLS-1$ PRINT_LIBDIR ( "--print-libdir",GhcParameterType.GENERAL), //$NON-NLS-1$ LANG_GLASGOW_EXTS ("-fglasgow-exts",GhcParameterType.LANGUAGE), //$NON-NLS-1$ LANG_FI ("-ffi",GhcParameterType.LANGUAGE,"-XForeignFunctionInterface",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_FFI ( "-fffi",GhcParameterType.LANGUAGE,"-XForeignFunctionInterface",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_WITH ( "-fwith",GhcParameterType.LANGUAGE), //$NON-NLS-1$ LANG_NO_MONOMORPHISM_RESTRICTION ( "-fno-monomorphism-restriction",GhcParameterType.LANGUAGE,"-XNoMonomorphismRestriction",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_ALLOW_OVERLAPPING_INSTANCES ( "-fallow-overlapping-instances",GhcParameterType.LANGUAGE,"-XOverlappingInstances",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_ALLOW_UNDECIDABLE_INSTANCES ( "-fallow-undecidable-instances",GhcParameterType.LANGUAGE,"-XUndecidableInstances",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_ALLOW_INCOHERENT_INSTANCES ( "-fallow-incoherent-instances",GhcParameterType.LANGUAGE,"-XIncoherentInstances",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_GENERICS ( "-fgenerics",GhcParameterType.LANGUAGE,"-XGenerics",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ LANG_NO_IMPLICIT_PRELUDE ( "-fno-implicit-prelude",GhcParameterType.LANGUAGE,"-XNoImplicitPrelude",Util.r6_8_1), //$NON-NLS-1$ //$NON-NLS-2$ // General Optimisation (Section 4.11.1) OPT_O0 ( "-O0",GhcParameterType.OPTIMIZATION_GENERAL), //$NON-NLS-1$ OPT_O1 ( "-O1",GhcParameterType.OPTIMIZATION_GENERAL), //$NON-NLS-1$ OPT_O2 ( "-O2",GhcParameterType.OPTIMIZATION_GENERAL), //$NON-NLS-1$ // Individual optimisations (Section 4.11.2) OPT_CASE_MERGE ( "-fcase-merge",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_DICTS_STRICT ( "-fdicts-strict",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_DO_ETA_REDUCTION ( "-fdo-eta-reduction",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_DO_LAMBDA_ETA_EXPANSION ( "-fdo-lambda-eta-expansion",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_EXCESS_PRECISION ( "-fexcess-precision",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_FOLDR_BUILD_ON ( "-ffoldr-build-on",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_IGNORE_ASSERTS ( "-fignore-asserts",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_IGNORE_INTERFACE_PRAGMAS ( "-fignore-interface-pragmas",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_LET_NO_ESCAPE ( "-flet-no-escape",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_LIBERATE_CASE_THRESHOLD ( "-fliberate-case-threshold",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_OMIT_INTERFACE_PRAGMAS ( "-fomit-interface-pragmas",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_MAX_WORKER_ARGS ( "-fmax-worker-args",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_MAX_SIMPLIFIER_ITERATIONS ( "-fmax-simplifier-iterations",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_NO_CPR ( "-fno-cpr",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_NO_CSE ( "-fno-cse",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_NO_PRE_INLINING ( "-fno-pre-inlining",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_NO_STRICTNESS ( "-fno-strictness",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_NUMBERS_STRICT ( "-fnumbers-strict",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_UNBOX_STRICT_FIELDS ( "-funbox-strict-fields",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_UNFOLDING_CREATION_THRESHOLD ( "-funfolding-creation-threshold",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_UNFOLDING_FUN_DISCOUNT ( "-funfolding-fun-discount",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_UNFOLDING_KEENESS_FACTOR ( "-funfolding-keeness-factor",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_UNFOLDING_UPDATE_IN_PLACE ( "-funfolding-update-in-place",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ // OPT_UNFOLDING_USE_THRESHOLD ( "-funfolding-use-threshold",GhcParameterType.OPTIMIZATION_SPECIFIC), //$NON-NLS-1$ OPT_USAGESP ( "-fusagesp",GhcParameterType.OPTIMIZATION_SPECIFIC); //$NON-NLS-1$ private String name; private String newName; private String newVersion; private GhcParameterType type; private GhcParameter(final String name,final GhcParameterType type){ this.name=name; this.type=type; } private GhcParameter(final String name,final GhcParameterType type,final String newName,final String newVersion){ this.name=name; this.type=type; this.newName=newName; this.newVersion=newVersion; } public String getName() { return name; } public GhcParameterType getType() { return type; } public String getName(final String targetVersion) { if (targetVersion!=null && newVersion != null && newName!=null){ if (Util.compareTargets( targetVersion, newVersion )>=0){ return newName; } } return name; } }