Merge branch 'cygwin' of https://github.com/BorisSchaeling/pybind11 into BorisSchaeling-cygwin

This commit is contained in:
Wenzel Jakob 2016-05-29 12:45:35 +02:00
commit c48da92561
7 changed files with 9 additions and 7 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@ cmake_install.cmake
.DS_Store .DS_Store
/example/example.so /example/example.so
/example/example.pyd /example/example.pyd
/example/example.dll
*.sln *.sln
*.sdf *.sdf
*.opensdf *.opensdf

View File

@ -92,7 +92,7 @@ function(pybind11_add_module target_name)
if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG) if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG)
# Check for Link Time Optimization support (GCC/Clang) # Check for Link Time Optimization support (GCC/Clang)
check_cxx_compiler_flag("-flto" HAS_LTO_FLAG) check_cxx_compiler_flag("-flto" HAS_LTO_FLAG)
if(HAS_LTO_FLAG) if(HAS_LTO_FLAG AND NOT CYGWIN)
target_compile_options(${target_name} PRIVATE -flto) target_compile_options(${target_name} PRIVATE -flto)
endif() endif()
@ -138,7 +138,7 @@ function(pybind11_enable_warnings target_name)
if(MSVC) if(MSVC)
target_compile_options(${target_name} PRIVATE /W4) target_compile_options(${target_name} PRIVATE /W4)
else() else()
target_compile_options(${target_name} PRIVATE -Wall -Wextra) target_compile_options(${target_name} PRIVATE -Wall -Wextra -Wconversion)
endif() endif()
endfunction() endfunction()

View File

@ -90,6 +90,7 @@ In addition to the core functionality, pybind11 provides some extra goodies:
2. GCC (any non-ancient version with C++11 support) 2. GCC (any non-ancient version with C++11 support)
3. Microsoft Visual Studio 2015 or newer 3. Microsoft Visual Studio 2015 or newer
4. Intel C++ compiler v15 or newer 4. Intel C++ compiler v15 or newer
5. Cygwin
## About ## About

View File

@ -13,7 +13,7 @@
double my_func(int x, float y, double z) { double my_func(int x, float y, double z) {
std::cout << "my_func(x:int=" << x << ", y:float=" << y << ", z:float=" << z << ")" << std::endl; std::cout << "my_func(x:int=" << x << ", y:float=" << y << ", z:float=" << z << ")" << std::endl;
return x*y*z; return (float) x*y*z;
} }
std::complex<double> my_func3(std::complex<double> c) { std::complex<double> my_func3(std::complex<double> c) {

View File

@ -38,7 +38,7 @@ void test_function2(EMyEnumeration k) {
float test_function3(int i) { float test_function3(int i) {
std::cout << "test_function(" << i << ")" << std::endl; std::cout << "test_function(" << i << ")" << std::endl;
return i / 2.f; return (float) i / 2.f;
} }
py::bytes return_bytes() { py::bytes return_bytes() {

View File

@ -262,7 +262,7 @@ struct internals {
std::unordered_map<const void *, void*> registered_instances; // void * -> PyObject* std::unordered_map<const void *, void*> registered_instances; // void * -> PyObject*
std::unordered_set<std::pair<const PyObject *, const char *>, overload_hash> inactive_overload_cache; std::unordered_set<std::pair<const PyObject *, const char *>, overload_hash> inactive_overload_cache;
#if defined(WITH_THREAD) #if defined(WITH_THREAD)
int tstate = 0; decltype(PyThread_create_key()) tstate = 0; // Usually an int but a long on Cygwin64 with Python 3.x
PyInterpreterState *istate = nullptr; PyInterpreterState *istate = nullptr;
#endif #endif
}; };

View File

@ -1156,7 +1156,7 @@ public:
gil_scoped_release(bool disassoc = false) : disassoc(disassoc) { gil_scoped_release(bool disassoc = false) : disassoc(disassoc) {
tstate = PyEval_SaveThread(); tstate = PyEval_SaveThread();
if (disassoc) { if (disassoc) {
int key = detail::get_internals().tstate; auto key = detail::get_internals().tstate;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyThread_delete_key_value(key); PyThread_delete_key_value(key);
#else #else
@ -1169,7 +1169,7 @@ public:
return; return;
PyEval_RestoreThread(tstate); PyEval_RestoreThread(tstate);
if (disassoc) { if (disassoc) {
int key = detail::get_internals().tstate; auto key = detail::get_internals().tstate;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyThread_delete_key_value(key); PyThread_delete_key_value(key);
#endif #endif