#
#  makefile for OpenGPSRec
#  creates module ogrt_module.o (RT process) 
#  and ogr_main (user process)
#

CC=gcc
LD=ld

LINUX_HDR=/usr/src/linux/include
RTAI_HDR=/usr/src/rtai/include
OGR_HDR=../include

BINDIR=../../bin

# adjust include directories accordingly
CFLAGS=-O2 -I$(RTAI_HDR) -I$(LINUX_HDR) -I$(OGR_HDR) -Wall \
 -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer \
 -fno-strict-aliasing -fno-common -pipe

#CFLAGS=-g -I$(RTAI_HDR) -I$(LINUX_HDR) -I$(OGR_HDR) -Wall \
# -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer \
# -fno-strict-aliasing -fno-common -pipe

DEP=$(OGR_HDR)/ogr_defines.h $(OGR_HDR)/ogr_structs.h \
 $(OGR_HDR)/ogr_globals.h
DEPR=$(OGR_HDR)/ogr_defines.h $(OGR_HDR)/ogrt_defines.h \
 $(OGR_HDR)/ogr_structs.h $(OGR_HDR)/ogr_globals.h $(OGR_HDR)/ogrt_globals.h

all: ogr_main ogrt_module.o 
	mv ogrt_module.o $(BINDIR) 
	mv ogr_main $(BINDIR)

# create real-time module
ogrt_gp2021.o: ogrt_gp2021.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_gp2021.c

ogrt_inout.o: ogrt_inout.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_inout.c

ogrt_maths.o: ogrt_maths.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_maths.c

ogrt_proc.o: ogrt_proc.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_proc.c

ogrt_preamble.o: ogrt_preamble.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_preamble.c

ogrt_multisat.o: ogrt_multisat.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_multisat.c

ogrt_monosat.o: ogrt_monosat.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_monosat.c

ogrt_riseset.o: ogrt_riseset.c $(DEP) $(DEPR)
	$(CC) $(CFLAGS) -c -D__KERNEL__ -DMODULE ogrt_riseset.c

ogrt_module.o: ogrt_gp2021.o ogrt_inout.o ogrt_maths.o \
 ogrt_preamble.o ogrt_proc.o ogrt_multisat.o ogrt_monosat.o \
 ogrt_riseset.o 
	$(LD) -r ogrt_gp2021.o ogrt_inout.o ogrt_maths.o \
 ogrt_preamble.o ogrt_proc.o ogrt_multisat.o ogrt_monosat.o \
 ogrt_riseset.o -o ogrt_module.o

ogr_inout.o: ogr_inout.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_inout.c

ogr_msgdump.o: ogr_msgdump.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_msgdump.c

ogr_navdecode.o: ogr_navdecode.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_navdecode.c

ogr_sched.o: ogr_sched.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_sched.c

ogr_solveosg.o: ogr_solveosg.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_solveosg.c

ogr_solvessvl.o: ogr_solvessvl.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_solvessvl.c

ogr_tools.o: ogr_tools.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_tools.c

ogr_timefun.o: ogr_timefun.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_timefun.c

ogr_main.o: ogr_main.c $(DEP)
	$(CC) $(CFLAGS) -c ogr_main.c

ogr_main: ogr_main.o ogr_solveosg.o ogr_solvessvl.o \
 ogr_navdecode.o ogr_inout.o ogr_sched.o ogr_timefun.o \
 ogr_tools.o ogr_msgdump.o
	$(CC) -o ogr_main ogr_main.o ogr_msgdump.o \
 ogr_solveosg.o ogr_solvessvl.o ogr_navdecode.o \
 ogr_inout.o ogr_sched.o ogr_timefun.o ogr_tools.o -lm

