-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
139 lines (117 loc) · 4.12 KB
/
Makefile
File metadata and controls
139 lines (117 loc) · 4.12 KB
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
###############################################################################
# #
# Makefile for libplot #
# #
# Developed by : #
# AquaticEcoDynamics (AED) Group #
# School of Agriculture and Environment #
# The University of Western Australia #
# #
# Copyright 2013-2026 : The University of Western Australia #
# #
# libplot is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# libplot is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
ifeq ($(shell uname),Linux)
OSTYPE=$(shell uname -s)
else ifeq ($(shell uname),Darwin)
OSTYPE=$(shell uname -s)
else ifeq ($(shell uname),FreeBSD)
OSTYPE=$(shell uname -s)
else
OSTYPE=$(shell uname -o)
endif
ifeq ($(MDEBUG),true)
DEBUG=true
endif
srcdir=src
incdir=include
INCLUDES=-I${incdir} -I.
LIBS=-lgd -lpng -ljpeg -lm
CFLAGS=-O3
ifeq ($(WITH_XPLOTS),)
WITH_XPLOTS=true
endif
ifeq ($(OSTYPE),Darwin)
uibasic=macbasic
srcext=m
CC=clang
else ifeq ($(OSTYPE),Msys)
uibasic=winbasic
srcext=c
CC=gcc
else
uibasic=xbasic
srcext=c
endif
ifeq ($(MDEBUG),true)
CFLAGS+=-fsanitize=address
endif
ifeq ($(DEBUG),true)
CFLAGS+=-g
endif
objdir=obj
TARGET=lib/libplot.a
OBJS=${objdir}/${uibasic}.o \
${objdir}/colours.o \
${objdir}/plotter.o
ifeq ($(OSTYPE),Linux)
CFLAGS+=-Wno-format-truncation
endif
ifeq ($(WITH_XPLOTS),true)
CFLAGS+=-DXPLOTS
endif
ifeq ($(OSTYPE),Darwin)
INCLUDES+=-I/opt/local/include -I/usr/local/include -I/opt/homebrew/include
LIBS+=-framework Cocoa -L/opt/local/lib -L/usr/local/lib -L/opt/homebrew/lib
else ifneq ($(OSTYPE),Msys)
INCLUDES+=-I/usr/local/include
LIBS+=-lX11
else
ifeq ("$(wildcard '../ancillary/windows')", "")
INCLUDES+=-I../ancillary/include
LIBS+=-L../ancillary/lib
else
INCLUDES+=-I../ancillary/windows/include
LIBS+=-L../ancillary/windows/lib
endif
endif
# if we are building static lib...
#CFLAGS+=-fPIE
CFLAGS+=-fPIC
all: ${TARGET}
${TARGET}: ${objdir} ${OBJS} lib
ar rv $@ ${OBJS}
ranlib $@
clean: ${objdir}
@touch ${objdir}/1.o
@/bin/rm ${objdir}/*.o
@/bin/rmdir ${objdir}
@touch tstmap tstfont
@/bin/rm tstmap tstfont
distclean: clean
@touch mod mod_s lib
@/bin/rm -rf lib mod mod_s
lib:
@mkdir lib
${objdir}:
@mkdir ${objdir}
${objdir}/%.o: ${srcdir}/%.c ${incdir}/%.h
$(CC) -Wall $(CFLAGS) $(INCLUDES) -g -c $< -o $@
${objdir}/${uibasic}.o: ${srcdir}/${uibasic}.${srcext}
$(CC) -Wall $(CFLAGS) $(INCLUDES) -g -c $< -o $@
tstmap: tests/tstmap.c ${TARGET}
$(CC) -DTRUE_COLOUR=1 $(CFLAGS) $(INCLUDES) tests/tstmap.c ${TARGET} $(LIBS) -o $@
tstfont: tests/tstfont.c ${TARGET}
$(CC) -DTRUE_COLOUR=1 $(CFLAGS) $(INCLUDES) tests/tstfont.c ${TARGET} $(LIBS) -o $@