Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ script:
## CPU-only: comprehensive
- cmake -DBUILD_PYTHON=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release -DCPU_ONLY=ON ..
- make --keep-going --jobs=$NUM_THREADS
- cd test && ./test --gtest_shuffle --gtest_filter="-*GPU*" && cd -
- make runtest --keep-going --jobs=$NUM_THREADS
- make lint --jobs=$NUM_THREADS
- make clean && rm -rf *
## Cleaning
- cd ..
Expand Down
21 changes: 15 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
endif()

### Configuration ###########################################################################

# Enable CTest from top build directory
#disable ctest
#enable_testing()

# Compiler Flags
set(CMAKE_CXX_COMPILER_FLAGS ${CMAKE_CXX_COMPILER_FLAGS} -Wall)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC)
Expand All @@ -43,8 +38,11 @@ set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include)
include_directories(${${PROJECT_NAME}_INCLUDE_DIRS})
include_directories(${CMAKE_SOURCE_DIR}/src)

# CMake Scripts dir
set(CMAKE_SCRIPT_DIR ${CMAKE_SOURCE_DIR}/CMakeScripts)

# CMake module path for custom module finding
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeScripts)
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SCRIPT_DIR})

# CUDA is required globally
if(NOT CPU_ONLY)
Expand Down Expand Up @@ -73,8 +71,19 @@ if(BUILD_MATLAB)
add_subdirectory(matlab)
endif()

### Lint Target Setup ##########################################################################

set(LINT_TARGET lint)
set(LINT_SCRIPT ${CMAKE_SCRIPT_DIR}/lint.cmake)
add_custom_target(
${LINT_TARGET}
COMMAND ${CMAKE_COMMAND} -P ${LINT_SCRIPT}
)

### Install #################################################################################

# Install Includes
file(GLOB folders ${${PROJECT_NAME}_INCLUDE_DIRS}/*)
install(DIRECTORY ${folders} DESTINATION include)


48 changes: 48 additions & 0 deletions CMakeScripts/lint.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

set(CMAKE_SOURCE_DIR ../)
set(LINT_COMMAND ${CMAKE_SOURCE_DIR}/scripts/cpp_lint.py)
set(SRC_FILE_EXTENSIONS h hpp hu c cpp cu cc)
set(EXCLUDE_FILE_EXTENSTIONS pb.h pb.cc)
set(LINT_DIRS include src/caffe examples tools python matlab)

# find all files of interest
foreach(ext ${SRC_FILE_EXTENSIONS})
foreach(dir ${LINT_DIRS})
file(GLOB_RECURSE FOUND_FILES ${CMAKE_SOURCE_DIR}/${dir}/*.${ext})
set(LINT_SOURCES ${LINT_SOURCES} ${FOUND_FILES})
endforeach()
endforeach()

# find all files that should be excluded
foreach(ext ${EXCLUDE_FILE_EXTENSTIONS})
file(GLOB_RECURSE FOUND_FILES ${CMAKE_SOURCE_DIR}/*.${ext})
set(EXCLUDED_FILES ${EXCLUDED_FILES} ${FOUND_FILES})
endforeach()

# exclude generated pb files
list(REMOVE_ITEM LINT_SOURCES ${EXCLUDED_FILES})

execute_process(
COMMAND ${LINT_COMMAND} ${LINT_SOURCES}
ERROR_VARIABLE LINT_OUTPUT
ERROR_STRIP_TRAILING_WHITESPACE
)

string(REPLACE "\n" ";" LINT_OUTPUT ${LINT_OUTPUT})

list(GET LINT_OUTPUT -1 LINT_RESULT)
list(REMOVE_AT LINT_OUTPUT -1)
string(REPLACE " " ";" LINT_RESULT ${LINT_RESULT})
list(GET LINT_RESULT -1 NUM_ERRORS)
if(NUM_ERRORS GREATER 0)
foreach(msg ${LINT_OUTPUT})
string(FIND ${msg} "Done" result)
if(result LESS 0)
message(STATUS ${msg})
endif()
endforeach()
message(FATAL_ERROR "Lint found ${NUM_ERRORS} errors!")
else()
message(STATUS "Lint did not find any errors!")
endif()

48 changes: 24 additions & 24 deletions src/caffe/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,29 @@
#
project( Test )

# Set CUDA Device number and CMAKE_SOURCE_DIR
add_definitions(-DCMAKE_BUILD)
# Configuration
set(TEST_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test) # test executables are going to be placed there
set(TEST_EXT .bin) # test executable extension
set(ALL_TEST test${TEST_EXT}) # name of an executable comprising of all tests
set(RUN_TEST runtest) # dummy target for running tests

# Generate config files
set(IN_EXT .in)
set(GEN_EXT .gen.cmake)
add_definitions(-DCMAKE_BUILD) # definition needed in order to include CMake's generated files
set(IN_EXT .in) # generator input file extension
set(GEN_EXT .gen.cmake) # generated output file extension
set(TEST_DEFINES_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake_test_defines.hpp)
set(TEST_DATA_FILE ${CMAKE_CURRENT_SOURCE_DIR}/test_data/sample_data_list.txt)

set(IN_FILES
set(IN_FILES # generator input files
${TEST_DEFINES_FILE}
${TEST_DATA_FILE}
)

foreach(in_file ${IN_FILES})

foreach(in_file ${IN_FILES})
configure_file(
${in_file}${IN_EXT}
${in_file}${GEN_EXT}
)

)
endforeach()

include_directories(
Expand All @@ -36,29 +38,27 @@ include_directories(
set(TEST_MAIN test_caffe_main.cpp)
list(REMOVE_ITEM TEST_SOURCES ${TEST_MAIN})


# Build each test separately
foreach(source ${TEST_SOURCES})

get_filename_component(name ${source} NAME_WE)
add_executable(${name}.test ${TEST_MAIN} ${source} ../blob.cpp)
target_link_libraries(${name}.test gtest caffe)
#disable ctest
#add_test(${name} ${name}.test)

set(TEST_NAME ${name}${TEST_EXT})
add_executable(${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_MAIN} ${source} ../blob.cpp)
target_link_libraries(${TEST_NAME} gtest caffe)
# output dir
set_target_properties(${name}.test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test)

set_target_properties(${TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test)
set(TEST_TARGETS ${TEST_TARGETS} ${TEST_NAME})
endforeach()

add_executable(test ${TEST_SOURCES} ${TEST_MAIN})
target_link_libraries(test gtest caffe)
# Build a compound test excluded from the ALL target
add_executable(${ALL_TEST} EXCLUDE_FROM_ALL ${TEST_SOURCES} ${TEST_MAIN})
target_link_libraries(${ALL_TEST} gtest caffe)
add_dependencies(${ALL_TEST} ${TEST_TARGETS})
# output dir
set_target_properties(${ALL_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TEST_OUTPUT_DIRECTORY})
# Test command
set(TEST_ARGS --gtest_shuffle)
if(CPU_ONLY)
set(TEST_ARGS ${TEST_ARGS} --gtest_filter="-*GPU*")
endif()
add_custom_command(TARGET test POSTBUILD COMMAND test ${TEST_ARGS})

# output dir
set_target_properties(test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test)

add_custom_target(${RUN_TEST} COMMAND ${ALL_TEST} ${TEST_ARGS})