Install fixes

Fix paths, __init__.py initialization
Other assorted fixes
This commit is contained in:
Simon Layton 2016-12-21 09:14:04 -05:00
parent 99e97a4b7a
commit a2b31cf9e2
5 changed files with 54 additions and 21 deletions

View file

@ -44,13 +44,25 @@ option(USE_SYSTEM_PROTOBUF "Use system-provided protobuf" ON)
# ---[ Dependencies
include(cmake/Dependencies.cmake)
# ---[ Set link flag
# ---[ Set link flag, handle additional deps for gcc 5.x
if(BUILD_SHARED_LIBS)
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0.0)
message(STATUS "GCC ${CMAKE_CXX_COMPILER_VERSION}: Adding gcc and gcc_s libs to link line")
set(Caffe2_LINK Caffe2_CPU Caffe2_GPU Caffe_PROTO Caffe2_PROTO gcc_s gcc)
else()
set(Caffe2_LINK Caffe2_CPU Caffe2_GPU Caffe_PROTO Caffe2_PROTO)
endif()
else()
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
set(Caffe2_LINK -Wl,--whole-archive Caffe2_CPU Caffe2_GPU Caffe_PROTO Caffe2_PROTO gcc_s gcc -Wl,--no-whole-archive)
else()
set(Caffe2_LINK -Wl,--whole-archive Caffe2_CPU Caffe2_GPU Caffe_PROTO Caffe2_PROTO -Wl,--no-whole-archive)
endif()
endif()
# ---[ Set output directories
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "binaries")
# ---[ Third party builds.
include_directories(${CMAKE_SOURCE_DIR})
@ -61,22 +73,33 @@ add_subdirectory(caffe/proto)
add_subdirectory(caffe2)
# ---[ Copy all python files to build directory
# Copy the files
install(DIRECTORY ${CMAKE_SOURCE_DIR} DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING PATTERN "*.py")
# ---[ Generate all needed __init__.py files
# ---[ Generate and create all needed __init__.py files as they aren't present in source tree
set(Caffe2_INIT_PY
${CMAKE_INSTALL_PREFIX}/caffe2/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe2/python/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe2/python/mint/static/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe2/python/mint/static/css/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe2/python/mint/templates/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe2/python/mint/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe2/proto/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe/__init__.py
${CMAKE_INSTALL_PREFIX}/caffe/proto/__init__.py
${CMAKE_BINARY_DIR}/caffe2/__init__.py
${CMAKE_BINARY_DIR}/caffe2/python/__init__.py
${CMAKE_BINARY_DIR}/caffe2/python/mint/static/__init__.py
${CMAKE_BINARY_DIR}/caffe2/python/mint/static/css/__init__.py
${CMAKE_BINARY_DIR}/caffe2/python/mint/templates/__init__.py
${CMAKE_BINARY_DIR}/caffe2/python/mint/__init__.py
${CMAKE_BINARY_DIR}/caffe2/proto/__init__.py
${CMAKE_BINARY_DIR}/caffe/__init__.py
${CMAKE_BINARY_DIR}/caffe/proto/__init__.py
)
foreach(init ${Caffe2_INIT_PY})
# create each __init__.py file in build directory
file(WRITE ${init} "")
endforeach()
# Copy the files
message(STATUS ${CMAKE_BINARY_DIR})
# Pick up static python files
install(DIRECTORY ${CMAKE_SOURCE_DIR}/caffe2 DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING PATTERN "*.py")
# Caffe proto files
install(DIRECTORY ${CMAKE_BINARY_DIR}/caffe DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING PATTERN "*.py")
# Caffe2 proto files
install(DIRECTORY ${CMAKE_BINARY_DIR}/caffe2 DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING PATTERN "*.py")

View file

