Toni Förster has proposed merging lp:~widelands-dev/widelands/macos_build_app_compiler into lp:widelands with lp:~widelands-dev/widelands/macos_build_app as a prerequisite.
Commit message: choose between compiler clang or gcc, specify build type: debug or release Requested reviews: Klaus Halfmann (klaus-halfmann): dowload,short testrun GunChleoc (gunchleoc) For more details, see: https://code.launchpad.net/~widelands-dev/widelands/macos_build_app_compiler/+merge/353035 One can choose between Clang and GCC now. The Wiki has been changed accordingly: https://wl.widelands.org/wiki/Building_Widelands_on_macOS/ -- Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/macos_build_app.
=== modified file 'CMakeLists.txt' --- CMakeLists.txt 2018-05-16 19:37:59 +0000 +++ CMakeLists.txt 2018-08-15 18:37:08 +0000 @@ -79,6 +79,14 @@ endif() endif() +# Disable no symbols warning on macOS +if (APPLE) + SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>") + SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>") + SET(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>") + SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>") +endif() + # TODO(sirver): One day, this should be enabled. Then we have no more cycles in our dependencies.... # set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_NO_CYCLES ON) === modified file 'utils/macos/build_app.sh' --- utils/macos/build_app.sh 2018-08-12 19:02:16 +0000 +++ utils/macos/build_app.sh 2018-08-15 18:37:08 +0000 @@ -2,9 +2,54 @@ set -e -if [ "$#" == "0" ]; then - echo "Usage: $0 <bzr_repo_directory>" - exit 1 +USAGE="Usage: $0 <clang|gcc> <debug|release> <bzr_repo_directory>" +USE_ASAN="OFF" + +if [ ! -z "$3" ]; then + case "$2" in + debug|Debug) + TYPE="Debug" + if [ "$1" == "clang" ]; then + USE_ASAN="ON" + # Necessary to avoid linking errors later on + ASANLIB=$(echo "int main(void){return 0;}" | xcrun clang -fsanitize=address \ + -xc -o/dev/null -v - 2>&1 | tr ' ' '\n' | grep libclang_rt.asan_osx_dynamic.dylib) + mkdir -p "@rpath" + ln -fs "$ASANLIB" "@rpath/" + fi + ;; + release|Release) + TYPE="Release" + ;; + *) + echo $USAGE + exit 1 + ;; + esac + case "$1" in + clang) + C_COMPILER="clang" + CXX_COMPILER="clang++" + COMPILER=$(clang --version | grep "clang") + ;; + gcc) + C_COMPILER="gcc-7" + CXX_COMPILER="g++-7" + COMPILER=$(gcc-7 --version | grep "GCC") + ;; + *) + echo $USAGE + exit 1 + ;; + esac + if [ ! -z $(type -p ccache) ]; then + C_COMPILER="$(brew --prefix ccache)/libexec/$C_COMPILER" + CXX_COMPILER="$(brew --prefix ccache)/libexec/$CXX_COMPILER" + fi + SOURCE_DIR=$3 +else + echo $USAGE + exit 1 fi # Check if the SDK for the minimum build target is available. @@ -17,10 +62,9 @@ SDK_DIRECTORY="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$OSX_VERSION.sdk" fi -SOURCE_DIR=$1 REVISION=`bzr revno $SOURCE_DIR` DESTINATION="WidelandsRelease" -TYPE="Release" + if [[ -f $SOURCE_DIR/WL_RELEASE ]]; then WLVERSION="$(cat $SOURCE_DIR/WL_RELEASE)" else @@ -33,6 +77,7 @@ echo " Destination: $DESTINATION" echo " Type: $TYPE" echo " macOS: $OSX_MIN_VERSION" +echo " Compiler: $COMPILER" echo "" function MakeDMG { @@ -46,7 +91,11 @@ cp $SOURCE_DIR/COPYING $DESTINATION/COPYING.txt echo "Creating DMG ..." - hdiutil create -fs HFS+ -volname "Widelands $WLVERSION" -srcfolder "$DESTINATION" "$UP/widelands_64bit_$WLVERSION.dmg" + if [ "$TYPE" == "Release" ]; then + hdiutil create -fs HFS+ -volname "Widelands $WLVERSION" -srcfolder "$DESTINATION" "$UP/widelands_64bit_$WLVERSION.dmg" + elif [ "$TYPE" == "Debug" ]; then + hdiutil create -fs HFS+ -volname "Widelands $WLVERSION" -srcfolder "$DESTINATION" "$UP/widelands_64bit_${WLVERSION}_${TYPE}.dmg" + fi } function CopyLibrary { @@ -109,24 +158,28 @@ } function BuildWidelands() { - PREFIX_PATH="$(brew --prefix libpng)" + PREFIX_PATH=";$(brew --prefix gettext)" PREFIX_PATH+=";$(brew --prefix jpeg)" PREFIX_PATH+=";$(brew --prefix libpng)" PREFIX_PATH+=";$(brew --prefix python)" PREFIX_PATH+=";$(brew --prefix zlib)" PREFIX_PATH+=";/usr/local" PREFIX_PATH+=";/usr/local/Homebrew" - + + export PATH="$(brew --prefix gettext)/bin:$PATH" export SDL2DIR="$(brew --prefix sdl2)" export SDL2IMAGEDIR="$(brew --prefix sdl2_image)" export SDL2MIXERDIR="$(brew --prefix sdl2_mixer)" export SDL2TTFDIR="$(brew --prefix sdl2_ttf)" export BOOST_ROOT="$(brew --prefix boost)" - export ICU_ROOT="$(brew --prefix icu4c)" + + # Not needed for CMake 3.12 or above + # see cmake --help-policy CMP0074 + #export ICU_ROOT="$(brew --prefix icu4c)" cmake $SOURCE_DIR -G Ninja \ - -DCMAKE_C_COMPILER:FILEPATH="$(brew --prefix ccache)/libexec/gcc-7" \ - -DCMAKE_CXX_COMPILER:FILEPATH="$(brew --prefix ccache)/libexec/g++-7" \ + -DCMAKE_C_COMPILER:FILEPATH="$C_COMPILER" \ + -DCMAKE_CXX_COMPILER:FILEPATH="$CXX_COMPILER" \ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="$OSX_MIN_VERSION" \ -DCMAKE_OSX_SYSROOT:PATH="$SDK_DIRECTORY" \ -DCMAKE_INSTALL_PREFIX:PATH="$DESTINATION/Widelands.app/Contents/MacOS" \ @@ -134,7 +187,8 @@ -DCMAKE_BUILD_TYPE:STRING="$TYPE" \ -DGLEW_INCLUDE_DIR:PATH="$(brew --prefix glew)/include" \ -DGLEW_LIBRARY:PATH="$(brew --prefix glew)/lib/libGLEW.dylib" \ - -DCMAKE_PREFIX_PATH:PATH="${PREFIX_PATH}" + -DCMAKE_PREFIX_PATH:PATH="${PREFIX_PATH}" \ + -DOPTION_ASAN="$USE_ASAN" ninja echo "Done building."
_______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp