Skip to content

Commit 19b26bd

Browse files
ffontainethiagomacieira
authored andcommitted
Add BUILD_STATIC option
- Enable BUILD_STATIC by default - If BUILD_STATIC and BUILD_SHARED are both different from 1, return an error - If BUILD_STATIC is disabled, use shared library for binaries - If both are enabled, use the static library Signed-off-by: Fabrice Fontaine <[email protected]>
1 parent a2dab2c commit 19b26bd

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

Makefile

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,25 @@ TINYCBOR_SOURCES = \
3434
CBORDUMP_SOURCES = tools/cbordump/cbordump.c
3535

3636
BUILD_SHARED = $(shell file -L /bin/sh 2>/dev/null | grep -q ELF && echo 1)
37+
BUILD_STATIC = 1
38+
39+
ifneq ($(BUILD_STATIC),1)
40+
ifneq ($(BUILD_SHARED),1)
41+
$(error error: BUILD_STATIC and BUILD_SHARED can not be both disabled)
42+
endif
43+
endif
3744

3845
INSTALL_TARGETS += $(bindir)/cbordump
39-
INSTALL_TARGETS += $(libdir)/libtinycbor.a
4046
ifeq ($(BUILD_SHARED),1)
47+
BINLIBRARY=lib/libtinycbor.so
4148
INSTALL_TARGETS += $(libdir)/libtinycbor.so
4249
INSTALL_TARGETS += $(libdir)/libtinycbor.so.0
4350
INSTALL_TARGETS += $(libdir)/libtinycbor.so.$(VERSION)
4451
endif
52+
ifeq ($(BUILD_STATIC),1)
53+
BINLIBRARY=lib/libtinycbor.a
54+
INSTALL_TARGETS += $(libdir)/libtinycbor.a
55+
endif
4556
INSTALL_TARGETS += $(pkgconfigdir)/tinycbor.pc
4657
INSTALL_TARGETS += $(TINYCBOR_HEADERS:src/%=$(includedir)/tinycbor/%)
4758

@@ -103,13 +114,14 @@ ifneq ($(cjson-pass)$(system-cjson-pass),)
103114
endif
104115

105116
# Rules
106-
all: .config lib/libtinycbor.a \
117+
all: .config \
118+
$(if $(subst 0,,$(BUILD_STATIC)),lib/libtinycbor.a) \
107119
$(if $(subst 0,,$(BUILD_SHARED)),lib/libtinycbor.so) \
108120
bin/cbordump tinycbor.pc
109121
all: $(if $(JSON2CBOR_SOURCES),bin/json2cbor)
110-
check: tests/Makefile | lib/libtinycbor.a
122+
check: tests/Makefile | $(BINLIBRARY)
111123
$(MAKE) -C tests check
112-
silentcheck: | lib/libtinycbor.a
124+
silentcheck: | $(BINLIBRARY)
113125
TESTARGS=-silent $(MAKE) -f $(MAKEFILE) -s check
114126
configure: .config
115127
.config: Makefile.configure
@@ -120,14 +132,15 @@ lib/libtinycbor.a: $(TINYCBOR_SOURCES:.c=.o)
120132
$(AR) cqs $@ $^
121133

122134
lib/libtinycbor.so: $(TINYCBOR_SOURCES:.c=.pic.o)
135+
@$(MKDIR) -p lib
123136
$(CC) -shared -Wl,-soname,libtinycbor.so.0 -o lib/libtinycbor.so.$(VERSION) $(LDFLAGS) $^
124137
cd lib ; ln -s libtinycbor.so.$(VERSION) libtinycbor.so ; ln -s libtinycbor.so.$(VERSION) libtinycbor.so.0
125138

126-
bin/cbordump: $(CBORDUMP_SOURCES:.c=.o) lib/libtinycbor.a
139+
bin/cbordump: $(CBORDUMP_SOURCES:.c=.o) $(BINLIBRARY)
127140
@$(MKDIR) -p bin
128141
$(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS) -lm
129142

130-
bin/json2cbor: $(JSON2CBOR_SOURCES:.c=.o) lib/libtinycbor.a
143+
bin/json2cbor: $(JSON2CBOR_SOURCES:.c=.o) $(BINLIBRARY)
131144
@$(MKDIR) -p bin
132145
$(CC) -o $@ $(LDFLAGS) $^ $(LDFLAGS_CJSON) $(LDLIBS) -lm
133146

0 commit comments

Comments
 (0)