blob: 434d64e8bfcb83111d157254b754d4918d462440 [file] [log] [blame]
# Copyright (C) 2001 MandrakeSoft S.A.
#
# MandrakeSoft S.A.
# 43, rue d'Aboukir
# 75002 Paris - France
# http://www.linux-mandrake.com/
# http://www.mandrakesoft.com/
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Makefile for the BIOS component of bochs
.SUFFIXES: .cc
srcdir = .
SHELL = /bin/sh
CXX = g++
CXXFLAGS = -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
# cc-option, copied from user/Makefile
# Usage: OP_CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0)
cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \
> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
CFLAGS = -m32
CFLAGS += $(call cc-option, -fno-stack-protector, "")
CFLAGS += $(call cc-option, -fno-stack-protector-all, "")
LDFLAGS =
LIBS = -lm
RANLIB = ranlib
BCC = bcc
GCC = gcc $(CFLAGS)
HOST_CC = gcc
AS86 = as86
BX_INCDIRS = -I.. -I$(srcdir)/.. -I../iodev -I$(srcdir)/../iodev
LOCAL_CXXFLAGS =
BUILDDATE = `date '+%m/%d/%y'`
BIOS_BUILD_DATE = "-DBIOS_BUILD_DATE=\"$(BUILDDATE)\""
#
# -------- end configurable options --------------------------
#
.cc.o:
$(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $< -o $@
bios: biossums BIOS-bochs-latest BIOS-bochs-legacy
clean:
rm -f *.o *.a *.s _rombios*_.c rombios*.txt rombios*.sym
rm -f usage biossums rombios16.bin
rm -f rombios32.bin rombios32.out acpi-dsdt.hex acpi-ssdt.hex
dist-clean: clean
rm -f Makefile
bios-clean:
rm -f BIOS-bochs-*
BIOS-bochs-legacy: rombios.c apmbios.S biossums rombios.h
$(GCC) $(BIOS_BUILD_DATE) -DLEGACY -E -P $< > _rombiosl_.c
$(BCC) -o rombiosl.s -C-c -D__i86__ -0 -S _rombiosl_.c
sed -e 's/^\.text//' -e 's/^\.data//' rombiosl.s > _rombiosl_.s
$(AS86) _rombiosl_.s -b tmpl.bin -u- -w- -g -0 -j -O -l rombiosl.txt
-perl ${srcdir}/makesym.perl < rombiosl.txt > rombiosl.sym
mv tmpl.bin $@
./biossums $@
rm -f _rombiosl_.s
rombios16.bin: rombios.c apmbios.S biossums rombios.h
$(GCC) $(BIOS_BUILD_DATE) -E -P $< > _rombios_.c
$(BCC) -o rombios.s -C-c -D__i86__ -0 -S _rombios_.c
sed -e 's/^\.text//' -e 's/^\.data//' rombios.s > _rombios_.s
$(AS86) _rombios_.s -b tmp.bin -u- -w- -g -0 -j -O -l rombios.txt
-perl ${srcdir}/makesym.perl < rombios.txt > rombios.sym
mv tmp.bin rombios16.bin
./biossums rombios16.bin
rm -f _rombios_.s
rombios32.bin: rombios32.out rombios.h
objcopy -O binary $< $@
./biossums -pad $@
rombios32.out: rombios32start.o rombios32.o vapic.o rombios32.ld
ld -o $@ -T rombios32.ld rombios32start.o vapic.o rombios32.o
rombios32.o: rombios32.c acpi-dsdt.hex acpi-ssdt.hex
$(GCC) -m32 -O2 -Wall -c -o $@ $<
acpi-dsdt.hex: acpi-dsdt.dsl
cpp -P $< $<.i
iasl -tc -p $@ $<.i
sed -i -e's/^unsigned char AmlCode/const unsigned char DSDTCode/' $@
rm $<.i
acpi-ssdt.hex: acpi-ssdt.dsl
cpp -P $< $<.i
iasl -tc -p $@ $<.i
sed -i -e's/^unsigned char AmlCode/const unsigned char SSDTCode/' $@
rm $<.i
rombios32start.o: rombios32start.S
$(GCC) -m32 -c -o $@ $<
vapic.o: vapic.S
$(GCC) -m32 -c -o $@ $<
BIOS-bochs-latest: rombios16.bin rombios32.bin
cat rombios32.bin rombios16.bin > $@
biossums: biossums.c
$(HOST_CC) -o biossums biossums.c