1- #! /bin/sh
1+ # https://github.com/tamasmeszaros/libpolyclipping.git#784ff113071f1fa7832ebe74667f2fd0756c634f
2+ # https://github.com/lvandeve/lodepng.git#997936fd2b45842031e4180d73d7880e381cf33f
3+ # https://github.com/rcancro/giflib.git#4b0c893cfddf16421bd3f59207fdf65f06e9a10d
4+ # https://github.com/libjpeg-turbo/libjpeg-turbo.git#8162eddf041e0be26f5c671bb6528723c55fed9d
25
3- # captures git repository name with HTTPS protocol
4- git_HTTPS=" https://github.com/.+/(.+)\.git#.+"
6+ pvd=$PWD
57
6- # shortcut to subprojects and additional folders
7- inc=" release"
8- sub=" dependencies/subprojects"
9-
10- # windows
11- ext=" .dll"
12- lib=" "
13-
14- # check OS
15- if [[ " $OSTYPE " == " linux-gnu" * ]]; then
16- ext=" .so"
17- lib=" lib"
18- elif [[ " $OSTYPE " == " darwin" * ]]; then
19- ext=" .dylib"
20- lib=" lib"
21- fi
22-
23- # creates folders
8+ sub=$pvd /dependencies/subprojects
249[ ! -d $sub ] && mkdir -p $sub
25- [ ! -d $inc ] && mkdir -p $inc
26-
27- # sets flags
28- flags=" -Wall -Wextra -fPIC -O3"
29-
30- # calls additional dependencies
31- while read -u3 rep_path; do
32- if [[ $rep_path =~ $git_HTTPS ]]; then
33- # Clone repo and checkout correct commit
34- rep=" ${rep_path% \# * } "
35- commit=" ${rep_path#* \# } "
36- rep_name=${BASH_REMATCH[1]}
37- rep_dir=" $sub /$rep_name "
38- rm -rf $rep_dir
39-
40- git clone $rep $rep_dir
41- cwd=" $PWD "
42- cd $rep_dir
43- git checkout $commit
44- cd $cwd
45-
46- if [ $rep_name = " libpolyclipping" ]; then
47- cpp_dir=" $sub /libpolyclipping"
48- cpp_rel=" $inc /zpclipper"
49- c_files=" $cpp_dir /clipper.cpp $cpp_dir /clipper.wrap.cpp"
5010
51- # required files and folders
52- cp -f " dependencies/clipper.wrap.cpp" $cpp_dir
53- mkdir -p $cpp_rel
11+ bin=$pvd /dependencies/binaries
12+ [ ! -d $bin ] && mkdir -p $bin
5413
55- if [[ $ext = " .dylib" ]]; then
56- clang++ $flags -std=c++17 -c $c_files
57- clang++ -shared * .o -o " $cpp_rel /${lib} polyclipping${ext} "
58- else
59- g++ $flags -std=c++17 -c $c_files
60- g++ -shared * .o -o " $cpp_rel /${lib} polyclipping${ext} "
61- fi
62- elif [ $rep_name = " lodepng" ]; then
63- ldp_dir=" $sub /lodepng"
64- ldp_rel=" $inc /zlodepng"
65- c_files=" $ldp_dir /lodepng.c"
14+ binj=$pvd /dependencies/binaries/jpeg
15+ [ ! -d $binj ] && mkdir -p $binj
6616
67- # required files and folders
68- cp -f " $ldp_dir /lodepng.cpp" $c_files
69- mkdir -p $ldp_rel
17+ git clone https://github.com/tamasmeszaros/libpolyclipping.git $sub /libpolyclipping && cd $sub /libpolyclipping
18+ git checkout 784ff113071f1fa7832ebe74667f2fd0756c634f
7019
71- gcc $flags -ansi -pedantic -c $c_files
72- gcc -shared * .o -o " $ldp_rel /${lib} lodepng${ext} "
73- elif [ $rep_name = " giflib" ]; then
74- gif_dir=" $sub /giflib/lib"
75- gif_rel=" $inc /zgiflib"
20+ git clone https://github.com/lvandeve/lodepng.git $sub /lodepng && cd $sub /lodepng
21+ git checkout 997936fd2b45842031e4180d73d7880e381cf33f
7622
77- # required files and folders
78- mkdir -p $gif_rel
23+ git clone https://github.com/rcancro/giflib.git $sub /giflib && cd $sub /giflib
24+ git checkout 4b0c893cfddf16421bd3f59207fdf65f06e9a10d
7925
80- gcc $flags -w -c $gif_dir /* .c
81- gcc -shared * .o -o " $gif_rel /${lib} giflib${ext} "
82- elif [ $rep_name = " libjpeg-turbo" ]; then
83- peg_dir=" $sub /libjpeg-turbo"
84- peg_rel=" $inc /zturbojpeg"
85- peg_bld=" $peg_dir /build"
26+ git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git $sub /libjpeg-turbo && cd $sub /libjpeg-turbo
27+ git checkout 8162eddf041e0be26f5c671bb6528723c55fed9d
8628
87- # required files and folders
88- mkdir -p $peg_rel
29+ cmake $pvd /dependencies -DCMAKE_CXX_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -G " Unix Makefiles " -B $bin
30+ cd $bin && make clipper_wrap && make lodepng_wrap && make giflib_wrap
8931
90- cmake $peg_dir -DCMAKE_C_COMPILER=gcc -G " Unix Makefiles" -B $peg_bld
91- make -C $peg_bld
92- cp -f " $peg_bld /libturbojpeg${ext} " " $peg_rel /${lib} turbojpeg${ext} "
93- fi
94- # removes the object files after the build
95- rm -rf * .o
96- fi
97- done 3< " dependencies/list.txt"
32+ cmake $pvd /dependencies/subprojects/libjpeg-turbo -DCMAKE_CXX_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -G " Unix Makefiles" -B $binj
33+ make -C $binj
0 commit comments