@ -6,6 +6,7 @@ caffe_protobuf_generate_cpp_py(${CMAKE_CURRENT_BINARY_DIR} Caffe_PROTO_SRCS Caff
add_library(Caffe_PROTO SHARED ${Caffe_PROTO_HEADERS} ${Caffe_PROTO_SRCS})
target_include_directories(Caffe_PROTO PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
install(TARGETS Caffe_PROTO DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
if(USE_SYSTEM_PROTOBUF)
target_link_libraries(Caffe_PROTO protobuf)

View file

@ -112,6 +112,7 @@ list(APPEND Caffe2_LINK_LIBS Caffe2_PROTO)
LIST(APPEND CMAKE_CXX_FLAGS "-std=c++11 -fPIC")
add_library(Caffe2_CPU ${Caffe2_CPU_SRCS})
target_link_libraries(Caffe2_CPU ${Caffe2_LINK_LIBS} glog gflags ${Caffe2_LINKER_LIBS})
install(TARGETS Caffe2_CPU DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
list(APPEND Caffe2_LINK_LIBS Caffe2_CPU)
# ---[ CUDA library
@ -119,6 +120,7 @@ if(HAVE_CUDA)
CUDA_ADD_LIBRARY(Caffe2_GPU ${Caffe2_GPU_SRCS})
target_link_libraries(Caffe2_GPU ${Caffe2_LINK_LIBS} glog gflags ${Caffe2_LINKER_LIBS})
list(APPEND Caffe2_LINK_LIBS Caffe2_GPU)
install(TARGETS Caffe2_GPU DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
endif()
# Compile test binaries.
@ -127,6 +129,7 @@ foreach(test_src ${Caffe2_CPU_TEST_SRCS})
add_executable(${test_name} "${test_src}")
target_link_libraries(${test_name} ${Caffe2_LINK} gtest_main)
target_compile_features(${test_name} PRIVATE cxx_range_for)
install(TARGETS ${test_name} DESTINATION ${CMAKE_INSTALL_PREFIX}/test)
endforeach()
# ---[ Python
@ -161,6 +164,7 @@ foreach(binary_src ${Caffe2_BINARY_SRCS})
get_filename_component(bin_name ${binary_src} NAME_WE)
add_executable(${bin_name} ${binary_src})
target_link_libraries(${bin_name} ${Caffe2_LINK} glog cnmem ${Caffe2_LINKER_LIBS})
install(TARGETS ${bin_name} DESTINATION ${CMAKE_INSTALL_PREFIX}/binaries)
endforeach()

View file

@ -6,6 +6,7 @@ caffe_protobuf_generate_cpp_py(${CMAKE_CURRENT_BINARY_DIR} Caffe2_PROTO_SRCS Caf
add_library(Caffe2_PROTO SHARED ${Caffe2_PROTO_HEADERS} ${Caffe2_PROTO_SRCS})
target_include_directories(Caffe2_PROTO PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
install(TARGETS Caffe2_PROTO DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
if (USE_SYSTEM_PROTOBUF)
target_link_libraries(Caffe2_PROTO protobuf)

View file

@ -9,8 +9,12 @@ set(Caffe2_PYTHON_GPU_SRC
prepend(Caffe2_PYTHON_CPU_SRC ${CMAKE_CURRENT_SOURCE_DIR} ${Caffe2_PYTHON_CPU_SRC})
prepend(Caffe2_PYTHON_GPU_SRC ${CMAKE_CURRENT_SOURCE_DIR} ${Caffe2_PYTHON_GPU_SRC})
add_library(Caffe2_PYTHON_CPU SHARED ${Caffe2_PYTHON_CPU_SRC})
target_link_libraries(Caffe2_PYTHON_CPU Caffe2_PROTO)
add_library(caffe2_pybind11_state SHARED ${Caffe2_PYTHON_CPU_SRC})
set_target_properties(caffe2_pybind11_state PROPERTIES PREFIX "")
target_link_libraries(caffe2_pybind11_state ${Caffe2_LINK})
install(TARGETS caffe2_pybind11_state DESTINATION ${CMAKE_INSTALL_PREFIX}/caffe2/python)
add_library(Caffe2_PYTHON_GPU SHARED ${Caffe2_PYTHON_GPU_SRC})
target_link_libraries(Caffe2_PYTHON_GPU Caffe2_PROTO)
add_library(caffe2_pybind11_state_gpu SHARED ${Caffe2_PYTHON_GPU_SRC})
set_target_properties(caffe2_pybind11_state_gpu PROPERTIES PREFIX "")
target_link_libraries(caffe2_pybind11_state_gpu ${Caffe2_LINK})
install(TARGETS caffe2_pybind11_state_gpu DESTINATION ${CMAKE_INSTALL_PREFIX}/caffe2/python)