Use cross compiler in build system.
This commit is contained in:
parent
81530bc58c
commit
9cf092d32e
136
Makefile
136
Makefile
|
@ -1,36 +1,48 @@
|
||||||
BITS:=$(shell getconf LONG_BIT)
|
include compiler.mak
|
||||||
ifndef CPU
|
include version.mak
|
||||||
ifeq ($(BITS),64)
|
|
||||||
CPU:=x64
|
|
||||||
else
|
|
||||||
CPU:=x86
|
|
||||||
endif
|
|
||||||
MFLAGS:=$(MFLAGS) CPU=$(CPU)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef O
|
ifneq ($(BUILD_LIBC),0)
|
||||||
O=-O2
|
MODULES:=$(MODULES) libmaxsi
|
||||||
MFLAGS:=$(MFLAGS) 0=$(O)
|
|
||||||
endif
|
endif
|
||||||
ifndef BENCH
|
ALLMODULES:=$(ALLMODULES) libmaxsi
|
||||||
BENCH:=1
|
|
||||||
|
ifneq ($(BUILD_GAMES),0)
|
||||||
|
MODULES:=$(MODULES) games
|
||||||
endif
|
endif
|
||||||
ifeq ($(BENCH),1)
|
ALLMODULES:=$(ALLMODULES) games
|
||||||
EXTRAMODULES:=$(EXTRAMODULES) bench
|
|
||||||
|
ifneq ($(BUILD_MKINITRD),0)
|
||||||
|
MODULES:=$(MODULES) mkinitrd
|
||||||
endif
|
endif
|
||||||
|
ALLMODULES:=$(ALLMODULES) mkinitrd
|
||||||
|
|
||||||
|
ifneq ($(BUILD_UTILS),0)
|
||||||
|
MODULES:=$(MODULES) utils
|
||||||
|
endif
|
||||||
|
ALLMODULES:=$(ALLMODULES) utils
|
||||||
|
|
||||||
|
ifneq ($(BUILD_BENCH),0)
|
||||||
|
MODULES:=$(MODULES) bench
|
||||||
|
endif
|
||||||
|
ALLMODULES:=$(ALLMODULES) bench
|
||||||
|
|
||||||
|
ifneq ($(BUILD_KERNEL),0)
|
||||||
|
MODULES:=$(MODULES) sortix
|
||||||
|
endif
|
||||||
|
ALLMODULES:=$(ALLMODULES) sortix
|
||||||
|
|
||||||
ifndef SYSROOT
|
ifndef SYSROOT
|
||||||
SYSROOT:=$(shell pwd)/sysroot
|
SYSROOT:=$(shell pwd)/sysroot
|
||||||
MFLAGS:=$(MFLAGS) SYSROOT=$(SYSROOT)
|
MFLAGS:=$(MFLAGS) SYSROOT=$(SYSROOT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
REMOTE=192.168.2.6
|
ifndef PREFIXNAME
|
||||||
REMOTEUSER=sortie
|
PREFIXNAME:=/
|
||||||
REMOTECOPYDIR:=/home/$(REMOTEUSER)/Desktop/MaxsiOS
|
MFLAGS:=$(MFLAGS) PREFIXNAME=$(PREFIXNAME)
|
||||||
MODULES=libmaxsi games mkinitrd utils $(EXTRAMODULES) sortix
|
endif
|
||||||
ALLMODULES=libmaxsi games mkinitrd utils bench sortix
|
|
||||||
|
include dirs.mak
|
||||||
|
|
||||||
VERSION=0.8dev
|
|
||||||
DEBNAME:=sortix_$(VERSION)_$(CPU)
|
DEBNAME:=sortix_$(VERSION)_$(CPU)
|
||||||
DEBSRCNAME:=sortix_$(VERSION)
|
DEBSRCNAME:=sortix_$(VERSION)
|
||||||
DEBDIR:=builds/$(DEBNAME)
|
DEBDIR:=builds/$(DEBNAME)
|
||||||
|
@ -39,42 +51,63 @@ DEBFILE:=builds/$(DEBNAME).deb
|
||||||
PACKAGENAME:=sortix
|
PACKAGENAME:=sortix
|
||||||
ISODIR:=builds/$(DEBNAME)-iso
|
ISODIR:=builds/$(DEBNAME)-iso
|
||||||
ISOFILE:=builds/$(DEBNAME).iso
|
ISOFILE:=builds/$(DEBNAME).iso
|
||||||
INITRDDIR:=initrd
|
INITRD=$(INSTALLBOOTDIR)/$(HOST)/sortix.initrd
|
||||||
INITRD=sortix/sortix.initrd
|
|
||||||
|
|
||||||
MFLAGS:=$(MFLAGS) VERSION=$(VERSION)
|
MFLAGS:=$(MFLAGS) VERSION=$(VERSION)
|
||||||
|
|
||||||
all: $(INITRD)
|
all: $(INITRD)
|
||||||
|
|
||||||
suball:
|
.PHONY: all suball sysroot-base-headers sysroot-fsh clean distclean \
|
||||||
(for D in $(MODULES); do ($(MAKE) all $(MFLAGS) --directory $$D && $(MAKE) install $(MFLAGS) --directory $$D) || exit $?; done)
|
everything everything-all-archs all-archs linecount install uninstall \
|
||||||
|
deb debfile debsource iso run-virtualbox run-virtualbox-debug \
|
||||||
|
clean-builds clean-sysroot
|
||||||
|
|
||||||
sysroot-base-headers:
|
suball: sysroot-base-headers
|
||||||
(for D in libmaxsi sortix; do ($(MAKE) install-headers $(MFLAGS) --directory $$D) || exit $?; done)
|
(for D in $(MODULES); do ($(MAKE) all $(MFLAGS) --directory $$D && $(MAKE) install $(MFLAGS) --directory $$D) || exit $$?; done)
|
||||||
|
|
||||||
|
sysroot-base-headers: sysroot-fsh
|
||||||
|
(for D in libmaxsi sortix; do ($(MAKE) install-headers $(MFLAGS) --directory $$D) || exit $$?; done)
|
||||||
|
|
||||||
|
sysroot-fsh:
|
||||||
|
mkdir -p "$(SYSROOT)"
|
||||||
|
for DIRNAME in bin boot lib include; do (\
|
||||||
|
mkdir -p "$(SYSROOT)/$$DIRNAME" &&\
|
||||||
|
mkdir -p "$(SYSROOT)/$$DIRNAME/$(HOST)" \
|
||||||
|
) || exit $$?; done;
|
||||||
|
if [ ! -e "$(SYSROOT)/usr" ]; then ln -s . "$(SYSROOT)/usr"; fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(SYSROOT)
|
rm -f "$(INITRD)"
|
||||||
rm -f $(INITRD)
|
rm -f sortix/sortix.initrd # Backwards compatibility, not needed for newer builds.
|
||||||
rm -f initrd/*
|
rm -f initrd/* # Backwards compatibility, not needed for newer builds.
|
||||||
(for D in $(ALLMODULES); do $(MAKE) clean $(MFLAGS) --directory $$D || exit $?; done)
|
(for D in $(ALLMODULES); do $(MAKE) clean $(MFLAGS) --directory $$D || exit $$?; done)
|
||||||
|
|
||||||
distclean: clean cleanbuilds
|
clean-builds:
|
||||||
|
|
||||||
cleanbuilds:
|
|
||||||
rm -rf builds/
|
rm -rf builds/
|
||||||
rm -f sortix.iso
|
rm -f sortix.iso
|
||||||
|
|
||||||
|
clean-sysroot:
|
||||||
|
rm -rf "$(SYSROOT)"
|
||||||
|
|
||||||
|
distclean: clean clean-builds clean-sysroot
|
||||||
|
|
||||||
everything: all deb iso
|
everything: all deb iso
|
||||||
|
|
||||||
everything-all-archs:
|
everything-all-archs:
|
||||||
$(MAKE) clean $(MFLAGS)
|
$(MAKE) clean $(MFLAGS)
|
||||||
$(MAKE) everything $(MFLAGS) CPU=x86
|
$(MAKE) everything $(MFLAGS) HOST=i486-sortix
|
||||||
$(MAKE) clean $(MFLAGS)
|
$(MAKE) clean $(MFLAGS)
|
||||||
$(MAKE) everything $(MFLAGS) CPU=x64
|
$(MAKE) everything $(MFLAGS) HOST=x86_64-sortix
|
||||||
|
|
||||||
|
all-archs:
|
||||||
|
$(MAKE) clean $(MFLAGS)
|
||||||
|
$(MAKE) all $(MFLAGS) HOST=i486-sortix
|
||||||
|
$(MAKE) clean $(MFLAGS)
|
||||||
|
$(MAKE) all $(MFLAGS) HOST=x86_64-sortix
|
||||||
|
|
||||||
# Initializing RamDisk
|
# Initializing RamDisk
|
||||||
$(INITRD): suball
|
$(INITRD): suball
|
||||||
mkinitrd/mkinitrd initrd -o $(INITRD)
|
mkinitrd/mkinitrd $(SYSROOT)/bin/$(HOST) -o $(INITRD)
|
||||||
|
|
||||||
# Statistics
|
# Statistics
|
||||||
linecount:
|
linecount:
|
||||||
|
@ -92,18 +125,6 @@ install: all
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f /boot/sortix.bin
|
rm -f /boot/sortix.bin
|
||||||
rm -f /etc/grub.d/42_sortix
|
rm -f /etc/grub.d/42_sortix
|
||||||
update-grub
|
|
||||||
|
|
||||||
# Remote machine
|
|
||||||
|
|
||||||
install-remote: all
|
|
||||||
scp -r ./ $(REMOTE):$(REMOTECOPYDIR)
|
|
||||||
scp sortix/sortix.bin root@$(REMOTE):/boot
|
|
||||||
scp $(INITRD) root@$(REMOTE):/boot
|
|
||||||
ssh root@$(REMOTE) "init 6"
|
|
||||||
|
|
||||||
uninstall-remote:
|
|
||||||
ssh root@$(REMOTE) "rm /boot/sortix.bin"
|
|
||||||
|
|
||||||
# Packaging
|
# Packaging
|
||||||
|
|
||||||
|
@ -114,7 +135,7 @@ debfile: all
|
||||||
mkdir -p $(DEBDIR)
|
mkdir -p $(DEBDIR)
|
||||||
mkdir -p $(DEBDIR)/boot
|
mkdir -p $(DEBDIR)/boot
|
||||||
cp sortix/sortix.bin $(DEBDIR)/boot
|
cp sortix/sortix.bin $(DEBDIR)/boot
|
||||||
cp sortix/sortix.initrd $(DEBDIR)/boot
|
cp $(INITRD) $(DEBDIR)/boot
|
||||||
expr \( `stat --printf="%s" $(DEBDIR)/boot/sortix.bin` \
|
expr \( `stat --printf="%s" $(DEBDIR)/boot/sortix.bin` \
|
||||||
+ `stat --printf="%s" $(DEBDIR)/boot/sortix.initrd` \
|
+ `stat --printf="%s" $(DEBDIR)/boot/sortix.initrd` \
|
||||||
+ 1023 \) / 1024 > $(DEBDIR)/boot/deb.size
|
+ 1023 \) / 1024 > $(DEBDIR)/boot/deb.size
|
||||||
|
@ -137,14 +158,14 @@ debsource: all
|
||||||
rm -rf $(DEBSRCDIR)
|
rm -rf $(DEBSRCDIR)
|
||||||
mkdir -p $(DEBSRCDIR)
|
mkdir -p $(DEBSRCDIR)
|
||||||
for D in `ls | grep -v builds | grep -v sysroot`; do cp -r $$D $(DEBSRCDIR); done
|
for D in `ls | grep -v builds | grep -v sysroot`; do cp -r $$D $(DEBSRCDIR); done
|
||||||
(cd $(DEBSRCDIR) && make distclean)
|
(cd $(DEBSRCDIR) && make distclean SYSROOT=$(shell pwd)/$(DEBSRCDIR)/sysroot)
|
||||||
rm -rf $(DEBSRCDIR)/sysroot
|
rm -rf $(DEBSRCDIR)/sysroot
|
||||||
(cd builds && tar cfz $(DEBSRCNAME)-src.tar.gz $(DEBSRCNAME)-src)
|
(cd builds && tar cfz $(DEBSRCNAME)-src.tar.gz $(DEBSRCNAME)-src)
|
||||||
rm -rf $(DEBSRCDIR)
|
rm -rf $(DEBSRCDIR)
|
||||||
|
|
||||||
# Bootable images
|
# Bootable images
|
||||||
|
|
||||||
iso: all debsource
|
$(ISOFILE): all debsource
|
||||||
rm -rf $(ISODIR)
|
rm -rf $(ISODIR)
|
||||||
mkdir -p builds
|
mkdir -p builds
|
||||||
mkdir -p $(ISODIR)
|
mkdir -p $(ISODIR)
|
||||||
|
@ -155,8 +176,10 @@ iso: all debsource
|
||||||
grub-mkrescue -o $(ISOFILE) $(ISODIR)
|
grub-mkrescue -o $(ISOFILE) $(ISODIR)
|
||||||
rm -rf $(ISODIR)
|
rm -rf $(ISODIR)
|
||||||
|
|
||||||
|
iso: $(ISOFILE)
|
||||||
|
|
||||||
sortix.iso: iso
|
sortix.iso: iso
|
||||||
cp $(ISOFILE) sortix.iso
|
cp $(ISOFILE) $@
|
||||||
|
|
||||||
# Virtualization
|
# Virtualization
|
||||||
run-virtualbox: sortix.iso
|
run-virtualbox: sortix.iso
|
||||||
|
@ -165,4 +188,3 @@ run-virtualbox: sortix.iso
|
||||||
run-virtualbox-debug: sortix.iso
|
run-virtualbox-debug: sortix.iso
|
||||||
virtualbox --debug --start-running --startvm sortix
|
virtualbox --debug --start-running --startvm sortix
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
*.o
|
*.o
|
||||||
|
benchctxswitch
|
||||||
|
benchsyscall
|
||||||
|
|
|
@ -1,29 +1,40 @@
|
||||||
# Set up variables such that we can easily cross-compile.
|
include ../compiler.mak
|
||||||
OSROOT=..
|
include ../version.mak
|
||||||
include ../crosscompilemakefile.mak
|
include ../dirs.mak
|
||||||
|
|
||||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra
|
ifndef OPTLEVEL
|
||||||
|
OPTLEVEL=-O2
|
||||||
|
endif
|
||||||
|
|
||||||
INITRDDIR:=../initrd
|
ifndef CXXFLAGS
|
||||||
LOCALBINARIES:=\
|
CXXFLAGS:=$(OPTLEVEL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
BINARIES:=\
|
||||||
benchsyscall \
|
benchsyscall \
|
||||||
benchctxswitch \
|
benchctxswitch \
|
||||||
|
|
||||||
BINARIES:=$(addprefix $(INITRDDIR)/,$(LOCALBINARIES))
|
all: $(BINARIES)
|
||||||
|
|
||||||
all: install
|
.PHONY: all install uninstall clean
|
||||||
|
|
||||||
install: $(LOCALBINARIES)
|
install: all
|
||||||
cp $(LOCALBINARIES) $(INITRDDIR)
|
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||||
rm -f $(LOCALBINARIES)
|
install $(BINARIES) $(INSTALLBINDIR)/$(HOST)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
for FILE in $(INSTALLBINDIR); do \
|
||||||
|
rm -f $(INSTALLBINDIR)/$(HOST)/$$FILE; \
|
||||||
|
done
|
||||||
|
|
||||||
%: %.cpp
|
%: %.cpp
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -O2 -c $< -o $@.o
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||||
$(LD) $(LDFLAGS) $@.o -o $@ $(LIBS)
|
|
||||||
|
|
||||||
sh: mxsh
|
sh: mxsh
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(BINARIES) $(LOCALBINARIES) *.o
|
rm -f $(BINARIES) *.o
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
ifndef BITS
|
||||||
|
BITS:=$(shell getconf LONG_BIT)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef HOST
|
||||||
|
ifeq ($(BITS),64)
|
||||||
|
HOST:=x86_64-sortix
|
||||||
|
else
|
||||||
|
HOST:=i486-sortix
|
||||||
|
endif
|
||||||
|
MFLAGS:=$(MFLAGS) HOST=$(HOST)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(HOST),i486-sortix)
|
||||||
|
CPU:=x86
|
||||||
|
endif
|
||||||
|
ifeq ($(HOST),x86_64-sortix)
|
||||||
|
CPU:=x64
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef BUILDCC
|
||||||
|
BUILDCC:=gcc
|
||||||
|
endif
|
||||||
|
ifndef BUILDCXX
|
||||||
|
BUILDCXX:=g++
|
||||||
|
endif
|
||||||
|
ifndef BUILDAR
|
||||||
|
BUILDAR:=ar
|
||||||
|
endif
|
||||||
|
ifndef BUILDAS
|
||||||
|
BUILDAS:=as
|
||||||
|
endif
|
||||||
|
ifndef BUILDLD
|
||||||
|
BUILDAS:=ld
|
||||||
|
endif
|
||||||
|
ifndef BUILDOBJCOPY
|
||||||
|
BUILDOBJCOPY:=objcopy
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef HOSTCC
|
||||||
|
HOSTCC:=$(HOST)-gcc
|
||||||
|
endif
|
||||||
|
ifndef HOSTCXX
|
||||||
|
HOSTCXX:=$(HOST)-g++
|
||||||
|
endif
|
||||||
|
ifndef HOSTAR
|
||||||
|
HOSTAR:=$(HOST)-ar
|
||||||
|
endif
|
||||||
|
ifndef HOSTAS
|
||||||
|
HOSTAS:=$(HOST)-as
|
||||||
|
endif
|
||||||
|
ifndef HOSTLD
|
||||||
|
HOSTLD:=$(HOST)-ld
|
||||||
|
endif
|
||||||
|
ifndef HOSTOBJCOPY
|
||||||
|
HOSTOBJCOPY:=$(HOST)-objcopy
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC:=$(HOSTCC)
|
||||||
|
CXX:=$(HOSTCXX)
|
||||||
|
AR=:$(HOSTAR)
|
||||||
|
AS:=$(HOSTAS)
|
||||||
|
LD:=$(HOSTLD)
|
||||||
|
OBJCOPY:=$(HOSTOBJCOPY)
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
ifndef CPU
|
|
||||||
CPU=x86
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CPU),x86)
|
|
||||||
X86FAMILY=1
|
|
||||||
CPUDEFINES=-DPLATFORM_X86
|
|
||||||
CPUFLAGS=-m32
|
|
||||||
CPULDFLAGS=-melf_i386
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CPU),x64)
|
|
||||||
X86FAMILY=1
|
|
||||||
CPUDEFINES=-DPLATFORM_X64
|
|
||||||
CPUFLAGS=-m64
|
|
||||||
CPULDFLAGS=-melf_x86_64
|
|
||||||
endif
|
|
||||||
|
|
||||||
LIBMAXSIROOT:=$(OSROOT)/libmaxsi
|
|
||||||
SORTIXROOT:=$(OSROOT)/sortix
|
|
||||||
|
|
||||||
LIBC:=$(LIBMAXSIROOT)/start.o $(LIBMAXSIROOT)/libc.a
|
|
||||||
LIBS:=$(LIBC)
|
|
||||||
|
|
||||||
CPPFLAGS:=$(CPUDEFINES) -U_GNU_SOURCE -Ulinux -Dsortix
|
|
||||||
FLAGS:=-nostdinc -nostdlib -nostartfiles -nodefaultlibs
|
|
||||||
INCLUDES:=-I $(LIBMAXSIROOT)/preproc -I $(SORTIXROOT)/include
|
|
||||||
|
|
||||||
LD:=ld
|
|
||||||
LDFLAGS:=$(CPULDFLAGS)
|
|
||||||
CC:=gcc
|
|
||||||
CFLAGS:=$(CPUFLAGS) $(FLAGS) $(INCLUDES)
|
|
||||||
CXX:=g++
|
|
||||||
CXXFLAGS:=$(CPUFLAGS) $(FLAGS) $(INCLUDES) -fno-exceptions -fno-rtti
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,119 @@
|
||||||
|
ifndef SYSROOT
|
||||||
|
SYSROOT:=/
|
||||||
|
endif
|
||||||
|
|
||||||
|
# The locations from where the program will be invoked/run on the host machine.
|
||||||
|
# For instance, on Sortix programs are normally run from the /bin union
|
||||||
|
# directory, even though they are actually installed somewhere else.
|
||||||
|
ifndef RUNPREFIXNAME
|
||||||
|
RUNPREFIXNAME:=/
|
||||||
|
endif
|
||||||
|
RUNPREFIXNAME:=$(shell echo "$(RUNPREFIXNAME)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef RUNPREFIX
|
||||||
|
RUNPREFIX:=/$(RUNPREFIXNAME)
|
||||||
|
endif
|
||||||
|
RUNPREFIX:=$(shell echo "$(RUNPREFIX)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef RUNBINDIR
|
||||||
|
RUNBINDIR:=$(RUNPREFIX)/bin
|
||||||
|
endif
|
||||||
|
RUNBINDIR:=$(shell echo "$(RUNBINDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef RUNLIBDIR
|
||||||
|
RUNLIBDIR:=$(RUNPREFIX)/lib
|
||||||
|
endif
|
||||||
|
RUNLIBDIR:=$(shell echo "$(RUNLIBDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef RUNINCLUDEDIR
|
||||||
|
RUNINCLUDEDIR:=$(RUNPREFIX)/include
|
||||||
|
endif
|
||||||
|
RUNINCLUDEDIR:=$(shell echo "$(RUNINCLUDEDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef RUNBOOTDIR
|
||||||
|
RUNBOOTDIR:=$(RUNPREFIX)/boot
|
||||||
|
endif
|
||||||
|
RUNBOOTDIR:=$(shell echo "$(RUNBOOTDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
# Where the program will be really installed on the host machine. For instance,
|
||||||
|
# on Sortix programs are run from the /bin union directory, but they are
|
||||||
|
# installed somewhere else, these variables tells where. Note that programs must
|
||||||
|
# not depend on being installed here, they should detect the proper directories
|
||||||
|
# at (preferably) runtime, or during the install configuration step when
|
||||||
|
# installed through package management.
|
||||||
|
ifndef PREFIXNAME
|
||||||
|
PREFIXNAME:=/data/local
|
||||||
|
endif
|
||||||
|
PREFIXNAME:=$(shell echo "$(PREFIXNAME)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef PREFIX
|
||||||
|
PREFIX:=$(SYSROOT)/$(PREFIXNAME)
|
||||||
|
endif
|
||||||
|
PREFIX:=$(shell echo "$(PREFIX)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef BINDIR
|
||||||
|
BINDIR:=$(PREFIX)/bin
|
||||||
|
endif
|
||||||
|
BINDIR:=$(shell echo "$(BINDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef LIBDIR
|
||||||
|
LIBDIR:=$(PREFIX)/lib
|
||||||
|
endif
|
||||||
|
LIBDIR:=$(shell echo "$(LIBDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef INCLUDEDIR
|
||||||
|
INCLUDEDIR:=$(PREFIX)/include
|
||||||
|
endif
|
||||||
|
INCLUDEDIR:=$(shell echo "$(INCLUDEDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef BOOTDIR
|
||||||
|
BOOTDIR:=$(PREFIX)/boot
|
||||||
|
endif
|
||||||
|
BOOTDIR:=$(shell echo "$(BOOTDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
# Where the program will be installed on the build machine. This is mostly
|
||||||
|
# useful if cross compiling or producing a software distribution image. By
|
||||||
|
# default programs will be installed in the same location as the host machine.
|
||||||
|
ifdef INSTALLPREFIX
|
||||||
|
INSTALLPREFIX_WAS_SPECIFIED=1
|
||||||
|
endif
|
||||||
|
ifndef INSTALLPREFIX
|
||||||
|
INSTALLPREFIX:=$(PREFIX)
|
||||||
|
endif
|
||||||
|
INSTALLPREFIX:=$(shell echo "$(INSTALLPREFIX)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef INSTALLBINDIR
|
||||||
|
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||||
|
INSTALLBINDIR:=$(INSTALLPREFIX)/bin
|
||||||
|
else
|
||||||
|
INSTALLBINDIR:=$(BINDIR)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
INSTALLBINDIR:=$(shell echo "$(INSTALLBINDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef INSTALLLIBDIR
|
||||||
|
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||||
|
INSTALLLIBDIR:=$(INSTALLPREFIX)/lib
|
||||||
|
else
|
||||||
|
INSTALLLIBDIR:=$(LIBDIR)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
INSTALLLIBDIR:=$(shell echo "$(INSTALLLIBDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef INSTALLINCLUDEDIR
|
||||||
|
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||||
|
INSTALLINCLUDEDIR:=$(INSTALLPREFIX)/include
|
||||||
|
else
|
||||||
|
INSTALLINCLUDEDIR:=$(INCLUDEDIR)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
INSTALLINCLUDEDIR:=$(shell echo "$(INSTALLINCLUDEDIR)" | sed 's/\/\/*/\//g')
|
||||||
|
|
||||||
|
ifndef INSTALLBOOTDIR
|
||||||
|
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||||
|
INSTALLBOOTDIR:=$(INSTALLPREFIX)/boot
|
||||||
|
else
|
||||||
|
INSTALLBOOTDIR:=$(BOOTDIR)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
INSTALLBOOTDIR:=$(shell echo "$(INSTALLBOOTDIR)" | sed 's/\/\/*/\//g')
|
|
@ -6,3 +6,5 @@
|
||||||
*.a
|
*.a
|
||||||
pong
|
pong
|
||||||
conway
|
conway
|
||||||
|
snake
|
||||||
|
asteroids
|
||||||
|
|
|
@ -1,31 +1,42 @@
|
||||||
# Set up variables such that we can easily cross-compile.
|
include ../compiler.mak
|
||||||
OSROOT=..
|
include ../version.mak
|
||||||
include ../crosscompilemakefile.mak
|
include ../dirs.mak
|
||||||
|
|
||||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra
|
ifndef OPTLEVEL
|
||||||
|
OPTLEVEL=-O2
|
||||||
|
endif
|
||||||
|
|
||||||
INITRDDIR:=../initrd
|
ifndef CXXFLAGS
|
||||||
LOCALBINARIES:=\
|
CXXFLAGS:=$(OPTLEVEL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
BINARIES:=\
|
||||||
pong \
|
pong \
|
||||||
conway \
|
conway \
|
||||||
snake \
|
snake \
|
||||||
asteroids \
|
asteroids \
|
||||||
|
|
||||||
BINARIES:=$(addprefix $(INITRDDIR)/,$(LOCALBINARIES))
|
all: $(BINARIES)
|
||||||
|
|
||||||
all: install
|
.PHONY: all install uninstall clean
|
||||||
|
|
||||||
install: $(LOCALBINARIES)
|
install: all
|
||||||
cp $(LOCALBINARIES) $(INITRDDIR)
|
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||||
rm -f $(LOCALBINARIES)
|
install $(BINARIES) $(INSTALLBINDIR)/$(HOST)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
for FILE in $(INSTALLBINDIR); do \
|
||||||
|
rm -f $(INSTALLBINDIR)/$(HOST)/$$FILE; \
|
||||||
|
done
|
||||||
|
|
||||||
%: %.cpp
|
%: %.cpp
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -O2 -c $< -o $@.o
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||||
$(LD) $(LDFLAGS) $@.o -o $@ $(LIBS)
|
|
||||||
|
|
||||||
sh: mxsh
|
sh: mxsh
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(BINARIES) $(LOCALBINARIES) *.o
|
rm -f $(BINARIES) *.o
|
||||||
|
|
||||||
|
|
|
@ -1,29 +1,32 @@
|
||||||
ifndef CPU
|
include ../compiler.mak
|
||||||
CPU=x86
|
include ../version.mak
|
||||||
|
include ../dirs.mak
|
||||||
|
|
||||||
|
ifndef OPTLEVEL
|
||||||
|
OPTLEVEL:=-O2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CPU),x86)
|
ifeq ($(DEBUG_LIBC),1)
|
||||||
CPUDEFINES=-DPLATFORM_X86
|
FLAGSDEBUG=-g3
|
||||||
CPUFLAGS=-m32
|
else
|
||||||
CPULDFLAGS=-melf_i386
|
FLAGSDEBUG=$(OPTLEVEL)
|
||||||
CPUASFLAGS=-32
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CPU),x64)
|
CPUDIR:=$(CPU)
|
||||||
CPU=x64
|
|
||||||
CPUDEFINES=-DPLATFORM_X64
|
ifeq ($(HOST),i486-sortix)
|
||||||
CPUFLAGS=-fPIC -m64 -mno-red-zone
|
CPUFLAGS=
|
||||||
CPULDFLAGS=-melf_x86_64
|
|
||||||
CPUASFLAGS=-64
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CPPINCLUDES=-I preproc -I ../sortix/include
|
ifeq ($(HOST),x86_64-sortix)
|
||||||
CPPFLAGS=-DLIBMAXSI_LIBRARY -DSORTIX -U_GNU_SOURCE $(CPUDEFINES) $(CPPINCLUDES)
|
CPUFLAGS=-fPIC -mno-red-zone
|
||||||
FLAGS=$(CPUFLAGS) -Wall -Wextra -nostdlib -fno-builtin -nostartfiles \
|
endif
|
||||||
-nodefaultlibs -fno-stack-protector -nostdinc
|
|
||||||
|
CPPINCLUDES=-I preproc
|
||||||
|
CPPFLAGS=-DLIBMAXSI_LIBRARY -U_GNU_SOURCE $(CPUDEFINES) $(CPPINCLUDES)
|
||||||
|
FLAGS=$(CPUFLAGS) -Wall -Wextra -fno-stack-protector $(FLAGSDEBUG)
|
||||||
CFLAGS=$(FLAGS) -std=c99
|
CFLAGS=$(FLAGS) -std=c99
|
||||||
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -nostdinc++ -fno-rtti
|
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -fno-rtti
|
||||||
LDFLAGS=$(CPULDFLAGS)
|
|
||||||
ASFLAGS=$(CPUASFLAGS)
|
ASFLAGS=$(CPUASFLAGS)
|
||||||
|
|
||||||
OBJS=\
|
OBJS=\
|
||||||
|
@ -48,8 +51,8 @@ isatty.o \
|
||||||
kernelinfo.o \
|
kernelinfo.o \
|
||||||
init.o \
|
init.o \
|
||||||
signal.o \
|
signal.o \
|
||||||
$(CPU)/signal.o \
|
$(CPUDIR)/signal.o \
|
||||||
$(CPU)/fork.o \
|
$(CPUDIR)/fork.o \
|
||||||
time.o \
|
time.o \
|
||||||
random.o \
|
random.o \
|
||||||
abs.o \
|
abs.o \
|
||||||
|
@ -188,7 +191,7 @@ crc32.o \
|
||||||
SORTIXOBJS:=$(addprefix sortix/,$(SORTIXOBJS))
|
SORTIXOBJS:=$(addprefix sortix/,$(SORTIXOBJS))
|
||||||
SORTIXCPPFLAGS:=-DSORTIX_KERNEL
|
SORTIXCPPFLAGS:=-DSORTIX_KERNEL
|
||||||
|
|
||||||
BINS=libc.a libg.a libmaxsi.a libmaxsi-sortix.a $(CRTOBJ)
|
BINS=libc.a libg.a libm.a libstdc++.a libmaxsi.a libmaxsi-sortix.a $(CRTOBJ)
|
||||||
|
|
||||||
all: $(BINS)
|
all: $(BINS)
|
||||||
|
|
||||||
|
@ -196,36 +199,33 @@ all: $(BINS)
|
||||||
install-lib-dirs install-libs
|
install-lib-dirs install-libs
|
||||||
|
|
||||||
libmaxsi.a: $(OBJS)
|
libmaxsi.a: $(OBJS)
|
||||||
ar rcs libmaxsi.a $(OBJS)
|
$(HOSTAR) rcs libmaxsi.a $(OBJS)
|
||||||
|
|
||||||
libmaxsi.so: $(OBJS)
|
|
||||||
ld $(LDFLAGS) -shared -o $@ $(OBJS)
|
|
||||||
|
|
||||||
libmaxsi-sortix.a: $(SORTIXOBJS)
|
libmaxsi-sortix.a: $(SORTIXOBJS)
|
||||||
ar rcs libmaxsi-sortix.a $(SORTIXOBJS)
|
$(HOSTAR) rcs libmaxsi-sortix.a $(SORTIXOBJS)
|
||||||
|
|
||||||
libc.a: libmaxsi.a
|
libc.a: libmaxsi.a
|
||||||
ln -sf $< $@
|
ln -sf $< $@
|
||||||
|
|
||||||
libc.so: libmaxsi.so
|
|
||||||
ln -sf $< $@
|
|
||||||
|
|
||||||
libg.a: libc.a
|
libg.a: libc.a
|
||||||
ln -sf $< $@
|
ln -sf $< $@
|
||||||
|
|
||||||
libg.so: libc.so
|
libm.a:
|
||||||
ln -sf $< $@
|
$(HOSTAR) rcs $@
|
||||||
|
|
||||||
start.o: $(CPU)/start.o
|
libstdc++.a:
|
||||||
|
$(HOSTAR) rcs $@
|
||||||
|
|
||||||
|
start.o: $(CPUDIR)/start.o
|
||||||
ln -f $< $@
|
ln -f $< $@
|
||||||
|
|
||||||
crt1.o: $(CPU)/crt1.o
|
crt1.o: $(CPUDIR)/crt1.o
|
||||||
ln -f $< $@
|
ln -f $< $@
|
||||||
|
|
||||||
crti.o: $(CPU)/crti.o
|
crti.o: $(CPUDIR)/crti.o
|
||||||
ln -f $< $@
|
ln -f $< $@
|
||||||
|
|
||||||
crtn.o: $(CPU)/crtn.o
|
crtn.o: $(CPUDIR)/crtn.o
|
||||||
ln -f $< $@
|
ln -f $< $@
|
||||||
|
|
||||||
# header preprocessing
|
# header preprocessing
|
||||||
|
@ -239,20 +239,20 @@ headers: $(HEADERDIRS) $(HEADERS)
|
||||||
|
|
||||||
# standard library
|
# standard library
|
||||||
%.o: %.c headers
|
%.o: %.c headers
|
||||||
gcc -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
|
$(HOSTCC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
|
||||||
|
|
||||||
%.o: %.cpp headers
|
%.o: %.cpp headers
|
||||||
g++ -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
|
||||||
%.o: %.s
|
%.o: %.s
|
||||||
as $(ASFLAGS) $< -o $@
|
$(HOSTAS) $(ASFLAGS) $< -o $@
|
||||||
|
|
||||||
# libmaxsi-sortix
|
# libmaxsi-sortix
|
||||||
sortix:
|
sortix:
|
||||||
mkdir -p sortix
|
mkdir -p sortix
|
||||||
|
|
||||||
sortix/%.o: %.cpp $(HEADERS) sortix
|
sortix/%.o: %.cpp $(HEADERS) sortix
|
||||||
g++ -c $< -o $@ $(CPPFLAGS) $(SORTIXCPPFLAGS) $(CXXFLAGS)
|
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(SORTIXCPPFLAGS) $(CXXFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o sortix/*.o c/*.o x86/*.o x64/*.o *.a *.so
|
rm -f *.o sortix/*.o c/*.o x86/*.o x64/*.o *.a *.so
|
||||||
|
@ -263,19 +263,26 @@ clean:
|
||||||
install: install-headers install-libs
|
install: install-headers install-libs
|
||||||
|
|
||||||
install-include-dirs: headers
|
install-include-dirs: headers
|
||||||
mkdir -p $(SYSROOT)/usr/include
|
mkdir -p $(INSTALLINCLUDEDIR)
|
||||||
for D in $(UNPROCHEADERDIRS); do mkdir -p $(SYSROOT)/usr/$$D || exit $?; done
|
DIRS=$$(echo $(UNPROCHEADERDIRS) | \
|
||||||
|
tr ' ' '\n' | \
|
||||||
|
sed 's/include\/*//'); \
|
||||||
|
for D in $$DIRS; do \
|
||||||
|
mkdir -p $(INSTALLINCLUDEDIR)/$$D || exit $?; \
|
||||||
|
done
|
||||||
|
|
||||||
install-headers: install-include-dirs headers
|
install-headers: install-include-dirs headers
|
||||||
for SRC in $(HEADERS); do DEST=`echo $$SRC | sed 's/preproc/include/'`; cp $$SRC $(SYSROOT)/usr/$$DEST || exit $?; done
|
for SRC in $(HEADERS); do \
|
||||||
|
DEST=`echo $$SRC | sed 's/preproc\///'`; \
|
||||||
|
cp -P $$SRC $(INSTALLINCLUDEDIR)/$$DEST || exit $?; \
|
||||||
|
done
|
||||||
|
|
||||||
install-lib-dirs: all
|
install-lib-dirs:
|
||||||
mkdir -p $(SYSROOT)/usr/lib
|
mkdir -p $(INSTALLLIBDIR)
|
||||||
|
mkdir -p $(INSTALLLIBDIR)/$(HOST)
|
||||||
|
|
||||||
install-libs: install-lib-dirs all
|
install-libs: install-lib-dirs
|
||||||
for F in $(BINS); do cp -P $$F $(SYSROOT)/usr/lib || exit $?; done
|
for F in $(BINS); do \
|
||||||
touch deleteme.cpp
|
cp -P $$F $(INSTALLLIBDIR)/$(HOST) || exit $?; \
|
||||||
g++ $(CPUFLAGS) -c deleteme.cpp -o deleteme.o
|
done
|
||||||
for F in libgcc.so libm.so libstdc++.so; do ld $(CPULDFLAGS) -shared deleteme.o -o $(SYSROOT)/usr/lib/$$F; done
|
|
||||||
rm -f deleteme.o deleteme.cpp
|
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,27 @@
|
||||||
ifndef O
|
include ../compiler.mak
|
||||||
O:=-O3
|
include ../version.mak
|
||||||
endif
|
include ../dirs.mak
|
||||||
|
|
||||||
ifndef CPU
|
ifndef OPTLEVEL
|
||||||
CPU=x86
|
OPTLEVEL:=-O2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CPU),x86)
|
ifeq ($(CPU),x86)
|
||||||
BUILDID=x86
|
BUILDID=x86
|
||||||
X86FAMILY=1
|
X86FAMILY=1
|
||||||
CPUDEFINES=-DPLATFORM_X86
|
CPUFLAGS=
|
||||||
CPUFLAGS=-m32
|
CPULDFLAGS=
|
||||||
CPULDFLAGS=-melf_i386
|
|
||||||
CPUASFLAGS=-32
|
|
||||||
CPUNASMFLAGS=-felf32
|
CPUNASMFLAGS=-felf32
|
||||||
CPUOBJS=$(CPU)/boot.o $(CPU)/base.o $(CPU)/x86.o
|
CPUOBJS:=$(CPU)/boot.o $(CPU)/base.o $(CPU)/x86.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CPU),x64)
|
ifeq ($(CPU),x64)
|
||||||
BUILDID=x64
|
BUILDID=x64
|
||||||
X86FAMILY=1
|
X86FAMILY=1
|
||||||
CPUDEFINES=-DPLATFORM_X64
|
CPUFLAGS=-ffreestanding -mno-red-zone
|
||||||
CPUFLAGS=-m64 -ffreestanding -mno-red-zone
|
CPULDFLAGS=-z max-page-size=0x1000
|
||||||
CPULDFLAGS=-melf64-little -z max-page-size=0x1000
|
|
||||||
CPUASFLAGS=-64
|
|
||||||
CPUNASMFLAGS=-felf64
|
CPUNASMFLAGS=-felf64
|
||||||
CPUOBJS=$(CPU)/base.o $(CPU)/x64.o
|
CPUOBJS:=$(CPU)/base.o $(CPU)/x64.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef X86FAMILY
|
ifdef X86FAMILY
|
||||||
|
@ -49,11 +45,7 @@ endif
|
||||||
|
|
||||||
DIRS=. x64 x86 x86-family fs kb kb/layout
|
DIRS=. x64 x86 x86-family fs kb kb/layout
|
||||||
|
|
||||||
DEFINES:=-DSORTIX_KERNEL -U_GNU_SOURCE $(CPUDEFINES)
|
DEFINES:=-DSORTIX_KERNEL -U_GNU_SOURCE
|
||||||
ifeq ($(JSSORTIX),1)
|
|
||||||
DEFINES:=$(DEFINES) -DPLATFORM_SERIAL -DJSSORTIX
|
|
||||||
BUILDID:=$(BUILDID)-js
|
|
||||||
endif
|
|
||||||
ifeq ($(PANIC_SHORT),1)
|
ifeq ($(PANIC_SHORT),1)
|
||||||
DEFINES:=$(DEFINES) -DPANIC_SHORT
|
DEFINES:=$(DEFINES) -DPANIC_SHORT
|
||||||
endif
|
endif
|
||||||
|
@ -71,22 +63,22 @@ ifdef VERSION
|
||||||
DEFINES:=$(DEFINES) -DVERSIONSTR=\"$(VERSION)\"
|
DEFINES:=$(DEFINES) -DVERSIONSTR=\"$(VERSION)\"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
INCLUDES=-I. -Iinclude -I../libmaxsi/preproc
|
INCLUDES=-I. -Iinclude
|
||||||
CPPFLAGS=$(INCLUDES) $(DEFINES)
|
CPPFLAGS=$(INCLUDES) $(DEFINES)
|
||||||
ifeq ($(DEBUG_KERNEL),1)
|
ifeq ($(DEBUG_KERNEL),1)
|
||||||
FLAGSDEBUG=-g3
|
FLAGSDEBUG=-g3
|
||||||
else
|
else
|
||||||
FLAGSDEBUG=-s $(O)
|
FLAGSDEBUG=$(OPTLEVEL)
|
||||||
endif
|
endif
|
||||||
FLAGS=$(CPUFLAGS) -Wall -Wall -Wextra -nostdlib -fno-builtin -nostartfiles \
|
FLAGS=$(CPUFLAGS) -Wall -Wall -Wextra -nostdlib -nostartfiles \
|
||||||
-nodefaultlibs -fno-stack-protector $(FLAGSDEBUG)
|
-nodefaultlibs -fno-stack-protector $(FLAGSDEBUG)
|
||||||
CFLAGS=$(FLAGS)
|
CFLAGS=$(FLAGS)
|
||||||
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -fno-rtti
|
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -fno-rtti
|
||||||
ASFLAGS=$(CPUASFLAGS)
|
ASFLAGS=
|
||||||
NASMFLAGS=$(CPUNASMFLAGS)
|
NASMFLAGS=$(CPUNASMFLAGS)
|
||||||
|
|
||||||
STATICLIBS=\
|
STATICLIBS=\
|
||||||
../libmaxsi/libmaxsi-sortix.a \
|
-lmaxsi-sortix \
|
||||||
|
|
||||||
HEADERDIRS:=$(shell find include -type d)
|
HEADERDIRS:=$(shell find include -type d)
|
||||||
HEADERS:=$(shell find include -type f)
|
HEADERS:=$(shell find include -type f)
|
||||||
|
@ -146,10 +138,10 @@ fs/initfs.o \
|
||||||
fs/ramfs.o \
|
fs/ramfs.o \
|
||||||
fs/videofs.o \
|
fs/videofs.o \
|
||||||
ata.o \
|
ata.o \
|
||||||
$(STATICLIBS) \
|
|
||||||
end.o # Must be last, determines kernel size.
|
|
||||||
|
|
||||||
JSOBJS:=$(subst .o,-js.o,$(OBJS))
|
ALLOBJS=\
|
||||||
|
$(OBJS) \
|
||||||
|
end.o
|
||||||
|
|
||||||
all: sortix.bin
|
all: sortix.bin
|
||||||
|
|
||||||
|
@ -157,26 +149,18 @@ all: sortix.bin
|
||||||
|
|
||||||
headers:
|
headers:
|
||||||
|
|
||||||
# jssortix compilation
|
|
||||||
|
|
||||||
jssortix: jssortix.bin
|
|
||||||
|
|
||||||
sortix-x86-js.tmp: $(OBJS)
|
|
||||||
ld -melf_i386 -Ttext 100000 -o sortix-x86-js-internal.out $(OBJS)
|
|
||||||
objcopy -O binary sortix-x86-js-internal.out $@
|
|
||||||
|
|
||||||
# x64 compilation
|
# x64 compilation
|
||||||
x64/boot.o: x64/boot.s
|
x64/boot.o: x64/boot.s
|
||||||
as -64 $< -o $@
|
$(HOSTAS) -64 $< -o $@
|
||||||
|
|
||||||
sortix-x64.tmp: $(OBJS) x64/boot.o
|
sortix-x64.tmp: $(ALLOBJS) x64/boot.o
|
||||||
ld -N -melf_x86_64 -Ttext 100000 -o sortix-x64-internal.out x64/boot.o $(OBJS)
|
$(HOSTLD) -N -melf_x86_64_sortix -Ttext 100000 -o sortix-x64-internal.out x64/boot.o $(OBJS) $(STATICLIBS) end.o
|
||||||
objcopy sortix-x64-internal.out -O elf32-i386 sortix-x64.tmp
|
$(HOSTOBJCOPY) sortix-x64-internal.out -O elf32-i386 sortix-x64.tmp
|
||||||
|
|
||||||
# x86 compilation
|
# x86 compilation
|
||||||
|
|
||||||
sortix-x86.tmp: $(OBJS)
|
sortix-x86.tmp: $(ALLOBJS)
|
||||||
ld -melf_i386 -Ttext 100000 -o $@ $(OBJS)
|
$(HOSTLD) -melf_i386_sortix -Ttext 100000 -o $@ $(OBJS) $(STATICLIBS) end.o
|
||||||
|
|
||||||
# general rules
|
# general rules
|
||||||
|
|
||||||
|
@ -184,10 +168,10 @@ sortix.bin: sortix-$(BUILDID).tmp
|
||||||
cp -vu $< $@
|
cp -vu $< $@
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
g++ -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
|
||||||
%.o: %.s
|
%.o: %.s
|
||||||
as $(ASFLAGS) $< -o $@
|
$(HOSTAS) $< -o $@ $(ASFLAGS)
|
||||||
|
|
||||||
%.o: %.asm
|
%.o: %.asm
|
||||||
nasm $(NASMFLAGS) $< -o $@
|
nasm $(NASMFLAGS) $< -o $@
|
||||||
|
@ -196,15 +180,26 @@ clean:
|
||||||
for D in $(DIRS); do rm -f $$D/*.o $$D/*.bin $$D/*.out $$D/*.tmp; done
|
for D in $(DIRS); do rm -f $$D/*.o $$D/*.bin $$D/*.out $$D/*.tmp; done
|
||||||
|
|
||||||
# Installation into sysroot
|
# Installation into sysroot
|
||||||
install: install-headers
|
install: install-headers install-kernel
|
||||||
|
|
||||||
install-include-dirs: headers
|
install-include-dirs: headers
|
||||||
for DIR in $(HEADERDIRS); do \
|
mkdir -p $(INSTALLINCLUDEDIR)
|
||||||
mkdir -p $(SYSROOT)/usr/$$DIR; \
|
DIRS=$$(echo $(HEADERDIRS) | \
|
||||||
|
tr ' ' '\n' | \
|
||||||
|
sed 's/include\/*//'); \
|
||||||
|
for D in $$DIRS; do \
|
||||||
|
mkdir -p $(INSTALLINCLUDEDIR)/$$D || exit $?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
install-headers: install-include-dirs headers
|
install-headers: install-include-dirs headers
|
||||||
for FILE in $(HEADERS); do \
|
for SRC in $(HEADERS); do \
|
||||||
cp $$FILE $(SYSROOT)/usr/$$FILE; \
|
DEST=`echo $$SRC | sed 's/include\///'`; \
|
||||||
|
cp -P $$SRC $(INSTALLINCLUDEDIR)/$$DEST || exit $?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
install-kernel: install-kernel-binary
|
||||||
|
|
||||||
|
install-kernel-binary:
|
||||||
|
mkdir -p $(INSTALLBOOTDIR)/$(HOST)
|
||||||
|
cp -P sortix.bin $(INSTALLBOOTDIR)/$(HOST)
|
||||||
|
|
||||||
|
|
|
@ -1 +1,25 @@
|
||||||
*.o
|
*.o
|
||||||
|
init
|
||||||
|
calc
|
||||||
|
cat
|
||||||
|
cp
|
||||||
|
echo
|
||||||
|
rm
|
||||||
|
sh
|
||||||
|
mxsh
|
||||||
|
clear
|
||||||
|
ls
|
||||||
|
pwd
|
||||||
|
help
|
||||||
|
uptime
|
||||||
|
memstat
|
||||||
|
chvideomode
|
||||||
|
uname
|
||||||
|
kernelinfo
|
||||||
|
editor
|
||||||
|
kill
|
||||||
|
column
|
||||||
|
pager
|
||||||
|
head
|
||||||
|
tail
|
||||||
|
type
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
# Set up variables such that we can easily cross-compile.
|
include ../compiler.mak
|
||||||
OSROOT=..
|
include ../version.mak
|
||||||
include ../crosscompilemakefile.mak
|
include ../dirs.mak
|
||||||
|
|
||||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra
|
ifndef OPTLEVEL
|
||||||
|
OPTLEVEL=-O2
|
||||||
|
endif
|
||||||
|
|
||||||
INITRDDIR:=../initrd
|
ifndef CXXFLAGS
|
||||||
LOCALBINARIES:=\
|
CXXFLAGS:=$(OPTLEVEL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
BINARIES:=\
|
||||||
init \
|
init \
|
||||||
calc \
|
calc \
|
||||||
cat \
|
cat \
|
||||||
|
@ -31,21 +38,25 @@ head \
|
||||||
tail \
|
tail \
|
||||||
type \
|
type \
|
||||||
|
|
||||||
BINARIES:=$(addprefix $(INITRDDIR)/,$(LOCALBINARIES))
|
all: $(BINARIES)
|
||||||
|
|
||||||
all: install
|
.PHONY: all install uninstall clean
|
||||||
|
|
||||||
install: $(LOCALBINARIES)
|
install: all
|
||||||
cp $(LOCALBINARIES) $(INITRDDIR)
|
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||||
rm -f $(LOCALBINARIES)
|
install $(BINARIES) $(INSTALLBINDIR)/$(HOST)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
for FILE in $(INSTALLBINDIR); do \
|
||||||
|
rm -f $(INSTALLBINDIR)/$(HOST)/$$FILE; \
|
||||||
|
done
|
||||||
|
|
||||||
%: %.cpp
|
%: %.cpp
|
||||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -O2 -c $< -o $@.o
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||||
$(LD) $(LDFLAGS) $@.o -o $@ $(LIBS)
|
|
||||||
|
|
||||||
sh: mxsh
|
sh: mxsh
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(BINARIES) $(LOCALBINARIES) *.o
|
rm -f $(BINARIES) *.o
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
VERSION=0.8dev
|
Loading…
Reference in New Issue