######################################################################### # # Makefile for 'gpsxmple' for Unix-like systems. # Currently supported OSs: Linux, QNX 6.x # ######################################################################### MBG_TARGET_1 = gpsxmple MBG_TARGET_2 = set-serial-port MBG_TARGETS = $(MBG_TARGET_1) $(MBG_TARGET_2) # Set V to 1 to build verbosely. V ?= 0 # The lines below make the build output non-verbose by default. # Call make with parameter "V=1" to get verbose output. ifneq ("$(V)","0") Q := QM := vecho = @true else Q := @ QM := -s vecho = @echo endif MBGLIB = ../mbglib MBGLIB_DIRS += common VPATH += .. VPATH += $(foreach dir,$(MBGLIB_DIRS),$(MBGLIB)/$(dir)) # List of object files for an intermediate, static library. LIB_OBJS += extiohlp.o LIB_OBJS += xtiocomm.o LIB_OBJS += cfg_hlp.o LIB_OBJS += mbgextio.o LIB_OBJS += mbgserio.o LIB_OBJS += gpsserio.o LIB_OBJS += gpsutils.o LIB_OBJS += aes128.o LIB_OBJS += mbgerror.o LIB_OBJS += str_util.o LIB_OBJS += lan_util.o LIB_OBJS += xdevfeat.o MBG_LIB_BASENAME = mbg MBG_LIB_FILE = lib$(MBG_LIB_BASENAME).a LDLIBS += $(MBG_LIB_FILE) # Try to determine whether the OS is QNX OS_IS_QNX := $(shell uname | grep -i QNX && echo "QNX" ) # set up the compiler flags CPPFLAGS += -Wall ifdef DEBUG # build with debugging enabled CPPFLAGS += -g -DDEBUG=$(DEBUG) else # build with specified optimization level CPPFLAGS += -O2 endif CPPFLAGS += -D_USE_SOCKET_IO=1 CPPFLAGS += -I. CPPFLAGS += $(foreach dir,$(MBGLIB_DIRS),-I$(MBGLIB)/$(dir)) ifneq ($(OS_IS_QNX),) # for QNX we must link the socket library explicitely LDFLAGS += -lsocket # we don't yet support serial I/O under QNX CPPFLAGS += -D_USE_SERIAL_IO=0 else CPPFLAGS += -D_USE_SERIAL_IO=1 endif %.o: %.c $(vecho) " $(CC) $@" $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< %.o: %.cpp $(vecho) " $(CC) $@" $(Q)$(CC) $(CPPFLAGS) $(CXXLAGS) -c -o $@ $< .PHONY: all all: $(MBG_TARGETS) $(MBG_TARGETS): $(MBG_LIB_FILE) $(vecho) " Linking $@" $(Q)$(CC) -o $@ $(LDFLAGS) $@.o $(OBJS) $(LDLIBS) $(MBG_TARGET_1): $(MBG_TARGET_1).o $(MBG_TARGET_2): $(MBG_TARGET_2).o # Options for the archiver to build a static library ARFLAGS := rcs ifneq ("$(V)","0") # In verbose mode we also make the archiver verbose. ARFLAGS := $(ARFLAGS)v endif $(MBG_LIB_FILE): $(LIB_OBJS) $(vecho) " $(AR) $@" $(Q)$(AR) $(ARFLAGS) $@ $(LIB_OBJS) .PHONY: clean clean: rm -f *.o *~ core rm -f $(MBG_LIB_FILE) rm -f $(MBG_TARGETS) .PHONY: distclean distclean: clean