diff --git a/cmake/modules/DetectMachine.cmake b/cmake/modules/DetectMachine.cmake index 14efad76a..a9cde461e 100644 --- a/cmake/modules/DetectMachine.cmake +++ b/cmake/modules/DetectMachine.cmake @@ -10,13 +10,16 @@ ELSE() SET(LMMS_BUILD_LINUX 1) ENDIF(WIN32) -# See build_winXX.sh for LMMS_BUILD_MSYS +# LMMS_BUILD_MSYS also set in build_winXX.sh +IF(LMMS_BUILD_WIN32 AND CMAKE_COMPILER_IS_GNUCXX AND DEFINED ENV{MSYSCON}) + SET(LMMS_BUILD_MSYS TRUE) +ENDIF() MESSAGE("PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") SET(LMMS_HOST_X86 FALSE) SET(LMMS_HOST_X86_64 FALSE) -IF(MSVC) +IF(NOT DEFINED WIN64) STRING(REGEX MATCH "86_64|amd64|AMD64" WIN64 "${CMAKE_SYSTEM_PROCESSOR}") ENDIF() diff --git a/cmake/nsis/CMakeLists.txt b/cmake/nsis/CMakeLists.txt index b21c920e5..065b20819 100644 --- a/cmake/nsis/CMakeLists.txt +++ b/cmake/nsis/CMakeLists.txt @@ -37,10 +37,10 @@ ENDIF() # Fix windows paths for msys IF(LMMS_BUILD_MSYS) - STRING(REGEX REPLACE "/" "\\\\\\\\" CPACK_PACKAGE_ICON "${CPACK_PACKAGE_ICON}") - STRING(REGEX REPLACE "/" "\\\\\\\\" CPACK_NSIS_MUI_ICON "${CPACK_NSIS_MUI_ICON}") - STRING(REGEX REPLACE "/" "\\\\\\\\" CPACK_NSIS_DEFINES "${CPACK_NSIS_DEFINES}") - STRING(REGEX REPLACE "/" "\\\\\\\\" CMAKE_BINARY_DIR_FIX "${CMAKE_BINARY_DIR}") + STRING(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON "${CPACK_PACKAGE_ICON}") + STRING(REPLACE "/" "\\\\" CPACK_NSIS_MUI_ICON "${CPACK_NSIS_MUI_ICON}") + STRING(REPLACE "/" "\\\\" CPACK_NSIS_DEFINES "${CPACK_NSIS_DEFINES}") + STRING(REPLACE "/" "\\\\" CMAKE_BINARY_DIR_FIX "${CMAKE_BINARY_DIR}") # FIXME: there's no easy way to fix $INST_DIR, so we'll redefine it manually IF(WIN64) diff --git a/cmake/toolchains/common/MSYS.cmake b/cmake/toolchains/common/MSYS.cmake index dc295d670..1b377aeee 100644 --- a/cmake/toolchains/common/MSYS.cmake +++ b/cmake/toolchains/common/MSYS.cmake @@ -2,7 +2,6 @@ SET(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX}) SET(CMAKE_INSTALL_PREFIX ${MINGW_PREFIX}) - # Windows msys mingw ships with a mostly-suitable preconfigured environment SET(STRIP ${MINGW_PREFIX}/bin/strip) SET(CMAKE_RC_COMPILER ${MINGW_PREFIX}/bin/windres) @@ -34,4 +33,4 @@ IF(LMMS_BUILD_MSYS AND CMAKE_BUILD_TYPE STREQUAL "Debug") SET(QT_LIBRARIES "${QT_OVERRIDE_LIBRARIES}") ENDIF() -SET(LMMS_BUILD_MSYS 1) \ No newline at end of file +SET(LMMS_BUILD_MSYS 1) diff --git a/cmake/toolchains/common/Win32.cmake b/cmake/toolchains/common/Win32.cmake index 5a6fb103c..bc20775d6 100644 --- a/cmake/toolchains/common/Win32.cmake +++ b/cmake/toolchains/common/Win32.cmake @@ -2,3 +2,5 @@ SET(CMAKE_SYSTEM_NAME Windows) SET(CMAKE_SYSTEM_VERSION 1) SET(CMAKE_SYSTEM_PROCESSOR i686) + +SET(WIN64 FALSE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 23be36820..84ddf4aee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -178,6 +178,15 @@ IF(LMMS_BUILD_WIN32) LINK_FLAGS "${LINK_FLAGS} -mwindows" ENABLE_EXPORTS ON ) + + IF(LMMS_BUILD_MSYS) + # ENABLE_EXPORTS property has no effect in some MSYS2 configurations. + # Add the linker flag manually to create liblmms.dll.a import library + SET_PROPERTY(TARGET lmms + APPEND_STRING PROPERTY LINK_FLAGS -Wl,--out-implib,liblmms.dll.a + ) + ENDIF() + IF(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") ADD_CUSTOM_COMMAND(TARGET lmms POST_BUILD COMMAND "${STRIP}" "$") ENDIF() @@ -249,7 +258,6 @@ IF(LMMS_BUILD_WIN32) "${MINGW_PREFIX}/lib/libsoundio.dll" DESTINATION .) ENDIF() - ELSE(LMMS_BUILD_WIN32) IF(NOT LMMS_BUILD_APPLE) SET_TARGET_PROPERTIES(lmms PROPERTIES LINK_FLAGS "${LINK_FLAGS} -Wl,-E")