Created
February 3, 2014 17:44
-
-
Save lawrencejones/8788620 to your computer and use it in GitHub Desktop.
Platform compatible
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- makefile -*- | |
SHELL = /bin/sh | |
VPATH = $(SRCDIR) | |
# Binary utilities. | |
# If the host appears to be x86, use the normal tools. | |
# If it's x86-64, use the compiler and linker in 32-bit mode. | |
# Otherwise assume cross-tools are installed as i386-elf-*. | |
X86 = i.86\|pentium.*\|[pk][56]\|nexgen\|viac3\|6x86\|athlon.*\|i86pc | |
X86_64 = x86_64 | |
I386 := $(shell bash -c "i386-elf-gcc --version 2>/dev/null") | |
ifneq (0, $(shell expr `uname -m` : '$(X86)')) | |
CC = gcc | |
LD = ld | |
OBJCOPY = objcopy | |
else | |
ifneq (0, $(shell expr `uname -m` : '$(X86_64)')) | |
CC = gcc -m32 | |
LD = ld -melf_i386 | |
OBJCOPY = objcopy | |
endif | |
ifdef I386 | |
CC = i386-elf-gcc | |
LD = i386-elf-ld | |
OBJCOPY = i386-elf-objcopy | |
ARCH_PREFIX = i386-elf- | |
endif | |
endif | |
ifeq ($(strip $(shell command -v $(CC) 2> /dev/null)),) | |
$(warning *** Compiler ($(CC)) not found. Did you set $$PATH properly? Please refer to the Getting Started section in the documentation for details. ***) | |
endif | |
# Compiler and assembler invocation. | |
DEFINES = | |
WARNINGS = -Wall -W -Wstrict-prototypes -Wmissing-prototypes -Wsystem-headers | |
CFLAGS = -g -msoft-float -O | |
CPPFLAGS = -nostdinc -I$(SRCDIR) -I$(SRCDIR)/lib | |
ASFLAGS = -Wa,--gstabs | |
LDFLAGS = | |
DEPS = -MMD -MF $(@:.o=.d) | |
# Turn off -fstack-protector, which we don't support. | |
ifeq ($(strip $(shell echo | $(CC) -fno-stack-protector -E - > /dev/null 2>&1; echo $$?)),0) | |
CFLAGS += -fno-stack-protector | |
endif | |
# Turn off --build-id in the linker, which confuses the Pintos loader. | |
ifeq ($(strip $(shell $(LD) --help | grep -q build-id; echo $$?)),0) | |
LDFLAGS += -Wl,--build-id=none | |
endif | |
%.o: %.c | |
@echo " CC $^" | |
@$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS) $(WARNINGS) $(DEFINES) $(DEPS) | |
%.o: %.S | |
@echo " CC $^" | |
@$(CC) -c $< -o $@ $(ASFLAGS) $(CPPFLAGS) $(DEFINES) $(DEPS) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment