From ddd0d9eddf9d1fe4498c56fee34939100b10aaff Mon Sep 17 00:00:00 2001 From: Tony Theodore Date: Thu, 1 Mar 2018 17:52:29 +1100 Subject: [PATCH] libechonest: switch to qt5 and enable static --- plugins/qt4/qt4-overlay.mk | 5 +++ src/libechonest-1-fixes.patch | 84 +++++++++++++++++++++++++++++++++++ src/libechonest.mk | 35 +++++---------- 3 files changed, 100 insertions(+), 24 deletions(-) create mode 100644 src/libechonest-1-fixes.patch diff --git a/plugins/qt4/qt4-overlay.mk b/plugins/qt4/qt4-overlay.mk index 0271ea2c..3ac019e0 100644 --- a/plugins/qt4/qt4-overlay.mk +++ b/plugins/qt4/qt4-overlay.mk @@ -2,6 +2,11 @@ # override relevant package variables to build against Qt 4 instead of 5 +PKG := libechonest +$(PKG)_DEPS := $(filter-out qtbase ,$($(PKG)_DEPS)) qt qjson +$(PKG)_QT_SUFFIX := 4 +$(PKG)_QT4_BOOL := ON + PKG := openscenegraph $(PKG)_DEPS := $(filter-out qtbase ,$($(PKG)_DEPS)) qt diff --git a/src/libechonest-1-fixes.patch b/src/libechonest-1-fixes.patch new file mode 100644 index 00000000..c4957006 --- /dev/null +++ b/src/libechonest-1-fixes.patch @@ -0,0 +1,84 @@ +This file is part of MXE. See LICENSE.md for licensing information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Theodore +Date: Sat, 24 Feb 2018 14:46:16 +1100 +Subject: [PATCH 1/1] enable static, install *.pc, standard include dir + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1111111..2222222 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -11,6 +11,11 @@ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO + option(ECHONEST_BUILD_TESTS "Build all unit tests" ON) + option(BUILD_WITH_QT4 "Build libechonest with Qt4 no matter if Qt5 was found" ON) + ++if(NOT BUILD_SHARED) ++ add_definitions(-DECHONEST_STATIC) ++ set(ECHONEST_PC_CFLAGS "-DECHONEST_STATIC") ++endif() ++ + if( NOT BUILD_WITH_QT4 ) + find_package(Qt5Core QUIET) + # CMAKE 2.8.13+/3.0.0+ requires these for IMPORTed targets +@@ -105,7 +110,7 @@ endif( APPLE ) + SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) + SET (LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Directory where lib will install") + SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in") +-IF (NOT WIN32) ++IF (MINGW OR NOT WIN32) + CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/libechonest.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/libechonest${ECHONEST_LIB_VERSION_SUFFIX}.pc + @ONLY) +diff --git a/libechonest.pc.in b/libechonest.pc.in +index 1111111..2222222 100644 +--- a/libechonest.pc.in ++++ b/libechonest.pc.in +@@ -8,4 +8,4 @@ Description: libechonest is a qt-based library that makes the Echo Nest APIs eas + Version: @ECHONEST_LIB_MAJOR_VERSION@.@ECHONEST_LIB_MINOR_VERSION@.@ECHONEST_LIB_PATCH_VERSION@ + Requires: Qt@ECHONEST_QT_MAJOR_VERSION@Core Qt@ECHONEST_QT_MAJOR_VERSION@Network @ECHONEST_PC_DEPS@ + Libs: -L${libdir} -lechonest@ECHONEST_LIB_VERSION_SUFFIX@ +-Cflags: -I${includedir} ++Cflags: -I${includedir} @ECHONEST_PC_CFLAGS@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1111111..2222222 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -44,7 +44,7 @@ set( LIBECHONEST_H + + QT_WRAP_CPP( ${LIBECHONEST_H} ) + +-add_library( ${ECHONEST_LIB_TARGET_NAME} SHARED ${LIBECHONEST_SRC} ) ++add_library( ${ECHONEST_LIB_TARGET_NAME} ${LIBECHONEST_SRC} ) + target_link_libraries( ${ECHONEST_LIB_TARGET_NAME} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QJSON_LIBRARIES} ) + set_target_properties( ${ECHONEST_LIB_TARGET_NAME} PROPERTIES VERSION ${ECHONEST_LIB_VERSION} SOVERSION ${ECHONEST_LIB_VERSION_SONAME} ) + qt5_use_modules( ${ECHONEST_LIB_TARGET_NAME} Core Network Xml ) +@@ -53,4 +53,4 @@ install( TARGETS ${ECHONEST_LIB_TARGET_NAME} RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib${LIB_SUFFIX} + ) + +-install( FILES ${LIBECHONEST_H} DESTINATION include/echonest${ECHONEST_LIB_VERSION_SUFFIX} COMPONENT Devel ) ++install( FILES ${LIBECHONEST_H} DESTINATION include/echonest COMPONENT Devel ) +diff --git a/src/echonest_export.h b/src/echonest_export.h +index 1111111..2222222 100644 +--- a/src/echonest_export.h ++++ b/src/echonest_export.h +@@ -18,11 +18,15 @@ + #define ECHONEST_EXPORT_H + + #if defined _WIN32 ++ #ifdef ECHONEST_STATIC ++ #define ECHONEST_EXPORT ++ #else + #if defined ( echonest_EXPORTS ) || defined ( echonest5_EXPORTS ) + #define ECHONEST_EXPORT __declspec(dllexport) + #else + #define ECHONEST_EXPORT __declspec(dllimport) + #endif ++ #endif + #elif __GNUC__ >= 4 + #define ECHONEST_EXPORT __attribute__ ((visibility("default"))) + #else diff --git a/src/libechonest.mk b/src/libechonest.mk index 4c7d9cfa..c7938112 100644 --- a/src/libechonest.mk +++ b/src/libechonest.mk @@ -5,34 +5,21 @@ $(PKG)_WEBSITE := https://github.com/lfranchi/libechonest $(PKG)_IGNORE := $(PKG)_VERSION := 2.3.1 $(PKG)_CHECKSUM := ab961ab952df30c5234b548031594d7e281e7c9f2a9d1ce91fe5421ddde85e7c -$(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION) -$(PKG)_FILE := $(PKG)-$($(PKG)_VERSION).tar.gz -$(PKG)_URL := https://github.com/lfranchi/$(PKG)/archive/$($(PKG)_VERSION).tar.gz -$(PKG)_DEPS := cc qjson qt +$(PKG)_GH_CONF := lfranchi/libechonest/tags +$(PKG)_DEPS := cc qtbase -define $(PKG)_UPDATE - $(call MXE_GET_GITHUB_TAGS, lfranchi/libechonest) -endef +$(PKG)_QT_SUFFIX := 5 +$(PKG)_QT4_BOOL := OFF define $(PKG)_BUILD - mkdir '$(1).build' - cd '$(1).build' && '$(TARGET)-cmake' '$(1)' - $(MAKE) -C '$(1).build' -j '$(JOBS)' - $(MAKE) -C '$(1).build' -j 1 install - - # create pkg-config file - $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib/pkgconfig' - (echo 'Name: $(PKG)'; \ - echo 'Version: $($(PKG)_VERSION)'; \ - echo 'Description: $(PKG)'; \ - echo 'Requires: QtCore QtNetwork'; \ - echo 'Libs: -lechonest';) \ - > '$(PREFIX)/$(TARGET)/lib/pkgconfig/$(PKG).pc' + cd '$(BUILD_DIR)' && $(TARGET)-cmake '$(SOURCE_DIR)' \ + -DECHONEST_BUILD_TESTS=OFF \ + -DBUILD_WITH_QT4=$($(PKG)_QT4_BOOL) + $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' + $(MAKE) -C '$(BUILD_DIR)' -j 1 install '$(TARGET)-g++' \ - -W -Wall -Werror -ansi -pedantic \ + -W -Wall -Werror -std=c++11 -pedantic \ '$(TEST_FILE)' -o '$(PREFIX)/$(TARGET)/bin/test-$(PKG).exe' \ - `'$(TARGET)-pkg-config' libechonest --cflags --libs` + `'$(TARGET)-pkg-config' libechonest$($(PKG)_QT_SUFFIX) --cflags --libs` endef - -$(PKG)_BUILD_STATIC =