diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 4fd1f85..988c682 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -14,6 +14,42 @@ LICSSTATEDIR = "${WORKDIR}/license-destdir/"
  addtask populate_lic after do_patch before do_package
  do_populate_lic[dirs] = "${LICSSTATEDIR}/${PN}"
  do_populate_lic[cleandirs] = "${LICSSTATEDIR}"
+
+# Standards are great! Everyone has their own. In an effort to standardize licensing
+# names, common-licenses will use the SPDX standard license names. In order to not
+# break the non-standardized license names that we find in LICENSE, we'll set
+# up a bunch of VarFlags to accomodate non-SPDX license names.
+#
+# We should really discuss standardizing this field, but that's a longer term goal.
+# For now, we can do this and it should grab the most common LICENSE naming variations.
+#
+#GPL variations
+SPDXLICENSEMAP[GPL] = "GPL-1"
+SPDXLICENSEMAP[GPLv2] = "GPL-2"
+SPDXLICENSEMAP[GPLv3] = "GPL-3"
+
+#LGPL variations
+SPDXLICENSEMAP[LGPL] = "LGPL-2"
+SPDXLICENSEMAP[LGPLv2] = "LGPL-2"
+SPDXLICENSEMAP[LGPL2.1] = "LGPL-2.1"
+SPDXLICENSEMAP[LGPLv2.1] = "LGPL-2.1"
+SPDXLICENSEMAP[LGPLv3] = "LGPL-3"
+
+#MPL variations
+SPDXLICENSEMAP[MPL] = "MPL-1"
+SPDXLICENSEMAP[MPLv1] = "MPL-1"
+SPDXLICENSEMAP[MPLv1.1] = "MPL-1"
+
+#MIT variations
+SPDXLICENSEMAP[MIT-X] = "MPL-1"
+
+#Openssl variations
+SPDXLICENSEMAP[openssl] = "Openssl"
+
+#Other variations
+SPDXLICENSEMAP[AFL2.1] = "AFL-2"
+SPDXLICENSEMAP[EPLv1.0] = "EPL-1"
+
  python do_populate_lic() {
      """
      Populate LICENSE_DIRECTORY with licenses.
@@ -21,6 +57,62 @@ python do_populate_lic() {
      import os
      import bb
      import shutil
+    import ast
+
+    class LicenseVisitor(ast.NodeVisitor):
+        def generic_visit(self, node):
+            ast.NodeVisitor.generic_visit(self, node)
+
+        def visit_Str(self, node):
+            find_license(node.s)
+            ast.NodeVisitor.generic_visit(self, node)
+
+        def visit_BinOp(self, node):
+            op = node.op
+            if isinstance(op, ast.BitOr):
+                x = LicenseVisitor()
+                x.visit(node)
+            else:
+                ast.NodeVisitor.generic_visit(self, node)
+
+    def copy_license(source, destination, file_name):
+        try:
+            bb.copyfile(os.path.join(source, file_name), os.path.join(destination, file_name))
+        except:
+            bb.warn("%s: No generic license file exists for: %s at %s" % (pn, file_name, source))
+            pass
+
+    def link_license(source, destination, file_name):
+        try:
+            os.symlink(os.path.join(source, file_name), os.path.join(destination, "generic_" + file_name))
+        except:
+            bb.warn("%s: Could not symlink: %s at %s to %s at %s" % (pn, file_name, source, file_name, destination))
+            pass
+
+    def find_license(license_type):
+
+        try:
+            bb.mkdirhier(gen_lic_dest)
+        except:
+            pass
+
+        # If the generic does not exist we need to check to see if there is an SPDX mapping to it
+        if not os.path.isfile(os.path.join(generic_directory, license_type)):
+            if bb.data.getVarFlag('SPDXLICENSEMAP', license_type, d) != None:
+                # Great, there is an SPDXLICENSEMAP. We can copy!
+                bb.warn("We need to use a SPDXLICENSEMAP for %s" % (license_type))
+                spdx_generic = bb.data.getVarFlag('SPDXLICENSEMAP', license_type, d)
+                copy_license(generic_directory, gen_lic_dest, spdx_generic)
+                link_license(gen_lic_dest, destdir, spdx_generic)
+            else:
+                # And here is where we warn people that their licenses are lousy
+                bb.warn("%s: No generic license file exists for: %s at %s" % (pn, license_type, generic_directory))
+                bb.warn("%s: There is also no SPDXLICENSEMAP for this license type: %s at %s" % (pn, license_type, 
generic_directory))
+                pass
+        elif os.path.isfile(os.path.join(generic_directory, license_type)):
+            copy_license(generic_directory, gen_lic_dest, license_type)
+            link_license(gen_lic_dest, destdir, license_type)
+

      # All the license types for the package
