build.sh (2708B)
1 #!/bin/sh 2 3 version=1.0 4 5 cflags=${CFLAGS:-"-march=native -O3"} 6 cflags="${cflags} -std=c11 " 7 ldflags=${LDFLAGS} 8 # TODO(rnp): embed shader without lto stripping it */ 9 ldflags="${ldflags} -fno-lto -lm" 10 11 output="colourpicker" 12 13 cc=${CC:-cc} 14 15 for arg; do 16 case ${arg} in 17 debug) debug=1 18 esac 19 done 20 21 machine=$(uname -m) 22 23 case $(uname -s) in 24 MINGW64*) 25 w32=1 26 output="Colour Picker" 27 windres assets/colourpicker.rc out/colourpicker.rc.o 28 ldflags="out/colourpicker.rc.o ${ldflags} -mwindows -lgdi32 -lwinmm" 29 case ${machine} in 30 x86_64) binary_format="pe-x86-64" ;; 31 *) binary_format="pe-${machine}" ;; 32 esac 33 ;; 34 *) 35 case ${machine} in 36 aarch64) binary_format="elf64-littleaarch64" ;; 37 x86_64) binary_format="elf64-x86-64" ;; 38 esac 39 ;; 40 esac 41 42 build_raylib() 43 { 44 cp external/raylib/src/raylib.h external/raylib/src/rlgl.h out/ 45 src=external/raylib/src 46 srcs="rcore rglfw rshapes rtext rtextures utils" 47 48 raylib_cmd="${cflags} -I./external/raylib/src -DPLATFORM_DESKTOP_GLFW" 49 raylib_cmd="${raylib_cmd} -Wno-unused-but-set-variable -Wno-unused-parameter" 50 [ ! ${w32} ] && raylib_cmd="${raylib_cmd} -D_GLFW_X11" 51 52 if [ ${debug} ]; then 53 files="" 54 for n in ${srcs}; do 55 files="${files} ${src}/${n}.c" 56 done 57 raylib_cmd="${raylib_cmd} -DBUILD_LIBTYPE_SHARED -D_GLFW_BUILD_DLL" 58 raylib_cmd="${raylib_cmd} -fPIC -shared" 59 raylib_cmd="${raylib_cmd} ${files} -o ${raylib}" 60 [ ${w32} ] && raylib_cmd="${raylib_command} -L. -lgdi32 -lwinmm" 61 ${cc} ${raylib_cmd} 62 else 63 outs="" 64 for n in ${srcs}; do 65 ${cc} ${raylib_cmd} -c "${src}/${n}.c" -o "out/${n}.o" 66 outs="${outs} out/${n}.o" 67 done 68 69 ar rc "${raylib}" ${outs} 70 fi 71 } 72 73 if [ $(git diff-index --quiet HEAD -- external/raylib) ]; then 74 git submodule update --init --checkout --depth=1 external/raylib 75 fi 76 77 [ ! -s "config.h" ] && cp config.def.h config.h 78 79 mkdir -p out 80 raylib=out/libraylib.a 81 [ ${debug} ] && raylib="libraylib.so" 82 [ "./build.sh" -nt ${raylib} ] || [ ! -f ${raylib} ] && build_raylib 83 84 cflags="${cflags} -Wall -Wextra -Iout" 85 86 if [ ! -s "out/lora_sb_0_inc.h" ] || [ "gen_incs.c" -nt "out/lora_sb_0_inc.h" ]; then 87 ${cc} ${cflags} -o gen_incs gen_incs.c ${ldflags} ${raylib} && ./gen_incs 88 fi 89 90 if [ "$debug" ]; then 91 # Hot Reloading/Debugging 92 cflags="${cflags} -O0 -ggdb -D_DEBUG -Wno-unused-function" 93 94 ${cc} ${cflags} -fPIC -shared colourpicker.c -o colourpicker.so 95 ldflags="${ldflags} -Wl,-rpath,. ${raylib}" 96 else 97 if [ ! -s "out/slider_lerp.o" ] || [ "slider_lerp.glsl" -nt "out/slider_lerp.o" ]; then 98 objcopy --input-target=binary slider_lerp.glsl --output-target=${binary_format} out/slider_lerp.o 99 fi 100 ldflags="${raylib} out/slider_lerp.o ${ldflags}" 101 fi 102 103 ${cc} ${cflags} -DVERSION="\"${version}\"" main.c -o "${output}" ${ldflags}