Skip to content

Commit

Permalink
Merge branch '3.7' into master3.7
Browse files Browse the repository at this point in the history
  • Loading branch information
bagong committed Apr 15, 2016
2 parents 66adde6 + d3a87c1 commit d876732
Show file tree
Hide file tree
Showing 28 changed files with 1,778 additions and 1,110 deletions.
8 changes: 3 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ os:
sudo: required
dist: trusty

cache:
cache:
- apt
- bundler

Expand All @@ -22,8 +22,8 @@ before_install:
- iflin sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test
- iflin sudo add-apt-repository --yes ppa:beineri/opt-qt551-trusty
- iflin sudo apt-get update
- iflin sudo apt-get install --yes build-essential gcc-4.9 g++-4.9 cmake pkg-config qt55base qt55location qt55declarative qt55sensors qt55tools qt55webengine qt55webchannel qt55webkit qt55xmlpatterns libjack-jackd2-dev libsndfile1-dev libasound2-dev libavahi-client-dev libreadline6-dev libfftw3-dev libicu-dev libxt-dev libudev-dev
- iflin sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
- iflin sudo apt-get install --yes build-essential gcc-4.9 g++-4.9 cmake pkg-config qt55base qt55location qt55declarative qt55sensors qt55tools qt55webengine qt55webchannel qt55webkit qt55xmlpatterns libjack-jackd2-dev libsndfile1-dev libasound2-dev libavahi-client-dev libreadline6-dev libfftw3-dev libicu-dev libxt-dev libudev-dev
- iflin sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
- iflin sudo update-alternatives --auto gcc

before_script:
Expand Down Expand Up @@ -93,5 +93,3 @@ notifications:
- https://webhooks.gitter.im/e/51b9b53ca50a7bfca97d
on_success: change
on_failure: always


28 changes: 27 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Change Log


