diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..5f01cfece --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,46 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +PROJECT (gtsam) +if (NOT CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR} CACHE INTERNAL "" FORCE) +endif() + +set(CMAKE_CXX_FLAGS "-O2 -g -Wall -march=core2 -msse2 -DNDEBUG -DGT_USE_CBLAS -DGT_USE_LAPACK") + +INCLUDE_DIRECTORIES ("${CMAKE_SOURCE_DIR}") + +set(BOOST_ROOT ${BOOST_ROOT} CACHE PATH "The boost root path") +INCLUDE_DIRECTORIES ("${BOOST_ROOT}") +LINK_DIRECTORIES ("${BOOST_ROOT}/stage/lib") + +set(CCOLAMD_ROOT ${CCOLAMD_ROOT} CACHE PATH "The ccolamd root path") +INCLUDE_DIRECTORIES ("${CCOLAMD_ROOT}") +LINK_DIRECTORIES ("${CCOLAMD_ROOT}") +set(libs_support ${libs_support} ccolamd) + + +set(USE_GOTOBLAS2 ${USE_GOTOBLAS2} CACHE BOOL "USE GotoBlas2 or not") +if (USE_GOTOBLAS2) + set(GOTOBLAS2_ROOT ${GOTOBLAS2_ROOT} CACHE PATH "The gotoblas2 root path") + INCLUDE_DIRECTORIES ("${GOTOBLAS2_ROOT}") + set(libs_support ${libs_support} goto2) +else () + set(libs_support ${libs_support} cblas lapack atlas) +endif () + +set(BUILD_EXAMPLES TRUE CACHE BOOL "Turn on the flag to build examples") +set(BUILD_TESTS TRUE CACHE BOOL "Turn on the flag to build tests") +set(BUILD_TIMINGS TRUE CACHE BOOL "Turn on the flag to build timings") + +enable_testing() +add_subdirectory(CppUnitLite) +add_subdirectory(gtsam) + +set(libs_gtsam base geometry inference linear nonlinear slam) + +add_subdirectory(examples) +add_subdirectory(tests) + + + + diff --git a/CppUnitLite/CMakeLists.txt b/CppUnitLite/CMakeLists.txt new file mode 100644 index 000000000..6dd23b55a --- /dev/null +++ b/CppUnitLite/CMakeLists.txt @@ -0,0 +1,15 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +SET(lib_target "CppUnitLite") +FILE(GLOB cppunitlite_src "./*.cpp") + +############################# COMPILE LIBRARY +ADD_LIBRARY(${lib_target} STATIC ${cppunitlite_src}) +#TARGET_LINK_LIBRARIES(${lib_target}) + +############################# INSTALL + +#message(STATUS "install ${lib_target} to ${CMAKE_SOURCE_DIR}/lib") +#install(TARGETS ${lib_target} +# ARCHIVE DESTINATION lib COMPONENT dev +# LIBRARY DESTINATION lib COMPONENT dev) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 000000000..79d7cc466 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,20 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +set(libs_support ${libs_support} CppUnitLite ${libs_gtsam}) + +if (BUILD_EXAMPLES) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};SimpleRotation") + set(PROGRAMS "${PROGRAMS};PlanarSLAMExample_easy") + set(PROGRAMS "${PROGRAMS};PlanarSLAMSelfContained_advanced") + set(PROGRAMS "${PROGRAMS};Pose2SLAMExample_easy") + set(PROGRAMS "${PROGRAMS};Pose2SLAMExample_advanced") +# set(PROGRAMS "${PROGRAMS};Pose2SLAMwSPCG_easy") +# set(PROGRAMS "${PROGRAMS};Pose2SLAMwSPCG_advanced") + foreach(program ${PROGRAMS}) + add_executable(${program} "${program}.cpp") + target_link_libraries(${program} ${libs_support}) + endforeach(program) +endif () + + diff --git a/gtsam/CMakeLists.txt b/gtsam/CMakeLists.txt new file mode 100644 index 000000000..f34efdb15 --- /dev/null +++ b/gtsam/CMakeLists.txt @@ -0,0 +1,12 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +set(lib_target "gtsam") + +add_subdirectory(base) +add_subdirectory(geometry) +add_subdirectory(inference) +add_subdirectory(linear) +add_subdirectory(nonlinear) +add_subdirectory(slam) + +#add_library(${lib_target} base geometry inference linear nonlinear slam) diff --git a/gtsam/base/CMakeLists.txt b/gtsam/base/CMakeLists.txt new file mode 100644 index 000000000..4f273fdd7 --- /dev/null +++ b/gtsam/base/CMakeLists.txt @@ -0,0 +1,54 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +SET(lib_target "base") +FILE(GLOB base_src "./*.cpp") + +############################# COMPILE LIBRARY +ADD_LIBRARY(${lib_target} STATIC ${base_src}) +#TARGET_LINK_LIBRARIES(${lib_target}) + +############################# INSTALL + +#message(STATUS "install ${lib_target} to ${CMAKE_SOURCE_DIR}/lib") +#install(TARGETS ${lib_target} +# ARCHIVE DESTINATION lib COMPONENT dev + #LIBRARY DESTINATION lib COMPONENT dev) + +# TESTS + +set(libs_support ${libs_support} CppUnitLite) + +if (BUILD_TESTS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};testBTree") + set(PROGRAMS "${PROGRAMS};testCholesky") + set(PROGRAMS "${PROGRAMS};testDebug") + set(PROGRAMS "${PROGRAMS};testDenseQRUtil") + set(PROGRAMS "${PROGRAMS};testDSFVector") + set(PROGRAMS "${PROGRAMS};testFixedVector") + set(PROGRAMS "${PROGRAMS};testLieScalar") + set(PROGRAMS "${PROGRAMS};testLieVector") + set(PROGRAMS "${PROGRAMS};testMatrix") + set(PROGRAMS "${PROGRAMS};testNumericalDerivative") + set(PROGRAMS "${PROGRAMS};testTestableAssertions") + set(PROGRAMS "${PROGRAMS};testVector") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + add_test(${program} ${program}) + endforeach(program) +endif () + +if (BUILD_TIMINGS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};timeMatrix") + set(PROGRAMS "${PROGRAMS};timeublas") + set(PROGRAMS "${PROGRAMS};timeTest") + set(PROGRAMS "${PROGRAMS};timeVirtual") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + endforeach(program) +endif () + + diff --git a/gtsam/geometry/CMakeLists.txt b/gtsam/geometry/CMakeLists.txt new file mode 100644 index 000000000..e55fa5b8f --- /dev/null +++ b/gtsam/geometry/CMakeLists.txt @@ -0,0 +1,47 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +set (lib_target "geometry") +file (GLOB geometry_src "./*.cpp") + +############################# COMPILE LIBRARY + +add_library (${lib_target} STATIC ${geometry_src}) +target_link_libraries (${lib_target} base) + +# TESTS + +set(libs_support ${libs_support} CppUnitLite) + +if (BUILD_TESTS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};testCal3Bundler") + set(PROGRAMS "${PROGRAMS};testCal3DS2") + set(PROGRAMS "${PROGRAMS};testCal3_S2") + set(PROGRAMS "${PROGRAMS};testCalibratedCamera") + set(PROGRAMS "${PROGRAMS};testFundamental") + set(PROGRAMS "${PROGRAMS};testHomography2") + set(PROGRAMS "${PROGRAMS};testPoint2") + set(PROGRAMS "${PROGRAMS};testPoint3") + set(PROGRAMS "${PROGRAMS};testRot2") + set(PROGRAMS "${PROGRAMS};testRot3") + set(PROGRAMS "${PROGRAMS};testSimpleCamera") + set(PROGRAMS "${PROGRAMS};testStereoCamera") + set(PROGRAMS "${PROGRAMS};testTensors") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + add_test(${program} ${program}) + endforeach(program) +endif () + +if (BUILD_TIMINGS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};timeCalibratedCamera") + set(PROGRAMS "${PROGRAMS};timeRot3") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + endforeach(program) +endif () + + diff --git a/gtsam/inference/CMakeLists.txt b/gtsam/inference/CMakeLists.txt new file mode 100644 index 000000000..8250d419f --- /dev/null +++ b/gtsam/inference/CMakeLists.txt @@ -0,0 +1,48 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +set (lib_target "inference") +file (GLOB inference_src "./*.cpp") + +############################# COMPILE LIBRARY +add_library (${lib_target} STATIC ${inference_src}) +target_link_libraries (${lib_target} base geometry ccolamd) + + +# TESTS +set(libs_support ${libs_support} CppUnitLite) + + +if (BUILD_TESTS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};testBayesTree") +# set(PROGRAMS "${PROGRAMS};testBinaryBayesNet") + set(PROGRAMS "${PROGRAMS};testClusterTree") + set(PROGRAMS "${PROGRAMS};testConditional") + set(PROGRAMS "${PROGRAMS};testEliminationTree") + set(PROGRAMS "${PROGRAMS};testFactorGraph") + set(PROGRAMS "${PROGRAMS};testInference") + set(PROGRAMS "${PROGRAMS};testISAM") + set(PROGRAMS "${PROGRAMS};testJunctionTree") + set(PROGRAMS "${PROGRAMS};testSymbolicBayesNet") + set(PROGRAMS "${PROGRAMS};testSymbolicFactor") + set(PROGRAMS "${PROGRAMS};testSymbolicFactorGraph") + set(PROGRAMS "${PROGRAMS};testVariableIndex") + set(PROGRAMS "${PROGRAMS};testVariableSlots") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + add_test(${program} ${program}) + endforeach(program) +endif () + +if (BUILD_TIMINGS) + set(PROGRAMS "") +# set(PROGRAMS "${PROGRAMS};timeSymbolMaps") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + endforeach(program) +endif () + + + diff --git a/gtsam/linear/CMakeLists.txt b/gtsam/linear/CMakeLists.txt new file mode 100644 index 000000000..e3f502c2d --- /dev/null +++ b/gtsam/linear/CMakeLists.txt @@ -0,0 +1,49 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +set (lib_target "linear") +#file (GLOB linear_src "./*.cpp") +set (linear_src NoiseModel.cpp Errors.cpp Sampler.cpp GaussianSequentialSolver.cpp GaussianMultifrontalSolver.cpp + JacobianFactor.cpp HessianFactor.cpp GaussianFactor.cpp GaussianFactorGraph.cpp + GaussianJunctionTree.cpp GaussianConditional.cpp GaussianBayesNet.cpp GaussianISAM.cpp) + +############################# COMPILE LIBRARY +add_library (${lib_target} STATIC ${linear_src}) +target_link_libraries(${lib_target} base inference ccolamd) + +# TESTS +set(libs_support ${libs_support} CppUnitLite) + +if (BUILD_TESTS) + set(PROGRAMS "") +# set(PROGRAMS "${PROGRAMS};testBayesNetPreconditioner") + set(PROGRAMS "${PROGRAMS};testErrors") + set(PROGRAMS "${PROGRAMS};testGaussianConditional") + set(PROGRAMS "${PROGRAMS};testGaussianFactor") + set(PROGRAMS "${PROGRAMS};testGaussianFactorGraph") + set(PROGRAMS "${PROGRAMS};testGaussianJunctionTree") + set(PROGRAMS "${PROGRAMS};testHessianFactor") + set(PROGRAMS "${PROGRAMS};testNoiseModel") + set(PROGRAMS "${PROGRAMS};testSampler") +# set(PROGRAMS "${PROGRAMS};testVectorBTree") +# set(PROGRAMS "${PROGRAMS};testVectorMap") + set(PROGRAMS "${PROGRAMS};testVectorValues") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + add_test(${program} ${program}) + endforeach(program) +endif () + +if (BUILD_TIMINGS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};timeFactorOverhead") + set(PROGRAMS "${PROGRAMS};timeGaussianFactor") + set(PROGRAMS "${PROGRAMS};timeSLAMlike") +# set(PROGRAMS "${PROGRAMS};timeVectorValues") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + endforeach(program) +endif () + + diff --git a/gtsam/nonlinear/CMakeLists.txt b/gtsam/nonlinear/CMakeLists.txt new file mode 100644 index 000000000..025cd6cfb --- /dev/null +++ b/gtsam/nonlinear/CMakeLists.txt @@ -0,0 +1,32 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +set (lib_target "nonlinear") +file (GLOB nonlinear_src "./*.cpp") + +############################# COMPILE LIBRARY +add_library (${lib_target} STATIC ${nonlinear_src}) + +# TESTS +set(libs_support ${libs_support} CppUnitLite base) + +if (BUILD_TESTS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};testKey") + set(PROGRAMS "${PROGRAMS};testLieValues") + set(PROGRAMS "${PROGRAMS};testOrdering") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + add_test(${program} ${program}) + endforeach(program) +endif () + +if (BUILD_TIMINGS) + set(PROGRAMS "") + foreach(program ${PROGRAMS}) + add_executable(${program} "tests/${program}.cpp") + target_link_libraries(${program} ${lib_target} ${libs_support}) + endforeach(program) +endif () + + diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 000000000..e4f18a255 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,46 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) + +# TESTS + +set(libs_support ${libs_support} CppUnitLite ${libs_gtsam}) + +if (BUILD_TESTS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};testGaussianBayesNet") + set(PROGRAMS "${PROGRAMS};testGaussianFactor") + set(PROGRAMS "${PROGRAMS};testGaussianFactorGraph") + set(PROGRAMS "${PROGRAMS};testGaussianISAM") + set(PROGRAMS "${PROGRAMS};testGraph") + set(PROGRAMS "${PROGRAMS};testInference") + set(PROGRAMS "${PROGRAMS};testGaussianJunctionTree") + set(PROGRAMS "${PROGRAMS};testNonlinearEquality") + set(PROGRAMS "${PROGRAMS};testNonlinearFactor") + set(PROGRAMS "${PROGRAMS};testNonlinearFactorGraph") + set(PROGRAMS "${PROGRAMS};testNonlinearOptimizer") + set(PROGRAMS "${PROGRAMS};testSymbolicBayesNet") + set(PROGRAMS "${PROGRAMS};testSymbolicFactorGraph") + set(PROGRAMS "${PROGRAMS};testTupleValues") + set(PROGRAMS "${PROGRAMS};testNonlinearISAM") + foreach(program ${PROGRAMS}) + set (program_exe "${program}-global") + add_executable(${program_exe} "${program}.cpp") + target_link_libraries(${program_exe} ${lib_target} ${libs_support}) + add_test(${program_exe} ${program_exe}) + endforeach(program) +endif () + + +#check_PROGRAMS += testSerialization + +if (BUILD_TIMINGS) + set(PROGRAMS "") + set(PROGRAMS "${PROGRAMS};timeGaussianFactorGraph") + set(PROGRAMS "${PROGRAMS};timeSequentialOnDataset") + set(PROGRAMS "${PROGRAMS};timeMultifrontalOnDataset") + foreach(program ${PROGRAMS}) + set (program_exe "${program}-global") + add_executable(${program_exe} "${program}.cpp") + target_link_libraries(${program_exe} ${lib_target} ${libs_support}) + endforeach(program) +endif () +