build with mingw on Windows and Linux

This commit is contained in:
Peter Kümmel 2014-06-07 07:59:52 +02:00
parent de091e6ceb
commit 080fca85a8
6 changed files with 73 additions and 11 deletions

View File

@ -47,6 +47,19 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
# Supress regeneration
set(CMAKE_SUPPRESS_REGENERATION FALSE)
if(LYX_XMINGW)
set(CMAKE_SYSTEM_NAME Windows)
set(TOOLNAME ${LYX_XMINGW})
set(TOOLCHAIN "${TOOLNAME}-")
set(CMAKE_C_COMPILER "${TOOLCHAIN}gcc" CACHE PATH "Mingw C compiler" FORCE)
set(CMAKE_CXX_COMPILER "${TOOLCHAIN}g++" CACHE PATH "Mingw C++ compiler" FORCE)
set(CMAKE_RC_COMPILER "${TOOLCHAIN}windres" CACHE PATH "Mingw rc compiler" FORCE)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endif()
if(NOT help AND NOT HELP)
# 'project' triggers the searching for a compiler
project(${LYX_PROJECT})
@ -146,7 +159,7 @@ endif()
if(LYX_INSTALL)
set(LYX_NLS ON)
if (WIN32)
if(WIN32 AND NOT MINGW)
set(LYX_HUNSPELL ON)
endif()
if(LYX_CONSOLE MATCHES "FORCE")
@ -168,6 +181,7 @@ else()
set(LYX_MERGE_REBUILD OFF)
endif()
if(LYX_DEPENDENCIES_DOWNLOAD)
message(STATUS)
set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2010-deps)
@ -509,7 +523,12 @@ if(LYX_CXX_FLAGS_EXTRA)
endforeach()
endif()
find_package(Qt5Core QUIET)
if(LYX_XMINGW)
set(QT_MINGW_DIR ${LYX_QT4} CACHE PATH "Qt for Mingw" FORCE)
list(APPEND CMAKE_FIND_ROOT_PATH ${QT_MINGW_DIR} ${GNUWIN32_DIR})
else()
find_package(Qt5Core QUIET)
endif()
if (Qt5Core_FOUND)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5X11Extras)
@ -578,6 +597,7 @@ if(LYX_NLS)
endif()
endif()
find_package(ICONV REQUIRED)
find_package(ZLIB REQUIRED)
@ -791,7 +811,9 @@ if(LYX_INSTALL)
if(${LYX_PYTHON_EXECUTABLE} MATCHES "-NOTFOUND")
message(STATUS "Python required to create doc!")
else()
add_subdirectory(${LYX_CMAKE_DIR}/man "${TOP_BINARY_DIR}/man")
if(UNIX)
add_subdirectory(${LYX_CMAKE_DIR}/man "${TOP_BINARY_DIR}/man")
endif()
add_subdirectory(${LYX_CMAKE_DIR}/doc "${TOP_BINARY_DIR}/doc")
endif()
include(../Install)

View File

