Re: CONFIG_NLS=m resulting in undefined reference toutf16s_to_utf8s causing build failure

From: Jesse Barnes
Date: Fri Jan 14 2011 - 12:14:59 EST


On Thu, 13 Jan 2011 08:03:56 -0800
<Narendra_K@xxxxxxxx> wrote:

> On Thu, Jan 13, 2011 at 09:25:56PM +0530, Jesse Barnes wrote:
> > On Wed, 12 Jan 2011 22:23:55 -0500 (EST)
> > Len Brown <lenb@xxxxxxxxxx> wrote:
> > > > So there's no other ACPI code that depends on this function? I'd hate
> > > > to make PCI depend on NLS, so assuming ACPI doesn't need it (in which
> > > > case the select or depend should be there), I guess it should be pulled
> > > > into a common file that will always be included.
> > >
> > > No, nothing in the ACPI code uses utf16s_to_utf8s.
> > >
> > > I don't know anything about NLS, but it appears to be
> > > something that file systems (befs, cifs, fat, hfs, isofs, jfs, etc)
> > > use to to support native languages.
> > >
> > > BTW. I don't understand why pci-label.o appears twice above.
> > > It used to be just the 2nd one, that depends on CONFIG_DMI.
> >
> > Ok, I'll drop this patch for now then since I haven't seen a fix yet
> > and need to get Linus the rest of the changes.
>
> Jesse,
>
> I just compile tested a fix on the following lines without any failure.
> If it is acceptable, i will send a patch in half an hour. It builds
>
> diff --git a/fs/Makefile b/fs/Makefile
> index db71a5b..2a39275 100644
> --- a/fs/Makefile
> +++ b/fs/Makefile
> @@ -86,7 +86,7 @@ obj-$(CONFIG_NFS_FS) += nfs/
> obj-$(CONFIG_EXPORTFS) += exportfs/
> obj-$(CONFIG_NFSD) += nfsd/
> obj-$(CONFIG_LOCKD) += lockd/
> -obj-$(CONFIG_NLS) += nls/
> +obj-y += nls/
> obj-$(CONFIG_SYSV_FS) += sysv/
> obj-$(CONFIG_CIFS) += cifs/
> obj-$(CONFIG_NCP_FS) += ncpfs/
> diff --git a/fs/nls/Makefile b/fs/nls/Makefile
> index f499dd7..c172fbb 100644
> --- a/fs/nls/Makefile
> +++ b/fs/nls/Makefile
> @@ -2,7 +2,7 @@
> # Makefile for native language support
> #
>
> -obj-$(CONFIG_NLS) += nls_base.o
> +obj-y += nls_base.o
>
> obj-$(CONFIG_NLS_CODEPAGE_437) += nls_cp437.o
> obj-$(CONFIG_NLS_CODEPAGE_737) += nls_cp737.o

nls_base.c is pretty small, but I don't want to make it unconditional.
If you don't want to split out the necessary functions into lib/ or
something, then it might be best to make the new code in
pci-label.c conditional on a new config option that describes the
feature, points at the documentation, and either selects or depends on
nls support (documenting it in the help text either way).

Thanks,
--
Jesse Barnes, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/