aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Alexey Sokolov2017-05-24 10:04:20 +0100
committerGravatar Dessa2017-05-24 11:04:20 +0200
commitf5d172c869295ef9fff2e3de524690e523dc5d42 (patch)
treea85ed69ce7bf9234729e4e99028337c1ae3c6829 /src
parentappveyor: fix zlib VS version (diff)
downloadKVIrc-f5d172c869295ef9fff2e3de524690e523dc5d42.tar.gz
KVIrc-f5d172c869295ef9fff2e3de524690e523dc5d42.tar.bz2
KVIrc-f5d172c869295ef9fff2e3de524690e523dc5d42.zip
Build also in debug mode for windows (#2192)
* Build also in debug mode for windows See #2191 * Don't mix /Od and -O2 on windows build. -O2 comes from perl * Reindent perlcore CMakeLists * Fix debug python build on windows * Rearrange environment vars in appveyor * Try to publish pdb files too * install qts and kvirc's debug pdbs in debug config * use TARGET_PDB_FILE instead
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/CMakeLists.txt1
-rw-r--r--src/kvirc/CMakeLists.txt3
-rw-r--r--src/modules/perlcore/CMakeLists.txt42
-rw-r--r--src/modules/python/libkvipython.cpp2
-rw-r--r--src/modules/pythoncore/kvircmodule.cpp2
-rw-r--r--src/modules/pythoncore/kvircmodule.h2
-rw-r--r--src/modules/pythoncore/libkvipythoncore.cpp2
-rw-r--r--src/modules/pythoncore/pythonheaderwrapper.h14
8 files changed, 44 insertions, 24 deletions
diff --git a/src/kvilib/CMakeLists.txt b/src/kvilib/CMakeLists.txt
index eb49b6767..ad8a3134e 100644
--- a/src/kvilib/CMakeLists.txt
+++ b/src/kvilib/CMakeLists.txt
@@ -155,4 +155,5 @@ elseif(UNIX)
elseif(WIN32)
# For DLL platforms the DLL part of a shared library is treated as a RUNTIME target and the corresponding import library is treated as an ARCHIVE target
install(TARGETS ${KVILIB_BINARYNAME} RUNTIME DESTINATION "${KVIRC_LIB_PATH}")
+ install(FILES $<TARGET_PDB_FILE:${KVILIB_BINARYNAME}> DESTINATION ${KVIRC_LIB_PATH} OPTIONAL)
endif()
diff --git a/src/kvirc/CMakeLists.txt b/src/kvirc/CMakeLists.txt
index 52b0f5056..461229c3e 100644
--- a/src/kvirc/CMakeLists.txt
+++ b/src/kvirc/CMakeLists.txt
@@ -306,6 +306,9 @@ endif()
# Installation directives
install(TARGETS ${KVIRC_BINARYNAME} RUNTIME DESTINATION "${KVIRC_BIN_PATH}")
+if(WIN32)
+ install(FILES $<TARGET_PDB_FILE:${KVIRC_BINARYNAME}> DESTINATION ${KVIRC_BIN_PATH} OPTIONAL)
+endif()
if(APPLE)
set(plugin_dest_dir ${CMAKE_INSTALL_PREFIX}/Contents/Plugins)
diff --git a/src/modules/perlcore/CMakeLists.txt b/src/modules/perlcore/CMakeLists.txt
index 82652138a..7abf88ac9 100644
--- a/src/modules/perlcore/CMakeLists.txt
+++ b/src/modules/perlcore/CMakeLists.txt
@@ -12,14 +12,14 @@ if(COMPILE_PERL_SUPPORT)
OUTPUT_VARIABLE PERL_COMPILE_FLAGS
)
-if(CMAKE_COMPILER_IS_GNUCXX)
- # GCC whines because perl isn't extremely C++11 compliant
- set(PERL_COMPILE_FLAGS "${PERL_COMPILE_FLAGS} -Wno-literal-suffix")
-elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
- # If the perl version is too old, clang will throw errors due to C++11
- # incompatibilities
- set(PERL_COMPILE_FLAGS "${PERL_COMPILE_FLAGS} -Wno-reserved-user-defined-literal")
-endif()
+ if(CMAKE_COMPILER_IS_GNUCXX)
+ # GCC whines because perl isn't extremely C++11 compliant
+ set(PERL_COMPILE_FLAGS "${PERL_COMPILE_FLAGS} -Wno-literal-suffix")
+ elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+ # If the perl version is too old, clang will throw errors due to C++11
+ # incompatibilities
+ set(PERL_COMPILE_FLAGS "${PERL_COMPILE_FLAGS} -Wno-reserved-user-defined-literal")
+ endif()
#remove new line characters
string(REGEX REPLACE "(\r?\n)+$" "" PERL_COMPILE_FLAGS ${PERL_COMPILE_FLAGS})
@@ -32,19 +32,21 @@ endif()
OUTPUT_VARIABLE PERL_LINK_FLAGS
)
-if(MSVC)
- # breaks with -nodefaultlib
- string(REPLACE " -nodefaultlib" "" PERL_LINK_FLAGS "${PERL_LINK_FLAGS}")
-endif()
+ if(MSVC)
+ # breaks with -nodefaultlib
+ string(REPLACE " -nodefaultlib" "" PERL_LINK_FLAGS "${PERL_LINK_FLAGS}")
+ # conflicts with opt level set by user, especially in debug mode
+ string(REPLACE " -O2" "" PERL_COMPILE_FLAGS "${PERL_COMPILE_FLAGS}")
+ endif()
-if(APPLE)
- # ldopts contains all archs supported by the current platform, but we
- # only want those we specified in CMAKE_OSX_ARCHITECTURES.
- string(REGEX REPLACE "-arch [-a-zA-Z0-9_]*" "" PERL_LINK_FLAGS "${PERL_LINK_FLAGS}")
- foreach (arch ${CMAKE_OSX_ARCHITECTURES})
- set(PERL_LINK_FLAGS " -arch ${arch} ${PERL_LINK_FLAGS}")
- endforeach(arch)
-endif()
+ if(APPLE)
+ # ldopts contains all archs supported by the current platform, but we
+ # only want those we specified in CMAKE_OSX_ARCHITECTURES.
+ string(REGEX REPLACE "-arch [-a-zA-Z0-9_]*" "" PERL_LINK_FLAGS "${PERL_LINK_FLAGS}")
+ foreach (arch ${CMAKE_OSX_ARCHITECTURES})
+ set(PERL_LINK_FLAGS " -arch ${arch} ${PERL_LINK_FLAGS}")
+ endforeach(arch)
+ endif()
# Remove new line characters
string(REGEX REPLACE "(\r?\n)+$" "" PERL_LINK_FLAGS "${PERL_LINK_FLAGS}")
diff --git a/src/modules/python/libkvipython.cpp b/src/modules/python/libkvipython.cpp
index 4a44370b8..0af0eec34 100644
--- a/src/modules/python/libkvipython.cpp
+++ b/src/modules/python/libkvipython.cpp
@@ -29,7 +29,7 @@
#ifdef COMPILE_PYTHON_SUPPORT
#include "../pythoncore/pythoncoreinterface.h"
-#include <Python.h>
+#include "../pythoncore/pythonheaderwrapper.h"
static KviModule * g_pPythonCoreModule = nullptr;
diff --git a/src/modules/pythoncore/kvircmodule.cpp b/src/modules/pythoncore/kvircmodule.cpp
index 235e3545a..8937b6a63 100644
--- a/src/modules/pythoncore/kvircmodule.cpp
+++ b/src/modules/pythoncore/kvircmodule.cpp
@@ -26,7 +26,7 @@
#ifdef COMPILE_PYTHON_SUPPORT
-#include <Python.h>
+#include "pythonheaderwrapper.h"
#define KVIRC_MODULE
diff --git a/src/modules/pythoncore/kvircmodule.h b/src/modules/pythoncore/kvircmodule.h
index 53376d577..53e716d7d 100644
--- a/src/modules/pythoncore/kvircmodule.h
+++ b/src/modules/pythoncore/kvircmodule.h
@@ -37,7 +37,7 @@
#ifdef COMPILE_PYTHON_SUPPORT
-#include <Python.h>
+#include "pythonheaderwrapper.h"
// python included like to pollute the global namespace, let's #undef some beef
#undef isspace
diff --git a/src/modules/pythoncore/libkvipythoncore.cpp b/src/modules/pythoncore/libkvipythoncore.cpp
index 812e414b6..90dca594d 100644
--- a/src/modules/pythoncore/libkvipythoncore.cpp
+++ b/src/modules/pythoncore/libkvipythoncore.cpp
@@ -34,7 +34,7 @@
#ifdef COMPILE_PYTHON_SUPPORT
#include "pythoncoreinterface.h"
-#include <Python.h>
+#include "pythonheaderwrapper.h"
KviKvsRunTimeContext * g_pCurrentKvsContext = nullptr;
bool g_bExecuteQuiet = false;
diff --git a/src/modules/pythoncore/pythonheaderwrapper.h b/src/modules/pythoncore/pythonheaderwrapper.h
new file mode 100644
index 000000000..47f60d361
--- /dev/null
+++ b/src/modules/pythoncore/pythonheaderwrapper.h
@@ -0,0 +1,14 @@
+#ifndef _PYTHONHEADERWRAPPER_H_
+#define _PYTHONHEADERWRAPPER_H_
+
+// See http://stackoverflow.com/questions/16200997/why-doesnt-include-python-h-work and http://stackoverflow.com/questions/19716859/puzzling-dependency-of-boost-python-1-54-debug-build-to-python27-lib-on-window
+
+#if defined(_DEBUG) && defined(_MSC_VER)
+# undef _DEBUG
+# include <Python.h>
+# define _DEBUG 1
+#else
+# include <Python.h>
+#endif
+
+#endif