diff --git a/.travis.yml b/.travis.yml index c94d9cdebc1..fd82c99f308 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,13 +18,8 @@ before_install: install: # CMake 2.8.12 -<<<<<<< HEAD - - wget http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz -O /tmp/cmake.tar.gz && tar -C /tmp -xvf /tmp/cmake.tar.gz && rm /tmp/cmake.tar.gz - - cd /tmp/cmake-2.8.12 && ./bootstrap --prefix=/usr && make -j4 && sudo make install -j4 && cd - #&& rm -r /tmp/cmake-2.8.12 -======= - - wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2-Linux-i386.tar.gz -O /tmp/cmake.tar.gz && tar -C /tmp -xvf /tmp/cmake.tar.gz && rm /tmp/cmake.tar.gz + - wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2-Linux-i386.tar.gz -O /tmp/cmake.tar.gz && tar -C /tmp -xvf /tmp/cmake.tar.gz && rm /tmp/cmake.tar.gz - cd /tmp/cmake-2.8.12.2-Linux-i386 && sudo cp * /usr/ -r && cd - && rm -r /tmp/cmake-2.8.12.2-Linux-i386 ->>>>>>> cmake from binaries # - wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz -O /tmp/glog-0.3.3.tar.gz && tar -C /tmp -xzvf /tmp/glog-0.3.3.tar.gz && rm /tmp/glog-0.3.3.tar.gz - cd /tmp/glog-0.3.3 && ./configure && make -j4 && sudo make install -j4 && cd - @@ -63,7 +58,7 @@ script: ## Cleaning - cd .. - rm -r build - + # Make build ## CPU-GPU: build only. - export CPU_ONLY=0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 8df7412b2cd..64250eea0f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,9 @@ endif() ### Configuration ########################################################################### # Compiler Flags set(CMAKE_CXX_COMPILER_FLAGS ${CMAKE_CXX_COMPILER_FLAGS} -Wall) -set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC) -set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )#-O3) +set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} )#set global flags here) +set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} )#set debug flags here) +set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )#set release flags here) # Global Definitions if(CPU_ONLY) diff --git a/CMakeScripts/FindGFlags.cmake b/CMakeScripts/FindGFlags.cmake new file mode 100644 index 00000000000..f93c57136a1 --- /dev/null +++ b/CMakeScripts/FindGFlags.cmake @@ -0,0 +1,48 @@ +# - Try to find GFLAGS +# +# The following variables are optionally searched for defaults +# GFLAGS_ROOT_DIR: Base directory where all GFLAGS components are found +# +# The following are set after configuration is done: +# GFLAGS_FOUND +# GFLAGS_INCLUDE_DIRS +# GFLAGS_LIBRARIES +# GFLAGS_LIBRARYRARY_DIRS + +include(FindPackageHandleStandardArgs) + +set(GFLAGS_ROOT_DIR "" CACHE PATH "Folder contains Gflags") + +# We are testing only a couple of files in the include directories +if(WIN32) + find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h + PATHS ${GFLAGS_ROOT_DIR}/src/windows) +else() + find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h + PATHS ${GFLAGS_ROOT_DIR}) +endif() + +if(MSVC) + find_library(GFLAGS_LIBRARY_RELEASE + NAMES libgflags + PATHS ${GFLAGS_ROOT_DIR} + PATH_SUFFIXES Release) + + find_library(GFLAGS_LIBRARY_DEBUG + NAMES libgflags-debug + PATHS ${GFLAGS_ROOT_DIR} + PATH_SUFFIXES Debug) + + set(GFLAGS_LIBRARY optimized ${GFLAGS_LIBRARY_RELEASE} debug ${GFLAGS_LIBRARY_DEBUG}) +else() + find_library(GFLAGS_LIBRARY gflags) +endif() + +find_package_handle_standard_args(GFLAGS DEFAULT_MSG + GFLAGS_INCLUDE_DIR GFLAGS_LIBRARY) + + +if(GFLAGS_FOUND) + set(GFLAGS_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIR}) + set(GFLAGS_LIBRARIES ${GFLAGS_LIBRARY}) +endif() diff --git a/src/caffe/CMakeLists.txt b/src/caffe/CMakeLists.txt index 8b8542d8d30..4fd170a24db 100644 --- a/src/caffe/CMakeLists.txt +++ b/src/caffe/CMakeLists.txt @@ -7,6 +7,10 @@ find_package(Threads REQUIRED) find_package(Glog REQUIRED) include_directories(${GLOG_INCLUDE_DIRS}) +# Google-gflags +find_package(GFlags REQUIRED) +include_directories(${GFLAGS_INCLUDE_DIRS}) + # BLAS if(BLAS STREQUAL "atlas") @@ -61,13 +65,13 @@ add_subdirectory(proto) # Recursively find source files ## test sources -file(GLOB_RECURSE TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test_*.cpp) +file(GLOB_RECURSE TEST_CPP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test_*.cpp) ## all cpp sources file(GLOB_RECURSE CPP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) ## remove test sources from cpp sources -list(REMOVE_ITEM CPP_SOURCES ${TEST_SOURCES}) +list(REMOVE_ITEM CPP_SOURCES ${TEST_CPP_SOURCES}) add_library(caffe ${CPP_SOURCES}) # both depend on proto @@ -84,6 +88,8 @@ if(NOT CPU_ONLY) # cuda sources file(GLOB_RECURSE CU_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cu) + file(GLOB_RECURSE TEST_CU_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test_*.cu) + list(REMOVE_ITEM CU_SOURCES ${TEST_CU_SOURCES}) cuda_add_library(caffe_cu ${CU_SOURCES}) add_dependencies(caffe_cu proto) target_link_libraries(caffe caffe_cu @@ -94,6 +100,7 @@ endif() target_link_libraries(caffe proto ${GLOG_LIBRARIES} + ${GFLAGS_LIBRARIES} ${HDF5_LIBRARIES} ${OpenCV_LIBS} ${LEVELDB_LIBS} diff --git a/src/caffe/test/CMakeLists.txt b/src/caffe/test/CMakeLists.txt index f916ac0b0dd..cbad0ccdeee 100644 --- a/src/caffe/test/CMakeLists.txt +++ b/src/caffe/test/CMakeLists.txt @@ -36,10 +36,14 @@ include_directories( ) set(TEST_MAIN test_caffe_main.cpp) -list(REMOVE_ITEM TEST_SOURCES ${TEST_MAIN}) +list(REMOVE_ITEM TEST_CPP_SOURCES ${TEST_MAIN}) + +if(NOT CPU_ONLY) + set(TEST_CPP_SOURCES ${TEST_CPP_SOURCES} ${TEST_CU_SOURCES}) +endif() # Build each test separately -foreach(source ${TEST_SOURCES}) +foreach(source ${TEST_CPP_SOURCES}) get_filename_component(name ${source} NAME_WE) set(TEST_NAME ${name}${TEST_EXT}) add_executable(${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_MAIN} ${source} ../blob.cpp) @@ -50,7 +54,7 @@ foreach(source ${TEST_SOURCES}) endforeach() # Build a compound test excluded from the ALL target -add_executable(${ALL_TEST} EXCLUDE_FROM_ALL ${TEST_SOURCES} ${TEST_MAIN}) +add_executable(${ALL_TEST} EXCLUDE_FROM_ALL ${TEST_CPP_SOURCES} ${TEST_MAIN}) target_link_libraries(${ALL_TEST} gtest caffe) add_dependencies(${ALL_TEST} ${TEST_TARGETS}) # output dir diff --git a/tools/caffe.cpp b/tools/caffe_tool.cpp similarity index 100% rename from tools/caffe.cpp rename to tools/caffe_tool.cpp