summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBaruch Sterin <baruchs@gmail.com>2016-12-22 18:15:29 -0800
committerBaruch Sterin <baruchs@gmail.com>2016-12-22 18:15:29 -0800
commitb9dfb992c78e3c8786dee303e4a9994d46b6990a (patch)
tree0db7240b7082759875246103ff6f6d57cedf7063
parent7d0648e24098ed0e6a0a1471a52946303c351c87 (diff)
downloadabc-b9dfb992c78e3c8786dee303e4a9994d46b6990a.tar.gz
abc-b9dfb992c78e3c8786dee303e4a9994d46b6990a.tar.bz2
abc-b9dfb992c78e3c8786dee303e4a9994d46b6990a.zip
(1) Makefile: added a shared library target, (2) no longer compile the main function as part of libabc.a
-rw-r--r--Makefile8
-rw-r--r--readme.md7
2 files changed, 14 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 2385431c..d45978a9 100644
--- a/Makefile
+++ b/Makefile
@@ -139,6 +139,8 @@ OBJ := \
$(patsubst %.c, %.o, $(filter %.c, $(SRC))) \
$(patsubst %.y, %.o, $(filter %.y, $(SRC)))
+LIBOBJ := $(filter-out src/base/main/main.o,$(OBJ))
+
DEP := $(OBJ:.o=.d)
# implicit rules
@@ -186,11 +188,15 @@ $(PROG): $(OBJ)
@echo "$(MSG_PREFIX)\`\` Building binary:" $(notdir $@)
$(VERBOSE)$(LD) -o $@ $^ $(LIBS)
-lib$(PROG).a: $(OBJ)
+lib$(PROG).a: $(LIBOBJ)
@echo "$(MSG_PREFIX)\`\` Linking:" $(notdir $@)
$(VERBOSE)ar rv $@ $?
$(VERBOSE)ranlib $@
+lib$(PROG).so: $(LIBOBJ)
+ @echo "$(MSG_PREFIX)\`\` Linking:" $(notdir $@)
+ $(VERBOSE)$(CXX) -shared -o $@ $^ $(LIBS)
+
docs:
@echo "$(MSG_PREFIX)\`\` Building documentation." $(notdir $@)
$(VERBOSE)doxygen doxygen.conf
diff --git a/readme.md b/readme.md
index c7a6816d..ca9a90ba 100644
--- a/readme.md
+++ b/readme.md
@@ -53,6 +53,13 @@ The current version of ABC can be compiled with C compiler or C++ compiler.
* To compile as C++ code with namespaces: make sure that `CC=g++` and `ABC_NAMESPACE` is set to
the name of the requested namespace. For example, add `-DABC_NAMESPACE=xxx` to OPTFLAGS.
+## Building a shared library
+
+ * Compile the code as position-independent by adding `ABC_USE_PIC=1`.
+ * Build the `libabc.so` target:
+
+ make ABC_USE_PIC=1 libabc.so
+
## Bug reporting:
Please try to reproduce all the reported bugs and unexpected features using the latest