blob: 63880e9a8f615a48934592ab487efd8b61d5a74a [file] [log] [blame]
James Kuszmaul871d0712021-01-17 11:30:43 -08001#
2# Makefile
3#
4# Copyright (C) 2010 Creytiv.com
5#
6
7# Master version number
8VER_MAJOR := 0
9VER_MINOR := 5
10VER_PATCH := 0
11
12PROJECT := rew
13VERSION := 0.5.0
14OPT_SPEED := 1
15
16LIBRE_MK := $(shell [ -f ../re/mk/re.mk ] && \
17 echo "../re/mk/re.mk")
18ifeq ($(LIBRE_MK),)
19LIBRE_MK := $(shell [ -f /usr/share/re/re.mk ] && \
20 echo "/usr/share/re/re.mk")
21endif
22ifeq ($(LIBRE_MK),)
23LIBRE_MK := $(shell [ -f /usr/local/share/re/re.mk ] && \
24 echo "/usr/local/share/re/re.mk")
25endif
26
27include $(LIBRE_MK)
28
29# List of modules
30MODULES += shim
31MODULES += trice
32MODULES += pcp
33
34LIBS += -lm
35
36INSTALL := install
37ifndef PREFIX
38ifeq ($(DESTDIR),)
39PREFIX := /usr/local
40else
41PREFIX := /usr
42endif
43endif
44ifeq ($(LIBDIR),)
45LIBDIR := $(PREFIX)/lib
46endif
47INCDIR := $(PREFIX)/include/rew
48CFLAGS += -I$(LIBRE_INC) -Iinclude
49
50
51MODMKS := $(patsubst %,src/%/mod.mk,$(MODULES))
52SHARED := librew$(LIB_SUFFIX)
53STATIC := librew.a
54
55
56include $(MODMKS)
57
58
59OBJS ?= $(patsubst %.c,$(BUILD)/%.o,$(filter %.c,$(SRCS)))
60OBJS += $(patsubst %.S,$(BUILD)/%.o,$(filter %.S,$(SRCS)))
61
62
63all: $(SHARED) $(STATIC)
64
65
66-include $(OBJS:.o=.d)
67
68
69$(SHARED): $(OBJS)
70 @echo " LD $@"
71 @$(LD) $(LFLAGS) $(SH_LFLAGS) $^ -L$(LIBRE_SO) -lre $(LIBS) -o $@
72
73
74$(STATIC): $(OBJS)
75 @echo " AR $@"
76 @$(AR) $(AFLAGS) $@ $^
77ifneq ($(RANLIB),)
78 @$(RANLIB) $@
79endif
80
81librew.pc:
82 @echo 'prefix='$(PREFIX) > librew.pc
83 @echo 'exec_prefix=$${prefix}' >> librew.pc
84 @echo 'libdir=$${prefix}/lib' >> librew.pc
85 @echo 'includedir=$${prefix}/include/rew' >> librew.pc
86 @echo '' >> librew.pc
87 @echo 'Name: librew' >> librew.pc
88 @echo 'Description: ' >> librew.pc
89 @echo 'Version: '$(VERSION) >> librew.pc
90 @echo 'URL: https://github.com/alfredh/rew' >> librew.pc
91 @echo 'Libs: -L$${libdir} -lrew' >> librew.pc
92 @echo 'Libs.private: -L$${libdir} -lrew ${LIBS}' >> librew.pc
93 @echo 'Cflags: -I$${includedir}' >> librew.pc
94
95$(BUILD)/%.o: src/%.c $(BUILD) Makefile $(MK) $(MODMKS)
96 @echo " CC $@"
97 @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
98
99
100$(BUILD)/%.o: src/%.S $(BUILD) Makefile $(MK) $(MODMKS)
101 @echo " AS $@"
102 @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
103
104
105$(BUILD): Makefile $(MK) $(MODMKS)
106 @mkdir -p $(patsubst %,$(BUILD)/%,$(sort $(dir $(SRCS))))
107 @touch $@
108
109
110.PHONY: clean
111clean:
112 @rm -rf $(SHARED) $(STATIC) librew.pc test.d test.o test $(BUILD)
113
114
115install: $(SHARED) $(STATIC) librew.pc
116 @mkdir -p $(DESTDIR)$(LIBDIR) $(DESTDIR)$(LIBDIR)/pkgconfig \
117 $(DESTDIR)$(INCDIR)
118 $(INSTALL) -m 0644 $(shell find include -name "*.h") \
119 $(DESTDIR)$(INCDIR)
120 $(INSTALL) -m 0755 $(SHARED) $(DESTDIR)$(LIBDIR)
121 $(INSTALL) -m 0755 $(STATIC) $(DESTDIR)$(LIBDIR)
122 $(INSTALL) -m 0644 librew.pc $(DESTDIR)$(LIBDIR)/pkgconfig
123
124install-static: $(STATIC) librew.pc
125 @mkdir -p $(DESTDIR)$(LIBDIR) $(DESTDIR)$(LIBDIR)/pkgconfig \
126 $(DESTDIR)$(INCDIR)
127 $(INSTALL) -m 0644 $(shell find include -name "*.h") \
128 $(DESTDIR)$(INCDIR)
129 $(INSTALL) -m 0755 $(STATIC) $(DESTDIR)$(LIBDIR)
130 $(INSTALL) -m 0644 librew.pc $(DESTDIR)$(LIBDIR)/pkgconfig
131
132.PHONY: uninstall
133uninstall:
134 @rm -rf $(DESTDIR)$(INCDIR)
135 @rm -f $(DESTDIR)$(LIBDIR)/$(SHARED)
136 @rm -f $(DESTDIR)$(LIBDIR)/$(STATIC)
137 @rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/librew.pc
138
139-include test.d
140
141test.o: test.c
142 @echo " CC $@"
143 @$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
144
145test$(BIN_SUFFIX): test.o $(SHARED) $(STATIC)
146 @echo " LD $@"
147 @$(LD) $(LFLAGS) $< -L. -lrew -lre $(LIBS) -o $@