From 2f7820a6d90bfdbd603c5c5a6617bf5fa81b9bd8 Mon Sep 17 00:00:00 2001 From: Lukas W Date: Wed, 14 Jan 2015 19:54:48 +0100 Subject: [PATCH 1/3] CMake: Change the way tests links lmms --- src/CMakeLists.txt | 19 +++++++++++++------ tests/CMakeLists.txt | 5 ++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e739f36aa..5e4dc2fe4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -64,16 +64,16 @@ ENDIF() # Enable C++11 ADD_DEFINITIONS("-std=c++0x") -ADD_EXECUTABLE(lmms - core/main.cpp +ADD_LIBRARY(lmmsobjs OBJECT ${LMMS_SRCS} ${LMMS_INCLUDES} ${LMMS_UI_OUT} ${LMMS_ER_H} - "${WINRC}" ) -SET_TARGET_PROPERTIES(lmms PROPERTIES - ENABLE_EXPORTS ON +ADD_EXECUTABLE(lmms + $ + core/main.cpp + "${WINRC}" ) SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LMMS_ER_H} ${LMMS_UI_OUT} lmmsconfig.h lmms.1.gz") @@ -82,7 +82,7 @@ IF(LMMS_BUILD_WIN32) SET(EXTRA_LIBRARIES "-lwinmm") ENDIF() -TARGET_LINK_LIBRARIES(lmms +SET(LMMS_REQUIRED_LIBS ${CMAKE_THREAD_LIBS_INIT} ${QT_LIBRARIES} ${ASOUND_LIBRARY} @@ -95,6 +95,12 @@ TARGET_LINK_LIBRARIES(lmms ${SNDFILE_LIBRARIES} ${EXTRA_LIBRARIES} ) +# Expose required libs for tests binary +SET(LMMS_REQUIRED_LIBS ${LMMS_REQUIRED_LIBS} PARENT_SCOPE) + +TARGET_LINK_LIBRARIES(lmms + ${LMMS_REQUIRED_LIBS} +) IF(QT5) TARGET_LINK_LIBRARIES(lmms @@ -138,6 +144,7 @@ ENDFOREACH(_item ${qm_targets}) IF(LMMS_BUILD_WIN32) SET_TARGET_PROPERTIES(lmms PROPERTIES LINK_FLAGS "${LINK_FLAGS} -mwindows" + ENABLE_EXPORTS ON ) ADD_CUSTOM_COMMAND(TARGET lmms POST_BUILD COMMAND "${STRIP}" "$") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f74c5a4b2..0a42b2729 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,7 @@ INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}") INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}") INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include") +INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++0x") @@ -10,6 +11,8 @@ ADD_EXECUTABLE(tests EXCLUDE_FROM_ALL main.cpp QTestSuite + + $ ) TARGET_LINK_LIBRARIES(tests ${QT_LIBRARIES} ${QT_QTTEST_LIBRARY}) -TARGET_LINK_LIBRARIES(tests lmms) +TARGET_LINK_LIBRARIES(tests ${LMMS_REQUIRED_LIBS}) From ff882e021e1ef1430fc89fd8cdc93460051dc999 Mon Sep 17 00:00:00 2001 From: Lukas W Date: Thu, 15 Jan 2015 15:57:50 +0100 Subject: [PATCH 2/3] Disable tests for CMake <2.8.8 --- src/CMakeLists.txt | 37 ++++++++++++++++++++++++++----------- tests/CMakeLists.txt | 7 +++++++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5e4dc2fe4..d0f8760a1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -64,17 +64,32 @@ ENDIF() # Enable C++11 ADD_DEFINITIONS("-std=c++0x") -ADD_LIBRARY(lmmsobjs OBJECT - ${LMMS_SRCS} - ${LMMS_INCLUDES} - ${LMMS_UI_OUT} - ${LMMS_ER_H} -) -ADD_EXECUTABLE(lmms - $ - core/main.cpp - "${WINRC}" -) +# ADD_LIBRARY's OBJECT is only supported in CMake >=2.8.8 +IF(CMAKE_MAJOR_VERSION GREATER 2 OR + CMAKE_MINOR_VERSION GREATER 8 OR + CMAKE_PATCH_VERSION GREATER 7) + + ADD_LIBRARY(lmmsobjs OBJECT + ${LMMS_SRCS} + ${LMMS_INCLUDES} + ${LMMS_UI_OUT} + ${LMMS_ER_H} + ) + ADD_EXECUTABLE(lmms + core/main.cpp + $ + "${WINRC}" + ) +ELSE() + ADD_EXECUTABLE(lmms + core/main.cpp + ${LMMS_SRCS} + ${LMMS_INCLUDES} + ${LMMS_UI_OUT} + ${LMMS_ER_H} + "${WINRC}" + ) +ENDIF() SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LMMS_ER_H} ${LMMS_UI_OUT} lmmsconfig.h lmms.1.gz") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0a42b2729..612e8639f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,3 +1,10 @@ +IF(CMAKE_MAJOR_VERSION LESS 2 OR + CMAKE_MINOR_VERSION LESS 8 OR + CMAKE_PATCH_VERSION LESS 8) + MESSAGE("-- Unit tests are only available in CMake >=2.8.8. You have ${CMAKE_VERSION}") + RETURN() +ENDIF() + INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}") INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}") INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include") From b90ee93d0c13dfb8ce8c7046691bb299db0f988b Mon Sep 17 00:00:00 2001 From: Lukas W Date: Thu, 15 Jan 2015 16:03:52 +0100 Subject: [PATCH 3/3] Travis: Upgrade CMake from PPA --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index a1276790c..1b25b0f60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,10 @@ env: - TARGET_OS=win64 before_install: - if [ $TARGET_OS != linux ]; then sudo add-apt-repository ppa:tobydox/mingw -y; fi + # Travis only has CMake 2.8.7, we need >=2.8.8: + - if [ $TARGET_OS == linux ]; then sudo add-apt-repository ppa:kalakris/cmake -y; fi - sudo apt-get update -qq + - if [ $TARGET_OS == linux ]; then sudo apt-get install -y cmake; fi install: - if [ $TARGET_OS != linux ]; then sudo apt-get install -y nsis cloog-isl libmpc2 mingw32; fi - if [ $TARGET_OS != linux ]; then sudo apt-get install -y mingw32-x-qt mingw32-x-sdl mingw32-x-libvorbis mingw32-x-fluidsynth mingw32-x-stk mingw32-x-glib2 mingw32-x-portaudio mingw32-x-libsndfile mingw32-x-fftw mingw32-x-flac mingw32-x-fltk mingw32-x-libsamplerate mingw32-x-pkgconfig mingw32-x-binutils mingw32-x-gcc mingw32-x-runtime mingw32-x-libgig; fi