diff --git a/examples/meta/CMakeLists.txt b/examples/meta/CMakeLists.txt index cea18e41c64..ae87ac25522 100644 --- a/examples/meta/CMakeLists.txt +++ b/examples/meta/CMakeLists.txt @@ -27,18 +27,25 @@ FOREACH(META_EXAMPLE ${META_EXAMPLES}) LIST(APPEND EXAMPLE_LISTINGS ${CMAKE_CURRENT_BINARY_DIR}/r/${BASENAME}.R) LIST(APPEND EXAMPLE_LISTINGS ${CMAKE_CURRENT_BINARY_DIR}/lua/${BASENAME}.lua) + # Set generate.py flags + SET(GENERATOR_FLAGS + -i ${META_EXAMPLE} + -o ${CMAKE_CURRENT_BINARY_DIR} + -t ${CMAKE_CURRENT_SOURCE_DIR}/generator/targets + -g ${CTAGS_FILE} + --parser_files_dir=${CMAKE_CURRENT_BINARY_DIR}/parser_files) + + # Enable variable storing only if we have enabled testing + IF(ENABLE_TESTING) + LIST(APPEND GENERATOR_FLAGS --store-vars) + ENDIF() + # Run example generation script SET(TEMP ${CMAKE_CURRENT_BINARY_DIR}/python/${EXAMPLE_REL_DIR}/${EXAMPLE_NAME}.py) add_custom_command(OUTPUT ${EXAMPLE_LISTINGS} COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/generate.py - -i ${META_EXAMPLE} - -o ${CMAKE_CURRENT_BINARY_DIR} - -t ${CMAKE_CURRENT_SOURCE_DIR}/generator/targets - -g ${CTAGS_FILE} - --store-vars - --parser_files_dir=${CMAKE_CURRENT_BINARY_DIR}/parser_files - COMMENT "Generating example ${EXAMPLE_NAME_WITH_DIR}" + ${CMAKE_CURRENT_SOURCE_DIR}/generator/generate.py ${GENERATOR_FLAGS} + COMMENT "Generating example ${EXAMPLE_NAME_WITH_DIR}" DEPENDS ctags ${META_EXAMPLE}) LIST(APPEND TRANSLATED_META_EXAMPLES ${EXAMPLE_LISTINGS}) @@ -48,59 +55,56 @@ SET_SOURCE_FILES_PROPERTIES(${TRANSLATED_META_EXAMPLES} PROPERTIES GENERATED TRU add_custom_target(meta_examples DEPENDS ${TRANSLATED_META_EXAMPLES}) -# If testing is enabled we run the examples -IF(ENABLE_TESTING) - IF (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/data) - # copy data symlink to cmake binary dir so that we can execute meta examples in there - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/data" "${CMAKE_CURRENT_BINARY_DIR}/data") - ENDIF() - - - # c++ - IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cpp AND NOT ${TRAVIS_DISABLE_META_CPP}) - IF(HAVE_CXX0X OR HAVE_CXX11) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp) - ELSE() - MESSAGE(WARNING "Skipping C++ meta examples; requires a c++11 compatible compiler.") - ENDIF() +# C++ example are always available +IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cpp AND NOT ${TRAVIS_DISABLE_META_CPP}) + IF(HAVE_CXX0X OR HAVE_CXX11) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp) + ELSE() + MESSAGE(WARNING "Skipping C++ meta examples; requires a c++11 compatible compiler.") ENDIF() +ENDIF() - # Python - IF (PythonModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/python) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/python) - ENDIF() +# Generate symlink for the data directory +IF (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/data) + # copy data symlink to cmake binary dir so that we can execute meta examples in there + EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/data" "${CMAKE_CURRENT_BINARY_DIR}/data") +ENDIF() - # java - IF (JavaModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/java) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/java) - ENDIF() +# Python +IF (PythonModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/python) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/python) +ENDIF() - # octave - IF (OctaveModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/octave) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/octave) - ENDIF() +# java +IF (JavaModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/java) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/java) +ENDIF() - # r - IF (RModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/r) - # temporarily disabled as R and static calls has to be fixed - #add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/r) - ENDIF() - - # csharp - IF (CSharpModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/csharp) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/csharp) - ENDIF() - - # ruby - IF (RubyModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/ruby) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ruby) - ENDIF() +# octave +IF (OctaveModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/octave) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/octave) +ENDIF() - # lua - IF (LuaModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lua) - # temporarily removed since lua modular currently - # does not support overloaded c++ methods - # see https://github.com/shogun-toolbox/shogun/issues/3018 - #add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lua) - ENDIF() +# r +IF (RModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/r) + # temporarily disabled as R and static calls has to be fixed + #add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/r) +ENDIF() + +# csharp +IF (CSharpModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/csharp) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/csharp) +ENDIF() + +# ruby +IF (RubyModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/ruby) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ruby) +ENDIF() + +# lua +IF (LuaModular AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lua) + # temporarily removed since lua modular currently + # does not support overloaded c++ methods + # see https://github.com/shogun-toolbox/shogun/issues/3018 + #add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lua) ENDIF() diff --git a/examples/meta/cpp/CMakeLists.txt b/examples/meta/cpp/CMakeLists.txt index db7a42a9287..bac26fbe66c 100644 --- a/examples/meta/cpp/CMakeLists.txt +++ b/examples/meta/cpp/CMakeLists.txt @@ -23,7 +23,16 @@ FOREACH(META_EXAMPLE ${META_EXAMPLES}) ADD_DEPENDENCIES(${GENERATED_CPP_BINARY} meta_examples shogun) SET_SOURCE_FILES_PROPERTIES(${GENERATED_CPP} PROPERTIES GENERATED 1) TARGET_LINK_LIBRARIES(${GENERATED_CPP_BINARY} shogun ${SANITIZER_LIBRARY}) - IF(SANITIZER_FLAGS) + + # Suppress unused variable warnings + # if we are not testing the meta_examples + IF (NOT ENABLE_TESTING) + SET_TARGET_PROPERTIES(${GENERATED_CPP_BINARY} PROPERTIES + COMPILE_FLAGS "-Wno-unused-variable") + MESSAGE( WARNING "The -Wno-unused-variable flag has been set on C++ meta examples") + ENDIF() + + IF(SANITIZER_FLAGS) SET_TARGET_PROPERTIES(${GENERATED_CPP_BINARY} PROPERTIES COMPILE_FLAGS ${SANITIZER_FLAGS}) ENDIF() # Add examples to the dependencies of modular interfaces to make sure