#!/usr/bin/perl $dev_root = `pwd`; # # On cygwin, do something like the following # pwd behaves trangely on cygwin # #$dev_root='/home/pdinda/Codes/vmm-dev'; chomp $dev_root; $location = $dev_root . "/devtools"; print "\n"; print "Installing and configuring the v3vee development environment...\n"; print "Location: " . $location . "\n\n"; mkdir $location; #install_binutils_2_16_91_i386(); install_gcc_3_4_6_i386(); install_nasm(); # # This part is not quite working yet # on cygwin, do through it by hand # #install_dev86_0_16_17(); sub install_nasm { ### Setup vmx capable nasm print "Installing VMX capable NASM...\n"; chdir "./utils"; print "Unpacking..."; `tar -xzf nasm-0.98.39.tar.gz`; print "done\n"; chdir "./nasm-0.98.39"; print "Patching in VMX support\n"; `patch < ../vmx.patch`; print "Patch to fix the stupid installer...\n"; `patch < ../nasm-install.patch`; print "Configuring...\n"; `./configure --prefix=$location`; print "Compiling...\n"; `make`; print "Installing..."; `make install`; print "Done!!\n\n"; chdir $dev_root; } sub install_binutils_2_16_91_i386 { print "Installing binutils v2.16.91\n"; chdir "./utils"; print "Unpacking..."; `tar -xzf binutils-2.16.91.0.7.tar.gz`; print "done\n"; chdir "binutils-2.16.91.0.7"; print "Configuring..."; `./configure --prefix=$location/i386 --target=i386-elf --disable-nls`; print "done\n"; print "Compiling..."; `make -j 4 all`; print "done\n"; print "Installing..."; `make install`; print "done!!\n"; chdir $dev_root; } sub install_gcc_3_4_6_i386 { install_binutils_2_16_91_i386(); $ENV{'PATH'} = "$location/i386/bin:" . $ENV{'PATH'}; print "Installing gcc v3.4.6\n"; chdir "./utils"; print "Unpacking..."; `tar -xzf gcc-3.4.6.tar.gz`; print "done\n"; chdir "gcc-3.4.6"; print "Configuring..."; `./configure --prefix=$location/i386 --target=i386-elf --disable-nls --enable-languages=c,c++ --without-headers`; print "done\n"; print "Compiling..."; `make -j 4 all-gcc`; print "done\n"; print "Installing..."; `make install-gcc`; print "done!!\n"; chdir $dev_root; } sub install_binutils_2_16_91_x86_64 { } sub install_gcc_3_4_6_x86_64 { print "Installing gcc v3.4.6\n"; chdir "./utils"; print "Unpacking..."; `tar -xzf gcc-3.4.6.tar.gz`; print "done\n"; chdir "gcc-3.4.6"; print "Configuring..."; `./configure --target=x86_64 --prefix=$location/gcc_3.4.6-x86_64 --disable-nls --enable-languages=c,c++ --without-headers`; print "done\n"; print "Compiling...\n"; `make all-gcc`; print "done\n"; print "Installing...\n"; `make install-gcc`; print "done!!\n"; chdir $dev_root; } sub install_dev86_0_16_17 { print "Installing bcc, ld86, as86, and bcc-cpp from Dev86src-0.16.17.tar.gz\n"; chdir "./utils"; print "Unpacking..."; `tar -xzf Dev86src-0.16.17.tar.gz`; print "done\n"; chdir "./dev86-0.16.17"; print "Compiling...\n"; `make as86 ld86 bcc86`; `make -C cpp`; print "done\n"; print "Installing...\n"; `cp as/as86.exe bcc/bcc.exe bcc/bcc-cc1.exe cpp/bcc-cpp.exe ld/ld86.exe $location/bin`; print "done!!\n"; chdir $dev_root; }