Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix windows dll creation #4927

Open
wants to merge 9 commits into
base: develop
Choose a base branch
from
11 changes: 7 additions & 4 deletions .ci/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,14 +157,17 @@ jobs:
timeoutInMinutes: 180

pool:
vmImage: 'vs2017-win2016'
vmImage: 'windows-latest'

strategy:
matrix:
py36:
CONDA_PY: "36"
CONDA_ENV: shogun
cmakeOptions: '-DBUILD_META_EXAMPLES=OFF'
CONDA_DEFAULT_ENV: shogun
CONDA_EXE: $(CONDA)\Scripts\conda.exe
CONDA_PREFIX: $(CONDA)\envs\shogun
CONDA_PREFIX_1: $(CONDA)
CONDA_PYTHON_EXE: $(CONDA)\python.exe
cmakeOptions: ''

variables:
clcacheDir: 'C:\\Users\\VssAdministrator\\clcache'
Expand Down
16 changes: 16 additions & 0 deletions .ci/shogun.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: shogun
channels:
- conda-forge
dependencies:
- python=3.6.*
- setuptools
- numpy
- scipy
- eigen
- snappy
- zlib
- ctags
- ply
- jinja2
- mkl-devel
- swig
23 changes: 11 additions & 12 deletions .ci/windows-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ steps:
fetchDepth: 5
submodules: true

- task: CondaEnvironment@1
displayName: Install dependencies
inputs:
createCustomEnvironment: True
environmentName: shogun
packageSpecs: 'python=3.6.* setuptools numpy scipy eigen snappy zlib ctags ply jinja2 gtest mkl-devel swig'
createOptions: '-c conda-forge'
updateConda: false
# see: https://github.com/Microsoft/azure-pipelines-tasks/issues/8504
- script: |
echo '##vso[task.setvariable variable=PATH]$(Build.SourcesDirectory)\build\src\shogun\$(buildConfiguration);$(CONDA_PREFIX);$(CONDA_PREFIX)\Library\mingw-w64\bin;$(CONDA_PREFIX)\Library\usr\bin;$(CONDA_PREFIX)\Library\bin;$(CONDA_PREFIX)\Scripts;$(CONDA_PREFIX)\bin;$(CONDA_PREFIX_1);$(CONDA_PREFIX_1)\Library\mingw-w64\bin;$(CONDA_PREFIX_1)\Library\usr\bin;$(CONDA_PREFIX_1)\Library\bin;$(CONDA_PREFIX_1)\Scripts;$(CONDA_PREFIX_1)\bin;$(PATH)'
displayName: Add conda and build directory to PATH

- script: 'conda env create -f .ci\shogun.yml --quiet'

- script: |
.ci\\setup_clcache.cmd
Expand Down Expand Up @@ -39,13 +37,14 @@ steps:
- task: CMake@1
displayName: Setup
inputs:
cmakeArgs: '-G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=$(buildConfiguration) -DCMAKE_PREFIX_PATH=$(CONDA_PREFIX)\Library -DENABLE_TESTING=ON -DCMAKE_INSTALL_PREFIX=$(targetPrefix) $(cmakeOptions) -DBLAS_LIBRARIES=$(CONDA_PREFIX)/Library/lib/mkl_core_dll.lib -DLAPACK_LIBRARIES=$(CONDA_PREFIX)/Library/lib/mkl_core_dll.lib -DBLA_VENDOR=Intel ..'
cmakeArgs: '-G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=$(buildConfiguration) -DCMAKE_PREFIX_PATH=$(CONDA_PREFIX)\Library -DENABLE_TESTING=ON -DCMAKE_INSTALL_PREFIX=$(targetPrefix) $(cmakeOptions) -DBLAS_LIBRARIES=$(CONDA_PREFIX)/Library/lib/mkl_core_dll.lib -DLAPACK_LIBRARIES=$(CONDA_PREFIX)/Library/lib/mkl_core_dll.lib -DBLA_VENDOR=Intel ..'

