diff --git a/CMakeLists.txt b/CMakeLists.txt index 910fd6724..03c05316e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,12 @@ set(SMQTK_VERSION_MAJOR ${CMAKE_MATCH_1}) set(SMQTK_VERSION_MINOR ${CMAKE_MATCH_3}) set(SMQTK_VERSION_PATCH ${CMAKE_MATCH_5}) +### +# Options +# +option(SMQTK_BUILD_EXAMPLES "Enable building examples." ON) +option(SMQTK_INSTALL_SETUP_SCRIPT "Enable building examples." ON) +mark_as_advanced(SMQTK_INSTALL_SETUP_SCRIPT) ### # Determine where to install python things in our install tree @@ -58,14 +64,16 @@ add_subdirectory( src ) # File configuration # # Environment setup scripts -configure_file("${SMQTK_SOURCE_DIR}/setup_env.build.sh.in" - "${SMQTK_BINARY_DIR}/setup_env.build.sh" - @ONLY - ) -configure_file("${SMQTK_SOURCE_DIR}/setup_env.install.sh.in" - "${SMQTK_BINARY_DIR}/setup_env.install.sh" - @ONLY - ) +if(SMQTK_INSTALL_SETUP_SCRIPT) + configure_file("${SMQTK_SOURCE_DIR}/setup_env.build.sh.in" + "${SMQTK_BINARY_DIR}/setup_env.build.sh" + @ONLY + ) + configure_file("${SMQTK_SOURCE_DIR}/setup_env.install.sh.in" + "${SMQTK_BINARY_DIR}/setup_env.install.sh" + @ONLY + ) +endif() ### @@ -76,10 +84,12 @@ install(DIRECTORY docs/ ) # Should only be required for users installing to a non-standard location -install(FILES "${SMQTK_BINARY_DIR}/setup_env.install.sh" - DESTINATION . - RENAME setup_smqtk.sh - ) +if(SMQTK_INSTALL_SETUP_SCRIPT) + install(FILES "${SMQTK_BINARY_DIR}/setup_env.install.sh" + DESTINATION . + RENAME setup_smqtk.sh + ) +endif() # This is probably not the correct way to be doing this, but when using CPack, # make sure the CMAKE_INSTALL_PREFIX is clean before constructing packages. If diff --git a/TPL/CMakeLists.txt b/TPL/CMakeLists.txt index 9f14c0dbb..cb65b78e9 100644 --- a/TPL/CMakeLists.txt +++ b/TPL/CMakeLists.txt @@ -10,22 +10,32 @@ option(SMQTK_BUILD_FLANN "Enable building of FLANN." ON) # TPL_PYTHON_SP - relative path of standarad Python site-packages dir -# Pick "make" executable based on generator chosen or environment variable -# set. -if (CMAKE_GENERATOR MATCHES ".*Makefiles") - set(MAKE_EXECUTABLE "$(MAKE)") -elseif(NOT "#@$ENV{MAKE}" STREQUAL "#@") - set(MAKE_EXECUTABLE $ENV{MAKE}) -else() - find_program(MAKE_EXECUTABLE make) -endif() - - ### # libSVM # if (SMQTK_BUILD_LIBSVM) + # Required a make command to build. Required its existance. + # Pick "make" executable based on generator chosen or environment variable + # set. + if (CMAKE_GENERATOR MATCHES ".*Makefiles") + set(MAKE_EXECUTABLE "$(MAKE)") + elseif(WIN32) + set(MAKE_EXECUTABLE nmake -f Makefile.win) + elseif(NOT "#@$ENV{MAKE}" STREQUAL "#@") + set(MAKE_EXECUTABLE $ENV{MAKE}) + else() + find_program(MAKE_EXECUTABLE make) + endif() + + # Set the libsvm we want. Can't just use a suffix, since linux uses *.so.2 + if(WIN32) + set(LIBSVM_NAME libsvm.dll) + else() + set(LIBSVM_NAME libsvm.so.2) + endif() + + if( NOT MAKE_EXECUTABLE ) message( FATAL_ERROR "Could not find 'make', required to build libsvm." ) endif() @@ -41,11 +51,11 @@ if (SMQTK_BUILD_LIBSVM) INSTALL_COMMAND "${CMAKE_COMMAND}" -E make_directory "${TPL_LOCAL_INSTALL}/lib" COMMAND "${CMAKE_COMMAND}" -E make_directory "${TPL_LOCAL_INSTALL}/include" COMMAND "${CMAKE_COMMAND}" -E make_directory "${TPL_PYTHON_SP}" - COMMAND "${CMAKE_COMMAND}" -E copy libsvm.so.2 "${TPL_LOCAL_INSTALL}/lib" + COMMAND "${CMAKE_COMMAND}" -E copy ${LIBSVM_NAME} "${TPL_LOCAL_INSTALL}/lib" COMMAND "${CMAKE_COMMAND}" -E copy svm.h "${TPL_LOCAL_INSTALL}/include" COMMAND "${CMAKE_COMMAND}" -E copy python/svm.py "${TPL_PYTHON_SP}" COMMAND "${CMAKE_COMMAND}" -E copy python/svmutil.py "${TPL_PYTHON_SP}" - ) + ) endif() @@ -71,6 +81,7 @@ if (SMQTK_BUILD_FLANN) -DBUILD_MATLAB_BINDINGS:BOOL=OFF -DBUILD_CUDA_LIB:BOOL=OFF -DBUILD_PYTHON_BINDINGS:BOOL=OFF + -DBUILD_EXAMPLES:BOOL=${SMQTK_BUILD_EXAMPLES} #-DLATEX_OUTPUT_PATH:PATH=${CMAKE_CURRENT_LIST_DIR}/flann-1.8.4 -DLATEX_OUTPUT_PATH:PATH=build "-DCMAKE_INSTALL_PREFIX:PATH=${TPL_LOCAL_INSTALL}" diff --git a/TPL/flann-1.8.4/.gitignore b/TPL/flann-1.8.4/.gitignore new file mode 100644 index 000000000..3a2b70c59 --- /dev/null +++ b/TPL/flann-1.8.4/.gitignore @@ -0,0 +1,3 @@ +CMakeFiles +Makefile +cmake_install.cmake diff --git a/TPL/flann-1.8.4/CMakeLists.txt b/TPL/flann-1.8.4/CMakeLists.txt index 327991584..6a8780e32 100644 --- a/TPL/flann-1.8.4/CMakeLists.txt +++ b/TPL/flann-1.8.4/CMakeLists.txt @@ -54,6 +54,7 @@ option(BUILD_C_BINDINGS "Build C bindings" ON) option(BUILD_PYTHON_BINDINGS "Build Python bindings" ON) option(BUILD_MATLAB_BINDINGS "Build Matlab bindings" ON) option(BUILD_CUDA_LIB "Build CUDA library" OFF) +option(BUILD_EXAMPLES "Build examples" ON) option(USE_OPENMP "Use OpenMP multi-threading" ON) option(USE_MPI "Use MPI" OFF) @@ -155,7 +156,11 @@ endif(WIN32) add_subdirectory( cmake ) add_subdirectory( src ) -add_subdirectory( examples ) + +if(BUILD_EXAMPLES) + add_subdirectory( examples ) +endif() + add_subdirectory( test ) add_subdirectory( doc ) diff --git a/TPL/flann-1.8.4/src/cpp/.gitignore b/TPL/flann-1.8.4/src/cpp/.gitignore new file mode 100644 index 000000000..3a2b70c59 --- /dev/null +++ b/TPL/flann-1.8.4/src/cpp/.gitignore @@ -0,0 +1,3 @@ +CMakeFiles +Makefile +cmake_install.cmake diff --git a/TPL/flann-1.8.4/src/cpp/flann/util/serialization.h b/TPL/flann-1.8.4/src/cpp/flann/util/serialization.h index 885192b68..e871824ce 100644 --- a/TPL/flann-1.8.4/src/cpp/flann/util/serialization.h +++ b/TPL/flann-1.8.4/src/cpp/flann/util/serialization.h @@ -89,7 +89,9 @@ BASIC_TYPE_SERIALIZER(unsigned long); BASIC_TYPE_SERIALIZER(float); BASIC_TYPE_SERIALIZER(double); BASIC_TYPE_SERIALIZER(bool); - +#ifdef _MSC_VER +BASIC_TYPE_SERIALIZER(unsigned __int64); +#endif // serializer for std::vector diff --git a/TPL/libsvm-3.1-custom/Makefile.win b/TPL/libsvm-3.1-custom/Makefile.win index 0db46f390..6913a5f5e 100644 --- a/TPL/libsvm-3.1-custom/Makefile.win +++ b/TPL/libsvm-3.1-custom/Makefile.win @@ -26,7 +26,7 @@ svm.obj: svm.cpp svm.h $(CXX) $(CFLAGS) -c svm.cpp lib: svm.cpp svm.h svm.def - $(CXX) $(CFLAGS) -LD svm.cpp -Fe$(TARGET)\libsvm -link -DEF:svm.def + $(CXX) $(CFLAGS) -LD svm.cpp -Felibsvm -link -DEF:svm.def clean: -erase /Q *.obj $(TARGET)\. diff --git a/docs/release_notes/pending_release.md b/docs/release_notes/pending_release.md index d7be8c8a9..28cfdb84f 100644 --- a/docs/release_notes/pending_release.md +++ b/docs/release_notes/pending_release.md @@ -5,6 +5,9 @@ SMQTK Pending Release Notes Updates / New Features since v0.8.1 ----------------------------------- +libSVM + + * Can now build libSVM on Windows Fixes since v0.8.1 ------------------