| diff -Naur libkml-1.3.0-orig/CMakeLists.txt libkml-1.3.0/CMakeLists.txt |
| --- libkml-1.3.0-orig/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/CMakeLists.txt 2018-10-05 09:11:14.278815800 +0300 |
| @@ -69,7 +69,7 @@ |
| set(PKGCONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/pkgconfig") |
| endif(NOT DEFINED PKGCONFIG_INSTALL_DIR) |
| |
| -if(WIN32 AND NOT CYGWIN) |
| +if(WIN32 AND NOT CYGWIN AND NOT MINGW) |
| set(DEF_INSTALL_CMAKE_DIR cmake) |
| else() |
| set(DEF_INSTALL_CMAKE_DIR lib/cmake/libkml) |
| diff -Naur libkml-1.3.0-orig/examples/hellonet/CMakeLists.txt libkml-1.3.0/examples/hellonet/CMakeLists.txt |
| --- libkml-1.3.0-orig/examples/hellonet/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/hellonet/CMakeLists.txt 2018-10-05 09:11:14.288815800 +0300 |
| @@ -1,78 +1,77 @@ |
| - |
| -add_library(curlfetch curlfetch.cc) |
| +add_library(curlfetch STATIC curlfetch.cc) |
| target_link_libraries(curlfetch ${CURL_LIBRARIES}) |
| |
| build_example( |
| NAME csvurl2gmap |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME getgmapkml |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME getgsheetcsv |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME getgsheetkml |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME gsheet2gmap |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME kmlwalk |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME kmzfetch |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME listfeed |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME listgdocs |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME listgmaps |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME listgphotos |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME resolvestyle |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME searchgmap |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME uploadgmap |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME uploadgmapcsv |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME uploadgmapkml |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME uploadgsheet |
| - DEPENDS kmlconvenience curlfetch) |
| + DEPENDS curlfetch kmlconvenience) |
| |
| build_example( |
| NAME xsdprint |
| - DEPENDS kmlconvenience kmlxsd curlfetch) |
| + DEPENDS curlfetch kmlconvenience kmlxsd) |
| |
| if(INSTALL_EXAMPLES) |
| file(GLOB eg_files "${CMAKE_CURRENT_SOURCE_DIR}/*.cc") |
| diff -Naur libkml-1.3.0-orig/examples/hellonet/csvurl2gmap.cc libkml-1.3.0/examples/hellonet/csvurl2gmap.cc |
| --- libkml-1.3.0-orig/examples/hellonet/csvurl2gmap.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/hellonet/csvurl2gmap.cc 2018-10-05 09:11:14.288815800 +0300 |
| @@ -23,13 +23,11 @@ |
| // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| -#include <termios.h> |
| #include <time.h> |
| #include <iostream> |
| #include <string> |
| #include "boost/scoped_ptr.hpp" |
| #include "curlfetch.h" |
| -#include "prompt.h" |
| #include "kml/base/file.h" |
| #include "kml/dom.h" |
| #include "kml/engine.h" |
| @@ -37,6 +35,7 @@ |
| #include "kml/convenience/convenience.h" |
| #include "kml/convenience/google_maps_data.h" |
| #include "kml/convenience/http_client.h" |
| +#include "prompt.h" |
| |
| using kmlconvenience::GoogleMapsData; |
| |
| diff -Naur libkml-1.3.0-orig/examples/hellonet/prompt.h libkml-1.3.0/examples/hellonet/prompt.h |
| --- libkml-1.3.0-orig/examples/hellonet/prompt.h 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/hellonet/prompt.h 2018-10-05 09:11:14.298815900 +0300 |
| @@ -28,10 +28,38 @@ |
| #ifndef EXAMPLES_HELLONET_PROMPT_H__ |
| #define EXAMPLES_HELLONET_PROMPT_H__ |
| |
| +#ifdef _WIN32 |
| +#define WIN32_LEAN_AND_MEAN |
| +#include <windows.h> |
| +#else |
| #include <termios.h> |
| +#endif |
| #include <iostream> |
| #include <string> |
| |
| +// This function modifies the echo property of standard input |
| +void SetStdinEcho(bool enable) |
| +{ |
| +#ifdef _WIN32 |
| + HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); |
| + DWORD mode; |
| + GetConsoleMode(hStdin, &mode); |
| + if (!enable) |
| + mode &= ~ENABLE_ECHO_INPUT; |
| + else |
| + mode |= ENABLE_ECHO_INPUT; |
| + SetConsoleMode(hStdin, mode); |
| +#else |
| + struct termios tty; |
| + tcgetattr(STDIN_FILENO, &tty); |
| + if (!enable) |
| + tty.c_lflag &= ~ECHO; |
| + else |
| + tty.c_lflag |= ECHO; |
| + (void)tcsetattr(STDIN_FILENO, TCSANOW, &tty); |
| +#endif |
| +} |
| + |
| // This class provides some static methods useful for prompting on a terminal. |
| class Prompt { |
| public: |
| @@ -39,18 +67,13 @@ |
| std::cin.get(); |
| std::cout << prompt; |
| std::cout << std::flush; |
| - // Get the current state of the input terminal. |
| - struct termios t; |
| - tcgetattr(0, &t); |
| // Flip off the ECHO bit. |
| - t.c_lflag &= ~ECHO; |
| - tcsetattr(0, TCSANOW, &t); |
| + SetStdinEcho(false); |
| // User can now type password safely. |
| std::string input; |
| std::getline(std::cin, input); |
| // Flip ECHO back on. |
| - t.c_lflag |= ECHO; |
| - tcsetattr(0, TCSANOW, &t); |
| + SetStdinEcho(true); |
| std::cout << std::endl; |
| return input; |
| } |
| diff -Naur libkml-1.3.0-orig/examples/hellonet/uploadgmap.cc libkml-1.3.0/examples/hellonet/uploadgmap.cc |
| --- libkml-1.3.0-orig/examples/hellonet/uploadgmap.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/hellonet/uploadgmap.cc 2018-10-05 09:11:14.298815900 +0300 |
| @@ -27,12 +27,10 @@ |
| // Maps Data API. The URI of feed to the new map is printed on output. |
| // The created map has only the Placemarks from the original file. |
| |
| -#include <termios.h> |
| #include <iostream> |
| #include <string> |
| #include "boost/scoped_ptr.hpp" |
| #include "curlfetch.h" |
| -#include "prompt.h" |
| #include "kml/base/file.h" |
| #include "kml/dom.h" |
| #include "kml/engine.h" |
| @@ -40,6 +38,7 @@ |
| #include "kml/convenience/convenience.h" |
| #include "kml/convenience/google_maps_data.h" |
| #include "kml/convenience/http_client.h" |
| +#include "prompt.h" |
| |
| using kmlconvenience::GoogleMapsData; |
| |
| diff -Naur libkml-1.3.0-orig/examples/hellonet/uploadgmapkml.cc libkml-1.3.0/examples/hellonet/uploadgmapkml.cc |
| --- libkml-1.3.0-orig/examples/hellonet/uploadgmapkml.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/hellonet/uploadgmapkml.cc 2018-10-05 09:11:14.308815900 +0300 |
| @@ -23,12 +23,10 @@ |
| // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| -#include <termios.h> |
| #include <iostream> |
| #include <string> |
| #include "boost/scoped_ptr.hpp" |
| #include "curlfetch.h" |
| -#include "prompt.h" |
| #include "kml/base/file.h" |
| #include "kml/dom.h" |
| #include "kml/engine.h" |
| @@ -36,6 +34,7 @@ |
| #include "kml/convenience/convenience.h" |
| #include "kml/convenience/google_maps_data.h" |
| #include "kml/convenience/http_client.h" |
| +#include "prompt.h" |
| |
| using kmlconvenience::GoogleMapsData; |
| |
| diff -Naur libkml-1.3.0-orig/examples/hellonet/uploadgsheet.cc libkml-1.3.0/examples/hellonet/uploadgsheet.cc |
| --- libkml-1.3.0-orig/examples/hellonet/uploadgsheet.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/hellonet/uploadgsheet.cc 2018-10-05 09:11:14.308815900 +0300 |
| @@ -23,12 +23,10 @@ |
| // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| -#include <termios.h> |
| #include <iostream> |
| #include <string> |
| #include "boost/scoped_ptr.hpp" |
| #include "curlfetch.h" |
| -#include "prompt.h" |
| #include "kml/base/file.h" |
| #include "kml/dom.h" |
| #include "kml/engine.h" |
| @@ -36,6 +34,7 @@ |
| #include "kml/convenience/convenience.h" |
| #include "kml/convenience/google_doc_list.h" |
| #include "kml/convenience/http_client.h" |
| +#include "prompt.h" |
| |
| using kmlconvenience::GoogleDocList; |
| |
| diff -Naur libkml-1.3.0-orig/examples/helloworld/CMakeLists.txt libkml-1.3.0/examples/helloworld/CMakeLists.txt |
| --- libkml-1.3.0-orig/examples/helloworld/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/examples/helloworld/CMakeLists.txt 2018-10-05 09:11:14.308815900 +0300 |
| @@ -1,6 +1,11 @@ |
| -add_library(helloutil print.cc) |
| +add_library(helloutil STATIC print.cc) |
| target_link_libraries(helloutil ${MINIZIP_LIBRARY}) |
| |
| +if(MINGW) |
| + #supress ignored-qualifiers warning for mingw |
| + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/simplifylines.cc COMPILE_FLAGS "-Wno-ignored-qualifiers") |
| +endif() |
| + |
| build_example( |
| NAME createkml |
| DEPENDS kmldom kmlbase) |
| @@ -27,7 +32,7 @@ |
| |
| build_example( |
| NAME hellofeatures |
| - DEPENDS kmldom kmlbase helloutil) |
| + DEPENDS helloutil kmldom kmlbase) |
| |
| build_example( |
| NAME hellofolder |
| @@ -39,7 +44,7 @@ |
| |
| build_example( |
| NAME hellohref |
| - DEPENDS kmldom kmlbase helloutil) |
| + DEPENDS helloutil kmldom kmlbase) |
| |
| build_example( |
| NAME hellokmz |
| @@ -47,7 +52,7 @@ |
| |
| build_example( |
| NAME helloregion |
| - DEPENDS kmldom kmlbase helloutil) |
| + DEPENDS helloutil kmldom kmlbase) |
| |
| build_example( |
| NAME helloworld |
| diff -Naur libkml-1.3.0-orig/src/kml/base/CMakeLists.txt libkml-1.3.0/src/kml/base/CMakeLists.txt |
| --- libkml-1.3.0-orig/src/kml/base/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/base/CMakeLists.txt 2018-10-05 09:11:14.318815900 +0300 |
| @@ -7,10 +7,15 @@ |
| |
| file(GLOB SRCS "*.cc" |
| contrib/minizip/unzip.c |
| - contrib/minizip/iomem_simple.c) |
| + contrib/minizip/iomem_simple.c |
| + contrib/strptime.c) |
| |
| if(WIN32) |
| list(REMOVE_ITEM SRCS "${CMAKE_CURRENT_SOURCE_DIR}/file_posix.cc") |
| + if(MINGW) |
| + #supress long-long warning for mingw |
| + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/time_util.cc COMPILE_FLAGS "-Wno-long-long") |
| + endif() |
| else() |
| list(REMOVE_ITEM SRCS "${CMAKE_CURRENT_SOURCE_DIR}/file_win32.cc") |
| #supress long-long warning for linux |
| diff -Naur libkml-1.3.0-orig/src/kml/base/contrib/minizip/unzip.c libkml-1.3.0/src/kml/base/contrib/minizip/unzip.c |
| --- libkml-1.3.0-orig/src/kml/base/contrib/minizip/unzip.c 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/base/contrib/minizip/unzip.c 2018-10-05 09:11:14.318815900 +0300 |
| @@ -35,6 +35,9 @@ |
| */ |
| |
| |
| +#ifdef __MINGW32__ |
| +#define Z_U4 unsigned long |
| +#endif |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| diff -Naur libkml-1.3.0-orig/src/kml/base/date_time.cc libkml-1.3.0/src/kml/base/date_time.cc |
| --- libkml-1.3.0-orig/src/kml/base/date_time.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/base/date_time.cc 2018-10-05 09:11:14.328815900 +0300 |
| @@ -29,12 +29,8 @@ |
| #include "boost/scoped_ptr.hpp" |
| #include <stdlib.h> |
| |
| -// TODO: fix this for real. |
| #ifdef _WIN32 |
| -char* strptime(const char* buf, const char* format, struct tm* tm) { |
| - // Not yet implemented on this platform. |
| - return NULL; |
| -} |
| +extern "C" char* strptime(const char* buf, const char* format, struct tm* tm); |
| #endif |
| |
| namespace kmlbase { |
| diff -Naur libkml-1.3.0-orig/src/kml/base/date_time.h libkml-1.3.0/src/kml/base/date_time.h |
| --- libkml-1.3.0-orig/src/kml/base/date_time.h 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/base/date_time.h 2018-10-05 09:11:14.328815900 +0300 |
| @@ -31,12 +31,6 @@ |
| #include <time.h> |
| #include "kml/base/util.h" |
| |
| -// TODO: fix this for real. |
| -#ifdef _WIN32 |
| -time_t timegm(struct tm* tm); |
| -char* strptime(const char* buf, const char* format, struct tm* tm); |
| -#endif |
| - |
| namespace kmlbase { |
| |
| class DateTime { |
| diff -Naur libkml-1.3.0-orig/src/kml/base/file_win32.cc libkml-1.3.0/src/kml/base/file_win32.cc |
| --- libkml-1.3.0-orig/src/kml/base/file_win32.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/base/file_win32.cc 2018-10-05 09:11:14.338815900 +0300 |
| @@ -34,11 +34,14 @@ |
| #include "kml/base/file.h" |
| #include <windows.h> |
| #include <tchar.h> |
| +#ifndef __MINGW32__ |
| #include <xstring> |
| +#endif |
| #include <algorithm> |
| |
| namespace kmlbase { |
| |
| +#ifndef __MINGW32__ |
| // Internal to the win32 file class. We need a conversion from string to |
| // LPCWSTR. |
| static std::wstring Str2Wstr(const string& str) { |
| @@ -56,13 +59,18 @@ |
| static_cast<int>(s), NULL, NULL); |
| return str; |
| } |
| +#endif |
| |
| bool File::Exists(const string& full_path) { |
| if (full_path.empty()) { |
| return false; |
| } |
| +#ifndef __MINGW32__ |
| std::wstring wstr = Str2Wstr(full_path); |
| DWORD attrs = ::GetFileAttributes(wstr.c_str()); |
| +#else |
| + DWORD attrs = ::GetFileAttributes(full_path.c_str()); |
| +#endif |
| return (attrs != INVALID_FILE_ATTRIBUTES) && |
| ((attrs & FILE_ATTRIBUTE_DIRECTORY) == 0); |
| } |
| @@ -71,8 +79,12 @@ |
| if (filepath.empty()) { |
| return false; |
| } |
| +#ifndef __MINGW32__ |
| std::wstring wstr = Str2Wstr(filepath); |
| return ::DeleteFile(wstr.c_str()) ? true : false; |
| +#else |
| + return ::DeleteFile(filepath.c_str()) ? true : false; |
| +#endif |
| } |
| |
| static const unsigned int BUFSIZE = 1024; |
| @@ -97,8 +109,12 @@ |
| if (uRetVal == 0) { |
| return false; |
| } |
| +#ifndef __MINGW32__ |
| string str = Wstr2Str(szTempName); |
| path->assign(str.c_str(), strlen(str.c_str())); |
| +#else |
| + path->assign(szTempName, strlen(szTempName)); |
| +#endif |
| return true; |
| } |
| |
| diff -Naur libkml-1.3.0-orig/src/kml/base/uri_parser.cc libkml-1.3.0/src/kml/base/uri_parser.cc |
| --- libkml-1.3.0-orig/src/kml/base/uri_parser.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/base/uri_parser.cc 2018-10-05 09:11:14.338815900 +0300 |
| @@ -187,11 +187,10 @@ |
| |
| bool UriParser::FilenameToUri(const string& filename, |
| string* output) { |
| -#ifdef WIN32 |
| - return WindowsFilenameToUri(filename, output); |
| -#else |
| - return UnixFilenameToUri(filename, output); |
| -#endif |
| + if (filename.find('\\') != string::npos) |
| + return WindowsFilenameToUri(filename, output); |
| + else |
| + return UnixFilenameToUri(filename, output); |
| } |
| |
| bool UriParser::UnixFilenameToUri(const string& filename, |
| diff -Naur libkml-1.3.0-orig/src/kml/dom/CMakeLists.txt libkml-1.3.0/src/kml/dom/CMakeLists.txt |
| --- libkml-1.3.0-orig/src/kml/dom/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/kml/dom/CMakeLists.txt 2018-10-05 09:11:14.338815900 +0300 |
| @@ -50,6 +50,11 @@ |
| visitor.h |
| visitor_driver.h) |
| |
| +if(MINGW) |
| + #supress unused-variable warning for mingw |
| + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kml22.cc COMPILE_FLAGS "-Wno-unused-variable") |
| +endif() |
| + |
| build_target( |
| NAME kmldom |
| SRCS ${SRCS} |
| diff -Naur libkml-1.3.0-orig/src/swig/CMakeLists.txt libkml-1.3.0/src/swig/CMakeLists.txt |
| --- libkml-1.3.0-orig/src/swig/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/src/swig/CMakeLists.txt 2018-10-05 09:11:14.348815900 +0300 |
| @@ -1,42 +1,52 @@ |
| if(WITH_PYTHON) |
| - find_package(PythonLibs REQUIRED) |
| + find_package(PythonLibs 2.7 REQUIRED) |
| if(NOT PYTHONLIBS_FOUND) |
| message(FATAL_ERROR "Python Libraries not found.") |
| endif() |
| |
| - find_package(PythonInterp REQUIRED) |
| + find_package(PythonInterp 2.7 REQUIRED) |
| |
| include_directories(${PYTHON_INCLUDE_PATH}) |
| |
| - if(NOT DEFINED PYTHON_INSTALL_DIR) |
| + if(MINGW) |
| + set(PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages") |
| + elseif(NOT DEFINED PYTHON_INSTALL_DIR) |
| execute_process(COMMAND |
| ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True)" |
| OUTPUT_VARIABLE PYTHON_INSTALL_DIR |
| OUTPUT_STRIP_TRAILING_WHITESPACE ) |
| - endif(NOT DEFINED PYTHON_INSTALL_DIR) |
| + endif() |
| + |
| + if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
| + add_definitions("-DMS_WIN64") |
| + endif() |
| + |
| + set(CMAKE_SWIG_OUTDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| |
| file(GLOB IFILES "kml*.i") |
| foreach(INTERFACE_FILE ${IFILES}) |
| get_filename_component(MODULE_NAME ${INTERFACE_FILE} NAME_WE) |
| set_source_files_properties(${INTERFACE_FILE} PROPERTIES CPLUSPLUS ON ) |
| set_source_files_properties(${INTERFACE_FILE} PROPERTIES CMAKE_SWIG_FLAGS "-includeall -DSWIGPYTHON") |
| - set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}PYTHON_wrap.cxx COMPILE_FLAGS "-Wno-long-long" ) |
| + set_source_files_properties(${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MODULE_NAME}PYTHON_wrap.cxx COMPILE_FLAGS "-Wno-long-long") |
| swig_add_module(${MODULE_NAME} python ${INTERFACE_FILE}) |
| swig_link_libraries(${MODULE_NAME} kmlbase kmlengine kmldom ${PYTHON_LIBRARIES}) |
| + set_target_properties(_${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| add_custom_command( |
| TARGET _${MODULE_NAME} |
| POST_BUILD |
| COMMAND ${CMAKE_COMMAND} -E echo "Byte-compiling ${MODULE_NAME}.py" |
| - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/pycompile.py ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.py |
| + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/pycompile.py ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MODULE_NAME}.py |
| DEPENDS kmlbase kmlengine kmldom) |
| |
| install(TARGETS |
| _${MODULE_NAME} |
| + LIBRARY DESTINATION ${PYTHON_INSTALL_DIR} |
| DESTINATION ${PYTHON_INSTALL_DIR}) |
| |
| install(FILES |
| - ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.py |
| - ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.pyc |
| + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MODULE_NAME}.py |
| + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MODULE_NAME}.pyc |
| DESTINATION ${PYTHON_INSTALL_DIR}) |
| |
| endforeach() |
| diff -Naur libkml-1.3.0-orig/tests/kml/base/CMakeLists.txt libkml-1.3.0/tests/kml/base/CMakeLists.txt |
| --- libkml-1.3.0-orig/tests/kml/base/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/tests/kml/base/CMakeLists.txt 2018-10-05 09:11:14.348815900 +0300 |
| @@ -18,6 +18,11 @@ |
| xml_namespaces |
| xmlns) |
| |
| +if(MINGW) |
| + #supress overflow warning for mingw |
| + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/expat_parser_test.cc COMPILE_FLAGS "-Wno-overflow") |
| +endif() |
| + |
| foreach(TEST ${TESTS}) |
| build_test( |
| GROUP base |
| diff -Naur libkml-1.3.0-orig/tests/kml/convenience/CMakeLists.txt libkml-1.3.0/tests/kml/convenience/CMakeLists.txt |
| --- libkml-1.3.0-orig/tests/kml/convenience/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/tests/kml/convenience/CMakeLists.txt 2018-10-05 09:11:14.358815900 +0300 |
| @@ -13,7 +13,7 @@ |
| |
| foreach(TEST ${TESTS}) |
| build_test( |
| - GROUP regionator |
| + GROUP convenience |
| NAME ${TEST} |
| DEPENDS kmlbase;kmlengine;kmldom;kmlconvenience) |
| endforeach() |
| diff -Naur libkml-1.3.0-orig/tests/kml/convenience/google_maps_data_test.cc libkml-1.3.0/tests/kml/convenience/google_maps_data_test.cc |
| --- libkml-1.3.0-orig/tests/kml/convenience/google_maps_data_test.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/tests/kml/convenience/google_maps_data_test.cc 2018-10-05 09:11:14.358815900 +0300 |
| @@ -36,6 +36,13 @@ |
| #include "kml/convenience/http_client_test_util.h" |
| #include "kml/engine.h" |
| |
| +#if defined(_WIN32) && !defined(setenv) |
| +// This code is safe, as the temporary string object will be destructed at the |
| +// end of the full expression |
| +#define setenv(name, value, overwrite) \ |
| + (putenv((string(name) + "=" + string(value)).c_str())) |
| +#endif |
| + |
| // The following define is a convenience for testing inside Google. |
| #ifdef GOOGLE_INTERNAL |
| #include "kml/base/google_internal_test.h" |
| diff -Naur libkml-1.3.0-orig/tests/kml/engine/feature_view_test.cc libkml-1.3.0/tests/kml/engine/feature_view_test.cc |
| --- libkml-1.3.0-orig/tests/kml/engine/feature_view_test.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/tests/kml/engine/feature_view_test.cc 2018-10-05 09:11:14.358815900 +0300 |
| @@ -144,7 +144,11 @@ |
| // These fields are expected to be set to these values. |
| ASSERT_DOUBLE_EQ(-86.032775, lookat->get_longitude()); |
| ASSERT_DOUBLE_EQ(35.78925, lookat->get_latitude()); |
| +#ifdef _WIN64 |
| ASSERT_DOUBLE_EQ(712928.68603440293, lookat->get_range()); |
| +#else |
| + ASSERT_DOUBLE_EQ(712928.68603440106, lookat->get_range()); |
| +#endif |
| // These fields are not set by ComputeBboxLookAt. |
| ASSERT_FALSE(lookat->has_altitude()); |
| ASSERT_FALSE(lookat->has_heading()); |
| diff -Naur libkml-1.3.0-orig/tests/kml/engine/kmz_file_test.cc libkml-1.3.0/tests/kml/engine/kmz_file_test.cc |
| --- libkml-1.3.0-orig/tests/kml/engine/kmz_file_test.cc 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/tests/kml/engine/kmz_file_test.cc 2018-10-05 09:11:14.368816000 +0300 |
| @@ -347,7 +347,11 @@ |
| created->List(&list); |
| ASSERT_EQ(static_cast<size_t>(2), list.size()); |
| ASSERT_EQ(string("dummy.png"), list[0]); |
| +#ifndef __MINGW32__ |
| ASSERT_EQ(string("kmzfiles/dummy.kml"), list[1]); |
| +#else |
| + ASSERT_EQ(string("kmzfiles\\dummy.kml"), list[1]); |
| +#endif |
| } |
| |
| TEST_F(KmzTest, TestCreateFromElement) { |
| @@ -370,7 +374,11 @@ |
| ASSERT_EQ(static_cast<size_t>(3), list.size()); |
| ASSERT_EQ(string("doc.kml"), list[0]); |
| ASSERT_EQ(string("dummy.png"), list[1]); |
| +#ifndef __MINGW32__ |
| ASSERT_EQ(string("kmzfiles/dummy.kml"), list[2]); |
| +#else |
| + ASSERT_EQ(string("kmzfiles\\dummy.kml"), list[2]); |
| +#endif |
| } |
| |
| TEST_F(KmzTest, TestCreateFromKmlFilePath) { |
| @@ -388,7 +396,11 @@ |
| ASSERT_EQ(static_cast<size_t>(3), list.size()); |
| ASSERT_EQ(string("doc.kml"), list[0]); |
| ASSERT_EQ(string("dummy.png"), list[1]); |
| +#ifndef __MINGW32__ |
| ASSERT_EQ(string("kmzfiles/dummy.kml"), list[2]); |
| +#else |
| + ASSERT_EQ(string("kmzfiles\\dummy.kml"), list[2]); |
| +#endif |
| } |
| |
| TEST_F(KmzTest, TestCreateFromKmlFile) { |
| @@ -410,7 +422,11 @@ |
| ASSERT_EQ(static_cast<size_t>(3), list.size()); |
| ASSERT_EQ(string("doc.kml"), list[0]); |
| ASSERT_EQ(string("dummy.png"), list[1]); |
| +#ifndef __MINGW32__ |
| ASSERT_EQ(string("kmzfiles/dummy.kml"), list[2]); |
| +#else |
| + ASSERT_EQ(string("kmzfiles\\dummy.kml"), list[2]); |
| +#endif |
| } |
| |
| TEST_F(KmzTest, TestCreateFromGoogleEarthFile) { |
| @@ -431,10 +447,17 @@ |
| created->List(&list); |
| ASSERT_EQ(static_cast<size_t>(5), list.size()); |
| ASSERT_EQ(string("doc.kml"), list[0]); |
| +#ifndef __MINGW32__ |
| ASSERT_EQ(string("files/camelbrown200.png"), list[1]); |
| ASSERT_EQ(string("files/camelblack200.png"), list[2]); |
| ASSERT_EQ(string("files/camera_mode.png"), list[3]); |
| ASSERT_EQ(string("files/camelcolor200.png"), list[4]); |
| +#else |
| + ASSERT_EQ(string("files\\camelbrown200.png"), list[1]); |
| + ASSERT_EQ(string("files\\camelblack200.png"), list[2]); |
| + ASSERT_EQ(string("files\\camera_mode.png"), list[3]); |
| + ASSERT_EQ(string("files\\camelcolor200.png"), list[4]); |
| +#endif |
| } |
| |
| TEST_F(KmzTest, TestSaveToString) { |
| diff -Naur libkml-1.3.0-orig/tests/swig/CMakeLists.txt libkml-1.3.0/tests/swig/CMakeLists.txt |
| --- libkml-1.3.0-orig/tests/swig/CMakeLists.txt 2015-12-21 20:23:05.000000000 +0300 |
| +++ libkml-1.3.0/tests/swig/CMakeLists.txt 2018-10-05 09:11:14.368816000 +0300 |
| @@ -1,12 +1,18 @@ |
| if(WITH_PYTHON) |
| +file(COPY kmlbase_test.py DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| add_test(NAME test_python_kmlbase |
| - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kmlbase_test.py) |
| + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/kmlbase_test.py |
| + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| |
| +file(COPY kmldom_test.py DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| add_test(NAME test_python_kmldom |
| - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kmldom_test.py) |
| + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/kmldom_test.py |
| + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| |
| +file(COPY kmlengine_test.py DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| add_test(NAME test_python_kmlengine |
| - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kmlengine_test.py) |
| + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/kmlengine_test.py |
| + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| endif() |
| |
| if(WITH_JAVA) |