diff --git a/CMakeLists.txt b/CMakeLists.txt index 411fc6d6d..4ad7d55ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,11 +26,6 @@ ADD_DEFINITIONS(-D'LMMS_VERSION="${VERSION}"') INCLUDE(DetectMachine) -IF(LMMS_HOST_X86_64) - SET(STRIP /opt/mingw64/bin/x86_64-pc-mingw32-strip) -ELSE(LMMS_HOST_X86_64) - SET(STRIP /opt/mingw32/bin/i586-pc-mingw32-strip) -ENDIF(LMMS_HOST_X86_64) OPTION(WANT_ALSA "Include ALSA (Advanced Linux Sound Architecture) support" ON) OPTION(WANT_CALF "Include CALF LADSPA plugins" ON) @@ -405,11 +400,6 @@ ADD_CUSTOM_COMMAND(OUTPUT ${LMMS_ER_H} COMMAND ${BIN2RES} ARGS ${lmms_EMBEDDED_R IF(WIN32) SET(WINRC "${CMAKE_BINARY_DIR}/lmmsrc.obj") - IF(LMMS_HOST_X86_64) - SET(WINDRES /opt/mingw64/bin/x86_64-pc-mingw32-windres) - ELSE(LMMS_HOST_X86_64) - SET(WINDRES /opt/mingw32/bin/i586-pc-mingw32-windres) - ENDIF(LMMS_HOST_X86_64) ADD_CUSTOM_COMMAND(OUTPUT ${WINRC} COMMAND ${WINDRES} -I${CMAKE_SOURCE_DIR} @@ -447,11 +437,21 @@ IF(LMMS_BUILD_WIN32) ADD_CUSTOM_COMMAND(TARGET lmms POST_BUILD COMMAND ${STRIP} ${CMAKE_BINARY_DIR}/lmms.exe) INSTALL(TARGETS lmms RUNTIME DESTINATION .) - IF(LMMS_BUILD_WIN64) - INSTALL(FILES /opt/mingw64/bin/QtCore4.dll /opt/mingw64/bin/QtGui4.dll /opt/mingw64/bin/QtXml4.dll /opt/mingw64/bin/libsndfile-1.dll /opt/mingw64/bin/libvorbis-0.dll /opt/mingw64/bin/libvorbisenc-2.dll /opt/mingw64/bin/libvorbisfile-3.dll /opt/mingw64/bin/libogg-0.dll /opt/mingw64/bin/libfluidsynth-1.dll /opt/mingw64/bin/libfftw3f-3.dll /opt/mingw64/bin/SDL.dll DESTINATION .) - ELSE(LMMS_BUILD_WIN64) - INSTALL(FILES /opt/mingw32/bin/QtCore4.dll /opt/mingw32/bin/QtGui4.dll /opt/mingw32/bin/QtXml4.dll /opt/mingw32/bin/libz.dll /opt/mingw32/bin/libsndfile-1.dll /opt/mingw32/bin/libFLAC-8.dll /opt/mingw32/bin/libvorbis-0.dll /opt/mingw32/bin/libvorbisenc-2.dll /opt/mingw32/bin/libvorbisfile-3.dll /opt/mingw32/bin/libogg-0.dll /opt/mingw32/bin/libfluidsynth-1.dll /opt/mingw32/bin/libfftw3f-3.dll /opt/mingw32/bin/SDL.dll /opt/mingw32/i586-pc-mingw32/bin/mingwm10.dll DESTINATION .) - ENDIF(LMMS_BUILD_WIN64) + INSTALL(FILES + ${MINGW_PREFIX}/bin/QtCore4.dll + ${MINGW_PREFIX}/bin/QtGui4.dll + ${MINGW_PREFIX}/bin/QtXml4.dll + ${MINGW_PREFIX}/bin/libsndfile-1.dll + ${MINGW_PREFIX}/bin/libvorbis-0.dll + ${MINGW_PREFIX}/bin/libvorbisenc-2.dll + ${MINGW_PREFIX}/bin/libvorbisfile-3.dll + ${MINGW_PREFIX}/bin/libogg-0.dll + ${MINGW_PREFIX}/bin/libfluidsynth-1.dll + ${MINGW_PREFIX}/bin/libfftw3f-3.dll + ${MINGW_PREFIX}/bin/SDL.dll + ${MINGW_PREFIX}/bin/libglib-2.0-0.dll + ${MINGW_PREFIX}/bin/libgthread-2.0-0.dll + DESTINATION .) ELSE(LMMS_BUILD_WIN32) IF(NOT LMMS_BUILD_APPLE) @@ -556,7 +556,7 @@ ADD_CUSTOM_TARGET(win32-pkg COMMAND cp /opt/mingw32/i586-mingw32/bin/mingwm10.dll tmp/lmms COMMAND cp -L ${CMAKE_SOURCE_DIR}/COPYING tmp/lmms/LICENSE.TXT COMMAND cp -L ${CMAKE_SOURCE_DIR}/README tmp/lmms/README.TXT - COMMAND /opt/mingw32/bin/i586-pc-mingw32-strip tmp/lmms/lmms.exe tmp/lmms/plugins/*.dll tmp/lmms/plugins/ladspa/*.dll + COMMAND ${STRIP} tmp/lmms/lmms.exe tmp/lmms/plugins/*.dll tmp/lmms/plugins/ladspa/*.dll COMMAND mv tmp/lmms tmp/lmms-${VERSION} COMMAND cd tmp && zip -r -9 ../lmms-${VERSION}-bin-win32.zip lmms-${VERSION}/* COMMAND rm -rf tmp diff --git a/build_mingw32 b/build_mingw32 index b125afa93..46b86bb13 100755 --- a/build_mingw32 +++ b/build_mingw32 @@ -1,4 +1,4 @@ MINGW=/opt/mingw32 export PATH=$PATH:$MINGW/bin -cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win32Toolchain.cmake +cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win32Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/ diff --git a/build_mingw64 b/build_mingw64 new file mode 100755 index 000000000..c3640c0b2 --- /dev/null +++ b/build_mingw64 @@ -0,0 +1,4 @@ +MINGW=/opt/mingw64 +export PATH=$PATH:$MINGW/bin +cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win64Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/ + diff --git a/cmake/modules/DetectMachine.cmake b/cmake/modules/DetectMachine.cmake index 457a65d3a..b3aab2cfb 100644 --- a/cmake/modules/DetectMachine.cmake +++ b/cmake/modules/DetectMachine.cmake @@ -9,21 +9,29 @@ ELSE(WIN32) ENDIF(WIN32) MESSAGE("PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") -EXEC_PROGRAM( ${CMAKE_C_COMPILER} ARGS "-dumpmachine" OUTPUT_VARIABLE Machine ) -MESSAGE("Machine: ${Machine}") SET(LMMS_HOST_X86 FALSE) SET(LMMS_HOST_X86_64 FALSE) -STRING(REGEX MATCH "i.86" IS_X86 "${Machine}") -STRING(REGEX MATCH "86_64" IS_X86_64 "${Machine}") + +IF(WIN32) + IF(WIN64) + SET(IS_X86_64 TRUE) + SET(LMMS_BUILD_WIN64 TRUE) + ELSE(WIN64) + SET(IS_X86 TRUE) + ENDIF(WIN64) +ELSE(WIN32) + EXEC_PROGRAM( ${CMAKE_C_COMPILER} ARGS "-dumpmachine" OUTPUT_VARIABLE Machine ) + MESSAGE("Machine: ${Machine}") + STRING(REGEX MATCH "i.86" IS_X86 "${Machine}") + STRING(REGEX MATCH "86_64" IS_X86_64 "${Machine}") +ENDIF(WIN32) + IF(IS_X86) MESSAGE("-- Target host is 32 bit") SET(LMMS_HOST_X86 TRUE) ELSEIF(IS_X86_64) MESSAGE("-- Target host is 64 bit") SET(LMMS_HOST_X86_64 TRUE) - IF(WIN32) - SET(LMMS_BUILD_WIN64 1) - ENDIF(WIN32) ELSE(IS_X86) MESSAGE("Can't identify target host. Assuming 32 bit platform.") ENDIF(IS_X86) diff --git a/cmake/modules/MinGWCrossCompile.cmake b/cmake/modules/MinGWCrossCompile.cmake new file mode 100644 index 000000000..bdc8bf33d --- /dev/null +++ b/cmake/modules/MinGWCrossCompile.cmake @@ -0,0 +1,41 @@ +# this one is important +SET(CMAKE_SYSTEM_NAME Windows) +#this one not so much +SET(CMAKE_SYSTEM_VERSION 1) + +# where is the target environment +SET(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX}) +SET(CMAKE_INSTALL_PREFIX ${MINGW_PREFIX}) + +SET(MINGW_TOOL_PREFIX ${MINGW_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-) + +# specify the cross compiler +SET(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}gcc) +SET(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}g++) + +# specify location of some tools +SET(STRIP ${MINGW_TOOL_PREFIX}strip) +SET(WINDRES ${MINGW_TOOL_PREFIX}windres) +SET(PKG_CONFIG_EXECUTABLE ${MINGW_TOOL_PREFIX}pkg-config) + +SET(QT_BINARY_DIR ${MINGW_PREFIX}/bin) +SET(QT_LIBRARY_DIR ${MINGW_PREFIX}/lib) +SET(QT_QTCORE_LIBRARY ${MINGW_PREFIX}/lib/libQtCore4.a) +SET(QT_INCLUDE_DIR ${MINGW_PREFIX}/include/qt4) +SET(QT_HEADERS_DIR ${MINGW_PREFIX}/include/qt4) +SET(QT_QTCORE_INCLUDE_DIR ${MINGW_PREFIX}/include/qt4/QtCore) +SET(QT_MKSPECS_DIR ${MINGW_PREFIX}/share/qt4/mkspecs) +SET(QT_MOC_EXECUTABLE ${QT_BINARY_DIR}/moc.exe) +SET(QT_RCC_EXECUTABLE ${QT_BINARY_DIR}/rcc.exe) +SET(QT_QMAKE_EXECUTABLE /usr/bin/qmake) +SET(QT_UIC_EXECUTABLE ${QT_BINARY_DIR}/uic.exe) + +# search for programs in the build host directories +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# for libraries and headers in the target directories +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +INCLUDE_DIRECTORIES(${MINGW_PREFIX}/include) +LINK_DIRECTORIES(${MINGW_PREFIX}/lib ${MINGW_PREFIX}/bin) + diff --git a/cmake/modules/Win32Toolchain.cmake b/cmake/modules/Win32Toolchain.cmake index afdd54df5..84ebb4b92 100644 --- a/cmake/modules/Win32Toolchain.cmake +++ b/cmake/modules/Win32Toolchain.cmake @@ -1,44 +1,10 @@ SET(MINGW_PREFIX /opt/mingw32) -# this one is important -SET(CMAKE_SYSTEM_NAME Windows) -#this one not so much -SET(CMAKE_SYSTEM_VERSION 1) - SET(CMAKE_SYSTEM_PROCESSOR i686) -SET(CMAKE_INSTALL_PREFIX ${MINGW_PREFIX}) - - -# specify the cross compiler -SET(CMAKE_C_COMPILER ${MINGW_PREFIX}/bin/i586-pc-mingw32-gcc) -SET(CMAKE_CXX_COMPILER ${MINGW_PREFIX}/bin/i586-pc-mingw32-g++) - -# where is the target environment -SET(CMAKE_FIND_ROOT_PATH /opt/mingw32) - -SET(QT_BINARY_DIR ${MINGW_PREFIX}/bin) -SET(QT_LIBRARY_DIR ${MINGW_PREFIX}/lib) -SET(QT_QTCORE_LIBRARY ${MINGW_PREFIX}/lib/libQtCore4.a) -SET(QT_INCLUDE_DIR ${MINGW_PREFIX}/include/qt4) -SET(QT_HEADERS_DIR ${MINGW_PREFIX}/include/qt4) -SET(QT_QTCORE_INCLUDE_DIR ${MINGW_PREFIX}/include/qt4/QtCore) -SET(QT_MKSPECS_DIR ${MINGW_PREFIX}/share/qt4/mkspecs) -SET(QT_MOC_EXECUTABLE ${QT_BINARY_DIR}/moc.exe) -SET(QT_RCC_EXECUTABLE ${QT_BINARY_DIR}/rcc.exe) -SET(QT_QMAKE_EXECUTABLE /usr/bin/qmake) -SET(QT_UIC_EXECUTABLE ${QT_BINARY_DIR}/uic.exe) - -# search for programs in the build host directories -SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -# for libraries and headers in the target directories -SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - -SET(PKG_CONFIG_EXECUTABLE ${MINGW_PREFIX}/bin/pkg-config) SET(CMAKE_C_FLAGS "-march=i686 -mtune=generic") SET(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS}) -INCLUDE_DIRECTORIES(${MINGW_PREFIX}/include) -LINK_DIRECTORIES(${MINGW_PREFIX}/lib ${MINGW_PREFIX}/bin) + +INCLUDE(MinGWCrossCompile) diff --git a/cmake/modules/Win64Toolchain.cmake b/cmake/modules/Win64Toolchain.cmake index e2ee8a7de..306bb6a4b 100644 --- a/cmake/modules/Win64Toolchain.cmake +++ b/cmake/modules/Win64Toolchain.cmake @@ -1,39 +1,9 @@ -# this one is important -SET(CMAKE_SYSTEM_NAME Windows) -#this one not so much -SET(CMAKE_SYSTEM_VERSION 1) +SET(MINGW_PREFIX /opt/mingw64) SET(CMAKE_SYSTEM_PROCESSOR x86_64) -SET(CMAKE_INSTALL_PREFIX /opt/mingw64) -SET(CC_PREFIX /opt/mingw64) +SET(WIN64 TRUE) -# specify the cross compiler -SET(CMAKE_C_COMPILER ${CC_PREFIX}/bin/x86_64-pc-mingw32-gcc) -SET(CMAKE_CXX_COMPILER ${CC_PREFIX}/bin/x86_64-pc-mingw32-g++) -# where is the target environment -SET(CMAKE_FIND_ROOT_PATH /opt/mingw64) - -SET(QT_BINARY_DIR ${CC_PREFIX}/bin) -SET(QT_LIBRARY_DIR ${CC_PREFIX}/lib) -SET(QT_QTCORE_LIBRARY ${CC_PREFIX}/lib/libQtCore4.a) -SET(QT_INCLUDE_DIR ${CC_PREFIX}/include/qt4) -SET(QT_QTCORE_INCLUDE_DIR ${CC_PREFIX}/include/qt4/QtCore) -SET(QT_MKSPECS_DIR ${CC_PREFIX}/share/qt4/mkspecs) -SET(QT_MOC_EXECUTABLE ${QT_BINARY_DIR}/moc.exe) -SET(QT_RCC_EXECUTABLE ${QT_BINARY_DIR}/rcc.exe) -SET(QT_QMAKE_EXECUTABLE /usr/bin/qmake) -SET(QT_UIC_EXECUTABLE ${QT_BINARY_DIR}/uic.exe) - -# search for programs in the build host directories -SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -# for libraries and headers in the target directories -SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - -SET(PKG_CONFIG_EXECUTABLE ${CC_PREFIX}/bin/pkg-config) - -INCLUDE_DIRECTORIES(${CC_PREFIX}/include) -LINK_DIRECTORIES(${CC_PREFIX}/lib ${CC_PREFIX}/bin) +INCLUDE(MinGWCrossCompile) diff --git a/plugins/zynaddsubfx/CMakeLists.txt b/plugins/zynaddsubfx/CMakeLists.txt index 4b835adc0..c1706fe35 100644 --- a/plugins/zynaddsubfx/CMakeLists.txt +++ b/plugins/zynaddsubfx/CMakeLists.txt @@ -92,7 +92,7 @@ add_subdirectory(src/Samples) ADD_LIBRARY(ZynAddSubFxCore SHARED LocalZynAddSubFx.cpp ${MXML_SRC}) TARGET_LINK_LIBRARIES(ZynAddSubFxCore ${ZASF_CORE_LIBS} ${FFTW3F_LIBRARIES} -lz -lpthread) IF(LMMS_BUILD_WIN32) - TARGET_LINK_LIBRARIES(ZynAddSubFxCore -lwsock32) + TARGET_LINK_LIBRARIES(ZynAddSubFxCore -lws2_32) INSTALL(TARGETS ZynAddSubFxCore DESTINATION ${PLUGIN_DIR}) ELSE(LMMS_BUILD_WIN32) INSTALL(TARGETS ZynAddSubFxCore LIBRARY DESTINATION ${PLUGIN_DIR}) @@ -132,7 +132,7 @@ IF(LMMS_BUILD_WIN64) ELSEIF(LMMS_BUILD_WIN32) SET(FLTK_EXTRA_FLAGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/cmake/modules/Win32Toolchain.cmake") ENDIF(LMMS_BUILD_WIN64) -ADD_CUSTOM_TARGET(libfltk COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/fltk && cd ${CMAKE_CURRENT_BINARY_DIR}/fltk && ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}/fltk ${FLTK_EXTRA_FLAGS} -DFLTK_USE_SYSTEM_ZLIB:BOOL=ON -DFLTK_USE_SYSTEM_JPEG:BOOL=ON -DFLTK_USE_SYSTEM_PNG:BOOL=ON -DUSE_OPENGL:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE=release && ${CMAKE_BUILD_TOOL}) +ADD_CUSTOM_TARGET(libfltk COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/fltk && cd ${CMAKE_CURRENT_BINARY_DIR}/fltk && ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}/fltk ${FLTK_EXTRA_FLAGS} -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/cmake/modules/ -DFLTK_USE_SYSTEM_ZLIB:BOOL=ON -DFLTK_USE_SYSTEM_JPEG:BOOL=ON -DFLTK_USE_SYSTEM_PNG:BOOL=ON -DUSE_OPENGL:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE=release && ${CMAKE_BUILD_TOOL}) ADD_DEPENDENCIES(RemoteZynAddSubFx libfltk) ENDIF(LMMS_HAVE_FFTW3F) diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H index be81b8cc0..2e1426933 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H @@ -241,7 +241,7 @@ struct FL_EXPORT Fl_Menu_Item { and casting the long to a void* and may not be portable to some machines. */ - long argument() const {return (long)user_data_;} + intptr_t argument() const {return (intptr_t)user_data_;} /** For convenience you can also define the callback as taking a long argument. This is implemented by casting this to a Fl_Callback diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H b/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H index f36ca38c7..62a1fae05 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H @@ -31,6 +31,8 @@ #ifndef Fl_Widget_H #define Fl_Widget_H +#include + #include "Enumerations.H" class Fl_Widget; @@ -592,7 +594,7 @@ public: /** Gets the current user data (long) argument that is passed to the callback function. */ - long argument() const {return (long)user_data_;} + intptr_t argument() const {return (intptr_t)user_data_;} /** Sets the current user data (long) argument that is passed to the callback function. \todo The user data value must be implemented using a \em union to avoid diff --git a/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx b/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx index e882e1936..cec2a2584 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx @@ -36,6 +36,7 @@ #include #include "flstring.h" #ifdef WIN32 +#include # include # include #else @@ -112,7 +113,7 @@ fl_open_uri(const char *uri, char *msg, int msglen) { #ifdef WIN32 if (msg) snprintf(msg, msglen, "open %s", uri); - return (int)ShellExecute(HWND_DESKTOP, "open", uri, NULL, NULL, SW_SHOW) > 32; + return (intptr_t)ShellExecute(HWND_DESKTOP, "open", uri, NULL, NULL, SW_SHOW) > 32; #elif defined(__APPLE__) char *argv[3]; // Command-line arguments