Skip to content

Commit

Permalink
Enable meta examples when ENABLE_TESTING is OFF.
Browse files Browse the repository at this point in the history
Resolve issue #3553
  • Loading branch information
geektoni committed Jan 29, 2017
1 parent 8fdf278 commit fb2f6b5
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 58 deletions.
118 changes: 61 additions & 57 deletions examples/meta/CMakeLists.txt
Expand Up @@ -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})
Expand All @@ -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()
17 changes: 16 additions & 1 deletion examples/meta/cpp/CMakeLists.txt
Expand Up @@ -23,7 +23,15 @@ 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")
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
Expand All @@ -45,3 +53,10 @@ ENDFOREACH()
add_custom_target(build_cpp_meta_examples ALL
DEPENDS ${GENERATED_CPP_EXAMPLES}
COMMENT "Compiled generated cpp examples")

IF (NOT ENABLE_TESTING)
MESSAGE(
WARNING
"The -Wno-unused-variable flag has been set on C++ meta examples"
)
ENDIF()

0 comments on commit fb2f6b5

Please sign in to comment.