- script: cmake --build . --config $(buildConfiguration) --target INSTALL -- /p:TrackFileAccess=false /p:CLToolExe=clcache.exe /m:2
- task: CMake@1
displayName: 'Build ($(buildConfiguration) $(buildPlatform))'
workingDirectory: $(Build.SourcesDirectory)\build
inputs:
cmakeArgs: '--build . --config $(buildConfiguration) --target INSTALL -- /p:TrackFileAccess=false /p:CLToolExe=clcache.exe /m:2'

- script: ctest -j 2
- script: ctest --output-on-failure -j 2 -C $(buildConfiguration)
displayName: Test
workingDirectory: $(Build.SourcesDirectory)\build

Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ SET(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
#### set required C++ standard level of the compiler
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_CXX_EXTENSIONS OFF)
if (MSVC)
if (MSVC_VERSION VERSION_LESS 1900)
Expand All @@ -47,6 +48,8 @@ if (MSVC)
endif()
endif()

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

#### check for c++17 features - not all compilers support c++17 in 2019
include(CheckCXXSourceCompiles)

Expand Down
1 change: 0 additions & 1 deletion cmake/ShogunFindLAPACK.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ IF (LAPACK_FOUND)
MESSAGE(STATUS "Enabling MKL as BLAS/Lapack backend for Eigen.")
SET(EIGEN_USE_MKL_ALL 1)
target_include_directories(shogun PUBLIC ${MKL_INCLUDE_DIR})
target_include_directories(libshogun PRIVATE ${MKL_INCLUDE_DIR})
IF (LIBSHOGUN_BUILD_STATIC)
target_include_directories(shogun-static PUBLIC ${MKL_INCLUDE_DIR})
ENDIF()
Expand Down
6 changes: 1 addition & 5 deletions cmake/ShogunInterfaces.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,7 @@ SET(SWIG_MODULE_${INTERFACE_NAME}_EXTRA_DEPS ${INTERFACE_FILES})
SWIG_ADD_MODULE(${INTERFACE_TARGET} ${INTERFACE_NAME} shogun.i)
SET(INTERFACE_REAL_NAME ${SWIG_MODULE_interface_${INTERFACE_NAME}_REAL_NAME})

IF (WIN32)
SWIG_LINK_LIBRARIES(${INTERFACE_TARGET} shogun::shogun-static)
ELSE ()
SWIG_LINK_LIBRARIES(${INTERFACE_TARGET} shogun::shogun)
ENDIF ()
SWIG_LINK_LIBRARIES(${INTERFACE_TARGET} shogun::shogun)
IF (NOT "${INTERFACE_LIBRARIES}" STREQUAL "NO")
SWIG_LINK_LIBRARIES(${INTERFACE_TARGET} ${INTERFACE_LIBRARIES})
ENDIF()
Expand Down
20 changes: 11 additions & 9 deletions cmake/ShogunUtils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ MACRO(AddMetaIntegrationTest META_TARGET CONDITION)
IF (${CONDITION})
add_test(NAME integration_meta_${META_TARGET}-${NAME_WITH_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND meta_example_integration_tester ${REL_DIR} ${NAME}.dat ${META_TARGET} generated_results reference_results)
COMMAND meta_example_integration_tester ${REL_DIR} ${NAME}.dat ${META_TARGET} ${GENERATED_RESULTS_DIR} ${REFERENCE_RESULTS_DIR})
set_tests_properties(
integration_meta_${META_TARGET}-${NAME_WITH_DIR}
PROPERTIES
Expand All @@ -106,11 +106,7 @@ MACRO(AddLibShogunExample EXAMPLE_CPP)
STRING(REGEX REPLACE ".cpp\$" "" EXAMPLE "${EXAMPLE_CPP}")

add_executable(${EXAMPLE} EXCLUDE_FROM_ALL ${CMAKE_CURRENT_SOURCE_DIR}/${EXAMPLE_CPP})
if(WIN32)
target_link_libraries(${EXAMPLE} shogun::shogun-static ${SANITIZER_LIBRARY})
else()
target_link_libraries(${EXAMPLE} shogun::shogun ${SANITIZER_LIBRARY})
endif()
target_link_libraries(${EXAMPLE} shogun::shogun ${SANITIZER_LIBRARY})
IF(SANITIZER_FLAGS)
set_target_properties(${EXAMPLE} PROPERTIES COMPILE_FLAGS ${SANITIZER_FLAGS})
ENDIF()
Expand Down Expand Up @@ -196,7 +192,7 @@ macro(ADD_LIBRARY_DEPENDENCY)
endmacro()

macro(SHOGUN_DEPENDENCIES)
ADD_LIBRARY_DEPENDENCY(TARGETS shogun shogun-static libshogun shogun_deps ${ARGN})
ADD_LIBRARY_DEPENDENCY(TARGETS shogun shogun-static shogun_deps ${ARGN})
endmacro()

function(SHOGUN_LINK_LIBS)
Expand All @@ -210,7 +206,6 @@ endfunction()

function(SHOGUN_COMPILE_OPTS)
set(SCOPE PRIVATE)
target_compile_options(libshogun ${SCOPE} ${ARGN})
target_compile_options(shogun ${SCOPE} ${ARGN})
if (LIBSHOGUN_BUILD_STATIC)
target_compile_options(shogun-static ${SCOPE} ${ARGN})
Expand All @@ -227,7 +222,6 @@ function(SHOGUN_INCLUDE_DIRS)
if(SHOGUN_INCLUDE_DIRS_SYSTEM)
set(SYSTEM "SYSTEM")
endif()
target_include_directories(libshogun ${SYSTEM} ${SHOGUN_INCLUDE_DIRS_SCOPE} ${DIRS})
target_include_directories(shogun ${SYSTEM} ${SHOGUN_INCLUDE_DIRS_SCOPE} ${DIRS})
if (LIBSHOGUN_BUILD_STATIC)
target_include_directories(shogun-static ${SYSTEM} ${SHOGUN_INCLUDE_DIRS_SCOPE} ${DIRS})
Expand Down Expand Up @@ -328,3 +322,11 @@ function(ADD_SHOGUN_BENCHMARK REL_BENCHMARK_NAME)
set_tests_properties(${BENCHMARK_NAME} PROPERTIES ${ARGN})
endif()
endfunction()


macro(ADD_SHOGUN_DEPENDENCY DEPENDENT)
add_dependencies(shogun ${DEPENDENT})
if (LIBSHOGUN_BUILD_STATIC)
add_dependencies(shogun-static ${DEPENDENT})
endif()
endmacro()
2 changes: 1 addition & 1 deletion cmake/external/ARPREC.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ ExternalProject_Add(

SET(ARPREC_INCLUDE_DIR ${THIRD_PARTY_DIR}/include/arprec)
SET(ARPREC_LIBRARIES ${THIRD_PARTY_DIR}/libs/arprec/libarprec.a)
LIST(APPEND SHOGUN_DEPENDS ARPREC)
ADD_SHOGUN_DEPENDENCY(ARPREC)
2 changes: 1 addition & 1 deletion cmake/external/ColPack.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ ExternalProject_Add(
SET(COLPACK_INCLUDE_DIRS ${THIRD_PARTY_DIR}/include/ColPack)
SET(COLPACK_LDFLAGS ${THIRD_PARTY_DIR}/libs/ColPack/libColPack.a)

LIST(APPEND SHOGUN_DEPENDS COLPACK)
ADD_SHOGUN_DEPENDENCY(COLPACK)
2 changes: 1 addition & 1 deletion cmake/external/Eigen3.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ ExternalProject_Add(
-DEIGEN_BUILD_PKGCONFIG=0
)

add_dependencies(libshogun Eigen3)
ADD_SHOGUN_DEPENDENCY(Eigen3)

UNSET(C_COMPILER)
UNSET(CXX_COMPILER)
62 changes: 57 additions & 5 deletions cmake/external/GoogleTestNMock.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
MergeCFLAGS()
find_package(Threads)
include(ExternalProject)

set(GTEST_PREFIX
"${CMAKE_BINARY_DIR}/GoogleMock")
set(BUILD_DIR
"${GTEST_PREFIX}/src/GoogleMock-build")
set(GTEST_DIR
"${BUILD_DIR}/googlemock/gtest")
set(GMOCK_DIR
"${BUILD_DIR}/googlemock")

IF (MSVC)
SET (CUSTOM_CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gmock
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gmock
SET (CUSTOM_CMAKE_ARGS
-DINSTALL_GTEST=OFF
-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}${CMAKE_DEFINITIONS}
-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_CXX_FLAGS_DISTRIBUTION:STRING=${CMAKE_CXX_FLAGS_DISTRIBUTION}
Expand All @@ -13,23 +23,27 @@ IF (MSVC)
)
ELSE ()
SET(MERGED_CXX_FLAGS "${MERGED_CXX_FLAGS} -fPIC")
SET (CUSTOM_CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gmock
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gmock
SET (CUSTOM_CMAKE_ARGS
-DINSTALL_GTEST=OFF
-DCMAKE_CXX_FLAGS:STRING=${MERGED_CXX_FLAGS}${CMAKE_DEFINITIONS}
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
)
ENDIF()

IF(EXISTS /usr/src/googletest)
IF (EXISTS /usr/src/googletest)
ExternalProject_Add(
GoogleMock
DOWNLOAD_COMMAND ""
SOURCE_DIR /usr/src/googletest
PREFIX ${CMAKE_BINARY_DIR}/GoogleMock
INSTALL_COMMAND ""
CMAKE_ARGS ${CUSTOM_CMAKE_ARGS}
BUILD_BYPRODUCTS ${GMOCK_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX} ${GTEST_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
)

set(GTEST_INCLUDE_DIR "/usr/src/googletest/googletest/include")
set(GMOCK_INCLUDE_DIR "/usr/src/googletest/googlemock/include")
ELSE()
ExternalProject_Add(
GoogleMock
Expand All @@ -40,5 +54,43 @@ ELSE()
DOWNLOAD_DIR ${THIRD_PARTY_DIR}/GoogleMock
INSTALL_COMMAND ""
CMAKE_ARGS ${CUSTOM_CMAKE_ARGS}
BUILD_BYPRODUCTS ${GMOCK_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX} ${GTEST_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
)

set(GTEST_INCLUDE_DIR
"${GTEST_PREFIX}/src/GoogleMock/googletest/include")
set(GMOCK_INCLUDE_DIR
"${GTEST_PREFIX}/src/GoogleMock/googlemock/include")

file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR})
file(MAKE_DIRECTORY ${GMOCK_INCLUDE_DIR})
ENDIF()

add_library(gtest IMPORTED STATIC GLOBAL)
set_target_properties(gtest PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
if(CMAKE_GENERATOR MATCHES "Visual Studio.*" OR CMAKE_GENERATOR STREQUAL Xcode)
set_target_properties(gtest PROPERTIES
IMPORTED_LOCATION_DEBUG "${GTEST_DIR}/Debug/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}"
IMPORTED_LOCATION_RELEASE "${GTEST_DIR}/Release/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
else()
set_target_properties(gtest PROPERTIES
IMPORTED_LOCATION "${GTEST_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()

add_library(gmock IMPORTED STATIC GLOBAL)
set_target_properties(gmock PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GMOCK_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
if(CMAKE_GENERATOR MATCHES "Visual Studio.*" OR CMAKE_GENERATOR STREQUAL Xcode)
set_target_properties(gmock PROPERTIES
IMPORTED_LOCATION_DEBUG "${GMOCK_DIR}/Debug/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}"
IMPORTED_LOCATION_RELEASE "${GMOCK_DIR}/Release/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}")
else()
set_target_properties(gmock PROPERTIES
IMPORTED_LOCATION "${GMOCK_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()

add_dependencies(gtest GoogleMock)
add_dependencies(gmock GoogleMock)
2 changes: 1 addition & 1 deletion cmake/external/Jemalloc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ ExternalProject_Add(

SET(Jemalloc_INCLUDE_DIR ${THIRD_PARTY_DIR}/include/jemalloc)
SET(Jemalloc_LIBRARIES ${THIRD_PARTY_DIR}/libs/jemalloc/libjemalloc_pic.a)
add_dependencies(libshogun Jemalloc)
ADD_SHOGUN_DEPENDENCY(Jemalloc)
2 changes: 1 addition & 1 deletion cmake/external/MSIntTypes.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ ExternalProject_Add(

ExternalProject_Get_Property(MSIntTypes SOURCE_DIR)
SET(MSINTTYPES_INCLUDE_DIR ${SOURCE_DIR})
add_dependencies(libshogun MSIntTypes)
ADD_SHOGUN_DEPENDENCY(MSIntTypes)
2 changes: 1 addition & 1 deletion cmake/external/NLopt.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ ExternalProject_Add(

SET(NLOPT_INCLUDE_DIR ${THIRD_PARTY_DIR}/include/nlopt)
SET(NLOPT_LIBRARIES ${THIRD_PARTY_DIR}/libs/nlopt/libnlopt.a)
LIST(APPEND SHOGUN_DEPENDS NLopt)
ADD_SHOGUN_DEPENDENCY(NLopt)
2 changes: 1 addition & 1 deletion cmake/external/RapidJSON.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ ExternalProject_Add(
)

set(RapidJSON_FOUND FALSE CACHE INTERNAL BOOL)
LIST(APPEND SHOGUN_DEPENDS RapidJSON)
ADD_SHOGUN_DEPENDENCY(RapidJSON)
2 changes: 1 addition & 1 deletion cmake/external/TCMalloc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ ExternalProject_Add(

SET(TCMalloc_INCLUDE_DIR ${THIRD_PARTY_DIR}/include/tcmalloc)
SET(TCMalloc_LIBRARIES ${THIRD_PARTY_DIR}/libs/tcmalloc/libtcmalloc_minimal.a)
add_dependencies(libshogun TCMalloc)
ADD_SHOGUN_DEPENDENCY(TCMalloc)
2 changes: 1 addition & 1 deletion cmake/external/TFLogger.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ExternalProject_Add(
BUILD_COMMAND ""
)

add_dependencies(libshogun tflogger)
ADD_SHOGUN_DEPENDENCY(tflogger)

set(TFLogger_INCLUDE_DIR ${THIRD_PARTY_INCLUDE_DIR})

Expand Down
2 changes: 1 addition & 1 deletion cmake/external/bitsery.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ ExternalProject_Add(
INSTALL_COMMAND ""
)

LIST(APPEND SHOGUN_DEPENDS bitsery)
ADD_SHOGUN_DEPENDENCY(bitsery)
3 changes: 1 addition & 2 deletions cmake/external/rxcpp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,5 @@ ExternalProject_Add(
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${RXCPP_SOURCE_DIR}/src/Rx/v2/src/ ${THIRD_PARTY_INCLUDE_DIR}/
)

add_dependencies(libshogun rxcpp)

set(rxcpp_INCLUDE_DIR ${THIRD_PARTY_INCLUDE_DIR})
ADD_SHOGUN_DEPENDENCY(rxcpp)
3 changes: 1 addition & 2 deletions cmake/external/spdlog.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,4 @@ else()
IMPORTED_LOCATION ${spdlog_LIBRARY_NAME})
endif()

add_dependencies(spdlog SpdLog)
add_dependencies(libshogun spdlog)
ADD_SHOGUN_DEPENDENCY(spdlog)
2 changes: 1 addition & 1 deletion cmake/external/variant.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ ExternalProject_Add(
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VARIANT_SOURCE_DIR}/${VARIANT_RELEASE_VERSION}/variant.hpp ${VARIANT_INCLUDE_DIR}/variant.hpp
)

add_dependencies(libshogun variant)
ADD_SHOGUN_DEPENDENCY(variant)
7 changes: 1 addition & 6 deletions examples/meta/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,7 @@ add_custom_target(parse_lex_files ALL DEPENDS ${GENERATED_PARSER_FILES})
# list of interfaces for which we dont generate meta examples
SET(DISABLED_INTERFACES INTERFACE_PERL)

# handle the data path
IF (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/data)
# copy data symlink to cmake binary dir so that we can execute meta examples in there
CREATE_DATA_SYMLINK(${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR}/data)
ENDIF()
SET(SHOGUN_DATA ${CMAKE_CURRENT_BINARY_DIR}/data)
SET(SHOGUN_DATA ${CMAKE_SOURCE_DIR}/data/toy)

# translate the meta examples to the target languages using the .sg.in files
# first cmake will do variable substitution on @SHOGUN_DATA@ and generate .sg files
Expand Down