2004-01-20 21:32:43 +03:00
#******************************************************************************
#
# mdk-stage1 - the program that will load second-stage install
#
# $Id$
#
# Guillaume Cottenceau (gc@mandrakesoft.com)
#
# Copyright 2000 MandrakeSoft
#
# This software may be freely redistributed under the terms of the GNU
# public license.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Portions from Erik Troan (ewt@redhat.com) Copyright 1996 Red Hat Software
#
#*****************************************************************************
#
# Currently:
#
# ix86
# init with minilibc
# stage1 with dietlibc except some targets
#
# ppc
# init with dietlibc
# stage1 with glibc
#
# ia64
# init with glibc
# stage1 with glibc
#
#*****************************************************************************
top_dir = .
2004-04-13 00:49:45 +04:00
i n c l u d e $( top_dir ) / M a k e f i l e . c o m m o n
2004-01-20 21:32:43 +03:00
2004-04-13 00:49:45 +04:00
DEFS = -DSPAWN_SHELL
2004-01-20 21:32:43 +03:00
COMPILE = $( CC) $( DEFS) $( CFLAGS)
#- stage1 "loader"
2004-03-10 19:54:55 +03:00
# i386 name is invalid to force this feature off
i f e q ( x i 3 8 6 , $( ARCH ) )
2004-01-20 21:32:43 +03:00
INITSRC = minilibc.c init.c
INIT_DEFS = -DINIT_HEADERS= \" minilibc.h\"
e l s e
INITSRC = init.c
i f e q ( i a 6 4 , $( ARCH ) )
INIT_DEFS = -DINIT_HEADERS= \" init-libc-headers.h\" $( GLIBC_INCLUDES)
e l s e
INIT_DEFS = -DINIT_HEADERS= \" init-libc-headers.h\" $( DIETLIBC_INCLUDES)
e n d i f
e n d i f
INITOBJS = $( subst .c,.o,$( INITSRC) )
#- frontends
NEWT_FRONTEND_SRC = newt-frontend.c
GLIBC_NEWT_FRONTEND_LIBS = newt/libnewt.a slang/libslang.a
DIETLIBC_NEWT_FRONTEND_LIBS = $( subst .a,-DIET.a,$( GLIBC_NEWT_FRONTEND_LIBS) )
STDIO_FRONTEND_SRC = stdio-frontend.c
GLIBC_STDIO_FRONTEND_LIBS =
DIETLIBC_STDIO_FRONTEND_LIBS =
FRONTEND_OBJS = $( subst .c,.o,$( $( F) _FRONTEND_SRC) )
FRONTEND_LINK = $( FRONTEND_OBJS) $( $( L) _$( F) _FRONTEND_LIBS)
i f e q ( i 3 8 6 , $( ARCH ) )
# INSMOD = insmod-busybox
INSMOD = insmod-modutils
e l s e
INSMOD = insmod-modutils
e n d i f
GLIBC_STAGE1_OWN_LIBS = $( INSMOD) /libinsmod.a mar/libmar.a bzlib/libbz2.a
#$(top_dir)/$(TMP_PKG)/usr/lib/libbz2.a
DIETLIBC_STAGE1_OWN_LIBS = $( subst .a,-DIET.a,$( GLIBC_STAGE1_OWN_LIBS) )
STAGE1_OWN_LIBS = $( $( L) _STAGE1_OWN_LIBS)
i f e q ( D I E T L I B C , $( L ) )
STAGE1_NETWORK_LIBS = $( top_dir) /$( TMP_PKG) /usr/lib/dietlibc/lib-$( ARCH) /librpc.a
e n d i f
i f e q ( G L I B C , $( L ) )
STAGE1_NETWORK_LIBS = /usr/lib/libresolv.a
e n d i f
#- stage1 itself
STAGE1SRC = stage1.c log.c tools.c modules.c probing.c mount.c automatic.c frontend-common.c
CDROMSRC = cdrom.c
DISKSRC = disk.c lomount.c
NETWORKSRC = network.c nfsmount.c dhcp.c url.c dns.c adsl.c
ALLSRC = $( INITSRC) $( STAGE1SRC) $( CDROMSRC) $( DISKSRC) $( NETWORKSRC)
STAGE1OBJS-CDROM = $( subst .c,-CDROM.o,$( STAGE1SRC) $( CDROMSRC) )
CDROM_DEFS = -DDISABLE_DISK -DDISABLE_NETWORK -DAUTO_METHOD= \" "cdrom" \"
STAGE1OBJS-DISK = $( subst .c,-DISK.o,$( STAGE1SRC) $( DISKSRC) )
DISK_DEFS = -DDISABLE_CDROM -DDISABLE_NETWORK -DAUTO_METHOD= \" "disk" \"
STAGE1OBJS-NETWORK = $( subst .c,-NETWORK.o,$( STAGE1SRC) $( NETWORKSRC) )
NETWORK_DEFS = -DDISABLE_CDROM -DDISABLE_DISK
STAGE1OBJS-USBNET = $( subst .c,-USBNET.o,$( STAGE1SRC) $( NETWORKSRC) )
2004-04-14 22:47:24 +04:00
STAGE1OBJS-LIVE = $( subst .c,-LIVE.o,$( STAGE1SRC) $( CDROMSRC) $( DISKSRC) $( NETWORKSRC) )
LIVE_DEFS = -DLIVE
2004-01-20 21:32:43 +03:00
STAGE1OBJS-FULL = $( subst .c,-FULL.o,$( STAGE1SRC) $( CDROMSRC) $( DISKSRC) $( NETWORKSRC) )
2004-03-10 19:54:55 +03:00
i f e q ( x i 3 8 6 , $( ARCH ) )
2004-01-20 21:32:43 +03:00
LDFLAGS_INIT = -static -nostdlib /usr/lib/crt1.o
e l s e
i f e q ( i a 6 4 , $( ARCH ) )
LDFLAGS_INIT = $( GLIBC_LDFLAGS_STAGE1)
INIT_LIBC = $( GLIBC_LIBC)
e l s e
LDFLAGS_INIT = $( DIETLIBC_LDFLAGS_STAGE1)
INIT_LIBC = $( DIETLIBC_LIBC)
e n d i f
e n d i f
2004-04-14 22:47:24 +04:00
BINS = init stage1-full stage1-live
2004-01-20 21:32:43 +03:00
i f e q ( i 3 8 6 , $( ARCH ) )
BINS += stage1-cdrom stage1-disk stage1-network stage1-usbnet
e n d i f
#DIRS += mar pci-resource usb-resource $(INSMOD) slang newt ppp/pppd rp-pppoe/src
2004-02-02 19:34:05 +03:00
DIRS += mar pci-resource usb-resource $( INSMOD) slang newt bzlib
# ppp/pppd rp-pppoe/src
2004-01-20 21:32:43 +03:00
USBNET_DEFS_GEN = -DENABLE_USB -DENABLE_USBNET
USBNET_DEFS = $( USBNET_DEFS_GEN) -DDISABLE_PCINET
2004-04-13 00:49:45 +04:00
all : unpack version .h dirs $( BINS )
2004-01-20 21:32:43 +03:00
unpack :
rm -rf $( top_dir) /$( TMP_PKG)
mkdir $( top_dir) /$( TMP_PKG)
pushd $( top_dir) /$( TMP_PKG) ; \
2004-04-09 22:31:19 +04:00
for f in ` cat $( top_dir) /../REQ` ; do \
rpm2cpio ` $( SCRIPTS) /get_packages $$ f $$ f` | cpio -id; \
2004-01-20 21:32:43 +03:00
done
dirs :
@for n in . $( DIRS) ; do \
[ " $$ n " = "." ] || make -C $$ n ; \
done
init : $( INITOBJS ) $( INIT_LIBC )
$( CC) -o $@ $^ $( LDFLAGS_INIT)
$( STRIPCMD) $@
stage1-cdrom : $( STAGE 1OBJS -CDROM ) $( STAGE 1_OWN_LIBS ) $( FRONTEND_LINK ) $( STAGE 1_LIBC )
$( CC) -o $@ $^ $( LDFLAGS_STAGE1)
$( STRIPCMD) $@
stage1-disk : $( STAGE 1OBJS -DISK ) $( STAGE 1_OWN_LIBS ) $( FRONTEND_LINK ) $( STAGE 1_LIBC )
$( CC) -o $@ $^ $( LDFLAGS_STAGE1)
$( STRIPCMD) $@
stage1-network : $( STAGE 1OBJS -NETWORK ) $( STAGE 1_OWN_LIBS ) $( STAGE 1_NETWORK_LIBS ) $( FRONTEND_LINK ) $( STAGE 1_LIBC )
$( CC) -o $@ $^ $( LDFLAGS_STAGE1)
$( STRIPCMD) $@
stage1-usbnet : $( STAGE 1OBJS -USBNET ) $( STAGE 1_OWN_LIBS ) $( STAGE 1_NETWORK_LIBS ) $( FRONTEND_LINK ) $( STAGE 1_LIBC )
$( CC) -o $@ $^ $( LDFLAGS_STAGE1)
$( STRIPCMD) $@
2004-02-02 19:34:05 +03:00
stage1-full : $( STAGE 1OBJS -FULL ) $( STAGE 1_OWN_LIBS ) $( STAGE 1_NETWORK_LIBS ) $( FRONTEND_LINK ) $( STAGE 1_LIBC )
2004-01-20 21:32:43 +03:00
$( CC) -o $@ $^ $( LDFLAGS_STAGE1)
$( STRIPCMD) $@
2004-04-14 22:47:24 +04:00
stage1-live : $( STAGE 1OBJS -LIVE ) $( STAGE 1_OWN_LIBS ) $( STAGE 1_NETWORK_LIBS ) $( FRONTEND_LINK ) $( STAGE 1_LIBC )
$( CC) -o $@ $^ $( LDFLAGS_STAGE1)
$( STRIPCMD) $@
2004-01-20 21:32:43 +03:00
$(INITOBJS) : %.o : %.c
$( COMPILE) $( INIT_DEFS) -c $<
$(STAGE1OBJS-CDROM) : %-CDROM .o : %.c
$( COMPILE) $( INCLUDES) $( CDROM_DEFS) -c $< -o $@
$(STAGE1OBJS-DISK) : %-DISK .o : %.c
$( COMPILE) $( INCLUDES) $( DISK_DEFS) -c $< -o $@
$(STAGE1OBJS-NETWORK) : %-NETWORK .o : %.c
$( COMPILE) $( INCLUDES) $( NETWORK_DEFS) -c $< -o $@
$(STAGE1OBJS-USBNET) : %-USBNET .o : %.c
$( COMPILE) $( INCLUDES) $( NETWORK_DEFS) $( USBNET_DEFS) -c $< -o $@
$(STAGE1OBJS-FULL) : %-FULL .o : %.c
2004-02-02 19:34:05 +03:00
$( COMPILE) $( INCLUDES) $( USBNET_DEFS_GEN) -c $< -o $@
2004-01-20 21:32:43 +03:00
2004-04-14 22:47:24 +04:00
$(STAGE1OBJS-LIVE) : %-LIVE .o : %.c
$( COMPILE) $( INCLUDES) $( USBNET_DEFS_GEN) $( LIVE_DEFS) -c $< -o $@
2004-01-20 21:32:43 +03:00
.c.o :
$( COMPILE) $( INCLUDES) -c $<
2004-04-13 00:49:45 +04:00
version.h :
echo " #define VERSION \" $$ VERSION\" " >version.h; \
echo " #define DISTRIB_NAME \" $$ ORIGIN $$ VERSION $$ SUITE ( $$ CODENAME)\" " >>version.h
2004-01-20 21:32:43 +03:00
clean :
@for n in $( DIRS) ; do \
( cd $$ n; make clean) \
done
2004-02-02 19:45:46 +03:00
rm -rf $( TMP_PKG)
2004-01-20 21:32:43 +03:00
rm -f *.o .depend *.rdz *.img $( BINS)
2004-04-13 00:49:45 +04:00
rm -f version.h
2004-01-20 21:32:43 +03:00
tar-mkinitrd_helper : clean
rm -rf mkinitrd_helper-subdir
mkdir mkinitrd_helper-subdir
cd mkinitrd_helper-subdir ; cp -a ../dietlibc ../insmod-busybox ../Makefile.common ../insmod.h ../log.h . ; \
cp ../Makefile.mkinitrd_helper Makefile
tar cfj mkinitrd_helper.tar.bz2 mkinitrd_helper-subdir --exclude CVS
rm -rf mkinitrd_helper-subdir
.depend :
$( CPP) $( CFLAGS) -M $( ALLSRC) > .depend
i f e q ( . d e p e n d , $( wildcard .depend ) )
i n c l u d e . d e p e n d
e n d i f
*-CDROM.o : %-CDROM .o : %.o
*-DISK.o : %-DISK .o : %.o
*-NETWORK.o : %-NETWORK .o : %.o
*-USBNET.o : %-USBNET .o : %.o
*-FULL.o : %-FULL .o : %.o
2004-04-14 22:47:24 +04:00
*-LIVE.o : %-LIVE .o : %.o