-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
68 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) | ||
|
||
# set caffe2 cmake path manually | ||
set(Caffe2_DIR "/path/to/anaconda3/envs/py37/lib/python3.7/site-packages/torch/share/cmake/Caffe2") | ||
# set cuDNN path | ||
set(CUDNN_INCLUDE_DIR "/path/to/your/cudnn/include") | ||
set(CUDNN_LIBRARY "/path/to/your/libcudnn/libcudnn.so") | ||
include_directories("/path/to/anaconda3/envs/py37/include") | ||
# add static protobuf library | ||
add_library(libprotobuf STATIC IMPORTED) | ||
set(PROTOBUF_LIB "/path/to/anaconda3/envs/py37/lib/libprotobuf.a") | ||
set_property(TARGET libprotobuf PROPERTY IMPORTED_LOCATION "${PROTOBUF_LIB}") | ||
|
||
# Find the Caffe2 package. | ||
# Caffe2 exports the required targets, so find_package should work for | ||
# the standard Caffe2 installation. If you encounter problems with finding | ||
# the Caffe2 package, make sure you have run `make install` when installing | ||
# Caffe2 (`make install` populates your share/cmake/Caffe2). | ||
find_package(Caffe2 REQUIRED) | ||
include_directories(${CAFFE2_INCLUDE_DIRS}) | ||
|
||
if (${CAFFE2_VERSION} VERSION_LESS 0.8.2) | ||
# Pre-0.8.2 caffe2 does not have proper interface libraries set up, so we | ||
# will rely on the old path. | ||
message(WARNING | ||
"You are using an older version of Caffe2 (version " ${CAFFE2_VERSION} | ||
"). Please consider moving to a newer version.") | ||
include(cmake/legacy/legacymake.cmake) | ||
return() | ||
endif() | ||
|
||
# Add compiler flags. | ||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -fPIC -Wno-narrowing") | ||
|
||
# Print configuration summary. | ||
include(cmake/Summary.cmake) | ||
detectron_print_config_summary() | ||
|
||
# Collect custom ops sources. | ||
file(GLOB CUSTOM_OPS_CPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/detectron/ops/*.cc) | ||
file(GLOB CUSTOM_OPS_GPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/detectron/ops/*.cu) | ||
|
||
# Install custom CPU ops lib. | ||
add_library( | ||
caffe2_detectron_custom_ops SHARED | ||
${CUSTOM_OPS_CPU_SRCS}) | ||
|
||
target_include_directories( | ||
caffe2_detectron_custom_ops PRIVATE | ||
${CAFFE2_INCLUDE_DIRS}) | ||
|
||
target_link_libraries(caffe2_detectron_custom_ops caffe2_library libprotobuf) | ||
install(TARGETS caffe2_detectron_custom_ops DESTINATION lib) | ||
|
||
# Install custom GPU ops lib, if gpu is present. | ||
if (CAFFE2_USE_CUDA OR CAFFE2_FOUND_CUDA) | ||
# Additional -I prefix is required for CMake versions before commit (< 3.7): | ||
# https://github.com/Kitware/CMake/commit/7ded655f7ba82ea72a82d0555449f2df5ef38594 | ||
list(APPEND CUDA_INCLUDE_DIRS -I${CAFFE2_INCLUDE_DIRS}) | ||
CUDA_ADD_LIBRARY( | ||
caffe2_detectron_custom_ops_gpu SHARED | ||
${CUSTOM_OPS_CPU_SRCS} | ||
${CUSTOM_OPS_GPU_SRCS}) | ||
|
||
target_link_libraries(caffe2_detectron_custom_ops_gpu caffe2_gpu_library libprotobuf) | ||
install(TARGETS caffe2_detectron_custom_ops_gpu DESTINATION lib) | ||
endif() |