@ -37,7 +37,46 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${LYX_INSTALL_SUFFIX}")
if (APPLE)
# We don't need absolute paths
set(CPACK_SET_DESTDIR "OFF")
elseif (NOT WIN32)
elseif(WIN32)
set(CPACK_GENERATOR ZIP)
set(CPACK_BINARY_ZIP 1)
if(MINGW)
get_filename_component(MINGW_BIN_PATH ${CMAKE_CXX_COMPILER} PATH)
if(LYX_XMINGW)
get_filename_component(mingw_name ${LYX_XMINGW} NAME)
set(MINGW_BIN_PATH ${MINGW_BIN_PATH}/../${mingw_name}/lib)
endif()
if(EXISTS ${MINGW_BIN_PATH}/libgcc_s_sjlj-1.dll)
list(APPEND runtime ${MINGW_BIN_PATH}/libgcc_s_sjlj-1.dll)
elseif(EXISTS ${MINGW_BIN_PATH}/libgcc_s_seh-1.dll)
list(APPEND runtime ${MINGW_BIN_PATH}/libgcc_s_seh-1.dll)
elseif(EXISTS ${MINGW_BIN_PATH}/libgcc_s_dw2-1.dll)
list(APPEND runtime ${MINGW_BIN_PATH}/libgcc_s_dw2-1.dll)
endif()
if(EXISTS ${MINGW_BIN_PATH}/libstdc++-6.dll)
list(APPEND runtime ${MINGW_BIN_PATH}/libstdc++-6.dll)
endif()
if(EXISTS ${MINGW_BIN_PATH}/libwinpthread-1.dll)
list(APPEND runtime ${MINGW_BIN_PATH}/libwinpthread-1.dll)
endif()
if(NOT runtime)
message(FATAL_ERROR "No mingw runtime found in ${MINGW_BIN_PATH}")
endif()
install(FILES
${runtime}
${QT_BINARY_DIR}/QtCore4.dll
${QT_BINARY_DIR}/QtGui4.dll
${QT_BINARY_DIR}/QtNetwork4.dll
${QT_PLUGINS_DIR}/imageformats/qgif4.dll
${QT_PLUGINS_DIR}/imageformats/qico4.dll
${QT_PLUGINS_DIR}/imageformats/qmng4.dll
${QT_PLUGINS_DIR}/imageformats/qsvg4.dll
${QT_PLUGINS_DIR}/imageformats/qtga4.dll
${QT_PLUGINS_DIR}/imageformats/qtiff4.dll
DESTINATION bin CONFIGURATIONS Release)
endif()
else()
# needed by rpm
set(CPACK_SET_DESTDIR "ON")
endif()

View File

@ -41,9 +41,9 @@ endmacro(lyx_add_path _out _prefix)
#create the implementation files from the ui files and add them
#to the list of sources
#usage: LYX_ADD_QT4_UI_FILES(foo_SRCS ${ui_files})
macro(LYX_ADD_UI_FILES _sources _ui)
macro(LYX_ADD_UI_FILES _sources _ui_files)
set(uifiles})
foreach (_current_FILE ${ARGN})
get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE)
get_filename_component(_basename ${_tmp_FILE} NAME_WE)
set(_header ${CMAKE_CURRENT_BINARY_DIR}/ui_${_basename}.h)
@ -54,8 +54,9 @@ macro(LYX_ADD_UI_FILES _sources _ui)
# Latest test showed on linux and windows show no bad consequeces,
# so we removed the call to LyXuic.cmake
qt_wrap_uifiles(${_header} ${_tmp_FILE} OPTIONS -tr lyx::qt_)
set(${_ui} ${${_ui}} ${_header})
endforeach (_current_FILE)
list(APPEND uifiles ${_header})
endforeach()
set(${_ui_files} ${uifiles})
endmacro(LYX_ADD_UI_FILES)

View File

@ -89,7 +89,7 @@ if (LYX_VLD)
lyx_add_info_files(VLD ${vld_files})
endif()
if(WIN32)
if(WIN32 AND NOT MINGW)
set(FILE_RC ${TOP_CMAKE_PATH}/lyx.rc)
message(STATUS "Using icon defined in resource file: ${FILE_RC}")
endif()

View File

@ -68,7 +68,7 @@ target_link_libraries(frontend_qt4
lyx_add_gcc_pch(frontend_qt4)
if(WIN32)
target_link_libraries(frontend_qt4 Gdi32)
target_link_libraries(frontend_qt4 gdi32)
endif()
project_source_group("${GROUP_CODE}" frontends_qt4_sources frontends_qt4_headers)

View File

@ -29,7 +29,7 @@ include_directories(BEFORE
${TOP_SRC_DIR}/src/support/minizip
${ZLIB_INCLUDE_DIR})
if(WIN32)
if(WIN32 AND NOT MINGW)
set(FILE_RC ${TOP_CMAKE_PATH}/lyx.rc)
message(STATUS "Using icon defined in resource file: ${FILE_RC}")
endif()