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 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e739f36aa..d0f8760a1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -64,17 +64,32 @@ ENDIF() # Enable C++11 ADD_DEFINITIONS("-std=c++0x") -ADD_EXECUTABLE(lmms - core/main.cpp - ${LMMS_SRCS} - ${LMMS_INCLUDES} - ${LMMS_UI_OUT} - ${LMMS_ER_H} - "${WINRC}" -) -SET_TARGET_PROPERTIES(lmms PROPERTIES - ENABLE_EXPORTS ON -) +# 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") @@ -82,7 +97,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 +110,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 +159,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..612e8639f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,14 @@ +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") +INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++0x") @@ -10,6 +18,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})