|
|
@@ -29,9 +29,17 @@ SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \ |
|
|
\( -name '*.cpp' -o -name '*.proto' \) | grep -q ." \; -print)
|
|
|
|
|
|
# The target shared library name
|
|
|
+LIBRARY_NAME := $(PROJECT)
|
|
|
LIB_BUILD_DIR := $(BUILD_DIR)/lib
|
|
|
-STATIC_NAME := $(LIB_BUILD_DIR)/lib$(PROJECT).a
|
|
|
-DYNAMIC_NAME := $(LIB_BUILD_DIR)/lib$(PROJECT).so
|
|
|
+STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a
|
|
|
+DYNAMIC_VERSION_MAJOR := 1
|
|
|
+DYNAMIC_VERSION_MINOR := 0
|
|
|
+DYNAMIC_VERSION_REVISION := 0-rc3
|
|
|
+DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so
|
|
|
+#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR)
|
|
|
+DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)
|
|
|
+DYNAMIC_NAME := $(LIB_BUILD_DIR)/$(DYNAMIC_VERSIONED_NAME_SHORT)
|
|
|
+COMMON_FLAGS += -DCAFFE_VERSION=$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)
|
|
|
|
|
|
##############################
|
|
|
# Get all source files
|
|
|
@@ -253,6 +261,7 @@ ifeq ($(LINUX), 1) |
|
|
# boost::thread is reasonably called boost_thread (compare OS X)
|
|
|
# We will also explicitly add stdc++ to the link target.
|
|
|
LIBRARIES += boost_thread stdc++
|
|
|
+ VERSIONFLAGS += -Wl,-soname,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
endif
|
|
|
|
|
|
# OS X:
|
|
|
@@ -276,6 +285,7 @@ ifeq ($(OSX), 1) |
|
|
# we need to explicitly ask for the rpath to be obeyed
|
|
|
DYNAMIC_FLAGS := -install_name @rpath/libcaffe.so
|
|
|
ORIGIN := @loader_path
|
|
|
+ VERSIONFLAGS += -Wl,-install_name,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib
|
|
|
else
|
|
|
ORIGIN := \$$ORIGIN
|
|
|
endif
|
|
|
@@ -478,7 +488,7 @@ py: $(PY$(PROJECT)_SO) $(PROTO_GEN_PY) |
|
|
$(PY$(PROJECT)_SO): $(PY$(PROJECT)_SRC) $(PY$(PROJECT)_HXX) | $(DYNAMIC_NAME)
|
|
|
@ echo CXX/LD -o $@ $<
|
|
|
$(Q)$(CXX) -shared -o $@ $(PY$(PROJECT)_SRC) \
|
|
|
- -o $@ $(LINKFLAGS) -l$(PROJECT) $(PYTHON_LDFLAGS) \
|
|
|
+ -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(PYTHON_LDFLAGS) \
|
|
|
-Wl,-rpath,$(ORIGIN)/../../build/lib
|
|
|
|
|
|
mat$(PROJECT): mat
|
|
|
@@ -542,7 +552,8 @@ $(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK) |
|
|
|
|
|
$(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
|
|
|
@ echo LD -o $@
|
|
|
- $(Q)$(CXX) -shared -o $@ $(OBJS) $(LINKFLAGS) $(LDFLAGS) $(DYNAMIC_FLAGS)
|
|
|
+ $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) $(DYNAMIC_FLAGS)
|
|
|
+ @ cd $(BUILD_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT)
|
|
|
|
|
|
$(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
|
|
|
@ echo AR -o $@
|
|
|
@@ -573,19 +584,19 @@ $(TEST_ALL_BIN): $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \ |
|
|
| $(DYNAMIC_NAME) $(TEST_BIN_DIR)
|
|
|
@ echo CXX/LD -o $@ $<
|
|
|
$(Q)$(CXX) $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \
|
|
|
- -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(PROJECT) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
+ -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
|
|
|
$(TEST_CU_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CU_BUILD_DIR)/%.o \
|
|
|
$(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
|
|
|
@ echo LD $<
|
|
|
$(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \
|
|
|
- -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(PROJECT) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
+ -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
|
|
|
$(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o \
|
|
|
$(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR)
|
|
|
@ echo LD $<
|
|
|
$(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \
|
|
|
- -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(PROJECT) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
+ -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib
|
|
|
|
|
|
# Target for extension-less symlinks to tool binaries with extension '*.bin'.
|
|
|
$(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR)
|
|
|
@@ -594,12 +605,12 @@ $(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR) |
|
|
|
|
|
$(TOOL_BINS): %.bin : %.o | $(DYNAMIC_NAME)
|
|
|
@ echo CXX/LD -o $@
|
|
|
- $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(PROJECT) $(LDFLAGS) \
|
|
|
+ $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
|
|
|
-Wl,-rpath,$(ORIGIN)/../lib
|
|
|
|
|
|
$(EXAMPLE_BINS): %.bin : %.o | $(DYNAMIC_NAME)
|
|
|
@ echo CXX/LD -o $@
|
|
|
- $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(PROJECT) $(LDFLAGS) \
|
|
|
+ $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \
|
|
|
-Wl,-rpath,$(ORIGIN)/../../lib
|
|
|
|
|
|
proto: $(PROTO_GEN_CC) $(PROTO_GEN_HEADER)
|
|
|
@@ -661,6 +672,7 @@ $(DISTRIBUTE_DIR): all py | $(DISTRIBUTE_SUBDIRS) |
|
|
# add libraries
|
|
|
cp $(STATIC_NAME) $(DISTRIBUTE_DIR)/lib
|
|
|
install -m 644 $(DYNAMIC_NAME) $(DISTRIBUTE_DIR)/lib
|
|
|
+ cd $(DISTRIBUTE_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT)
|
|
|
# add python - it's not the standard way, indeed...
|
|
|
cp -r python $(DISTRIBUTE_DIR)/python
|
|
|
|
|
|
|