@@ -49,6 +49,7 @@ helpme ()
4949 printf " \t-o: use non-default object directory\n"
5050 printf " \t-k: build kernel only, without libc or tools\n"
5151 printf " \t-s: specify alternative src-netbsd location\n\n"
52+ printf " \t-r: type of rump kernel [netbsd|linux]. default netbsd\n\n\n"
5253 printf " \tbuildrump.sh opts are passed to buildrump.sh\n"
5354 printf " \n"
5455 printf " The toolchain is picked up from the environment. See the\n"
@@ -96,14 +97,16 @@ parseargs ()
9697 KERNONLY=false
9798 RROBJ=
9899 RUMPSRC=src-netbsd
100+ LKLSRC=linux
101+ RUMPKERNEL=netbsd
99102 STDJ=-j4
100103 EXTSRC=
101104
102105 DObuild=false
103106 DOinstall=false
104107
105108 orignargs=$#
106- while getopts ' ?d:hj:ko :qs:' opt; do
109+ while getopts ' ?d:hj:kr:o :qs:' opt; do
107110 case " $opt " in
108111 ' j' )
109112 [ -z " $( echo ${OPTARG} | tr -d ' [0-9]' ) " ] \
@@ -116,6 +119,14 @@ parseargs ()
116119 ' k' )
117120 KERNONLY=true
118121 ;;
122+ ' r' )
123+ RUMPKERNEL=" ${OPTARG} "
124+ if [ ${RUMPKERNEL} != " netbsd" -a ${RUMPKERNEL} != " linux" ]; then
125+ echo ' >> ERROR:'
126+ echo ' >> -r option (RUMPKERNEL) must be netbsd or linux'
127+ exit 1
128+ fi
129+ ;;
119130 ' o' )
120131 RROBJ=" ${OPTARG} "
121132 ;;
@@ -180,6 +191,8 @@ parseargs ()
180191 DOinstall=true
181192 fi
182193
194+ . rumpkernel/${RUMPKERNEL} .sh
195+
183196 case ${RUMPSRC} in
184197 /* )
185198 ;;
@@ -190,6 +203,7 @@ parseargs ()
190203
191204 export RUMPSRC
192205 export BUILD_QUIET
206+ export RUMPKERNEL
193207
194208 ARGSSHIFT=$(( ${orignargs} - $# ))
195209}
@@ -297,6 +311,9 @@ setvars ()
297311 abspath RRDEST
298312 abspath RROBJ
299313 abspath RUMPSRC
314+ abspath LKLSRC
315+ export RROBJ
316+ export LKLSRC
300317}
301318
302319checktools ()
@@ -357,7 +374,7 @@ buildrump ()
357374 -s ${RUMPSRC} -T ${RUMPTOOLS} -o ${BROBJ} -d ${STAGING} \
358375 -V MKPIC=no -V RUMP_CURLWP=__thread \
359376 -V RUMP_KERNEL_IS_LIBC=1 -V BUILDRUMP_SYSROOT=yes \
360- ${extracflags} " $@ " tools
377+ ${extracflags} -l ${RUMPKERNEL} " $@ " tools
361378
362379 echo ' >>'
363380 echo ' >> Now that we have the appropriate tools, performing'
@@ -367,7 +384,7 @@ buildrump ()
367384 RUMPMAKE=$( pwd) /${RUMPTOOLS} /rumpmake
368385
369386 TOOLTUPLE=$( ${RUMPMAKE} -f bsd.own.mk \
370- -V ' ${MACHINE_GNU_PLATFORM:S/--netbsd/-rumprun-netbsd /}' )
387+ -V ' ${MACHINE_GNU_PLATFORM:S/--netbsd/-rumprun-${RUMPKERNEL} /}' )
371388
372389 [ $( ${RUMPMAKE} -f bsd.own.mk -V ' ${_BUILDRUMP_CXX}' ) != ' yes' ] \
373390 || HAVECXX=true
406423 # build rump kernel
407424 ${BUILDRUMP} /buildrump.sh ${BUILD_QUIET} ${STDJ} -k \
408425 -s ${RUMPSRC} -T ${RUMPTOOLS} -o ${BROBJ} -d ${STAGING} \
409- " $@ " build kernelheaders install
426+ -l ${RUMPKERNEL} " $@ " build kernelheaders install
410427
411428 echo ' >>'
412429 echo ' >> Rump kernel components built. Proceeding to build'
@@ -421,33 +438,6 @@ buildapptools ()
421438 ${MAKE} -C app-tools BUILDRR=true install
422439}
423440
424- builduserspace ()
425- {
426-
427- usermtree ${STAGING}
428-
429- LIBS=" $( stdlibs ${RUMPSRC} ) "
430- ! ${HAVECXX} || LIBS=" ${LIBS} $( stdlibsxx ${RUMPSRC} ) "
431-
432- userincludes ${RUMPSRC} ${LIBS} $( pwd) /lib/librumprun_tester
433- for lib in ${LIBS} ; do
434- makeuserlib ${lib}
435- done
436- }
437-
438- buildpci ()
439- {
440-
441- if eval ${PLATFORM_PCI_P} ; then
442- (
443- cd ${PLATFORMDIR} /pci
444- ${RUMPMAKE} ${STDJ} obj
445- ${RUMPMAKE} ${STDJ} dependall
446- ${RUMPMAKE} ${STDJ} install
447- )
448- fi
449- }
450-
451441wraponetool ()
452442{
453443
@@ -476,6 +466,7 @@ makeconfig ()
476466 echo " TOOLTUPLE=${quote}${TOOLTUPLE}${quote} " >> ${1}
477467 echo " KERNONLY=${quote}${KERNONLY}${quote} " >> ${1}
478468 echo " PLATFORM=${quote}${PLATFORM}${quote} " >> ${1}
469+ echo " RUMPKERNEL=${quote}${RUMPKERNEL}${quote} " >> ${1}
479470
480471 echo " RRDEST=${quote}${RRDEST}${quote} " >> ${1}
481472 echo " RROBJ=${quote}${RROBJ}${quote} " >> ${1}
@@ -517,7 +508,7 @@ dobuild ()
517508
518509 # do final build of the platform bits
519510 ( cd ${PLATFORMDIR} \
520- && ${MAKE} BUILDRR=true \
511+ && ${MAKE} BUILDRR=true RUMPKERNEL= ${RUMPKERNEL} \
521512 && ${MAKE} BUILDRR=true install || exit 1)
522513 [ $? -eq 0 ] || die platform make failed!
523514}
@@ -543,11 +534,19 @@ doinstall ()
543534 # first, move things to where we want them to be
544535 cd ${STAGING}
545536 rm -rf lib/pkgconfig
546- find lib -maxdepth 1 -name librump\* .a \
547- -exec mv -f ' {}' rumprun-${MACHINE_GNU_ARCH} /lib/rumprun-${PLATFORM} / \;
548- find lib -maxdepth 1 -name \* .a \
549- -exec mv -f ' {}' rumprun-${MACHINE_GNU_ARCH} /lib/ \;
550-
537+ if [ ${RUMPKERNEL} = " netbsd" ] ; then
538+ find lib -maxdepth 1 -name librump\* .a \
539+ -exec mv -f ' {}' rumprun-${MACHINE_GNU_ARCH} /lib/rumprun-${PLATFORM} / \;
540+ find lib -maxdepth 1 -name \* .a \
541+ -exec mv -f ' {}' rumprun-${MACHINE_GNU_ARCH} /lib/ \;
542+ elif [ ${RUMPKERNEL} = " linux" ] ; then
543+ find lib -maxdepth 1 -name \* .a \
544+ -exec cp -f ' {}' rumprun-${MACHINE_GNU_ARCH} /lib/rumprun-${PLATFORM} / \;
545+ find lib -maxdepth 1 -name \* .a \
546+ -exec mv -f ' {}' rumprun-${MACHINE_GNU_ARCH} /lib/ \;
547+ # FIXME: need to create empty librump.a for linux
548+ ar rc rumprun-${MACHINE_GNU_ARCH} /lib/rumprun-${PLATFORM} /librump.a
549+ fi
551550 # make sure special cases are visible everywhere
552551 for x in c pthread ; do
553552 rm -f rumprun-${MACHINE_GNU_ARCH} /lib/rumprun-${PLATFORM} /lib${x} .a
0 commit comments