diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-01 15:21:16 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-01 22:54:07 -0300 |
| commit | 98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2 (patch) | |
| tree | aeb6d9e6f45423cf5698930aea2bc55a8d721fa9 /binary/static-gcc | |
| parent | cc4c9f6321ebaaf71f8c9c26bd30967e93bd2cbb (diff) | |
| download | luarocks-98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2.tar.gz luarocks-98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2.tar.bz2 luarocks-98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2.zip | |
Unix: new build system
* Reworked configure script
* Now passes shellcheck
* New Makefile for Unix
* Simplified `make` and `make install` targets
* Simplified `make bootstrap` target
* New targets `make binary` and `make install-binary`
build and install an all-in-one binary of LuaRocks
Diffstat (limited to 'binary/static-gcc')
| -rwxr-xr-x | binary/static-gcc | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/binary/static-gcc b/binary/static-gcc new file mode 100755 index 00000000..a4d865d5 --- /dev/null +++ b/binary/static-gcc | |||
| @@ -0,0 +1,158 @@ | |||
| 1 | #!/usr/bin/env bash | ||
| 2 | |||
| 3 | DIR="$( cd "$( dirname "$0" )" && pwd )" | ||
| 4 | |||
| 5 | function log() { echo -- "$@" >> $DIR/log.txt; } | ||
| 6 | |||
| 7 | function runlog() { log "$@"; "$@"; } | ||
| 8 | |||
| 9 | log "---------------------------" | ||
| 10 | log INP "$@" | ||
| 11 | |||
| 12 | allargs=() | ||
| 13 | sources=() | ||
| 14 | objects=() | ||
| 15 | etc=() | ||
| 16 | libdirs=("/usr/lib") | ||
| 17 | incdirs=() | ||
| 18 | |||
| 19 | linking=0 | ||
| 20 | |||
| 21 | while [ "$1" ] | ||
| 22 | do | ||
| 23 | allargs+=("$1") | ||
| 24 | if [ "$next_libdir" = "1" ] | ||
| 25 | then | ||
| 26 | libdirs+=("$1") | ||
| 27 | next_libdir=0 | ||
| 28 | elif [ "$next_incdir" = "1" ] | ||
| 29 | then | ||
| 30 | incdirs+=("-I$1") | ||
| 31 | next_incdir=0 | ||
| 32 | elif [ "$next_lib" = "1" ] | ||
| 33 | then | ||
| 34 | libs+=("$1") | ||
| 35 | next_lib=0 | ||
| 36 | elif [ "$next_output" = "1" ] | ||
| 37 | then | ||
| 38 | output="$1" | ||
| 39 | next_output=0 | ||
| 40 | else | ||
| 41 | case "$1" in | ||
| 42 | -*) | ||
| 43 | case "$1" in | ||
| 44 | -shared) | ||
| 45 | linking=1 | ||
| 46 | ;; | ||
| 47 | -static) | ||
| 48 | linking=1 | ||
| 49 | ;; | ||
| 50 | -o) | ||
| 51 | next_output=1 | ||
| 52 | ;; | ||
| 53 | -c) | ||
| 54 | object=1 | ||
| 55 | etc+=("$1") | ||
| 56 | ;; | ||
| 57 | -L) | ||
| 58 | next_libdir=1 | ||
| 59 | ;; | ||
| 60 | -L*) | ||
| 61 | libdirs+=("${1:2}") | ||
| 62 | ;; | ||
| 63 | -I) | ||
| 64 | next_incdir=1 | ||
| 65 | ;; | ||
| 66 | -I*) | ||
| 67 | incdirs+=("$1") | ||
| 68 | ;; | ||
| 69 | -l) | ||
| 70 | next_lib=1 | ||
| 71 | ;; | ||
| 72 | -l*) | ||
| 73 | libs+=("${1:2}") | ||
| 74 | ;; | ||
| 75 | *) | ||
| 76 | etc+=("$1") | ||
| 77 | ;; | ||
| 78 | esac | ||
| 79 | ;; | ||
| 80 | *.c) | ||
| 81 | sources+=("$1") | ||
| 82 | ;; | ||
| 83 | *.o) | ||
| 84 | objects+=("$1") | ||
| 85 | ;; | ||
| 86 | *) | ||
| 87 | etc+=("$1") | ||
| 88 | ;; | ||
| 89 | esac | ||
| 90 | fi | ||
| 91 | shift | ||
| 92 | done | ||
| 93 | |||
| 94 | staticlibs=() | ||
| 95 | for lib in "${libs[@]}" | ||
| 96 | do | ||
| 97 | for libdir in "${libdirs[@]}" | ||
| 98 | do | ||
| 99 | staticlib="$libdir/lib$lib.a" | ||
| 100 | if [ -e "$staticlib" ] | ||
| 101 | then | ||
| 102 | staticlibs+=("$staticlib") | ||
| 103 | break | ||
| 104 | fi | ||
| 105 | done | ||
| 106 | done | ||
| 107 | |||
| 108 | oflag=() | ||
| 109 | if [ "$output" != "" ] | ||
| 110 | then | ||
| 111 | oflag=("-o" "$output") | ||
| 112 | fi | ||
| 113 | |||
| 114 | if [ "$linking" = "1" ] | ||
| 115 | then | ||
| 116 | log LINK | ||
| 117 | if [ "${#sources[@]}" -gt 0 ] | ||
| 118 | then | ||
| 119 | for source in "${sources[@]}" | ||
| 120 | do | ||
| 121 | object="${source%.c}.o" | ||
| 122 | runlog gcc "${incdirs[@]}" "${etc[@]}" -c -o "$object" "$source" | ||
| 123 | [ "$?" = 0 ] || runlog exit $? | ||
| 124 | objects+=("$object") | ||
| 125 | done | ||
| 126 | fi | ||
| 127 | |||
| 128 | # runlog ar rcu "${oflag[@]}" "${objects[@]}" "${staticlibs[@]}" | ||
| 129 | echo "CREATE $output" > ar.script | ||
| 130 | for o in "${objects[@]}" | ||
| 131 | do | ||
| 132 | echo "ADDMOD $o" >> ar.script | ||
| 133 | done | ||
| 134 | for o in "${staticlibs[@]}" | ||
| 135 | do | ||
| 136 | echo "ADDLIB $o" >> ar.script | ||
| 137 | done | ||
| 138 | echo "SAVE" >> ar.script | ||
| 139 | echo "END" >> ar.script | ||
| 140 | cat ar.script | ar -M | ||
| 141 | [ "$?" = 0 ] || runlog exit $? | ||
| 142 | |||
| 143 | [ -e "$output" ] || { | ||
| 144 | exit 1 | ||
| 145 | } | ||
| 146 | |||
| 147 | runlog ranlib "$output" | ||
| 148 | runlog exit $? | ||
| 149 | elif [ "$object" = 1 ] | ||
| 150 | then | ||
| 151 | log OBJECT | ||
| 152 | runlog gcc "${oflag[@]}" "${incdirs[@]}" "${etc[@]}" "${sources[@]}" | ||
| 153 | runlog exit $? | ||
| 154 | else | ||
| 155 | log EXECUTABLE | ||
| 156 | runlog gcc "${allargs[@]}" | ||
| 157 | runlog exit $? | ||
| 158 | fi | ||
