Add macOS support
8
build/macOS/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
locale
|
||||
Pods
|
||||
Podfile.lock
|
||||
deps/*
|
||||
!deps/*.sh
|
||||
xcshareddata
|
||||
xcuserdata
|
||||
*.xcworkspace
|
2413
build/macOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj
Normal file
After Width: | Height: | Size: 588 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 832 B |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 217 KiB |
After Width: | Height: | Size: 8.3 KiB |
@ -0,0 +1,68 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "AppIcon-16.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-64.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-128.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "AppIcon-1024.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "512x512"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
38
build/macOS/MultiCraft/MultiCraft/Info.plist
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.adventure-games</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2020 Maksym Hamarnyk. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSSupportsAutomaticTermination</key>
|
||||
<true/>
|
||||
<key>NSSupportsSuddenTermination</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
14
build/macOS/MultiCraft/MultiCraft/MultiCraft.entitlements
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
<key>com.apple.security.files.user-selected.read-only</key>
|
||||
<true/>
|
||||
<key>com.apple.security.network.client</key>
|
||||
<true/>
|
||||
<key>com.apple.security.network.server</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
26
build/macOS/Podfile
Executable file
@ -0,0 +1,26 @@
|
||||
project 'MultiCraft/MultiCraft.xcodeproj'
|
||||
platform :osx, '10.10'
|
||||
use_frameworks!
|
||||
|
||||
target 'MultiCraft' do
|
||||
pod 'leveldb-library'
|
||||
pod 'libvorbis'
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['GCC_FAST_MATH'] = 'YES'
|
||||
config.build_settings['GCC_OPTIMIZATION_LEVEL'] = 'fast'
|
||||
config.build_settings['GCC_SYMBOL_PRIVATE_EXTERN'] = 'YES'
|
||||
config.build_settings['GCC_UNROLL_LOOPS'] = 'YES'
|
||||
config.build_settings['LLVM_LTO'] = 'YES'
|
||||
config.build_settings['ENABLE_BITCODE'] = 'NO'
|
||||
config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
|
||||
config.build_settings['OTHER_CFLAGS'] = ['$(inherited)', '-fvisibility-inlines-hidden', '-fdata-sections', '-ffunction-sections', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables']
|
||||
config.build_settings['OTHER_CPLUSPLUSFLAGS'] = ['$(inherited)', '$(OTHER_CFLAGS)']
|
||||
config.build_settings['OTHER_LDFLAGS'] = ['$(inherited)', '-Wl,-dead_strip']
|
||||
config.build_settings.delete('ARCHS')
|
||||
end
|
||||
end
|
||||
end
|
31
build/macOS/Start.sh
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
echo
|
||||
echo "Starting build MultiCraft for macOS..."
|
||||
|
||||
echo
|
||||
echo "Build Libraries:"
|
||||
|
||||
cd deps
|
||||
sh libraries.sh
|
||||
cd ..
|
||||
|
||||
echo
|
||||
echo "Preparing Locales:"
|
||||
|
||||
sh locale.sh
|
||||
|
||||
echo
|
||||
echo "Creating App Icon:"
|
||||
|
||||
echo "Skipping..."
|
||||
#sh appicon.sh
|
||||
|
||||
echo
|
||||
echo "Install CocoaPods:"
|
||||
|
||||
pod install
|
||||
|
||||
echo
|
||||
echo "All done! You can continue in Xcode!"
|
||||
open MultiCraft.xcworkspace
|
15
build/macOS/appicon.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# Generates different AppIcon images with correct dimensions
|
||||
# (brew package: imagemagick)
|
||||
# (install: brew install imagemagick)
|
||||
SIZES="16 32 64 128 256 512 1024"
|
||||
SRCFILE=icon.png
|
||||
DSTDIR=MultiCraft/MultiCraft/Assets.xcassets/AppIcon.appiconset
|
||||
|
||||
for sz in $SIZES; do
|
||||
echo "Creating ${sz}x${sz} icon"
|
||||
convert -resize ${sz}x${sz} $SRCFILE $DSTDIR/AppIcon-${sz}.png
|
||||
done
|
||||
|
||||
echo "App Icon create successful"
|
25
build/macOS/deps/freetype.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
. sdk.sh
|
||||
FREETYPE_VERSION=2.10.4
|
||||
|
||||
if [ ! -d freetype-src ]; then
|
||||
wget http://download.savannah.gnu.org/releases/freetype/freetype-$FREETYPE_VERSION.tar.gz
|
||||
tar -xzvf freetype-$FREETYPE_VERSION.tar.gz
|
||||
mv freetype-$FREETYPE_VERSION freetype-src
|
||||
rm freetype-$FREETYPE_VERSION.tar.gz
|
||||
fi
|
||||
|
||||
cd freetype-src
|
||||
|
||||
CFLAGS=$OSX_FLAGS \
|
||||
PKG_CONFIG=/bin/false \
|
||||
./configure --prefix=/ \
|
||||
--disable-shared --enable-static \
|
||||
--with-bzip2=no --with-png=no
|
||||
make -j
|
||||
|
||||
mkdir -p ../freetype
|
||||
make DESTDIR=$PWD/../freetype install
|
||||
|
||||
echo "FreeType build successful"
|
26
build/macOS/deps/irrlicht.sh
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
. sdk.sh
|
||||
|
||||
[ ! -d irrlicht-src ] && \
|
||||
git clone --depth 1 -b ogl-es https://github.com/MoNTE48/Irrlicht irrlicht-src
|
||||
|
||||
cd irrlicht-src/source/Irrlicht
|
||||
xcodebuild build \
|
||||
ARCHS="$OSX_ARCHES" \
|
||||
-project Irrlicht.xcodeproj \
|
||||
-configuration Release \
|
||||
-scheme Irrlicht_OSX
|
||||
|
||||
BUILD_FOLDER=$(xcodebuild -project Irrlicht.xcodeproj -scheme \
|
||||
Irrlicht_OSX -showBuildSettings | \
|
||||
grep TARGET_BUILD_DIR | sed -n -e 's/^.*TARGET_BUILD_DIR = //p')
|
||||
|
||||
cd ../..
|
||||
|
||||
[ -d ../irrlicht ] && rm -r ../irrlicht
|
||||
mkdir -p ../irrlicht
|
||||
cp "${BUILD_FOLDER}/libIrrlicht.a" ../irrlicht
|
||||
cp -r include ../irrlicht/include
|
||||
|
||||
echo "Irrlicht build successful"
|
10
build/macOS/deps/libintl.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d libintl ]; then
|
||||
wget https://github.com/MoNTE48/libintl-lite/archive/master.zip
|
||||
unzip master.zip
|
||||
mv libintl-lite-master libintl
|
||||
rm master.zip
|
||||
fi
|
||||
|
||||
echo "libintl-lite downloaded successful"
|
9
build/macOS/deps/libraries.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
sh irrlicht.sh
|
||||
sh freetype.sh
|
||||
sh openal.sh
|
||||
sh libintl.sh
|
||||
|
||||
echo
|
||||
echo "All libraries were built!"
|
27
build/macOS/deps/openal.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
. sdk.sh
|
||||
OPENAL_VERSION=1.21.1
|
||||
|
||||
if [ ! -d openal-src ]; then
|
||||
wget https://github.com/kcat/openal-soft/archive/$OPENAL_VERSION.tar.gz
|
||||
tar -xzvf $OPENAL_VERSION.tar.gz
|
||||
mv openal-soft-$OPENAL_VERSION openal-src
|
||||
rm $OPENAL_VERSION.tar.gz
|
||||
fi
|
||||
|
||||
cd openal-src
|
||||
|
||||
cmake -S . \
|
||||
-DCMAKE_CXX_EXTENSIONS=OFF -DALSOFT_REQUIRE_COREAUDIO=ON \
|
||||
-DALSOFT_EMBED_HRTF_DATA=YES -DALSOFT_UTILS=OFF \
|
||||
-DALSOFT_EXAMPLES=OFF -DALSOFT_INSTALL=OFF -DALSOFT_BACKEND_WAVE=NO \
|
||||
-DCMAKE_C_FLAGS_RELEASE="$OSX_FLAGS" -DCMAKE_CXX_FLAGS_RELEASE="$OSX_FLAGS" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 \
|
||||
"-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64"
|
||||
cmake --build .
|
||||
|
||||
mkdir -p ../openal
|
||||
mv libopenal.$OPENAL_VERSION.dylib ../openal/libopenal.1.dylib
|
||||
|
||||
echo "OpenAL-Soft build successful"
|
13
build/macOS/deps/sdk.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# This file sets the appropriate compiler and flags for compiling for macOS without XCode
|
||||
sdk=macosx
|
||||
osver=10.10
|
||||
|
||||
export OSX_ARCHES="x86_64 arm64"
|
||||
arches="-arch x86_64 -arch arm64"
|
||||
|
||||
export OSX_COMPILER=$(xcrun --sdk $sdk --find clang)
|
||||
export OSX_CC=$OSX_COMPILER
|
||||
export OSX_CXX=$OSX_COMPILER
|
||||
export OSX_FLAGS="-isysroot $(xcrun --sdk $sdk --show-sdk-path) $arches -mmacosx-version-min=$osver -fvisibility=hidden -fdata-sections -ffunction-sections -fno-unwind-tables -fno-asynchronous-unwind-tables -Ofast"
|
31
build/macOS/locale.sh
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d MultiCraft/MultiCraft.xcodeproj ]; then
|
||||
echo "Run this in build/macOS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEST=$(pwd)
|
||||
|
||||
pushd ../../po
|
||||
for lang in *; do
|
||||
[ ${#lang} -ne 2 ] && continue
|
||||
mopath=$DEST/locale/$lang/LC_MESSAGES
|
||||
mkdir -p $mopath
|
||||
pushd $lang
|
||||
for fn in *.po; do
|
||||
# brew install gettext
|
||||
/usr/local/Cellar/gettext/*/bin/msgfmt -o $mopath/${fn/.po/.mo} $fn
|
||||
done
|
||||
popd
|
||||
done
|
||||
popd
|
||||
|
||||
find $DEST -type d -name '.git' -print0 | xargs -0 -- rm -r
|
||||
find $DEST -type f -name '.git*' -delete
|
||||
find $DEST -type f -name '.DS_Store' -delete
|
||||
|
||||
# remove broken languages
|
||||
for broken_lang in ja ko he; do
|
||||
find $DEST -type d -name $broken_lang -print0 | xargs -0 -- rm -r
|
||||
done
|