aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile15
-rw-r--r--config.mk4
-rw-r--r--include/sqlitepp/sqlitepp.h18
3 files changed, 34 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index b3ad02f..a905f08 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,8 @@ SOURCE_NAMES_LIB := sqlitepp.cpp
SOURCE_NAMES_TEST := sqlitepp_test.cpp
TARGET_NAME_LIB := sqlitepp
-TARGET_LIB := $(LIBRARY_DIR)/lib$(TARGET_NAME_LIB).so
+TARGET_LIB_BASE := $(LIBRARY_DIR)/lib$(TARGET_NAME_LIB).so
+TARGET_LIB := $(TARGET_LIB_BASE).$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
SOURCES_LIB := $(foreach source,$(SOURCE_NAMES_LIB),$(SOURCE_DIR)/$(source))
OBJECTS_LIB := $(SOURCES_LIB:$(SOURCE_DIR)/%.cpp=$(OBJECT_DIR)/%.o)
DEPENDS_LIB := $(OBJECTS_LIB:.o=.d)
@@ -21,14 +22,18 @@ SOURCES_TEST := $(foreach source,$(SOURCE_NAMES_TEST),$(SOURCE_DIR)/$(source))
OBJECTS_TEST := $(SOURCES_TEST:$(SOURCE_DIR)/%.cpp=$(OBJECT_DIR)/%.o)
DEPENDS_TEST := $(OBJECTS_TEST:.o=.d)
-TARGETS := $(TARGET_LIB) $(TARGET_TEST)
+TARGETS := $(TARGET_LIB) $(TARGET_LIB_BASE) $(TARGET_TEST)
INCLUDES := $(INCLUDE_DIR)/sqlitepp/sqlitepp.h
OBJECTS := $(OBJECTS_LIB) $(OBJECTS_TEST)
DEPENDS := $(DEPENDS_LIB) $(DEPENDS_TEST)
CPPFLAGS += -MMD -MP -I$(INCLUDE_DIR)
+CPPFLAGS += -DSQLITEPP_VERSION_MAJOR=$(VERSION_MAJOR) \
+ -DSQLITEPP_VERSION_MINOR=$(VERSION_MINOR) \
+ -DSQLITEPP_VERSION_PATCH=$(VERSION_PATCH)
CXXFLAGS += -fPIC
LDFLAGS += $(LDFLAGS_SQLITE3)
+LDFLAGS_LIB += -Wl,-soname,lib$(TARGET_NAME_LIB).so.$(VERSION_MAJOR)
LDFLAGS_TEST += -L$(LIBRARY_DIR) -l$(TARGET_NAME_LIB) $(LDFLAGS_GTEST) -Wl,-rpath,$(LIBRARY_DIR)
ifdef VERBOSE
@@ -60,12 +65,16 @@ memcheck: $(TARGET_TEST)
test: $(TARGET_TEST)
./$(TARGET_TEST)
+$(TARGET_LIB_BASE): $(TARGET_LIB)
+ $(info (LN) $@)
+ $(QUIET)ln -sr $^ $@
+
$(TARGET_LIB): $(OBJECTS_LIB)
$(info (CXX) $@)
$(QUIET)mkdir -p $(LIBRARY_DIR)
$(QUIET)$(CXX) -shared $(LDFLAGS) $(LDFLAGS_LIB) -o $@ $^
-$(TARGET_TEST): $(OBJECTS_TEST) $(TARGET_LIB)
+$(TARGET_TEST): $(OBJECTS_TEST) $(TARGET_LIB) $(TARGET_LIB_BASE)
$(info (CXX) $@)
$(QUIET)mkdir -p $(BINARY_DIR)
$(QUIET)$(CXX) $(LDFLAGS) $(LDFLAGS_TEST) $(OBJECTS_TEST) -o $@
diff --git a/config.mk b/config.mk
index f7ef033..160bb74 100644
--- a/config.mk
+++ b/config.mk
@@ -1,3 +1,7 @@
+VERSION_MAJOR := 0
+VERSION_MINOR := 1
+VERSION_PATCH := 0
+
LDFLAGS_SQLITE3 += -lsqlite3
LDFLAGS_GTEST += -lgtest -lgtest_main
diff --git a/include/sqlitepp/sqlitepp.h b/include/sqlitepp/sqlitepp.h
index ad09b6b..1e7f322 100644
--- a/include/sqlitepp/sqlitepp.h
+++ b/include/sqlitepp/sqlitepp.h
@@ -105,6 +105,24 @@
/// are destroyed. You can force them to free their resources using the
/// `close` methods.
+#ifndef SQLITEPP_VERSION_MAJOR
+/// \brief The major version of sqlitepp (part x of version number x.y.z).
+#define SQLITEPP_VERSION_MAJOR 0
+#endif
+
+#ifndef SQLITEPP_VERSION_MINOR
+/// \brief The minor version of sqlitepp (part y of version number x.y.z).
+#define SQLITEPP_VERSION_MINOR 0
+#endif
+
+#ifndef SQLITEPP_VERSION_PATCH
+/// \brief The patch version of sqlitepp (part z of version number x.y.z).
+#define SQLITEPP_VERSION_PATCH 0
+#endif
+
+/// \brief The sqlitepp version in the format MAJOR.MINOR.PATCH.
+const std::string version = "0.1.0";
+
/// \brief Contains all classes of the sqlitepp library.
namespace sqlitepp {