Created
October 15, 2013 22:15
-
-
Save Pacifist117/6999522 to your computer and use it in GitHub Desktop.
This file contains 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
CC = gcc | |
CFLAGS = -D_GNU_SOURCE -g -Wall -O0 | |
# Common Library and Linking Flags | |
LIBS = -lrt -lm -lpthread -lchronos | |
LDFLAGS = -L/usr/lib -L/usr/local/lib -L /usr/realtime/ -L/usr/realtime/lib/ | |
# Common install directories | |
#INSTALL_DIR = /usr/local/chronos | |
INSTALL_DIR = /usr/local/lib | |
# Common source directories and binary files | |
# The directories to search in for source files for the main executable | |
SRC = src/*.c | |
INCLUDE = -I /usr/realtime/include/ -I include/ -I /usr/local/include/librealtime/ | |
# Common object files | |
# Extensions to use to find files to compile | |
#################################################################################################################### | |
# IRMOS # | |
#################################################################################################################### | |
IRMOS_FLAGS=$(CFLAGS) -DKERN_IRMOS | |
IRMOS_OUT=libs/libirmos_realtime.a | |
IRMOS_OBJS=obj/librttest_irmos.o | |
#################################################################################################################### | |
# ChronOS # | |
#################################################################################################################### | |
CHRONOS_FLAGS=$(CFLAGS) -DKERN_CHRONOS -Wl,-rpath | |
CHRONOS_LIBS=-lchronos $(LIBS) | |
CHRONOS_OUT=libs/libchronos_realtime.a | |
CHRONOS_OBJS=obj/librttest_chronos.o | |
#################################################################################################################### | |
# Vanilla # | |
#################################################################################################################### | |
VANILLA_FLAGS=$(CFLAGS) -Wl,-rpath | |
VANILLA_OUT=libs/librealtime.a | |
VANILLA_OBJS=obj/librttest_vanilla.o | |
#################################################################################################################### | |
# Xenomai # | |
#################################################################################################################### | |
XENOMAI_FLAGS=$(CFLAGS) -DKERN_XENOMAI -Wl,-rpath | |
XENOMAI_LDFLAGS=$(LDFLAGS) -L/usr/realtime/lib/ | |
XENOMAI_LIBS=$(LIBS) -lxenomai -lpthread_rt | |
XENOMAI_OUT=libs/libxeno_realtime.a | |
XENOMAI_OBJS=obj/librttest_xenomai.o | |
#################################################################################################################### | |
# RTAI # | |
#################################################################################################################### | |
RTAI_FLAGS=$(CFLAGS) -DKERN_RTAI -Wl,-rpath | |
RTAI_INCLUDE=$(INCLUDE) -I /usr/realtime/include/ | |
RTAI_LDFLAGS=$(LDFLAGS) -L /usr/realtime/lib/ | |
RTAI_OUT=libs/librtai_realtime.a | |
RTAI_OBJS=obj/librttest_rtai.o | |
#################################################################################################################### | |
# Litmus^RT # | |
#################################################################################################################### | |
LITMUS_FLAGS=$(CFLAGS) -DKERN_LITMUS -Wl,-rpath | |
LITMUS_INCLUDE=-I /usr/realtime/arch/x86/include/asm/ $(INCLUDE) | |
LITMUS_LIBS=$(LIBS) -llitmus_realtime -llitmus | |
LITMUS_OUT=libs/liblitmus_realtime.a | |
LITMUS_OBJS=obj/librttest_litmus.o | |
#################################################################################################################### | |
# Preempt-RT # | |
#################################################################################################################### | |
PREEMPT_FLAGS=$(CFLAGS) -DKERN_PREEMPT | |
PREEMPT_OUT=libs/libpreempt_realtime.a | |
PREEMPT_OBJS=obj/librttest_preempt.o | |
#################################################################################################################### | |
# SCHED_DEADLINE # | |
#################################################################################################################### | |
SCHED_DEAD_FLAGS=$(CFLAGS) -DKERN_SCHED_DEAD | |
SCHED_DEAD_OUT=libs/libsched_dead_realtime.a | |
SCHED_DEAD_OBJS=obj/librttest_sched_dead.o | |
# List all 'phony' targets | |
.PHONY: all clean install irmos chronos vanilla xenomai rtai litmus preempt sched_dead | |
# Delete the default suffixes | |
.SUFFIXES: | |
all: $(IRMOS_OUT) $(CHRONOS_OUT) $(VANILLA_OUT) $(XENOMAI_OUT) $(RTAI_OUT) $(LITMUS_OUT) $(PREEMPT_OUT) $(SCHED_DEAD_OUT) | |
$(IRMOS_OUT): | |
$(CC) $(INCLUDE) $(IRMOS_LIBS) $(IRMOS_FLAGS) -c $(SRC) | |
mv *.o obj/irmos/ | |
ar rcs $(IRMOS_OUT) obj/irmos/*.o | |
$(CHRONOS_OUT): | |
$(CC) $(INCLUDE) $(CHRONOS_LIBS) $(CHRONOS_FLAGS) -c $(SRC) | |
mv *.o obj/chronos/ | |
ar rcs $(CHRONOS_OUT) obj/chronos/*.o | |
$(VANILLA_OUT): | |
$(CC) $(INCLUDE) $(VANILLA_LIBS) $(VANILLA_FLAGS) -c $(SRC) #-o $(VANILLA_OBJS) | |
mv *.o obj/vanilla/ | |
ar rcs $(VANILLA_OUT) obj/vanilla/*.o | |
$(XENOMAI_OUT): | |
$(CC) $(INCLUDE) $(XENOMAI_LIBS) $(XENOMAI_FLAGS) -c $(SRC) #-o $(XENOMAI_OBJS) | |
mv *.o obj/xenomai/ | |
ar rcs $(XENOMAI_OUT) obj/xenomai/*.o | |
$(RTAI_OUT): | |
$(CC) $(INCLUDE) $(RTAI_LIBS) $(RTAI_FLAGS) -c $(SRC) -o $(RTAI_OBJS) | |
mv *.o obj/rtai/ | |
ar rcs $(RTAI_OUT) obj/rtai/*.o | |
$(LITMUS_OUT): | |
$(CC) $(INCLUDE) $(LITMUS_LIBS) $(LITMUS_FLAGS) -c $(SRC) -o $(LITMUS_OBJS) | |
mv *.o obj/litmus/ | |
ar rcs $(LITMUS_OUT) obj/litmus/*.o | |
$(PREEMPT_OUT): | |
$(CC) $(INCLUDE) $(PREEMPT_LIBS) $(PREEMPT_FLAGS) -c $(SRC) -o $(PREEMPT_OBJS) | |
mv *.o obj/preempt/ | |
ar rcs $(PREEMPT_OUT) obj/preempt/*.o | |
$(SCHED_DEAD_OUT): | |
$(CC) $(INCLUDE) $(SCHED_DEAD_LIBS) $(SCHED_DEAD_FLAGS) -c $(SRC) -o $(SCHED_DEAD_OBJS) | |
mv *.o obj/sched_dead/ | |
ar rcs $(SCHED_DEAD_OUT) obj/sched_dead/*.o | |
# Make a specific static libary | |
irmos: $(IRMOS_OUT) | |
chronos: $(CHRONOS_OUT) | |
vanilla: $(VANILLA_OUT) | |
xenomai: $(XENOMAI_OUT) | |
rtai: $(RTAI_OUT) | |
litmus: $(LITMUS_OUT) | |
preempt: $(PREEMPT_OUT) | |
sched_dead: $(SCHED_DEAD_OUT) | |
# Clean all object, dependency, and binary files | |
%.o-rm: | |
@echo ' CLEAN $*.o' | |
@rm -f $*.o | |
@rm -f $(*D)/.$(*F).d | |
clean: $(IRMOS_OBJS:%=%-rm) $(VANILLA_OBJS:%=%-rm) $(CHRONOS_OBJS:%=%-rm) $(XENOMAI_OBJS:%=%-rm) $(RTAI_OBJS:%=%-rm) $(LITMUS_OBJS:%=%-rm) $(PREEMPT_OBJS:%=%-rm) $(SCHED_DEAD_OBJS:%=%-rm) | |
@echo ' CLEAN ' $(IRMOS_OUT) | |
@rm -f $(IRMOS_OUT) | |
@echo ' CLEAN ' $(CHRONOS_OUT) | |
@rm -f $(CHRONOS_OUT) | |
@echo ' CLEAN ' $(VANILLA_OUT) | |
@rm -f $(VANILLA_OUT) | |
@echo ' CLEAN ' $(XENOMAI_OUT) | |
@rm -f $(XENOMAI_OUT) | |
@echo ' CLEAN ' $(RTAI_OUT) | |
@rm -f $(RTAI_OUT) | |
@echo ' CLEAN ' $(LITMUS_OUT) | |
@rm -f $(LITMUS_OUT) | |
@echo ' CLEAN ' $(PREEMPT_OUT) | |
@rm -f $(PREEMPT_OUT) | |
@echo ' CLEAN ' $(SCHED_DEAD_OUT) | |
@rm -f $(SCHED_DEAD_OUT) | |
# Install the executable in the right place, link to it, and calculate slopes | |
install: all | |
@echo ' INSTALL' $(BINARY) | |
@cp $(BINARY) $(INSTALL_DIR)/$(BINARY) | |
@echo ' LINK ' $(BIN_DIR)/$(BINARY) '->' $(INSTALL_DIR)/$(BINARY); | |
@rm -f $(BIN_DIR)/$(BINARY); | |
@ln -s $(INSTALL_DIR)/$(BINARY) $(BIN_DIR)/$(BINARY); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment