From 2035ff3e3c0d5cef7882dc88e4b4e4fb86da8335 Mon Sep 17 00:00:00 2001 From: tresf Date: Sun, 16 Aug 2015 04:43:33 -0400 Subject: [PATCH] Initial Homebrew on OSX Lion patch --- CMakeLists.txt | 9 +- cmake/apple/CMakeLists.txt | 20 +++-- cmake/apple/dmg_branding.png | Bin 18192 -> 18099 bytes cmake/apple/install_apple.sh.in | 116 +++++++++++-------------- cmake/apple/package_apple.json.in | 10 +++ cmake/apple/package_apple.sh.in | 140 ------------------------------ cmake/modules/DetectMachine.cmake | 23 +++++ cmake/postinstall/CMakeLists.txt | 4 + plugins/flp_import/CMakeLists.txt | 9 +- src/CMakeLists.txt | 10 ++- 10 files changed, 121 insertions(+), 220 deletions(-) create mode 100644 cmake/apple/package_apple.json.in delete mode 100644 cmake/apple/package_apple.sh.in create mode 100644 cmake/postinstall/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index e701f725a..496aec657 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,9 @@ SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0005 NEW) CMAKE_POLICY(SET CMP0003 NEW) + IF (CMAKE_MAJOR_VERSION GREATER 2) + CMAKE_POLICY(SET CMP0026 OLD) + ENDIF() ENDIF(COMMAND CMAKE_POLICY) INCLUDE(AddFileDependencies) @@ -68,8 +71,6 @@ IF(LMMS_BUILD_APPLE) SET(STATUS_ALSA "") SET(STATUS_PULSEAUDIO "") SET(STATUS_APPLEMIDI "OK") - # MacPorts: /opt/local/lib - LINK_DIRECTORIES(${LINK_DIRECTORIES} /opt/local/lib) ENDIF(LMMS_BUILD_APPLE) @@ -448,11 +449,15 @@ ADD_SUBDIRECTORY(tests) ADD_SUBDIRECTORY(data) ADD_SUBDIRECTORY(doc) +# post-install tasks +ADD_SUBDIRECTORY(cmake/postinstall) + ADD_CUSTOM_COMMAND(OUTPUT "${CMAKE_BINARY_DIR}/lmms.1.gz" COMMAND gzip -c "\"${CMAKE_SOURCE_DIR}/doc/lmms.1\"" > "\"${CMAKE_BINARY_DIR}/lmms.1.gz\"" DEPENDS "${CMAKE_SOURCE_DIR}/doc/lmms.1" COMMENT "Generating lmms.1.gz") + ADD_CUSTOM_TARGET(manpage ALL DEPENDS "${CMAKE_BINARY_DIR}/lmms.1.gz") diff --git a/cmake/apple/CMakeLists.txt b/cmake/apple/CMakeLists.txt index edd97feba..be62d2bbe 100644 --- a/cmake/apple/CMakeLists.txt +++ b/cmake/apple/CMakeLists.txt @@ -12,13 +12,19 @@ SET(MACOSX_BUNDLE_PROJECT_URL "${PROJECT_URL}") CONFIGURE_FILE("lmms.plist.in" "${CMAKE_INSTALL_PREFIX}/Info.plist") CONFIGURE_FILE("install_apple.sh.in" "${CMAKE_BINARY_DIR}/install_apple.sh" @ONLY) -CONFIGURE_FILE("package_apple.sh.in" "${CMAKE_BINARY_DIR}/package_apple.sh" @ONLY) - -# Add execute permissions to install script -EXECUTE_PROCESS(COMMAND chmod u+x ${CMAKE_BINARY_DIR}/install_apple.sh) -INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_BINARY_DIR}/install_apple.sh)") - -# TODO: Add PACKAGE target using package_apple_dmg.sh +CONFIGURE_FILE("package_apple.json.in" "${CMAKE_BINARY_DIR}/package_apple.json" @ONLY) +# DMG creation target +SET(DMG_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}.dmg") +FILE(REMOVE "${DMG_FILE}") +ADD_CUSTOM_TARGET(removedmg + COMMAND touch "\"${DMG_FILE}\"" && rm "\"${DMG_FILE}\"" + COMMENT "Removing old DMG") +ADD_CUSTOM_TARGET(dmg + COMMAND appdmg "\"${CMAKE_BINARY_DIR}/package_apple.json\"" "\"${DMG_FILE}\"" + DEPENDS "${CMAKE_BINARY_DIR}/package_apple.json" + COMMENT "Generating DMG") +ADD_DEPENDENCIES(dmg removedmg) +# see also ../postinstall/CMakeLists.txt diff --git a/cmake/apple/dmg_branding.png b/cmake/apple/dmg_branding.png index f971453b12e72b3d0ef736edcad3aea8ff822106..c1469720775a5c39e1211a2413316da69500a18a 100644 GIT binary patch literal 18099 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 NMR`@ZA{hg}{|iOySpfh5 literal 18192 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 RCgC|y$~SLg3+0Sn{4ZJPB%J^N diff --git a/cmake/apple/install_apple.sh.in b/cmake/apple/install_apple.sh.in index 1ea1c8e4a..02e98fdd1 100644 --- a/cmake/apple/install_apple.sh.in +++ b/cmake/apple/install_apple.sh.in @@ -9,113 +9,95 @@ #notes :Troubleshooting try: export DYLD_PRINT_LIBRARIES=1; export VERBOSE=1; #requires :deploymacqt #========================================================================================= - -# MacPorts Location -MACPORTS=/opt/local - - # LMMS project root directory (extracted source) -CMAKE_SRC=@CMAKE_SOURCE_DIR@ - -# LMMS compiled (install) resources -CMAKE_INSTALL=@CMAKE_INSTALL_PREFIX@ - -# LMMS working build directory -CMAKE_BUILD=$(cd @CMAKE_CURRENT_BINARY_DIR@/../..; pwd) - # STK rawwaves directory -STK_RAWWAVE=${HOME}/stk-*/rawwaves +STK_RAWWAVE=$HOME/stk-*/rawwaves # Place to create ".app" bundle -APP=${HOME}/Desktop/LMMS.app +APP="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.app" # MacPorts installs libreadline with wrong permissions -LIBREADLINE=${MACPORTS}/lib/libreadline.6.2.dylib - -# The DMG packager script location -DMG_SCRIPT_SRC=${CMAKE_BUILD}/package_apple.sh -DMG_SCRIPT_DST=${HOME}/Desktop/package_apple.sh +LIBREADLINE="libreadline.6.2.dylib" #========================================================================================= MSG_COLOR='\x1B[1;36m' COLOR_RESET='\x1B[0m' -echo -e "${MSG_COLOR}\n\nCreating App Bundle \"${APP}\"...${COLOR_RESET}" +echo -e "$MSG_COLOR\n\nCreating App Bundle \"$APP\"...$COLOR_RESET" -# Check for u+w permissions on libreadline -CHECKREADLINE=$(stat -f "%p" $LIBREADLINE) -CHECKREADLINE=${CHECKREADLINE:3:1} -if [ "${CHECKREADLINE}" != "7" ] -then - echo -e "\n\n\t\t\t\t***********\n\t\t\t\t* WARNING *\n\t\t\t\t***********" - echo -e "File ${LIBREADLINE} is not marked as user writable." - echo -e "This will break macdeployqt's linking process after it is copied." - echo -e "A sudo password is required to elevate and fix using chmod u+w." - echo -e "\nPLEASE ENTER SUDO PASSWORD:" - sudo chmod u+w "${MACPORTS}/lib/libreadline.6.2.dylib" +# MacPorts only - check for u+w permissions on libreadline +if [ -f "@APPLE_PREFIX@/lib/$LIBREADLINE" ]; then + CHECKREADLINE=$(stat -f "%p" @APPLE_PREFIX@/lib/$LIBREADLINE) + CHECKREADLINE=${CHECKREADLINE:3:1} + if [ "${CHECKREADLINE}" != "7" ]; then + echo -e "\n\n\t\t\t\t***********\n\t\t\t\t* WARNING *\n\t\t\t\t***********" + echo -e "File $LIBREADLINE is not marked as user writable." + echo -e "This will break macdeployqt's linking process after it is copied." + echo -e "A sudo password is required to elevate and fix using chmod u+w." + echo -e "\nPLEASE ENTER SUDO PASSWORD:" + sudo chmod u+w "@APPLE_PREFIX@/lib/$LIBREADLINE" + fi fi # Remove any old .app bundles -rm -Rf ${APP} +rm -Rf "$APP" # Create new bundle, copy our built code to it -mkdir -p ${APP} -cd ${CMAKE_INSTALL} -mkdir ${APP}/Contents -cp -R * ${APP}/Contents +mkdir -p "$APP" +cd "@CMAKE_INSTALL_PREFIX@" +mkdir "$APP/Contents" +cp -R * "$APP/Contents" # Manually copy STK rawwaves -mkdir -p ${APP}/Contents/share/stk/rawwaves -cp ${STK_RAWWAVE}/*.raw ${APP}/Contents/share/stk/rawwaves +mkdir -p "$APP/Contents/share/stk/rawwaves" +cp $STK_RAWWAVE/*.raw "$APP/Contents/share/stk/rawwaves" # Make all libraries writable for macdeployqt -cd ${APP} +cd "$APP" find . -type f -print0 | xargs -0 chmod u+w # Move lmms binary to the proper location -mkdir -p ${APP}/Contents/MacOS -mv ${APP}/Contents/bin/lmms ${APP}/Contents/MacOS -rm -rf ${APP}/Contents/bin +mkdir -p "$APP/Contents/MacOS" +mv "$APP/Contents/bin/lmms" "$APP/Contents/MacOS/lmms" +rm -rf "$APP/Contents/bin" # Move libraries to proper locations -mkdir -p ${APP}/Contents/Frameworks -mv ${APP}/Contents/lib/lmms/libZynAddSubFxCore.dylib \ - ${APP}/Contents/Frameworks/libZynAddSubFxCore.dylib +mkdir -p "$APP/Contents/Frameworks" +mv "$APP/Contents/lib/lmms/libZynAddSubFxCore.dylib" \ + "$APP/Contents/Frameworks/libZynAddSubFxCore.dylib" -mv ${APP}/Contents/lib/lmms/RemoteZynAddSubFx \ - ${APP}/Contents/MacOS/RemoteZynAddSubFx +mv "$APP/Contents/lib/lmms/RemoteZynAddSubFx" \ + "$APP/Contents/MacOS/RemoteZynAddSubFx" # Fix more Zyn Linking issues -install_name_tool -change libZynAddSubFxCore.dylib \ +install_name_tool -change @rpath/libZynAddSubFxCore.dylib \ @loader_path/../../Frameworks/libZynAddSubFxCore.dylib \ - ${APP}/Contents/lib/lmms/libzynaddsubfx.so + "$APP/Contents/lib/lmms/libzynaddsubfx.so" -install_name_tool -change ${CMAKE_BUILD}/plugins/zynaddsubfx/libZynAddSubFxCore.dylib \ +install_name_tool -change @CMAKE_BINARY_DIR@/plugins/zynaddsubfx/libZynAddSubFxCore.dylib \ @loader_path/../../Frameworks/libZynAddSubFxCore.dylib \ - ${APP}/Contents/MacOS/RemoteZynAddSubFx + "$APP/Contents/MacOS/RemoteZynAddSubFx" # Build a list of shared objects in target/lib/lmms -for file in ${APP}/Contents/lib/lmms/*.so; do - _executables="${_executables} -executable=${APP}/Contents/lib/lmms/${file##*/}" +for file in "$APP/Contents/lib/lmms/"*.so; do + _thisfile="$APP/Contents/lib/lmms/${file##*/}" + _executables="${_executables} -executable=$_thisfile" done # Build a list of shared objects in target/lib/lmms/ladspa -for file in ${APP}/Contents/lib/lmms/ladspa/*.so; do -_executables="${_executables} -executable=${APP}/Contents/lib/lmms/ladspa/${file##*/}" +for file in "$APP/Contents/lib/lmms/ladspa/"*.so; do + _thisfile="$APP/Contents/lib/lmms/ladspa/${file##*/}" + _executables="${_executables} -executable=$_thisfile" done # Additional binaries that require linking -_executables="${_executables} -executable=${APP}/Contents/MacOS/RemoteZynAddSubFx" -_executables="${_executables} -executable=${APP}/Contents/Frameworks/libZynAddSubFxCore.dylib" - +_executables="${_executables} -executable=$APP/Contents/MacOS/RemoteZynAddSubFx" +_executables="${_executables} -executable=$APP/Contents/Frameworks/libZynAddSubFxCore.dylib" + # Build our App Package using "macdeployqt" -macdeployqt ${APP} $_executables +macdeployqt "$APP" $_executables # OS X Specific Artwork -cp ${CMAKE_SRC}/cmake/apple/*.icns ${APP}/Contents/Resources/ +mkdir -p "$APP/Contents/Resources" +cp "@CMAKE_SOURCE_DIR@/cmake/apple/"*.icns "$APP/Contents/Resources/" -# Done. Ready to build DMG -echo -e "\nFinished.\n\nYou may run LMMS from the Desktop." -echo -e "\nTo create an Apple DMG Package run ${MSG_COLOR}\"${DMG_SCRIPT_DST}\"${COLOR_RESET}.\n" -echo -e "(Note: You can drag/drop the script directly into this terminal window.)\n" -cp ${DMG_SCRIPT_SRC} ${DMG_SCRIPT_DST} -chmod +x ${DMG_SCRIPT_DST} +echo -e "\nFinished.\n\n" diff --git a/cmake/apple/package_apple.json.in b/cmake/apple/package_apple.json.in new file mode 100644 index 000000000..338f9c336 --- /dev/null +++ b/cmake/apple/package_apple.json.in @@ -0,0 +1,10 @@ +{ + "title": "@MACOSX_BUNDLE_BUNDLE_NAME@ @MACOSX_BUNDLE_LONG_VERSION_STRING@", + "icon": "@CMAKE_SOURCE_DIR@/cmake/apple/lmms.icns", + "background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png", + "icon-size": 72, + "contents": [ + { "x": 460, "y": 260, "type": "link", "path": "/Applications" }, + { "x": 220, "y": 260, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" } + ] +} diff --git a/cmake/apple/package_apple.sh.in b/cmake/apple/package_apple.sh.in deleted file mode 100644 index e3f3c2b71..000000000 --- a/cmake/apple/package_apple.sh.in +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/bash - -# by Andy Maloney -# http://asmaloney.com/2013/07/howto/packaging-a-mac-os-x-application-using-a-dmg/ - -# make sure we are in the correct dir when we double-click a .command file -dir=${0%/*} -if [ -d "$dir" ]; then - cd "$dir" -fi - -# set up your app name, version number, and background image file name -APP_NAME="@MACOSX_BUNDLE_BUNDLE_NAME@" -VERSION="@MACOSX_BUNDLE_LONG_VERSION_STRING@" -DMG_BACKGROUND_IMG="dmg_branding.png" -cp "@CMAKE_SOURCE_DIR@/cmake/apple/${DMG_BACKGROUND_IMG}" . - -# you should not need to change these -OS_VER=`sw_vers -productVersion|cut -d"." -f1-2` -APP_LOWERCASE=$(echo $APP_NAME|tr '[:upper:]' '[:lower:]') -APP_EXE="${APP_NAME}.app/Contents/MacOS/${APP_LOWERCASE}" - -VOL_NAME="${APP_LOWERCASE}-${VERSION}-mac${OS_VER}" # volume name will be "SuperCoolApp 1.0.0" -DMG_TMP="${VOL_NAME}-temp.dmg" -DMG_FINAL="${VOL_NAME}.dmg" # final DMG name will be "SuperCoolApp 1.0.0.dmg" -STAGING_DIR="./Install" # we copy all our stuff into this dir - -# Check the background image DPI and convert it if it isn't 72x72 -_BACKGROUND_IMAGE_DPI_H=`sips -g dpiHeight ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'` -_BACKGROUND_IMAGE_DPI_W=`sips -g dpiWidth ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'` - -if [ $(echo " $_BACKGROUND_IMAGE_DPI_H != 72.0 " | bc) -eq 1 -o $(echo " $_BACKGROUND_IMAGE_DPI_W != 72.0 " | bc) -eq 1 ]; then - echo "WARNING: The background image's DPI is not 72. This will result in distorted backgrounds on Mac OS X 10.7+." - echo " I will convert it to 72 DPI for you." - - _DMG_BACKGROUND_TMP="${DMG_BACKGROUND_IMG%.*}"_dpifix."${DMG_BACKGROUND_IMG##*.}" - - sips -s dpiWidth 72 -s dpiHeight 72 ${DMG_BACKGROUND_IMG} --out ${_DMG_BACKGROUND_TMP} - - DMG_BACKGROUND_IMG="${_DMG_BACKGROUND_TMP}" -fi - -# clear out any old data -rm -rf "${STAGING_DIR}" "${DMG_TMP}" "${DMG_FINAL}" - -# copy over the stuff we want in the final disk image to our staging dir -mkdir -p "${STAGING_DIR}" -cp -rpf "${APP_NAME}.app" "${STAGING_DIR}" -# ... cp anything else you want in the DMG - documentation, etc. - -pushd "${STAGING_DIR}" - -# strip the executable -echo "Stripping ${APP_EXE}..." -strip -u -r "${APP_EXE}" - -# compress the executable if we have upx in PATH -# UPX: http://upx.sourceforge.net/ -if hash upx 2>/dev/null; then - echo "Compressing (UPX) ${APP_EXE}..." - upx -9 "${APP_EXE}" -fi - -# ... perform any other stripping/compressing of libs and executables - -popd - -# figure out how big our DMG needs to be -# assumes our contents are at least 1M! -SIZE=`du -sh "${STAGING_DIR}" | sed 's/\([0-9\.]*\)M\(.*\)/\1/'` -SIZE=`echo "${SIZE} + 5.0" | bc | awk '{print int($1+0.5)}'` - -if [ $? -ne 0 ]; then - echo "Error: Cannot compute size of staging dir" - exit -fi - -# create the temp DMG file -hdiutil create -srcfolder "${STAGING_DIR}" -volname "${VOL_NAME}" -fs HFS+ \ - -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "${DMG_TMP}" - -echo "Created DMG: ${DMG_TMP}" - -# mount it and save the device -DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \ - egrep '^/dev/' | sed 1q | awk '{print $1}') - -sleep 2 - -# add a link to the Applications dir -echo "Add link to /Applications" -pushd /Volumes/"${VOL_NAME}" -ln -s /Applications -popd - -# add a background image -mkdir /Volumes/"${VOL_NAME}"/.background -cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/ - -# tell the Finder to resize the window, set the background, -# change the icon size, place the icons in the right position, etc. -echo ' - tell application "Finder" - tell disk "'${VOL_NAME}'" - open - set current view of container window to icon view - set toolbar visible of container window to false - set statusbar visible of container window to false - set the bounds of container window to {400, 100, 920, 440} - set viewOptions to the icon view options of container window - set arrangement of viewOptions to not arranged - set icon size of viewOptions to 72 - set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'" - set position of item "'${APP_NAME}'.app" of container window to {160, 205} - set position of item "Applications" of container window to {360, 205} - close - open - update without registering applications - delay 2 - end tell - end tell -' | osascript - -sync - -# unmount it -hdiutil detach "${DEVICE}" - -# now make the final image a compressed disk image -echo "Creating compressed image" -hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}" - -# clean up -rm -rf "${DMG_TMP}" -rm -rf "${STAGING_DIR}" -rm -rf "${DMG_BACKGROUND_IMG}" - -echo 'Done.' - -exit diff --git a/cmake/modules/DetectMachine.cmake b/cmake/modules/DetectMachine.cmake index 5bbbef44e..a3eac91cb 100644 --- a/cmake/modules/DetectMachine.cmake +++ b/cmake/modules/DetectMachine.cmake @@ -8,6 +8,10 @@ ELSE() SET(LMMS_BUILD_LINUX 1) ENDIF(WIN32) +IF(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + SET(LMMS_BUILD_CLANG 1) +ENDIF() + MESSAGE("PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") SET(LMMS_HOST_X86 FALSE) SET(LMMS_HOST_X86_64 FALSE) @@ -55,4 +59,23 @@ ELSE(LMMS_BUILD_WIN32) SET(LMMS_DATA_DIR ${DATA_DIR}/lmms) ENDIF(LMMS_BUILD_WIN32) +IF(LMMS_BUILD_APPLE) + # Detect Homebrew versus Macports environment + EXECUTE_PROCESS(COMMAND brew --prefix RESULT_VARIABLE DETECT_HOMEBREW OUTPUT_VARIABLE HOMEBREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + EXECUTE_PROCESS(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + IF(${DETECT_HOMEBREW} EQUAL 0) + SET(HOMEBREW 1) + SET(APPLE_PREFIX "${HOMEBREW_PREFIX}") + ELSEIF(${DETECT_MACPORTS} EQUAL 0) + SET(MACPORTS 1) + GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) + GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) + SET(APPLE_PREFIX "${MACPORTS_PREFIX}") + LINK_DIRECTORIES(${LINK_DIRECTORIES} ${APPLE_PREFIX}/lib) + ENDIF() + # Detect OS Version + EXECUTE_PROCESS(COMMAND sw_vers -productVersion OUTPUT_VARIABLE APPLE_OS_VER ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + STRING(REGEX REPLACE "\\.[0-9]*$" "" APPLE_OS_VER "${APPLE_OS_VER}") + SET(CMAKE_MACOSX_RPATH 1) +ENDIF() diff --git a/cmake/postinstall/CMakeLists.txt b/cmake/postinstall/CMakeLists.txt new file mode 100644 index 000000000..434d1c54e --- /dev/null +++ b/cmake/postinstall/CMakeLists.txt @@ -0,0 +1,4 @@ +IF(LMMS_BUILD_APPLE) + INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x ${CMAKE_BINARY_DIR}/install_apple.sh)") + INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_BINARY_DIR}/install_apple.sh)") +ENDIF() \ No newline at end of file diff --git a/plugins/flp_import/CMakeLists.txt b/plugins/flp_import/CMakeLists.txt index e4bfed8a7..bdc38e816 100644 --- a/plugins/flp_import/CMakeLists.txt +++ b/plugins/flp_import/CMakeLists.txt @@ -2,5 +2,12 @@ INCLUDE(BuildPlugin) INCLUDE_DIRECTORIES(unrtf) -ADD_DEFINITIONS(--std=c++0x) +# Enable C++11 +ADD_DEFINITIONS(-std=c++0x) + +IF(LMMS_BUILD_CLANG) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +ENDIF() + BUILD_PLUGIN(flpimport FlpImport.cpp unrtf.cpp FlpImport.h) + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 35579608f..a6a8776bf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,6 +7,13 @@ SET(LMMS_UIS "") SET(CMAKE_AUTOMOC ON) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +# Enable C++11 +ADD_DEFINITIONS(-std=c++0x) + +IF(LMMS_BUILD_CLANG) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +ENDIF() + ADD_SUBDIRECTORY(core) ADD_SUBDIRECTORY(gui) ADD_SUBDIRECTORY(tracks) @@ -64,9 +71,6 @@ IF(NOT ("${OGGVORBIS_INCLUDE_DIR}" STREQUAL "")) INCLUDE_DIRECTORIES("${OGGVORBIS_INCLUDE_DIR}") ENDIF() -# Enable C++11 -ADD_DEFINITIONS("-std=c++0x") - # ADD_LIBRARY's OBJECT is only supported in CMake >=2.8.8 IF(CMAKE_VERSION VERSION_GREATER "2.8.7")