## [3.7.1](https://github.com/supercollider/supercollider/tree/3.7.1) (2016-04-10)
[Full Changelog](https://github.com/supercollider/supercollider/compare/Version-3.7.0...3.7.1)

**Enhancements**

- Native FLAC support for scsynth on OS X [\#1783](https://github.com/supercollider/supercollider/issues/1783)
- Libsndfile: have cmake prefer homebrew install over bundled version [\#1870](https://github.com/supercollider/supercollider/pull/1870) ([bagong](https://github.com/bagong))
- OS X Readme: note that Qt 5.5 is required, not Qt 5.6 [\#1931](https://github.com/supercollider/supercollider/issues/1931)
- class library: node proxy: improve shape error post [\#1889](https://github.com/supercollider/supercollider/pull/1889) ([telephon](https://github.com/telephon))
- Server.schelp: fixed description of scsynth method, changed wording, … [\#1894](https://github.com/supercollider/supercollider/pull/1894) ([miczac](https://github.com/miczac))

**Fixes:**

- Windows build system [\#1900](https://github.com/supercollider/supercollider/pull/1900) ([bagong](https://github.com/bagong))
- cmake: fix build when using system boost [\#1896](https://github.com/supercollider/supercollider/pull/1896) ([danstowell](https://github.com/danstowell))
- Correct accidental msys leftovers in findPortaudio [\#1941](https://github.com/supercollider/supercollider/pull/1941) ([bagong](https://github.com/bagong))
- Remove -fstrict-aliasing from the MinGW build to allow using MinGW 4.9.2 [\#1923](https://github.com/supercollider/supercollider/pull/1923) ([bagong](https://github.com/bagong))

- Quarks.update\("quarkname"\) does not always update correctly [\#1895](https://github.com/supercollider/supercollider/issues/1895)
- fix \#1895 : update Quark by `git pull` and `git checkout master` [\#1954](https://github.com/supercollider/supercollider/pull/1954) ([crucialfelix](https://github.com/crucialfelix))
- Quarks Windows fixes [\#1956](https://github.com/supercollider/supercollider/pull/1956) ([bagong](https://github.com/bagong))

- Errors when closing scope window [\#1878](https://github.com/supercollider/supercollider/issues/1878)


## [3.7.0](https://github.com/supercollider/supercollider/tree/3.7.0) (2016-03-13)
[Full Changelog](https://github.com/supercollider/supercollider/compare/Version-3.6.6...3.7.0)

Expand Down Expand Up @@ -2532,4 +2558,4 @@ Bugfixes:
- 2007-10-24 fixed a bug in Pbeta - jp


\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
68 changes: 36 additions & 32 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,6 @@ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(WARNING "WARNING: IN-PLACE BUILDS ARE NOT RECOMMENDED - PLEASE USE A BUILD DIRECTORY")
endif()

# allows cmake-find modules and Windows installer to identify the right architecture
if(WIN32)
if(CMAKE_CL_64 OR "$ENV{MSYSTEM}" MATCHES "64" OR CMAKE_C_COMPILER MATCHES "64")
SET(CMAKE_LIBRARY_ARCHITECTURE "x64" CACHE STRING "Architecture of target system (for 64bit)")
else()
SET(CMAKE_LIBRARY_ARCHITECTURE "x86" CACHE STRING "Architecture of target system (for 32bit)")
endif()

if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE STRING "Cmake install path" FORCE)
endif()
endif(WIN32)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules
${CMAKE_MODULE_PATH})

Expand All @@ -52,6 +39,28 @@ CONFIGURE_FILE(
ADD_CUSTOM_TARGET(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")

# identify target architecture, build portaudio before any SC specific
# definitions break the pa-build
if(WIN32)
SET(SC_WIN_BUNDLE_NAME "SuperCollider" CACHE STRING "Folder name of SC install")

if(CMAKE_CL_64 OR "$ENV{MSYSTEM}" MATCHES "64" OR CMAKE_C_COMPILER MATCHES "64")
SET(CMAKE_LIBRARY_ARCHITECTURE "x64" CACHE STRING "Architecture of target system (for 64bit)")
else()
SET(CMAKE_LIBRARY_ARCHITECTURE "x86" CACHE STRING "Architecture of target system (for 32bit)")
endif()

# installing to default application-location creates an error (a privileges and/or path syntax problem)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE PATH "Cmake install path" FORCE)
endif()

# might work with "SHARED" as well.
set(PA_LIBRARY_TYPE "STATIC")
set(PORTAUDIO_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/external_libraries/portaudio/include" CACHE PATH "Portaudio include directory" FORCE)
add_subdirectory("${CMAKE_SOURCE_DIR}/external_libraries/portaudio")
endif(WIN32)

#############################################
# Compiler flags etc

Expand Down Expand Up @@ -162,7 +171,11 @@ option(SC_MEMORY_DEBUGGING "Build sclang&scsynth for memory debugging (disable m
option(GC_SANITYCHECK "Enable sanity checks in the sclang garbage collector.")

option(NO_LIBSNDFILE "Disable soundfile functionality. (Not recommended.)" OFF)
option(NO_AVAHI "Disable Avahi support. (Not recommended.)" OFF)
if(WIN32)
option(NO_AVAHI "Disable Avahi support. (Not recommended.)" ON)
else(WIN32)
option(NO_AVAHI "Disable Avahi support. (Not recommended.)" OFF)
endif(WIN32)
option(NO_GPL3 "Disable GPL3 code, for pure-GPL2 situations. (Not recommended.)" OFF)

option(SCLANG_SERVER "Build with internal server." ON)
Expand Down Expand Up @@ -196,7 +209,6 @@ if (NOT WIN32)
include_directories(${PTHREADS_INCLUDE_DIR})
endif()


if(SYSTEM_BOOST)
set(Boost_USE_MULTITHREADED ON)
find_package( Boost 1.50.0 COMPONENTS thread system filesystem program_options regex test_exec_monitor )
Expand Down Expand Up @@ -280,8 +292,9 @@ if (SC_MEMORY_DEBUGGING)
endif()

if(MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign")
# no-strict-aliasing was introduced because of problems with MinGW/GCC 4.9.2
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign -fno-strict-aliasing")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign -fno-strict-aliasing")
endif()

if (NO_GPL3)
Expand Down Expand Up @@ -330,7 +343,7 @@ if(UNIX AND NOT APPLE)
endif()

if (WIN32)
set(auxresourcesdir "SuperCollider")
set(auxresourcesdir "${SC_WIN_BUNDLE_NAME}")
elseif(APPLE)
set(auxresourcesdir ${scappbundlename})
else()
Expand Down Expand Up @@ -431,15 +444,6 @@ if(INSTALL_HELP)
PATTERN "*#" EXCLUDE
)
endif()

if(NOT APPLE)
install(DIRECTORY HelpSource
DESTINATION ${auxresourcesdir}
REGEX ${SCCLASSLIB_EXCLUDE_REGEX} EXCLUDE
PATTERN "*~" EXCLUDE
PATTERN "*#" EXCLUDE
)
endif()
endif()


Expand Down Expand Up @@ -468,11 +472,11 @@ if(SC_DOC_RENDER)
file(GLOB_RECURSE SCDocClasses RELATIVE SCClassLibrary/SCDoc *.sc)

add_custom_target(doc ALL
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/lang/sclang${CMAKE_EXECUTABLE_SUFFIX}
-l ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg
platform/renderAllHelp.scd ${CMAKE_CURRENT_SOURCE_DIR}/HelpSource ${CMAKE_CURRENT_BINARY_DIR}/RenderedHelp
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS sclang ${SCDocSources} ${SCDocClasses})
COMMAND $<TARGET_FILE_DIR:sclang>/sclang${CMAKE_EXECUTABLE_SUFFIX}
-l ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg
platform/renderAllHelp.scd ${CMAKE_CURRENT_SOURCE_DIR}/HelpSource ${CMAKE_CURRENT_BINARY_DIR}/RenderedHelp
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS sclang ${SCDocSources} ${SCDocClasses})

endif()

Expand Down
4 changes: 2 additions & 2 deletions HelpSource/Classes/Server.schelp
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,11 @@ free all nodes in all registered servers

method:: supernova

Switches server program to use supernova. Check link::Classes/ParGroup:: how to make use of multicore hardware with the supernova server.
Switches the server program to supernova. Check link::Classes/ParGroup:: how to make use of multicore hardware with the supernova server.

method:: scsynth

Switches server program to use supernova.
Switches the server program to scsynth. This is the default server.


InstanceMethods::
Expand Down
69 changes: 31 additions & 38 deletions README_OS_X.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ Table of contents
* Using cmake with Xcode or QtCreator
* Building without Qt or the IDE
* sclang and scynth executables
* On libsndfile

Executables
-----------
Expand All @@ -46,13 +45,17 @@ Prerequisites:
`xcode-select --install`
- **homebrew** is recommended to install required libraries
See http://brew.sh for installation instructions.
- **git, cmake, readline, and qt5**, installed via homebrew:
`brew install git cmake readline qt5`
- **git, cmake, libsndfile, readline, and qt5.5.x**, installed via homebrew:
`brew install git cmake readline homebrew/versions/qt55`

As of this writing the latest stable Qt is 5.5.x. The 5.6 beta has also been reported to work fine.
*Note*: As of this writing the latest stable Qt is 5.6.x. SC depends on Qt5WebKit, which was dropped from the binary distribution of Qt 5.6
(functionally replaced by Qt5WebEngine). Therefore you cannot simply install the latest Qt5 via homebrew and rely on the defaults set during
the install. If this is you first Qt5 install, use the package name given above and replace `brew --prefix qt5` by `brew --prefix qt55` in
the build instructions below. If you already had Qt5, and were caught by an update, or you need several Qt5 installs, you can set the version
to be used by default with `brew switch`, for example `brew switch qt5 5.5.1_2` (you can also "freeze" the Qt5 version with `brew pin`).

Obtaining the source code
----------------------------
-------------------------

**Note** Please do not use non-ASCII characters (above code point 127) in your
SuperCollider program path (i.e. the names of the folders containing SuperCollider).
Expand Down Expand Up @@ -92,21 +95,25 @@ To install, you may move this to /Applications or use it in place from the build

cmake -G Xcode -DCMAKE_PREFIX_PATH=`brew --prefix qt5` ..

This specifies to cmake that we will be using Xcode to build. It also specifies the location of qt so that the complier/linker can find it. Qt was installed with brew, so we ask brew to tell us where it installed it to.
This specifies to cmake that we will be using Xcode to build. It also specifies the location of qt so that the complier/linker can find it
(note that you might have to set `qt55` instead of `qt5`, depending on how you installed you qt5 version (see above, "Prerequisites")).
`brew --prefix qt5` will be expanded to the path to current Qt5 when the command is run.

If you are not using the Homebrew install then you should substitute the path to parent folder of the bin/include/lib folders in that Qt tree.
If you are not using the Homebrew install then you should substitute the path to the parent folder of the bin/include/lib folders in that
Qt tree.

##### Build

cmake --build . --target install --config RelWithDebInfo

Cmake will build the application, looking for the `CMakeCache.txt` configuration file in the specified directory (the current directory: `.` ).

The operation it will build is named 'install'.
Cmake will build the application looking up configuration information in the file `CMakeCache.txt` in the specified directory
(the current directory: `.` ). By specifying '--target install' you build all targets and trigger the creation of a portable
bundle containing all files contained in the SC distribution. The default install location is `./Install`.

The flag `--config RelWithDebInfo` will build an optimized binary but will still include some useful debug information.

By default Xcode builds the application in debug mode which runs much slower and has a larger application size. Its intended for use with the XCode debugger. For normal usage you will want an optimized release version.
By default Xcode builds the application in debug mode which runs much slower and has a larger application size. It is intended for use with
the XCode debugger. For normal usage you will want an optimized release version.

The four possible build configs are:

Expand All @@ -126,9 +133,10 @@ The most common build problems are related to incorrect versions of the core dep

**Xcode**: `xcodebuild -version`, or the "About" dialog of the Xcode application. Any build from the 6.x series or greater should generally work.

**cmake, qt5, readline**: `brew info ____` will show you what you have installed - for example, `brew info qt5` should show you the Qt5 version information.
**cmake, qt5(.5.x), libsndfile, readline**: `brew info ____` will show you what you have installed - for example, `brew info qt5` should show you the Qt5 version
information. A build using v5.6 and above will fail at the time of this writing because Qt5WebKit is missing in its binary distribution.

`brew upgrade ____` will update the dependency to a newer version.
`brew upgrade ____` will update the dependency to a newer version (avoid this for Qt5 or handle different Qt5 versions with `brew switch`).

Other common homebrew problems can be fixed using `brew doctor`.

Expand Down Expand Up @@ -215,12 +223,12 @@ Common arguments to control the build configuration are:

Within SC you will be able to switch between scsynth and supernova by evaluating one of:

`Server.supernova`
`Server.supernova`
`Server.scsynth`

Check sc help for `ParGroup` to see how to make use of multi-core hardware.

* Build a 32-bit version:
* Build a 32-bit version (sc 3.6 only):

`-DCMAKE_OSX_ARCHITECTURES='i386'`

Expand All @@ -230,8 +238,14 @@ Common arguments to control the build configuration are:

`-DCMAKE_OSX_ARCHITECTURES='i386;x86_64'`

* Normally, homebrew installations of readline are detected automatically, and building with
readline is only required if you plan to use SuperCollider from the terminal. To link to a
* Homebrew installations of libsndfile should be detected automatically. To link to a
version of libsndfile that is not installed in /usr/local/include|lib, you can use:

`-DSNDFILE_INCLUDE_DIR='/path/to/libsndfile/include'`
`-DSNDFILE_LIBRARY='/path/to/libsndfile/lib/libreadline.dylib'`

* Normally, homebrew installations of readline are detected automatically, and building with
readline is only required if you plan to use SuperCollider from the terminal. To link to a
non-standard version of readline, you can use:

`-DREADLINE_INCLUDE_DIR='/path/to/readline/include'`
Expand Down Expand Up @@ -329,24 +343,3 @@ This application failed to start because it could not find or load the Qt platfo

- scsynth will not find the included "plugins", unless given explicitly
with the -U commandline flag or using the SC_PLUGIN_PATH environment variable as shown above.


On libsndfile
-------------

In the past compiling a universal binary of libsndfile used to require accessing both a
i386 and PPC Mac. The reasons for this are described here:

http://www.mega-nerd.com/libsndfile/FAQ.html#Q018

Because of this, libsndfile is included with the source as a precompiled
universal binary. This UB contains ppc, i386 and x86_64 archs. By default SC uses this
file, although the currently built universal does not contain Power PC versions any more
and intel universal binaries of libsndfile are readily available via package managers.

If you would like to build using the latest version of libsndfile, then specify its path to the cmake configuration:

`-DSNDFILE_INCLUDE_DIR=/opt/local/include`
`-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib`

The actual paths you need to include will vary depending on how you installed libsndfile.
Loading

0 comments on commit d876732

Please sign in to comment.