summaryrefslogtreecommitdiff
path: root/unix/Makefile
blob: dba01df65d1691eaba84d4dc1c25467bcd42e050 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#########################################################################
#
# 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