1. 24 Oct, 2018 2 commits
  2. 14 Sep, 2018 1 commit
  3. 29 Aug, 2018 2 commits
  4. 11 Jan, 2018 1 commit
  5. 02 Nov, 2017 1 commit
    • Unknown's avatar
      Trivial typos · 0b3f44eb
      Unknown authored
      Non-user facing. 
      Found using `codespell -q 3`
      0b3f44eb
  6. 10 Sep, 2017 1 commit
  7. 17 Aug, 2017 1 commit
  8. 14 Aug, 2017 1 commit
    • Jason Rhinelander's avatar
      Compile with hidden visibility always; set via cmake property rather than compiler flag · 97aa54fe
      Jason Rhinelander authored
      This updates the compilation to always apply hidden visibility to
      resolve the issues with default visibility causing problems under debug
      compilations.  Moreover using the cmake property makes it easier for a
      caller to override if absolutely needed for some reason.
      
      For `pybind11_add_module` we use cmake to set the property; for the
      targets, we append to compilation option to non-MSVC compilers.
      97aa54fe
  9. 23 Jul, 2017 1 commit
  10. 16 Jul, 2017 1 commit
    • Jason Rhinelander's avatar
      Detect c++ standard unconditionally · fad5d338
      Jason Rhinelander authored
      Currently select_cxx_standard(), which sets PYBIND11_CPP_STANDARD when
      not externally set, is only called from pybind11_add_module(), but the
      embed target setup (which runs unconditionally) makes use of
      ${PYBIND11_CPP_STANDARD}, which isn't set yet.  This commit removes the
      `select_cxx_standard` function completely and just always runs the
      standard detection code.
      
      This also tweaks the detection code to not bothering checking for the
      `-std=c++11` flag when the `-std=c++14` detection succeeded.
      fad5d338
  11. 14 Jun, 2017 1 commit
    • Jason Rhinelander's avatar
      Make check-style.sh work on stock macOS · d080f833
      Jason Rhinelander authored
      ./tools/check-style.sh fails on stock OS X currently; this fixes it:
      
      - use pipes directly rather than exec redirection (macOS's ancient
        version of bash fails with the latter)
      - macOS's ancient bash doesn't support '\e' escapes in `echo -e`;
        replace with \033 instead
      - BSD grep doesn't support GREP_COLORS, but does allow GREP_COLOR.
        Adding both doesn't hurt GNU grep: GREP_COLOR is deprecated, and won't
        be used when GREP_COLORS is set.
      - BSD grep doesn't collapse multiple /'s in the listed filename, so
        failures under `include/` would should up as
        `include//pybind11/whatever.h`.  This removes the / from the include
        directory argument.
      
      Minor other changes:
      - The CRLF detection runs with -l, so GREP_COLORS wasn't doing
        anything; removed it.
      - The trailing whitespace test would trigger on CRLFs, but the CR would
        result in messed up output.  Changed the test to just match trailing
        spaces and tabs, rather than all whitespace.
      d080f833
  12. 28 May, 2017 2 commits
  13. 09 May, 2017 1 commit
    • Jason Rhinelander's avatar
      Make PYBIND11_CPP_STANDARD work under MSVC · 77710ff0
      Jason Rhinelander authored
      Under MSVC we were ignoring PYBIND11_CPP_STANDARD and simply not
      passing any standard (which makes MSVC default to its C++14 mode).
      
      MSVC 2015u3 added the `/std:c++14` and `/std:c++latest` flags; the
      latter, under MSVC 2017, enables some C++17 features (such as
      `std::optional` and `std::variant`), so it is something we need to
      start supporting under MSVC.
      
      This makes the PYBIND11_CPP_STANDARD cmake variable work under MSVC,
      defaulting it to /std:c++14 (matching the default -std=c++14 for
      non-MSVC).
      
      It also adds a new appveyor test running under MSVC 2017 with
      /std:c++latest, which runs (and passes) the
      `std::optional`/`std::variant` tests.
      
      Also updated the documentation to clarify the c++ flags and add show
      MSVC flag examples.
      77710ff0
  14. 12 Apr, 2017 1 commit
    • Wenzel Jakob's avatar
      improve mkdoc.py determinism · 257df10f
      Wenzel Jakob authored
      When processing many files that contain top-level items with the same
      name (e.g. "operator<<"), the output was non-deterministic and depended
      on the order in which the different Clang processes finished. This
      commit adds sorting that also accounts for the filename to prevent
      random changes from run to run.
      257df10f
  15. 30 Mar, 2017 1 commit
  16. 14 Feb, 2017 3 commits
    • Dean Moldovan's avatar
      d361ea15
    • Jason Rhinelander's avatar
      Store LTO flags in PYBIND11_LTO_{CXX,LINKER}_FLAGS cache variables · c137c0a8
      Jason Rhinelander authored
      This both lets us not bother rechecking LTO flags when cmake reinvokes
      itself, and also lets the cmake invoker override to specify custom or
      no LTO flags by setting the cache variable with
      -DPYBIND11_LTO_CXX_FLAGS= when invoking cmake.
      c137c0a8
    • Jason Rhinelander's avatar
      Overhaul LTO flag detection · 1bee6e7d
      Jason Rhinelander authored
      Clang on linux currently fails to run cmake:
      
          $ CC=clang CXX=clang++ cmake ..
          ...
          -- Configuring done
          CMake Error at tools/pybind11Tools.cmake:135 (target_compile_options):
            Error evaluating generator expression:
      
              $<:-flto>
      
            Expression did not evaluate to a known generator expression
          Call Stack (most recent call first):
            tests/CMakeLists.txt:68 (pybind11_add_module)
      
      But investigating this led to various other -flto detection problems;
      this commit thus overhauls LTO flag detection:
      
      - -flto needs to be passed to the linker as well
      - Also compile with -fno-fat-lto-objects under GCC
      - Pass the equivalent flags to MSVC
      - Enable LTO flags for via generator expressions (for non-debug builds
        only), so that multi-config builds (like on Windows) still work
        properly.  This seems reasonable, however, even on single-config
        builds (and simplifies the cmake code a bit).
      - clang's lto linker plugins don't accept '-Os', so replace it with
        '-O3' when doing a MINSIZEREL build
      - Enable trying ThinLTO by default for test suite (only affects clang)
      - Match Clang$ rather than ^Clang$ because, for cmake with 3.0+
        policies in effect, the compiler ID will be AppleClang on macOS.
      1bee6e7d
  17. 13 Jan, 2017 1 commit
  18. 06 Jan, 2017 2 commits
  19. 19 Dec, 2016 3 commits
    • Dean Moldovan's avatar
      Rename target from pybind11::pybind11 to pybind11::module · 71e8a796
      Dean Moldovan authored
      Makes room for an eventual pybind11::embedded target.
      71e8a796
    • Dean Moldovan's avatar
      Add new options and docs for pybind11_add_module · 0cbec5c9
      Dean Moldovan authored
      See the documentation for a description of the options.
      0cbec5c9
    • Dean Moldovan's avatar
      Make sure add_subdirectory and find_package behave identically · b0f3885c
      Dean Moldovan authored
      Add a BUILD_INTERFACE and a pybind11::pybind11 alias for the interface
      library to match the installed target.
      
      Add new cmake tests for add_subdirectory and consolidates the
      .cpp and .py files needed for the cmake build tests:
      
      Before:
      tests
      |-- test_installed_module
      |   |-- CMakeLists.txt
      |   |-- main.cpp
      |   \-- test.py
      \-- test_installed_target
          |-- CMakeLists.txt
          |-- main.cpp
          \-- test.py
      
      After:
      tests
      \-- test_cmake_build
          |-- installed_module/CMakeLists.txt
          |-- installed_target/CMakeLists.txt
          |-- subdirectory_module/CMakeLists.txt
          |-- subdirectory_target/CMakeLists.txt
          |-- main.cpp
          \-- test.py
      b0f3885c
  20. 13 Dec, 2016 2 commits
  21. 12 Dec, 2016 1 commit
  22. 22 Nov, 2016 1 commit
  23. 20 Nov, 2016 1 commit
    • Dean Moldovan's avatar
      Always use return_value_policy::move for rvalues (#510) · d079f41c
      Dean Moldovan authored
      Fixes #509.
      
      The move policy was already set for rvalues in PR #473, but this only
      applied to directly cast user-defined types. The problem is that STL
      containers cast values indirectly and the rvalue information is lost.
      Therefore the move policy was not set correctly. This commit fixes it.
      
      This also makes an additional adjustment to remove the `copy` policy
      exception: rvalues now always use the `move` policy. This is also safe
      for copy-only rvalues because the `move` policy has an internal fallback
      to copying.
      d079f41c
  24. 08 Nov, 2016 2 commits
  25. 04 Nov, 2016 1 commit
    • Jason Rhinelander's avatar
      Add debugging info about .so size to build output (#477) · dc0b4bd2
      Jason Rhinelander authored
      * Add debugging info about so size to build output
      
      This adds a small python script to tools that captures before-and-after
      .so sizes between builds and outputs this in the build output via a
      string such as:
      
      ------ pybind11_tests.cpython-35m-x86_64-linux-gnu.so file size: 924696 (decrease of 73680 bytes = 7.38%)
      
      ------ pybind11_tests.cpython-35m-x86_64-linux-gnu.so file size: 998376 (increase of 73680 bytes = 7.97%)
      
      ------ pybind11_tests.cpython-35m-x86_64-linux-gnu.so file size: 998376 (no change)
      
      Or, if there was no .so during the build, just the .so size by itself:
      
      ------ pybind11_tests.cpython-35m-x86_64-linux-gnu.so file size: 998376
      
      This allows you to, for example, build, checkout a different branch,
      rebuild, and easily see exactly the change in the pybind11_tests.so
      size.
      
      It also allows looking at the travis and appveyor build logs to get an
      idea of .so/.dll sizes across different build systems.
      
      * Minor libsize.py script changes
      
      - Use RAII open
      - Remove unused libsize=-1
      - Report change as [+-]xyz bytes = [+-]a.bc%
      dc0b4bd2
  26. 09 Oct, 2016 1 commit
  27. 06 Sep, 2016 1 commit
  28. 04 Sep, 2016 1 commit
  29. 30 Aug, 2016 1 commit
    • Jason Rhinelander's avatar
      Add line numbers; show and highlight found tabs · d472f0f0
      Jason Rhinelander authored
      This makes the output considerably easier to use: it now highlights (in
      red) matched tabs (instead of just listing the filenames), and adds
      line numbers to both the tabs check and the space-less if check outputs.
      d472f0f0
  30. 29 Aug, 2016 1 commit
    • Jason Rhinelander's avatar
      Fix check-style exit status · 5a3570c4
      Jason Rhinelander authored
      The check-style exit status wasn't being propagated properly because
      the loops were running in a subshell (and so the change the the
      `errors` variable wasn't in the active command shell).  This fixes it
      by running the greps in subshells and the loops in the main shell.
      
      This also avoids the if(/for(/while( style check on
      tests/CMakeLists.txt, since it *does* have if() statements with no space
      that are producing error messages, but that is (acceptable) CMake style.
      5a3570c4