README: mention SDL2 backend
[rofl0r-concol.git] / Makefile
blob451fb2db90e08ff8f5f5ddca1cec7fa824fb57fe
1 #need to set BACKEND to either TERMBOX, NCURSES, SDL, or SDL2
2 #e.g. $ make BACKEND=SDL2 -j4
4 LIBBASENAME=concol256
5 LIBNAME=lib$(LIBBASENAME)
7 LINKLIBS_TERMBOX=-ltermbox
8 LINKLIBS_SDL=-lSDL
9 LINKLIBS_SDL2=-lSDL2
10 PKG_CONFIG = pkg-config
11 LINKLIBS_NCURSES := $(shell $(PKG_CONFIG) --libs ncurses) -lpthread
12 LINKLIBS_LEPT := $(shell $(PKG_CONFIG) --libs lept)
14 CFLAGS_OWN=-Wall -Wextra -static -std=c99
15 CFLAGS_DBG=-g -O0
16 CFLAGS_OPT=-Os -s
17 CFLAGS_OPT_AGGRESSIVE=-O3 -s -flto -fwhole-program
18 CPPFLAGS_BE=-DCONSOLE_BACKEND=$(subst 2,,$(BACKEND))_CONSOLE
20 DYNEXT=.so
21 STAEXT=.a
23 TEST=examples/console_test
24 PLASMA=examples/plasma
25 CONPIX=examples/console_conpix
26 CONPIXS=examples/console_conpix_scroll
28 EXAMPLES=$(TEST) $(PLASMA) $(CONPIX) $(CONPIXS)
30 -include config.mak
32 OUTLIB=$(LIBNAME)_$(BACKEND)
33 DYNLIB=$(OUTLIB)$(DYNEXT)
34 STALIB=$(OUTLIB)$(STAEXT)
35 MAINLIB=$(LIBNAME)$(DYNEXT)
37 ifeq ($(BACKEND),)
38 $(error need to set BACKEND!)
39 endif
40 ifeq ($(BACKEND),TERMBOX)
41 BACKEND_SRCS=tbconsole.c tbconsole_chartab.c
42 LINKLIBS=$(LINKLIBS_TERMBOX)
43 else
44 ifeq ($(BACKEND),NCURSES)
45 BACKEND_SRCS=ncconsole.c color_reader.c
46 LINKLIBS=$(LINKLIBS_NCURSES)
47 else
48 ifeq ($(subst 2,,$(BACKEND)),SDL)
49 BACKEND_SRCS=sdlconsole.c sdlconsole_chartab.c
50 FONTSRCS=fonts/testfont.c fonts/int10font08.c fonts/int10font14.c fonts/int10font16.c
51 endif
52 ifeq ($(BACKEND),SDL)
53 LINKLIBS=$(LINKLIBS_SDL)
54 endif
55 ifeq ($(BACKEND),SDL2)
56 SDL2ADD=-DUSE_SDL2=1
57 LINKLIBS=$(LINKLIBS_SDL2)
58 endif
59 endif
60 endif
62 #ifndef $(LINKLIBS)
63 # $(error "need to set BACKEND to either termbox, ncurses, or sdl")
64 #endif
66 SRCS=console.c $(BACKEND_SRCS) $(FONTSRCS)
67 OBJS=$(SRCS:.c=.o)
70 all: $(STALIB) $(DYNLIB) $(MAINLIB)
72 clean-symlink:
73 rm -f $(MAINLIB)
75 clean-all:
76 rm -f $(LIBNAME)*.a
77 rm -f $(LIBNAME)*.so
78 rm -f *.o
79 rm -f examples/*.o
80 rm -f fonts/*.o
82 clean:
83 rm -f $(DYNLIB)
84 rm -f $(STALIB)
85 rm -f $(OBJS)
86 rm -f $(EXAMPLES)
88 $(STALIB): $(OBJS)
89 ar rc $@ $(OBJS)
90 ranlib $@
92 $(DYNLIB): $(OBJS)
93 $(CC) -shared $(LDFLAGS) -o $@ $(OBJS) $(LINKLIBS)
94 # $(CC) -shared $(LDFLAGS) -Wl,-soname=$@ -o $@ $(OBJS) $(LINKLIBS)
96 $(MAINLIB): $(DYNLIB)
97 ln -sf $(DYNLIB) $(MAINLIB)
99 %.o: %.c
100 $(CC) -fPIC $(CPPFLAGS) $(CFLAGS) $(INC) $(CPPFLAGS_BE) $(SDL2ADD) -c -o $@ $<
102 $(TEST): $(TEST).o $(STALIB)
103 $(CC) $(CFLAGS) -o $@ $^ $(LINKLIBS)
105 $(PLASMA): $(PLASMA).o $(STALIB)
106 $(CC) $(CFLAGS) -o $@ $^ $(LINKLIBS) -lm
108 $(CONPIX): $(CONPIX).o $(STALIB)
109 $(CC) $(CFLAGS) -o $@ $^ $(LINKLIBS) $(LINKLIBS_LEPT)
111 $(CONPIXS): $(CONPIXS).o $(STALIB)
112 $(CC) $(CFLAGS) -o $@ $^ $(LINKLIBS) $(LINKLIBS_LEPT)
114 examples: $(EXAMPLES)
117 .PHONY: all clean examples