45 lines
1.2 KiB
Makefile
45 lines
1.2 KiB
Makefile
CC = aarch64-none-elf-gcc
|
|
CXX = aarch64-none-elf-g++
|
|
AS = aarch64-none-elf-as
|
|
AR = aarch64-none-elf-ar
|
|
prefix:=$(HOME)/.cros/root
|
|
|
|
COMMANDS_SRCS = $(wildcard src/commands/*.cpp)
|
|
SHELL_OBJS = src/shell.o src/utility.o src/command.o
|
|
INIT_OBJ = init.o
|
|
|
|
COMMANDS_TARGETS = $(COMMANDS_SRCS:src/commands/%.cpp=bin/%)
|
|
SHELL_TARGET = shell
|
|
INIT_TARGET = init
|
|
|
|
CXXFLAGS = -I$(prefix)/include -Isrc -Isrc/commands -ffreestanding -nostdlib -fpermissive -fno-exceptions -fno-rtti -Wall -Wextra -ggdb -O0
|
|
LDFLAGS = -L$(prefix)/lib -nostdlib
|
|
LIBS = -lc -lsyscall
|
|
|
|
.PHONY: all
|
|
all: $(COMMANDS_TARGETS) $(SHELL_TARGET) $(INIT_TARGET)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf ./bin $(SHELL_TARGET) $(INIT_TARGET) $(SHELL_OBJS) $(INIT_OBJ) src/commands/*.o
|
|
|
|
.PHONY: install
|
|
install:
|
|
mkdir -p $(prefix)/bin
|
|
cp -a bin/. $(prefix)/bin
|
|
cp $(SHELL_TARGET) $(prefix)/bin
|
|
cp $(INIT_TARGET) $(prefix)/bin
|
|
|
|
# Compiling individual command files
|
|
bin/%: src/commands/%.o
|
|
@mkdir -p bin
|
|
$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $@ $< $(LIBS)
|
|
|
|
# Compiling shell.cpp
|
|
$(SHELL_TARGET): $(SHELL_OBJS)
|
|
$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
# Compiling shell INIT
|
|
$(INIT_TARGET): $(INIT_OBJ)
|
|
$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $@ $^ $(LIBS)
|