-KCFLAGS="-D__KERNEL__ -DMODULE %{rpmcflags} -fomit-frame-pointer -pipe"
-KCFLAGS="$KCFLAGS -Wall -I%{_kernelsrcdir}/include"
-
-# SMP build
-%if %{with smp}
-%{__make} all \
- KCFLAGS="$KCFLAGS -D__SMP__ -D__KERNEL_SMP=1"
-mkdir objs-smp
-mv -f objs/*.o objs-smp/
+ln -sf Makefile.kernelv2.6 Makefile
+
+%if %{with kernel}
+# kernel module(s)
+rm -rf built
+mkdir -p built/{nondist,smp,up}
+for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?with_dist_kernel:nondist}; do
+ if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
+ exit 1
+ fi
+ rm -rf include
+ install -d include/{linux,config}
+ ln -sf %{_kernelsrcdir}/config-$cfg .config
+ ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h include/linux/autoconf.h
+ ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch} include/asm
+ touch include/config/MARKER
+ %{__make} -C %{_kernelsrcdir} clean \
+ RCS_FIND_IGNORE="-name '*.ko' -o" \
+ M=$PWD O=$PWD \
+ %{?with_verbose:V=1}
+ %{__make} pcmcia buildonly=release \
+ KERNEL_VERSION=%{__kernel_ver} \
+ M=$PWD O=$PWD \
+ %{?with_verbose:V=1}
+ %{__make} usb buildonly=release \
+ KERNEL_VERSION=%{__kernel_ver} \
+ M=$PWD O=$PWD \
+ %{?with_verbose:V=1}
+ mv -f objs/*/release/*.ko built/$cfg
+done