ft2-clone

Fasttracker 2 clone
Log | Files | Refs | README | LICENSE

make-macos.sh (2623B)


      1 #!/bin/bash
      2 
      3 # Thanks to odaki on GitHub for this script. I have modified it a bit.
      4 
      5 arch=$(arch)
      6 if [ $arch == "ppc" ]; then
      7     echo Sorry, PowerPC \(PPC\) is not supported...
      8 fi
      9 
     10 if [ "$1" = "-v" ]; then
     11     VERBOSE=-v
     12 fi
     13 
     14 #
     15 # Setup variables
     16 #
     17 VERSION=v`grep PROG_VER_STR src/ft2_header.h|cut -d'"' -f 2`
     18 
     19 RELEASE_MACOS_DIR=release/macos/
     20 APP_DIR=${RELEASE_MACOS_DIR}ft2-clone-macos.app/
     21 
     22 TARGET_X86_64=${APP_DIR}Contents/MacOS/ft2-clone-macos-x86_64
     23 TARGET_ARM64=${APP_DIR}Contents/MacOS/ft2-clone-macos-arm64
     24 TARGET_UNIVERSAL=${APP_DIR}Contents/MacOS/ft2-clone-macos
     25 TARGET_DIR=${APP_DIR}Contents/MacOS/
     26 
     27 #
     28 # Prepare
     29 #
     30 if [ ! -d $TARGET_DIR ]; then
     31     mkdir -p $TARGET_DIR
     32 fi
     33 
     34 #
     35 # Compile
     36 #
     37 function compile() {
     38     rm $1 &> /dev/null
     39     clang $VERBOSE $CFLAGS -F /Library/Frameworks -g0 -DNDEBUG -DHAS_MIDI -D__MACOSX_CORE__ -DHAS_LIBFLAC -stdlib=libc++ src/rtmidi/*.cpp src/gfxdata/*.c src/mixer/*.c src/scopes/*.c src/modloaders/*.c src/smploaders/*.c src/libflac/*.c src/*.c -Winit-self -Wno-deprecated -Wextra -Wunused -mno-ms-bitfields -Wno-missing-field-initializers -Wswitch-default $LDFLAGS -L /Library/Frameworks -framework SDL2 -framework CoreMidi -framework CoreAudio -framework Cocoa -liconv -lpthread -lm -lstdc++ -o $1
     40     return $?
     41 }
     42 
     43 echo Compiling x86_64 binary, please wait patiently...
     44 CFLAGS="-target x86_64-apple-macos10.11 -mmacosx-version-min=10.11 -arch x86_64 -mmmx -mfpmath=sse -msse2 -O3"
     45 LDFLAGS=
     46 export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
     47 compile $TARGET_X86_64
     48 if [ $? -ne 0 ]; then
     49     echo failed
     50     exit 1
     51 fi
     52 
     53 echo Compiling arm64 binary, please wait patiently...
     54 CFLAGS="-target arm64-apple-macos11 -mmacosx-version-min=11.0 -arch arm64 -march=armv8.3-a+sha3 -O3"
     55 LDFLAGS=
     56 export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
     57 compile $TARGET_ARM64
     58 if [ $? -ne 0 ]; then
     59     echo failed
     60     exit 1
     61 fi
     62 
     63 #
     64 # Merge binaries
     65 #
     66 # Reference: Building a Universal macOS Binary
     67 #   https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary
     68 echo Building universal binary...
     69 rm $TARGET_UNIVERAL &> /dev/null
     70 lipo -create -output $TARGET_UNIVERSAL $TARGET_X86_64 $TARGET_ARM64
     71 rm $TARGET_X86_64
     72 rm $TARGET_ARM64
     73 strip $TARGET_UNIVERSAL
     74 install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2 $TARGET_UNIVERSAL
     75 codesign -s - --entitlements ft2-clone.entitlements release/macOS/ft2-clone-macos.app
     76 echo Done. The executable can be found in \'${RELEASE_MACOS_DIR}\' if everything went well.
     77 
     78 #
     79 # Cleanup
     80 #
     81 rm src/rtmidi/*.o src/gfxdata/*.o src/*.o &> /dev/null