blob: 547dad74f65ef4a2b15cb78584ab857bf6547ade [file] [log] [blame]
Dean Moldovan8c6b0b82016-05-23 00:12:37 +02001# Set a default build configuration if none is specified. 'MinSizeRel' produces the smallest binaries
2if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
3 message(STATUS "Setting build type to 'MinSizeRel' as none was specified.")
4 set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Choose the type of build." FORCE)
5 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
6 "MinSizeRel" "RelWithDebInfo")
7endif()
Dean Moldovan8c6b0b82016-05-23 00:12:37 +02008
9set(PYBIND11_EXAMPLES
10 example1.cpp
11 example2.cpp
12 example3.cpp
13 example4.cpp
14 example5.cpp
15 example6.cpp
16 example7.cpp
17 example8.cpp
18 example9.cpp
19 example10.cpp
20 example11.cpp
21 example12.cpp
22 example13.cpp
23 example14.cpp
24 example15.cpp
25 example16.cpp
26 example17.cpp
27 issues.cpp
28)
29
30# Check if Eigen is available
31find_package(Eigen3 QUIET)
32
33if(EIGEN3_FOUND)
34 list(APPEND PYBIND11_EXAMPLES eigen.cpp)
35 message(STATUS "Building Eigen testcase")
36else()
37 message(STATUS "NOT Building Eigen testcase")
38endif()
39
40# Create the binding library
41pybind11_add_module(example example.cpp ${PYBIND11_EXAMPLES})
Wenzel Jakob67a63922016-05-29 12:35:16 +020042pybind11_enable_warnings(example)
Dean Moldovan9fb50c52016-05-27 21:42:43 +020043
Dean Moldovan8c6b0b82016-05-23 00:12:37 +020044if(EIGEN3_FOUND)
45 target_include_directories(example PRIVATE ${EIGEN3_INCLUDE_DIR})
46 target_compile_definitions(example PRIVATE -DPYBIND11_TEST_EIGEN)
47endif()
48
49# Always write the output file directly into the 'example' directory (even on MSVC)
50set(CompilerFlags
51 LIBRARY_OUTPUT_DIRECTORY LIBRARY_OUTPUT_DIRECTORY_RELEASE LIBRARY_OUTPUT_DIRECTORY_DEBUG
52 LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO
53 RUNTIME_OUTPUT_DIRECTORY RUNTIME_OUTPUT_DIRECTORY_RELEASE RUNTIME_OUTPUT_DIRECTORY_DEBUG
54 RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO)
55
56foreach(CompilerFlag ${CompilerFlags})
57 set_target_properties(example PROPERTIES ${CompilerFlag} ${PROJECT_SOURCE_DIR}/example)
58endforeach()
59
Dean Moldovan8c6b0b82016-05-23 00:12:37 +020060set(RUN_TEST ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_test.py)
61if(MSVC OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
62 set(RUN_TEST ${RUN_TEST} --relaxed)
63endif()
64
65foreach(VALUE ${PYBIND11_EXAMPLES})
66 string(REGEX REPLACE "^(.+).cpp$" "\\1" EXAMPLE_NAME "${VALUE}")
67 add_test(NAME ${EXAMPLE_NAME} COMMAND ${RUN_TEST} ${EXAMPLE_NAME})
68endforeach()