Skip to content

Commit 67ae04e

Browse files
committedSep 30, 2020
add a shared library target
1 parent 11f771a commit 67ae04e

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed
 

‎Makefile

+13-4
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,43 @@ GCHECK_OBJECTS=$(GCHECK_SOURCES:cpp=o)
88
SOURCES=$(GCHECK_SOURCES:%=src/%)
99
HEADERS=$(GCHECK_HEADERS:%=$(GCHECK_INCLUDE_DIR)/%) src/console_writer.h
1010
OBJECTS:=$(GCHECK_OBJECTS:%=build/%)
11+
PIC_OBJECTS:=$(OBJECTS:o=pic.o)
12+
13+
LIBNAME=$(GCHECK_LIB_NAME)
1114

1215
CXXFLAGS = -std=c++17 -Wall -Wextra -pedantic -I$(GCHECK_INCLUDE_DIR) -Isrc
1316

1417
ifeq ($(OS),Windows_NT)
1518
RM=del /f /q
16-
LIBNAME=$(GCHECK_LIB)
1719
FixPath = $(subst /,\,$1)
1820
else
1921
RM=rm -f
20-
LIBNAME=lib$(GCHECK_LIB).a
2122
FixPath = $1
2223
endif
2324

24-
.PHONY: clean all debug set-debug
25+
.PHONY: clean all debug set-debug shared
2526

2627
all: $(GCHECK_LIB_DIR)/$(LIBNAME)
2728

2829
debug: | set-debug $(GCHECK_LIB_DIR)/$(LIBNAME)
2930

31+
shared: $(GCHECK_LIB_DIR)/$(GCHECK_SHARED_LIB_NAME)
32+
3033
set-debug:
3134
$(eval CXXFLAGS += -g)
3235

3336
build/%.o : src/%.cpp $(HEADERS) | build
3437
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
3538

36-
$(GCHECK_LIB_DIR)/$(LIBNAME): $(OBJECTS) | $(GCHECK_LIB_DIR)
39+
build/%.pic.o : src/%.cpp $(HEADERS) | build
40+
$(CXX) -fPIC $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
41+
42+
$(GCHECK_LIB_DIR)/$(LIBNAME): | $(OBJECTS) $(GCHECK_LIB_DIR)
3743
ar rcs $(call FixPath, $@ $(OBJECTS))
3844

45+
$(GCHECK_LIB_DIR)/$(GCHECK_SHARED_LIB_NAME): $(PIC_OBJECTS) | $(GCHECK_LIB_DIR)
46+
$(CXX) -shared $(CPPFLAGS) $(CXXFLAGS) $(PIC_OBJECTS) -o $@
47+
3948
get-report: $(EXECUTABLE)
4049
$(call FixPath, ./$(EXECUTABLE)) --json 2>&1
4150

‎vars.make

+2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ GCHECK_LIB_DIR=lib
55
ifeq ($(OS),Windows_NT)
66
GCHECK_LIB=gcheck.lib
77
GCHECK_LIB_NAME=gcheck.lib
8+
GCHECK_SHARED_LIB_NAME=error
89
else
910
GCHECK_LIB=gcheck
1011
GCHECK_LIB_NAME=libgcheck.a
12+
GCHECK_SHARED_LIB_NAME=libgcheck.so
1113
endif

0 commit comments

Comments
 (0)
Please sign in to comment.