Skip to content

Commit

Permalink
Fix Win builds against wx3.1.1 (zlib link error)
Browse files Browse the repository at this point in the history
cc: #795
  • Loading branch information
jlblancoc committed Jul 6, 2018
1 parent ee70aed commit b5e4e38
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 22 deletions.
3 changes: 2 additions & 1 deletion cmakemodules/script_show_final_summary.cmake
Expand Up @@ -128,7 +128,8 @@ SHOW_CONFIG_LINE_SYSTEM("GLUT " CMAKE_MRPT_HAS_GL
SHOW_CONFIG_LINE_SYSTEM("PCAP (Wireshark logs for Velodyne) " CMAKE_MRPT_HAS_LIBPCAP)
SHOW_CONFIG_LINE_SYSTEM("PCL (Pointscloud library) " CMAKE_MRPT_HAS_PCL "[Version: ${PCL_VERSION}]")
SHOW_CONFIG_LINE_SYSTEM("SuiteSparse " CMAKE_MRPT_HAS_SUITESPARSE)
SHOW_CONFIG_LINE ("VTK " CMAKE_MRPT_HAS_VTK)
SHOW_CONFIG_LINE("VTK " CMAKE_MRPT_HAS_VTK)
SHOW_CONFIG_LINE_SYSTEM("wxWidgets " CMAKE_MRPT_HAS_WXWIDGETS "[Version: ${wxWidgets_VERSION_STRING}]")
SHOW_CONFIG_LINE_SYSTEM("yamlcpp (YAML file format) " CMAKE_MRPT_HAS_YAMLCPP "[Version: ${LIBYAMLCPP_VERSION}]")
MESSAGE(STATUS "")

Expand Down
1 change: 0 additions & 1 deletion cmakemodules/script_wxwidgets.cmake
Expand Up @@ -113,4 +113,3 @@ SET(CMAKE_MRPT_HAS_WXWIDGETS_SYSTEM 0)
IF(CMAKE_MRPT_HAS_WXWIDGETS)
SET(CMAKE_MRPT_HAS_WXWIDGETS_SYSTEM 1)
ENDIF(CMAKE_MRPT_HAS_WXWIDGETS)

44 changes: 26 additions & 18 deletions cmakemodules/script_zlib.cmake
@@ -1,25 +1,33 @@
# Check for system zlib:
# ===================================================
SET(CMAKE_MRPT_HAS_ZLIB 1) # Always present: system or built-in
IF(MSVC)
SET(CMAKE_MRPT_HAS_ZLIB_SYSTEM 0)
ELSE(MSVC)
FIND_PACKAGE(ZLIB)
IF(ZLIB_FOUND)
set(CMAKE_MRPT_HAS_ZLIB 1) # Always present: system or built-in
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX 0)
if (MSVC)
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM 0)
else()
find_package(ZLIB)
if (ZLIB_FOUND)
#MESSAGE(STATUS "Found library: zlib - Include: ${ZLIB_INCLUDE_DIR}")
INCLUDE_DIRECTORIES("${ZLIB_INCLUDE_DIR}")
include_directories("${ZLIB_INCLUDE_DIR}")

SET(MRPT_ZLIB_LIBS ${ZLIB_LIBRARIES}) # APPEND_MRPT_LIBS(z)
set(MRPT_ZLIB_LIBS ${ZLIB_LIBRARIES}) # APPEND_MRPT_LIBS(z)

SET(CMAKE_MRPT_HAS_ZLIB_SYSTEM 1)
ELSE(ZLIB_FOUND)
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM 1)
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX 1)
else()
# If we are using wxWidgets we dont need this... for now check if this is MinGW on Windows...
IF (WIN32 AND CMAKE_MRPT_HAS_WXWIDGETS)
SET(CMAKE_MRPT_HAS_ZLIB_SYSTEM 1)
SET(CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX 1)
ELSE(WIN32 AND CMAKE_MRPT_HAS_WXWIDGETS)
SET(CMAKE_MRPT_HAS_ZLIB_SYSTEM 0)
ENDIF(WIN32 AND CMAKE_MRPT_HAS_WXWIDGETS)
ENDIF(ZLIB_FOUND)
ENDIF(MSVC)
if (WIN32 AND CMAKE_MRPT_HAS_WXWIDGETS)
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM 1)
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX 1)
else()
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM 0)
endif()
endif()
endif()

# Update: wxWidgets >=3.1.1 no longer comes with zlib
if (CMAKE_MRPT_HAS_WXWIDGETS AND CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX AND (NOT "${wxWidgets_VERSION_STRING}" VERSION_LESS "3.1.1"))
# Use embedded version instead:
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM 0)
set(CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX 0)
endif()
1 change: 1 addition & 0 deletions doc/doxygen-pages/changeLog_doc.h
Expand Up @@ -107,6 +107,7 @@ CMetricMap has empty smart pointers.
- CNetworkOfPoses: read/write format made compatible with G2O EDGE_SE2 types.
- BUG FIXES:
- Fix missing "-ldl" linker flag.
- Fix building against wxWidgets 3.1.1 in Windows (zlib link error).
<hr>
<a name="1.5.6">
Expand Down
4 changes: 2 additions & 2 deletions libs/io/CMakeLists.txt
Expand Up @@ -7,7 +7,7 @@ LIST(APPEND io_EXTRA_SRCS_NAME "io" "io")
IF(CMAKE_MRPT_HAS_ZLIB)
IF(CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX OR NOT CMAKE_MRPT_HAS_ZLIB_SYSTEM)
INCLUDE_DIRECTORIES("${MRPT_LIBS_ROOT}/io/src/zlib/")
IF(NOT MSVC OR NOT CMAKE_MRPT_HAS_WXWIDGETS)
IF(NOT MSVC OR NOT CMAKE_MRPT_HAS_ZLIB_SYSTEM_IS_WX)
LIST(APPEND io_EXTRA_SRCS "${MRPT_LIBS_ROOT}/io/src/zlib/*.c" "${MRPT_LIBS_ROOT}/io/src/zlib/*.h")
LIST(APPEND io_EXTRA_SRCS_NAME "io/zlib" "io/zlib")
ENDIF()
Expand Down Expand Up @@ -39,5 +39,5 @@ IF(BUILD_mrpt-io)
# Use wxWidgets version of libzip (gz* funtions)
IF(MSVC AND CMAKE_MRPT_HAS_WXWIDGETS)
target_link_libraries(mrpt-io PRIVATE ${wxWidgets_LIBRARIES})
ENDIF()
ENDIF()
ENDIF()

0 comments on commit b5e4e38

Please sign in to comment.