#!/bin/bash OPTIMIZATION="-O2" # Enable optimization. DEBUG=0 # Compile with debug UI. IMGUI=1 # Compile ImGui libs. Our custom ImGui functions still compile on zero. PERF=0 # Print cycle stats. STABLE=1 # Compile experimental stable-diffusion-webui support; requires curl. # Add flag overrides to this file (it's untracked on the tree) if test -f build_ops; then source build_ops fi FFMPEG_LIBS=" libavdevice libavformat libavfilter libavcodec libswresample libswscale libavutil " IMGUI_FILES=" imgui imgui_demo imgui_draw imgui_tables imgui_widgets " IMGUI_FILES_IMPL=" imgui_impl_sdl imgui_impl_opengl3 " WARNING_FLAGS=" -Wall -Wextra \ -Wno-unused-function -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable \ -Wno-missing-field-initializers -Wno-sign-compare -Wno-unused-but-set-parameter \ -Wno-missing-braces -Wno-format-security \ -fno-exceptions -Wno-strict-aliasing \ -Wno-write-strings " if [[ "$DEBUG" == 1 ]]; then WARNING_FLAGS="$WARNING_FLAGS -DDEBUG=1" fi if [[ "$THREADED" == 1 ]]; then WARNING_FLAGS="$WARNING_FLAGS -DTHREADED=1" fi if [[ "$PERF" == 1 ]]; then WARNING_FLAGS="$WARNING_FLAGS -DPERF=1" fi if [[ "$STABLE" == 1 ]]; then WARNING_FLAGS="$WARNING_FLAGS -DSTABLE=1" OPTIONAL_FLAGS="$OPTIONAL_FLAGS -lcurl" fi if [[ "$(uname -m)" == "x86_64" ]]; then ARCHNAME="x86" ADDITIONAL_FLAGS=" -march=native " else ARCHNAME="arm" ADDITIONAL_FLAGS=" -march=armv8.5-a+sve " WARNING_FLAGS="$WARNING_FLAGS -DARM=1" fi if [[ "$OSTYPE" =~ ^darwin ]]; then OSNAME="mac" IMGUI_FLAGS=" -std=c++11 -Iimgui -Iimgui/backends $OPTIMIZATION -Wall -Wformat `sdl2-config --cflags` -I/usr/local/include -I/opt/local/include -c " SDL_ARGS=" `sdl2-config --cflags` -framework OpenGL -ldl `sdl2-config --libs` " else OSNAME="linux" IMGUI_FLAGS=" -Iimgui -Iimgui/backends $OPTIMIZATION -Wall -Wformat `sdl2-config --cflags` -c " SDL_ARGS=" `sdl2-config --cflags` -lGL -ldl `sdl2-config --libs` " fi GLAD_FLAGS=" -Ilib/glad/include " [[ -d bin ]] || mkdir bin clang $IMGUI_FLAGS -o bin/my_imgui_internal_widgets.o my_imgui_internal_widgets.cpp if [[ "$IMGUI" == 1 ]]; then for i in $IMGUI_FILES do clang $IMGUI_FLAGS -o bin/$i.o imgui/$i.cpp done for i in $IMGUI_FILES_IMPL do clang $IMGUI_FLAGS -o bin/$i.o imgui/backends/$i.cpp done fi clang lib/glad.c $GLAD_FLAGS -I/usr/local/include -I/opt/local/include -c \ $WARNING_FLAGS $OPTIMIZATION $ADDITIONAL_FLAGS -o bin/glad.o clang main.cpp $WARNING_FLAGS $OPTIMIZATION $ADDITIONAL_FLAGS -o bin/real2d_"$ARCHNAME"_"$OSNAME" bin/*.o \ $GLAD_FLAGS \ -std=c++11 -lstdc++ -Iimgui -Iimgui/backends \ $SDL_ARGS \ $OPTIONAL_FLAGS \ -I . \ -lm -I /usr/local/include # $(pkg-config --cflags --libs $FFMPEG_LIBS) if [[ "$OSTYPE" =~ ^darwin ]]; then mv bin/real2d_"$ARCHNAME"_"$OSNAME" lib/mac_app_template/Contents/MacOS/real mkdir bin/real_"$ARCHNAME".app cp -r lib/mac_app_template/Contents bin/real_"$ARCHNAME".app xattr -cr bin/real_"$ARCHNAME".app dylibbundler -od -b -x bin/real_"$ARCHNAME".app/Contents/MacOS/real -d bin/real_"$ARCHNAME".app/Contents/libs rm lib/mac_app_template/Contents/MacOS/real fi