@@ -29,9 +29,17 @@ SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \
29
29
\( -name '* .cpp' -o -name '* .proto' \) | grep -q ." \; -print)
30
30
31
31
# The target shared library name
32
+ LIBRARY_NAME := $(PROJECT )
32
33
LIB_BUILD_DIR := $(BUILD_DIR ) /lib
33
- STATIC_NAME := $(LIB_BUILD_DIR ) /lib$(PROJECT ) .a
34
- DYNAMIC_NAME := $(LIB_BUILD_DIR ) /lib$(PROJECT ) .so
34
+ STATIC_NAME := $(LIB_BUILD_DIR ) /lib$(LIBRARY_NAME ) .a
35
+ DYNAMIC_VERSION_MAJOR := 1
36
+ DYNAMIC_VERSION_MINOR := 0
37
+ DYNAMIC_VERSION_REVISION := 0
38
+ DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME ) .so
39
+ DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT ) .$(DYNAMIC_VERSION_MAJOR ) .$(DYNAMIC_VERSION_MINOR )
40
+ DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_SONAME_SHORT ) .$(DYNAMIC_VERSION_REVISION )
41
+ DYNAMIC_NAME := $(LIB_BUILD_DIR ) /$(DYNAMIC_VERSIONED_NAME_SHORT )
42
+ COMMON_FLAGS += -DCAFFE_VERSION=$(DYNAMIC_VERSION_MAJOR ) .$(DYNAMIC_VERSION_MINOR ) .$(DYNAMIC_VERSION_REVISION )
35
43
36
44
# #############################
37
45
# Get all source files
@@ -253,6 +261,7 @@ ifeq ($(LINUX), 1)
253
261
# boost::thread is reasonably called boost_thread (compare OS X)
254
262
# We will also explicitly add stdc++ to the link target.
255
263
LIBRARIES += boost_thread stdc++
264
+ VERSIONFLAGS += -Wl,-soname,$(DYNAMIC_SONAME_SHORT) -Wl,-rpath,$(ORIGIN)/../lib
256
265
endif
257
266
258
267
# OS X:
@@ -276,6 +285,7 @@ ifeq ($(OSX), 1)
276
285
# we need to explicitly ask for the rpath to be obeyed
277
286
DYNAMIC_FLAGS := -install_name @rpath/libcaffe.so
278
287
ORIGIN := @loader_path
288
+ VERSIONFLAGS += -Wl,-install_name,$(DYNAMIC_SONAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib
279
289
else
280
290
ORIGIN := \$$ORIGIN
281
291
endif
@@ -478,7 +488,7 @@ py: $(PY$(PROJECT)_SO) $(PROTO_GEN_PY)
478
488
$(PY$(PROJECT ) _SO ) : $(PY$(PROJECT ) _SRC ) $(PY$(PROJECT ) _HXX ) | $(DYNAMIC_NAME )
479
489
@ echo CXX/LD -o $@ $<
480
490
$(Q )$(CXX ) -shared -o $@ $(PY$(PROJECT ) _SRC ) \
481
- -o $@ $(LINKFLAGS ) -l$(PROJECT ) $(PYTHON_LDFLAGS ) \
491
+ -o $@ $(LINKFLAGS ) -l$(LIBRARY_NAME ) $(PYTHON_LDFLAGS ) \
482
492
-Wl,-rpath,$(ORIGIN ) /../../build/lib
483
493
484
494
mat$(PROJECT ) : mat
@@ -542,7 +552,9 @@ $(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK)
542
552
543
553
$(DYNAMIC_NAME ) : $(OBJS ) | $(LIB_BUILD_DIR )
544
554
@ echo LD -o $@
545
- $(Q )$(CXX ) -shared -o $@ $(OBJS ) $(LINKFLAGS ) $(LDFLAGS ) $(DYNAMIC_FLAGS )
555
+ $(Q )$(CXX ) -shared -o $@ $(OBJS ) $(VERSIONFLAGS ) $(LINKFLAGS ) $(LDFLAGS ) $(DYNAMIC_FLAGS )
556
+ @ cd $(BUILD_DIR ) /lib; rm -f $(DYNAMIC_SONAME_SHORT ) ; ln -s $(DYNAMIC_VERSIONED_NAME_SHORT ) $(DYNAMIC_SONAME_SHORT )
557
+ @ cd $(BUILD_DIR ) /lib; rm -f $(DYNAMIC_NAME_SHORT ) ; ln -s $(DYNAMIC_SONAME_SHORT ) $(DYNAMIC_NAME_SHORT )
546
558
547
559
$(STATIC_NAME ) : $(OBJS ) | $(LIB_BUILD_DIR )
548
560
@ echo AR -o $@
@@ -573,19 +585,19 @@ $(TEST_ALL_BIN): $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \
573
585
| $(DYNAMIC_NAME ) $(TEST_BIN_DIR )
574
586
@ echo CXX/LD -o $@ $<
575
587
$(Q )$(CXX ) $(TEST_MAIN_SRC ) $(TEST_OBJS ) $(GTEST_OBJ ) \
576
- -o $@ $(LINKFLAGS ) $(LDFLAGS ) -l$(PROJECT ) -Wl,-rpath,$(ORIGIN ) /../lib
588
+ -o $@ $(LINKFLAGS ) $(LDFLAGS ) -l$(LIBRARY_NAME ) -Wl,-rpath,$(ORIGIN ) /../lib
577
589
578
590
$(TEST_CU_BINS ) : $(TEST_BIN_DIR ) /% .testbin: $(TEST_CU_BUILD_DIR ) /% .o \
579
591
$(GTEST_OBJ ) | $(DYNAMIC_NAME ) $(TEST_BIN_DIR )
580
592
@ echo LD $<
581
593
$(Q )$(CXX ) $(TEST_MAIN_SRC ) $< $(GTEST_OBJ ) \
582
- -o $@ $(LINKFLAGS ) $(LDFLAGS ) -l$(PROJECT ) -Wl,-rpath,$(ORIGIN ) /../lib
594
+ -o $@ $(LINKFLAGS ) $(LDFLAGS ) -l$(LIBRARY_NAME ) -Wl,-rpath,$(ORIGIN ) /../lib
583
595
584
596
$(TEST_CXX_BINS ) : $(TEST_BIN_DIR ) /% .testbin: $(TEST_CXX_BUILD_DIR ) /% .o \
585
597
$(GTEST_OBJ ) | $(DYNAMIC_NAME ) $(TEST_BIN_DIR )
586
598
@ echo LD $<
587
599
$(Q )$(CXX ) $(TEST_MAIN_SRC ) $< $(GTEST_OBJ ) \
588
- -o $@ $(LINKFLAGS ) $(LDFLAGS ) -l$(PROJECT ) -Wl,-rpath,$(ORIGIN ) /../lib
600
+ -o $@ $(LINKFLAGS ) $(LDFLAGS ) -l$(LIBRARY_NAME ) -Wl,-rpath,$(ORIGIN ) /../lib
589
601
590
602
# Target for extension-less symlinks to tool binaries with extension '*.bin'.
591
603
$(TOOL_BUILD_DIR ) /% : $(TOOL_BUILD_DIR ) /% .bin | $(TOOL_BUILD_DIR )
@@ -594,12 +606,12 @@ $(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR)
594
606
595
607
$(TOOL_BINS ) : % .bin : % .o | $(DYNAMIC_NAME )
596
608
@ echo CXX/LD -o $@
597
- $(Q )$(CXX ) $< -o $@ $(LINKFLAGS ) -l$(PROJECT ) $(LDFLAGS ) \
609
+ $(Q )$(CXX ) $< -o $@ $(LINKFLAGS ) -l$(LIBRARY_NAME ) $(LDFLAGS ) \
598
610
-Wl,-rpath,$(ORIGIN ) /../lib
599
611
600
612
$(EXAMPLE_BINS ) : % .bin : % .o | $(DYNAMIC_NAME )
601
613
@ echo CXX/LD -o $@
602
- $(Q )$(CXX ) $< -o $@ $(LINKFLAGS ) -l$(PROJECT ) $(LDFLAGS ) \
614
+ $(Q )$(CXX ) $< -o $@ $(LINKFLAGS ) -l$(LIBRARY_NAME ) $(LDFLAGS ) \
603
615
-Wl,-rpath,$(ORIGIN ) /../../lib
604
616
605
617
proto : $(PROTO_GEN_CC ) $(PROTO_GEN_HEADER )
@@ -661,6 +673,8 @@ $(DISTRIBUTE_DIR): all py | $(DISTRIBUTE_SUBDIRS)
661
673
# add libraries
662
674
cp $(STATIC_NAME ) $(DISTRIBUTE_DIR ) /lib
663
675
cp $(DYNAMIC_NAME ) $(DISTRIBUTE_DIR ) /lib
676
+ cd $(DISTRIBUTE_DIR ) /lib; rm -f $(DYNAMIC_SONAME_SHORT ) ; ln -s $(DYNAMIC_VERSIONED_NAME_SHORT ) $(DYNAMIC_SONAME_SHORT )
677
+ cd $(DISTRIBUTE_DIR ) /lib; rm -f $(DYNAMIC_NAME_SHORT ) ; ln -s $(DYNAMIC_SONAME_SHORT ) $(DYNAMIC_NAME_SHORT )
664
678
# add python - it's not the standard way, indeed...
665
679
cp -r python $(DISTRIBUTE_DIR ) /python
666
680
0 commit comments