mirror of
				https://gitlab.com/sortix/sortix.git
				synced 2023-02-13 20:55:38 -05:00 
			
		
		
		
	Currently it lets you query the name of the kernel, its version, and the build timestamp of the kernelinfo.cpp file.
		
			
				
	
	
		
			146 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
ifndef CPU
 | 
						|
    CPU=x86
 | 
						|
endif
 | 
						|
 | 
						|
BINS=libc.a libg.a libmaxsi.a libmaxsi-sortix.a
 | 
						|
 | 
						|
ifeq ($(CPU),x86)
 | 
						|
    CPUDEFINES=-DPLATFORM_X86
 | 
						|
    CPUFLAGS=-m32
 | 
						|
    CPULDFLAGS=-melf_i386
 | 
						|
    CPUASFLAGS=-32
 | 
						|
endif
 | 
						|
 | 
						|
ifeq ($(CPU),x64)
 | 
						|
    CPU=x64
 | 
						|
    CPUDEFINES=-DPLATFORM_X64
 | 
						|
    CPUFLAGS=-fPIC -m64
 | 
						|
    CPULDFLAGS=-melf_x86_64
 | 
						|
    CPUASFLAGS=-64
 | 
						|
endif
 | 
						|
 | 
						|
CPPINCLUDES=-I preproc -I ..
 | 
						|
CPPFLAGS=-DLIBMAXSI_LIBRARY -DSORTIX -U_GNU_SOURCE $(CPUDEFINES) $(CPPINCLUDES)
 | 
						|
FLAGS=$(CPUFLAGS) -Wall -Wextra -nostdlib -fno-builtin -nostartfiles \
 | 
						|
                  -nodefaultlibs -fno-stack-protector -nostdinc
 | 
						|
CFLAGS=$(FLAGS) -std=c99
 | 
						|
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -nostdinc++ -fno-rtti
 | 
						|
LDFLAGS=$(CPULDFLAGS)
 | 
						|
ASFLAGS=$(CPUASFLAGS)
 | 
						|
 | 
						|
OBJS=\
 | 
						|
ctype.o \
 | 
						|
file.o \
 | 
						|
fdio.o \
 | 
						|
stdio.o \
 | 
						|
dir.o \
 | 
						|
fddir-sortix.o \
 | 
						|
setjmp.o \
 | 
						|
sortix-sound.o \
 | 
						|
process.o \
 | 
						|
thread.o \
 | 
						|
io.o \
 | 
						|
terminal.o \
 | 
						|
kernelinfo.o \
 | 
						|
init.o \
 | 
						|
signal.o \
 | 
						|
$(CPU)/signal.o \
 | 
						|
start.o \
 | 
						|
time.o \
 | 
						|
random.o \
 | 
						|
integer.o \
 | 
						|
c++.o \
 | 
						|
memory.o \
 | 
						|
heap.o \
 | 
						|
sort.o \
 | 
						|
string.o \
 | 
						|
error.o \
 | 
						|
format.o \
 | 
						|
 | 
						|
UNPROCHEADERDIRS:=$(shell find include -type d)
 | 
						|
UNPROCHEADERS:=$(shell find include -type f)
 | 
						|
HEADERDIRS:=$(patsubst include%,preproc%,$(UNPROCHEADERDIRS))
 | 
						|
HEADERS:=$(patsubst include%,preproc%,$(UNPROCHEADERS))
 | 
						|
 | 
						|
SORTIXOBJS=\
 | 
						|
c++.o \
 | 
						|
memory.o \
 | 
						|
heap.o \
 | 
						|
string.o \
 | 
						|
error.o \
 | 
						|
format.o \
 | 
						|
 | 
						|
SORTIXOBJS:=$(addprefix sortix/,$(SORTIXOBJS))
 | 
						|
SORTIXCPPFLAGS:=-DSORTIX_KERNEL
 | 
						|
 | 
						|
all: $(BINS)
 | 
						|
 | 
						|
libmaxsi.a: $(OBJS)
 | 
						|
	ar rcs libmaxsi.a $(OBJS)
 | 
						|
 | 
						|
libmaxsi.so: $(OBJS)
 | 
						|
	ld $(LDFLAGS) -shared -o $@ $(OBJS)
 | 
						|
 | 
						|
libmaxsi-sortix.a: $(SORTIXOBJS)
 | 
						|
	ar rcs libmaxsi-sortix.a $(SORTIXOBJS)
 | 
						|
 | 
						|
libc.a: libmaxsi.a
 | 
						|
	ln -sf $< $@ 
 | 
						|
 | 
						|
libc.so: libmaxsi.so
 | 
						|
	ln -sf $< $@ 
 | 
						|
 | 
						|
libg.a: libc.a
 | 
						|
	ln -sf $< $@ 
 | 
						|
 | 
						|
libg.so: libc.so
 | 
						|
	ln -sf $< $@ 
 | 
						|
 | 
						|
start.o: $(CPU)/start.o
 | 
						|
	ln -sf $< $@ 
 | 
						|
 | 
						|
# header preprocessing
 | 
						|
$(HEADERDIRS):
 | 
						|
	mkdir -p $@
 | 
						|
 | 
						|
preproc/%: include/% $(HEADERDIRS)
 | 
						|
	mxmpp -I decl $< -o $@
 | 
						|
 | 
						|
headers: $(HEADERDIRS) $(HEADERS)
 | 
						|
 | 
						|
# standard library
 | 
						|
%.o: %.c headers
 | 
						|
	gcc -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
 | 
						|
 | 
						|
%.o: %.cpp headers
 | 
						|
	g++ -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
 | 
						|
 | 
						|
%.o: %.s
 | 
						|
	as $(ASFLAGS) $< -o $@
 | 
						|
 | 
						|
# libmaxsi-sortix
 | 
						|
sortix:
 | 
						|
	mkdir -p sortix
 | 
						|
 | 
						|
sortix/%.o: %.cpp $(HEADERS) sortix
 | 
						|
	g++ -c $< -o $@ $(CPPFLAGS) $(SORTIXCPPFLAGS) $(CXXFLAGS) 
 | 
						|
 | 
						|
clean:
 | 
						|
	rm -f *.o sortix/*.o c/*.o x86/*.o x64/*.o *.a *.so
 | 
						|
	rm -f $(OBJS)
 | 
						|
	rm -rf sortix $(HEADERDIRS)
 | 
						|
 | 
						|
# Installation into sysroot
 | 
						|
install:
 | 
						|
	mkdir -p $(SYSROOT)/usr/lib
 | 
						|
	for F in $(BINS); do cp -P $$F $(SYSROOT)/usr/lib || exit $?; done
 | 
						|
	for D in $(UNPROCHEADERDIRS); do mkdir -p $(SYSROOT)/usr/$$D || exit $?; done
 | 
						|
	for SRC in $(HEADERS); do DEST=`echo $$SRC | sed 's/preproc/include/'`; cp $$SRC $(SYSROOT)/usr/$$DEST || exit $?; done
 | 
						|
	mkdir -p $(SYSROOT)/usr/include
 | 
						|
	cp start.o $(SYSROOT)/usr/lib/crtbegin.o
 | 
						|
	touch deleteme.cpp
 | 
						|
	g++ $(CPUFLAGS) -c deleteme.cpp -o deleteme.o
 | 
						|
	for F in crt0.o crtn.o crt1.o crtend.o crtbeginT.o crti.o; do cp deleteme.o $(SYSROOT)/usr/lib/$$F; 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
 | 
						|
 |