# Declaration of variables # Generic Variables GCC=gcc GXX=g++ CFLAGS= -Wall -pedantic -Wextra -std=gnu99 -g -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-but-set-variable CXXFLAGS= -Wall -pedantic -Wextra -Wno-reorder -Wno-unused-variable -std=c++0x -g INCLUDES = $(foreach dir, $(INCDIR), -I$(dir)) INCDIR= src/vrpn src/vrpn/quat src/vrpn/build $(BESRCDIR) $(CLISRCDIR) $(FESRCDIR) $(MASRCDIR) ../quad/inc LIBS= -lpthread -lvrpn -lquat -Lsrc/vrpn/build -Lsrc/vrpn/build/quat -L../quad/lib -lquad_app -lcommands -lgraph_blocks -lcomputation_graph -lm OBJDIR=obj # Manual Assist Specific Variables MABINARY=ManualAssist MASRCDIR=src/manual_assist MASOURCES := $(wildcard $(MASRCDIR)/*.c) MAOBJECTS = $(MASOURCES:$(MASRCDIR)/%.c=$(OBJDIR)/%.o) # Backend Specific Variables BEBINARY=BackEnd BESRCDIR=src/backend BECSOURCES := $(wildcard $(BESRCDIR)/*.c ) BECOBJECTS = $(BECSOURCES:$(BESRCDIR)/%.c=$(OBJDIR)/%.o) BECPPSOURCES := $(wildcard $(BESRCDIR)/*.cpp ) BECPPOBJECTS = $(BECPPSOURCES:$(BESRCDIR)/%.cpp=$(OBJDIR)/%.o) # CLI Specific Variables CLIBINARY=Cli CLISRCDIR=src/cli CLISOURCES := $(wildcard $(CLISRCDIR)/*.c) CLIOBJECTS = $(CLISOURCES:$(CLISRCDIR)/%.c=$(OBJDIR)/%.o) SYMLINKS= getnodes addnode getparam setparam getsource setsource getoutput gettrackable settrackable # Frontend-common stuff FESRCDIR=src/frontend FECSOURCES := $(wildcard $(FESRCDIR)/*.c ) FECOBJECTS = $(FECSOURCES:$(FESRCDIR)/%.c=$(OBJDIR)/%.o) OBJECTS=$(CLIOBJECTS) $(BECOBJECTS) $(BECPPOBJECTS) $(FECOBJECTS) # Default target all: quad logs objdir backend cli $(SYMLINKS) frontend.a GroundStation manualassist quad: $(MAKE) -C ../quad $(SYMLINKS): $(CLIBINARY) $(foreach symlink, $(SYMLINKS), ln -s $(CLIBINARY) $(symlink);) vrpn: vrpn/build frontend.a: $(FECOBJECTS) ar rvs frontend.a $(wildcard $(OBJDIR)/frontend_*.o) cli: $(CLIOBJECTS) $(FECOBJECTS) $(GCC) $(CFLAGS) $^ -o $(CLIBINARY) $(INCLUDES) $(LIBS) $(CLIOBJECTS) : $(OBJDIR)/%.o : $(CLISRCDIR)/%.c $(GCC) $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS) backend: $(BECPPOBJECTS) $(BECOBJECTS) $(GXX) $(CXXFLAGS) $^ -o $(BEBINARY) $(INCLUDES) $(LIBS) $(FECOBJECTS) : $(OBJDIR)/%.o : $(FESRCDIR)/%.c $(GCC) $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS) $(BECOBJECTS) : $(OBJDIR)/%.o : $(BESRCDIR)/%.c $(GCC) $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS) $(BECPPOBJECTS) : $(OBJDIR)/%.o : $(BESRCDIR)/%.cpp $(GXX) $(CXXFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS) manualassist: $(MAOBJECTS) $(FECOBJECTS) $(GCC) $(CFLAGS) $^ -o $(MABINARY) $(INCLUDES) $(LIBS) $(MAOBJECTS) : $(OBJDIR)/%.o : $(MASRCDIR)/%.c $(GCC) $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS) vrpn/build: mkdir -p src/vrpn/build cd src/vrpn/build && cmake .. && make GroundStation: cd gui/MicroCART && qmake-qt5 cd gui/MicroCART && make ln -s gui/MicroCART/MicroCART GroundStation logs: mkdir -p logs objdir: mkdir -p obj clean_logs: rm -f logs/* clean: rm -rf $(OBJDIR)/ $(BEBINARY) $(CLIBINARY) $(SYMLINKS) $(MABINARY) debug: