Adds simple stdlib compilation.

This commit is contained in:
Felix Queißner 2016-05-07 19:43:41 +02:00
parent 98900c9069
commit 054dd7fba3
3 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1,42 @@
AS=gcc
CC=gcc
CXX=g++
LD=ld
AR=ar
FLAGS = -mno-sse -ffreestanding -m32 -Werror -Wall -iquote include -O3 -g
ASFLAGS = $(FLAGS)
CFLAGS = $(FLAGS)
CXXFLAGS = $(FLAGS) -std=c++14 -fno-rtti -fno-exceptions -fno-leading-underscore -fno-use-cxa-atexit -nostdlib -fno-builtin
ARTIFACT = libstd.a
SRCS = $(shell find -regextype egrep -regex '.*/.*\.(cpp|S|c)')
OBJS = $(addsuffix .o, $(notdir $(basename $(SRCS))))
all: $(ARTIFACT)
$(ARTIFACT): $(OBJS)
$(AR) rcs $(ARTIFACT) $(addprefix obj/, $^)
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c -o obj/$@ $<
%.o: %.c
$(CC) $(ASFLAGS) -c -o obj/$@ $<
%.o: %.S
$(AS) $(CFLAGS) -c -o obj/$@ $<
%.o: src/%.cpp
$(CXX) $(CXXFLAGS) -c -o obj/$@ $<
%.o: src/%.c
$(CC) $(ASFLAGS) -c -o obj/$@ $<
%.o: src/%.S
$(AS) $(CFLAGS) -c -o obj/$@ $<
deploy: $(ARTIFACT)
cp $(ARTIFACT) /srv/tftp/$(ARTIFACT)

View file

@ -0,0 +1,7 @@
#pragma once
#include <stddef.h>
void * memcpy ( void * destination, const void * source, size_t num );
void * memset ( void * ptr, int value, size_t num );

View file

@ -0,0 +1,20 @@
#include "string.h"
void * memcpy ( void * destination, const void * source, size_t num )
{
char *d = destination;
char const * s = source;
for(size_t i = 0; i < num; i++) {
d[i] = s[i];
}
return destination;
}
void * memset ( void * ptr, int value, size_t num )
{
char *p = ptr;
for(size_t i = 0; i < num; i++) {
p[i] = value;
}
return ptr;
}