edit: I'm rewriting this post as I kind of went tangential first time.
On 32bit there are essentially 4 kernels: generic, huge, generic-smp and huge-smp.
The generic and huge kernels share their modules, which means they must share a LOCALVERSION string. The LOCALVERSION for these is "" (i.e. blank)
The generic-smp and huge-smp also share their modules which means they must share a LOCALVERSION string. The LOCALVERSION string for these is "-smp"
Kernel image files are named following this:
vmlinuz-${KERNNAME}-${VERSION}${LOCALVERSION}
The modules in lib modules also use $LOCALVERSION
/lib/modules/${VERSION}${LOCALVERSION}
This is why it looks like you have redundant information in the naming, but its not. (Except on the package file version field, where _smp really is unnecessary, but that's just cosmetic).
Personally, I've always found the sharing of modules a little funky, but it seems to work for Pat (albeit resulting in the unusual naming we see). I use a different naming scheme for my locally built kernel packages:
kernel-3.18.y-3.18.7-x86_64-1_local
If I use LOCALVERSION it gets appended to the packagename (right after the .y)
Under my scheme you'd end up with:
kernel-3.18.y-generic-smp-3.18.7-x86_64-1_local: /boot/vmlinuz-3.18.7-generic-smp /lib/modules/3.18.7-generic-smp
kernel-3.18.y-generic-3.18.7-x86_64-1_local: /boot/vmlinuz-3.18.7-generic /lib/modules/3.18.7-generic
kernel-3.18.y-huge-smp-3.18.7-x86_64-1_local: /boot/vmlinuz-3.18.7-huge-smp /lib/modules/3.18.7-huge-smp
kernel-3.18.y-huge-3.18.7-x86_64-1_local: /boot/vmlinuz-3.18.7-huge /lib/modules/3.18.7-huge
which looks cleaner, but wouldn't be able to share the modules like Pat chooses to do (but then if it were me, I'd not bother with both a huge and generic kernel anyway, so it wouldn't be an issue for me).
(that post made more sense this time
)