├── .gitignore ├── build-data ├── toolchain-ecp5 │ └── package-template.json ├── toolchain-ice40 │ └── package-template.json ├── toolchain-iverilog │ └── package-template.json ├── toolchain-verilator │ └── package-template.json ├── toolchain-yosys │ └── package-template.json └── tools-system │ └── package-template.json ├── build.sh ├── clean.sh ├── docker ├── bin │ ├── cross-darwin-x64 │ ├── cross-linux-arm │ ├── cross-linux-arm64 │ ├── cross-linux-mips64 │ ├── cross-linux-mipsel │ ├── cross-linux-or1k │ ├── cross-linux-riscv32 │ ├── cross-linux-riscv64 │ ├── cross-linux-x64 │ ├── cross-linux-x86 │ ├── cross-windows-x64 │ ├── cross-windows-x86 │ ├── delete_containers.sh │ └── delete_dangling_images.sh ├── cross-base │ ├── Dockerfile │ └── build.sh ├── cross-darwin-x64 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-arm │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-arm64 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-mips64 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-mipsel │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-or1k │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-riscv32 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-riscv64 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-x64 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── cross-linux-x86 │ ├── Dockerfile │ ├── Toolchain.cmake │ ├── build.sh │ ├── i686-linux-gnu-as.sh │ └── i686-linux-gnu.sh ├── cross-windows-x64 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh └── cross-windows-x86 │ ├── Dockerfile │ ├── Toolchain.cmake │ └── build.sh ├── scripts ├── compile_icestorm.sh ├── compile_iverilog.sh ├── compile_libxsvf.sh ├── compile_nextpnr_ecp5.sh ├── compile_nextpnr_ice40.sh ├── compile_prjtrellis.sh ├── compile_ujprog.sh ├── compile_verilator.sh ├── compile_yosys.sh └── create_package.sh └── test ├── README.md └── test_bin.sh /.gitignore: -------------------------------------------------------------------------------- 1 | _builds/ 2 | _packages/ 3 | _upstream/ 4 | -------------------------------------------------------------------------------- /build-data/toolchain-ecp5/package-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"toolchain-ecp5", 3 | "description":"ECP5 toolchain", 4 | "url":"https://github.com/FPGAwars/toolchain-ecp5/releases", 5 | "version": %VERSION%, 6 | "system": [ %SYSTEM% ] 7 | } 8 | -------------------------------------------------------------------------------- /build-data/toolchain-ice40/package-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"toolchain-ice40", 3 | "description":"ICE40 toolchain", 4 | "url":"https://github.com/FPGAwars/toolchain-ice40/releases", 5 | "version": %VERSION%, 6 | "system": [ %SYSTEM% ] 7 | } 8 | -------------------------------------------------------------------------------- /build-data/toolchain-iverilog/package-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"toolchain-iverilog", 3 | "description":"Icarus Verilog toolchain", 4 | "url":"https://github.com/FPGAwars/toolchain-iverilog/releases", 5 | "version": %VERSION%, 6 | "system": [ %SYSTEM% ] 7 | } -------------------------------------------------------------------------------- /build-data/toolchain-verilator/package-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"toolchain-verilator", 3 | "description":"Verilator toolchain", 4 | "url":"https://github.com/FPGAwars/toolchain-verilator/releases", 5 | "version": %VERSION%, 6 | "system": [ %SYSTEM% ] 7 | } -------------------------------------------------------------------------------- /build-data/toolchain-yosys/package-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"toolchain-yosys", 3 | "description":"Yosys toolchain", 4 | "url":"https://github.com/FPGAwars/toolchain-yosys/releases", 5 | "version": %VERSION%, 6 | "system": [ %SYSTEM% ] 7 | } 8 | -------------------------------------------------------------------------------- /build-data/tools-system/package-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"tools-system", 3 | "description":"System tools", 4 | "url":"https://github.com/FPGAwars/tools-system/releases", 5 | "version": %VERSION%, 6 | "system": [ %SYSTEM% ] 7 | } 8 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATE_VERSION=2020.12.1 4 | YOSYS_VERSION=0.9.201212 5 | IVERILOG_VERSION=10.3.0 6 | VERILATOR_VERSION=4.20.0 7 | 8 | # -- Target architectures 9 | ARCH=$1 10 | TARGET_ARCHS="linux_x86_64 linux_i686 linux_armv7l linux_aarch64 windows_x86 windows_amd64 darwin linux_riscv32 linux_riscv64 linux_or1k linux_mipsel linux_mips64" 11 | J=$(($(nproc)-1)) 12 | 13 | # -- Debug flags 14 | BUILD_SYSTEM=0 15 | BUILD_YOSYS=1 16 | BUILD_ICE40=1 17 | BUILD_ECP5=1 18 | BUILD_IVERILOG=0 19 | BUILD_VERILATOR=0 20 | 21 | # -- Store current dir 22 | WORK_DIR=$PWD 23 | # -- Folder for building the source code 24 | BUILDS_DIR=$WORK_DIR/_builds 25 | # -- Folder for storing the generated packages 26 | PACKAGES_DIR=$WORK_DIR/_packages 27 | # -- Folder for storing the source code from github 28 | UPSTREAM_DIR=$WORK_DIR/_upstream 29 | 30 | # -- Create the build directory 31 | mkdir -p $BUILDS_DIR 32 | # -- Create the packages directory 33 | mkdir -p $PACKAGES_DIR 34 | # -- Create the upstream directory and enter into it 35 | mkdir -p $UPSTREAM_DIR 36 | 37 | # -- Test script function 38 | function test_bin { 39 | $WORK_DIR/test/test_bin.sh $1 40 | if [ $? != "0" ]; then 41 | exit 1 42 | fi 43 | } 44 | 45 | # -- Print function 46 | function print { 47 | echo "" 48 | echo $1 49 | echo "" 50 | } 51 | 52 | # -- Check ARCH 53 | if [[ $# > 1 ]]; then 54 | echo "" 55 | echo "Error: too many arguments" 56 | exit 1 57 | fi 58 | 59 | if [[ $# < 1 ]]; then 60 | echo "" 61 | echo "Usage: bash build.sh TARGET" 62 | echo "" 63 | echo "Targets: $TARGET_ARCHS" 64 | exit 1 65 | fi 66 | 67 | if [[ $ARCH =~ [[:space:]] || ! $TARGET_ARCHS =~ (^|[[:space:]])$ARCH([[:space:]]|$) ]]; then 68 | echo "" 69 | echo ">>> WRONG ARCHITECTURE \"$ARCH\"" 70 | exit 1 71 | fi 72 | 73 | echo "" 74 | echo ">>> ARCHITECTURE \"$ARCH\"" 75 | CROSS_HOST=$WORK_DIR/docker/bin/cross-linux-x64 76 | if [ $ARCH == "linux_x86_64" ]; then 77 | HOST="x86_64-linux-gnu" 78 | CROSS=$WORK_DIR/docker/bin/cross-linux-x64 79 | CROSS_PREFIX=/opt/x86_64-linux-gnu 80 | fi 81 | if [ $ARCH == "linux_i686" ]; then 82 | HOST="x86_64-linux-gnu" 83 | CROSS=$WORK_DIR/docker/bin/cross-linux-x86 84 | CROSS_PREFIX=/opt/i686-linux-gnu 85 | fi 86 | if [ $ARCH == "linux_armv7l" ]; then 87 | HOST="arm-linux-gnueabihf" 88 | CROSS=$WORK_DIR/docker/bin/cross-linux-arm 89 | CROSS_PREFIX=/opt/arm-linux-gnueabihf 90 | fi 91 | if [ $ARCH == "linux_aarch64" ]; then 92 | HOST="aarch64-linux-gnu" 93 | CROSS=$WORK_DIR/docker/bin/cross-linux-arm64 94 | CROSS_PREFIX=/opt/aarch64-linux-gnu 95 | fi 96 | if [ $ARCH == "windows_x86" ]; then 97 | EXE=".exe" 98 | HOST="i686-w64-mingw32" 99 | CROSS=$WORK_DIR/docker/bin/cross-windows-x86 100 | CROSS_PREFIX=/opt/i686-w64-mingw32 101 | fi 102 | if [ $ARCH == "windows_amd64" ]; then 103 | HOST="x86_64-w64-mingw32" 104 | EXE=".exe" 105 | CROSS=$WORK_DIR/docker/bin/cross-windows-x64 106 | CROSS_PREFIX=/opt/x86_64-w64-mingw32 107 | fi 108 | if [ $ARCH == "darwin" ]; then 109 | HOST="x86_64-apple-darwin15" 110 | CROSS=$WORK_DIR/docker/bin/cross-darwin-x64 111 | CROSS_PREFIX=/opt/x86_64-apple-darwin15 112 | fi 113 | if [ $ARCH == "linux_riscv64" ]; then 114 | HOST="riscv64-linux-gnu" 115 | CROSS=$WORK_DIR/docker/bin/cross-linux-riscv64 116 | CROSS_PREFIX=/opt/riscv64-linux-gnu 117 | fi 118 | if [ $ARCH == "linux_riscv32" ]; then 119 | HOST="riscv64-unknown-linux-gnu" 120 | CROSS=$WORK_DIR/docker/bin/cross-linux-riscv32 121 | CROSS_PREFIX=/opt/riscv32-unknown-linux-gnu 122 | fi 123 | if [ $ARCH == "linux_or1k" ]; then 124 | HOST="or1k-linux-musl" 125 | CROSS=$WORK_DIR/docker/bin/cross-linux-or1k 126 | CROSS_PREFIX=/opt/or1k-linux-musl 127 | fi 128 | if [ $ARCH == "linux_mipsel" ]; then 129 | HOST="mipsel-linux-gnu" 130 | CROSS=$WORK_DIR/docker/bin/cross-linux-mipsel 131 | CROSS_PREFIX=/opt/mipsel-linux-gnu 132 | fi 133 | if [ $ARCH == "linux_mips64" ]; then 134 | HOST="mips64-linux-gnuabi64" 135 | CROSS=$WORK_DIR/docker/bin/cross-linux-mips64 136 | CROSS_PREFIX=/opt/mips64-linux-gnuabi64 137 | fi 138 | 139 | # -- Directory for compiling the tools 140 | BUILD_DIR=$BUILDS_DIR/build_$ARCH 141 | 142 | # -- Directory for installation the target files 143 | PACKAGE_DIR=$PACKAGES_DIR/build_$ARCH 144 | 145 | # -- Create the build dir 146 | mkdir -p $BUILD_DIR 147 | 148 | # --------- Build system ------------------------------------------ 149 | if [ $BUILD_SYSTEM == "1" ]; then 150 | print ">> Compile system" 151 | # -- Toolchain name 152 | NAME=tools-system 153 | VERSION=$DATE_VERSION 154 | #VERSION=1.2.0 155 | # -- Create the package folders 156 | mkdir -p $PACKAGE_DIR/$NAME/bin 157 | 158 | cd $PACKAGE_DIR/$NAME/bin 159 | $CROSS cp $CROSS_PREFIX/bin/lsusb lsusb$EXE 160 | $CROSS cp $CROSS_PREFIX/bin/lsftdi lsftdi$EXE 161 | test_bin lsusb$EXE 162 | test_bin lsftdi$EXE 163 | cd $WORK_DIR 164 | 165 | print ">> Create system package" 166 | . $WORK_DIR/scripts/create_package.sh 167 | fi 168 | 169 | # --------- Build yosys ------------------------------------------ 170 | if [ $BUILD_YOSYS == "1" ]; then 171 | print ">> Compile yosys" 172 | # -- Toolchain name 173 | NAME=toolchain-yosys 174 | VERSION=$YOSYS_VERSION 175 | # -- Create the package folders 176 | mkdir -p $PACKAGE_DIR/$NAME/bin 177 | mkdir -p $PACKAGE_DIR/$NAME/share 178 | 179 | . $WORK_DIR/scripts/compile_yosys.sh 180 | 181 | print ">> Create yosys package" 182 | . $WORK_DIR/scripts/create_package.sh 183 | fi 184 | 185 | # --------- Build ice40 ------------------------------------------ 186 | if [ $BUILD_ICE40 == "1" ]; then 187 | print ">> Compile ice40" 188 | # -- Toolchain name 189 | NAME=toolchain-ice40 190 | VERSION=$DATE_VERSION 191 | # -- Create the package folders 192 | mkdir -p $PACKAGE_DIR/$NAME/bin 193 | mkdir -p $PACKAGE_DIR/$NAME/share 194 | 195 | . $WORK_DIR/scripts/compile_icestorm.sh 196 | 197 | . $WORK_DIR/scripts/compile_nextpnr_ice40.sh 198 | 199 | print ">> Create ice40 package" 200 | . $WORK_DIR/scripts/create_package.sh 201 | fi 202 | 203 | # --------- Build ecp5 ------------------------------------------ 204 | if [ $BUILD_ECP5 == "1" ]; then 205 | print ">> Compile ecp5" 206 | # -- Toolchain ecp5 207 | NAME=toolchain-ecp5 208 | VERSION=$DATE_VERSION 209 | # -- Create the package folders 210 | mkdir -p $PACKAGE_DIR/$NAME/bin 211 | mkdir -p $PACKAGE_DIR/$NAME/share 212 | 213 | . $WORK_DIR/scripts/compile_prjtrellis.sh 214 | 215 | . $WORK_DIR/scripts/compile_nextpnr_ecp5.sh 216 | 217 | . $WORK_DIR/scripts/compile_ujprog.sh 218 | 219 | . $WORK_DIR/scripts/compile_libxsvf.sh 220 | 221 | print ">> Create ecp5 package" 222 | . $WORK_DIR/scripts/create_package.sh 223 | fi 224 | 225 | # --------- Build iverilog ------------------------------------ 226 | if [ $BUILD_IVERILOG == "1" ]; then 227 | print ">> Compile iverilog" 228 | # -- Toolchain iverilog 229 | NAME=toolchain-iverilog 230 | VERSION=$IVERILOG_VERSION 231 | # -- Create the package folders 232 | mkdir -p $PACKAGE_DIR/$NAME/bin 233 | 234 | . $WORK_DIR/scripts/compile_iverilog.sh 235 | 236 | print ">> Create iverilog package" 237 | . $WORK_DIR/scripts/create_package.sh 238 | fi 239 | 240 | # --------- Build verilator ------------------------------------ 241 | if [ $BUILD_VERILATOR == "1" ]; then 242 | print ">> Compile verilator" 243 | # -- Toolchain verilator 244 | NAME=toolchain-verilator 245 | VERSION=$VERILATOR_VERSION 246 | # -- Create the package folders 247 | mkdir -p $PACKAGE_DIR/$NAME/bin 248 | 249 | . $WORK_DIR/scripts/compile_verilator.sh 250 | 251 | print ">> Create verilator package" 252 | . $WORK_DIR/scripts/create_package.sh 253 | fi 254 | -------------------------------------------------------------------------------- /clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ################################## 3 | # Icestorm toolchain cleaner # 4 | ################################## 5 | 6 | # -- Target architectures 7 | ARCH=$1 8 | TARGET_ARCHS="linux_x86_64 linux_i686 linux_armv7l linux_aarch64 windows_x86 windows_amd64 darwin" 9 | 10 | # -- Store current dir 11 | WORK_DIR=$PWD 12 | # -- Folder for building the source code 13 | BUILDS_DIR=$WORK_DIR/_builds 14 | # -- Folder for storing the generated packages 15 | PACKAGES_DIR=$WORK_DIR/_packages 16 | 17 | # -- Check ARCH 18 | if [[ $# > 1 ]]; then 19 | echo "" 20 | echo "Error: too many arguments" 21 | exit 1 22 | fi 23 | 24 | if [[ $# < 1 ]]; then 25 | echo "" 26 | echo "Usage: bash clean.sh TARGET" 27 | echo "" 28 | echo "Targets: $TARGET_ARCHS" 29 | exit 1 30 | fi 31 | 32 | if [[ $ARCH =~ [[:space:]] || ! $TARGET_ARCHS =~ (^|[[:space:]])$ARCH([[:space:]]|$) ]]; then 33 | echo "" 34 | echo ">>> WRONG ARCHITECTURE \"$ARCH\"" 35 | exit 1 36 | fi 37 | 38 | echo "" 39 | echo ">>> ARCHITECTURE \"$ARCH\"" 40 | 41 | printf "Are you sure? [y/N]: " 42 | read RESP 43 | case "$RESP" in 44 | [yY][eE][sS]|[yY]) 45 | # -- Directory for compiling the tools 46 | BUILD_DIR=$BUILDS_DIR/build_$ARCH 47 | 48 | # -- Directory for installation the target files 49 | PACKAGE_DIR=$PACKAGES_DIR/build_$ARCH 50 | 51 | # -- Remove the package dir 52 | rm -r -f $PACKAGE_DIR 53 | 54 | # -- Remove the build dir 55 | rm -r -f $BUILD_DIR 56 | 57 | echo "" 58 | echo ">> CLEAN" 59 | ;; 60 | *) 61 | echo "" 62 | echo ">> ABORT" 63 | ;; 64 | esac 65 | -------------------------------------------------------------------------------- /docker/bin/cross-darwin-x64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-darwin-x64:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-arm: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-arm:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-arm64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-arm64:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-mips64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-mips64:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-mipsel: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-mipsel:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-or1k: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-or1k:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-riscv32: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-riscv32:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-riscv64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-riscv64:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-x64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-x64:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-linux-x86: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-linux-x86:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-windows-x64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-windows-x64:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/cross-windows-x86: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-windows-x86:1.0 "$@" -------------------------------------------------------------------------------- /docker/bin/delete_containers.sh: -------------------------------------------------------------------------------- 1 | docker rm $(docker ps -a -q) 2 | -------------------------------------------------------------------------------- /docker/bin/delete_dangling_images.sh: -------------------------------------------------------------------------------- 1 | docker rmi $(docker images -f "dangling=true" -q) 2 | -------------------------------------------------------------------------------- /docker/cross-base/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | 3 | RUN apt-get -qq update \ 4 | && apt-get -y install bison flex gawk git pkg-config python python3 cmake \ 5 | wget python3-dev libboost-all-dev gperf autoconf 6 | 7 | RUN mkdir /src && cd /src && wget https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.tar.bz2 && \ 8 | tar xvfj libusb-1.0.22.tar.bz2 && mv libusb-1.0.22 libusb && \ 9 | wget https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.4.tar.bz2 && \ 10 | tar xvfj libftdi1-1.4.tar.bz2 && mv libftdi1-1.4 libftdi1 && \ 11 | wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz && \ 12 | tar xvfz boost_1_65_1.tar.gz && mv boost_1_65_1 boost 13 | 14 | WORKDIR /work -------------------------------------------------------------------------------- /docker/cross-base/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-base:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-darwin-x64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME x86_64-apple-darwin15 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install clang llvm clang-3.9 llvm-3.9 automake autogen \ 8 | libtool libxml2-dev uuid-dev libssl-dev bash \ 9 | patch make tar xz-utils bzip2 gzip sed cpio curl zlib1g-dev libmpc-dev libmpfr-dev libgmp-dev && \ 10 | apt-get clean --yes && \ 11 | update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.9 100 \ 12 | --slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.9 13 | 14 | ENV MAC_SDK_VERSION 10.11 15 | 16 | RUN cd / && curl -L https://github.com/tpoechtrager/osxcross/archive/master.tar.gz | tar xvz && \ 17 | cd /osxcross-master/ && \ 18 | curl -L -o tarballs/MacOSX${MAC_SDK_VERSION}.sdk.tar.xz https://s3.dockerproject.org/darwin/v2/MacOSX10.11.sdk.tar.xz && \ 19 | echo | SDK_VERSION=${MAC_SDK_VERSION} OSX_VERSION_MIN=10.6 PORTABLE=true ./build.sh && ./build_compiler_rt.sh && \ 20 | GCC_VERSION=7.3.0 ./build_gcc.sh 21 | 22 | ENV AS=/osxcross-master/target/bin/${CROSS_NAME}-as \ 23 | AR=/osxcross-master/target/bin/${CROSS_NAME}-ar \ 24 | CC=/osxcross-master/target/bin/${CROSS_NAME}-clang \ 25 | CXX=/osxcross-master/target/bin/${CROSS_NAME}-clang++ \ 26 | LD=/osxcross-master/target/bin/${CROSS_NAME}-ld \ 27 | RANLIB=/osxcross-master/target/bin/${CROSS_NAME}-ranlib 28 | 29 | ENV PATH /osxcross-master/target/bin:$PATH 30 | 31 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 32 | 33 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 34 | 35 | RUN cd /src/boost && \ 36 | echo "using gcc : : " /osxcross-master/target/bin/${CROSS_NAME}-g++ " : \"-arch x86_64 -fvisibility=hidden -fvisibility-inlines-hidden -mmacosx-version-min=10.6\" \"darwin\" \"/osxcross-master/target/bin/x86_64-apple-darwin15-ar\" \"/osxcross-master/target/bin/x86_64-apple-darwin15-ranlib\" ; " >> tools/build/src/user-config.jam && \ 37 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 38 | ./b2 --toolset=gcc --target-os=darwin threading=multi link=static install && \ 39 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 40 | make -j9 && \ 41 | make install && \ 42 | cd /src/libftdi1 && \ 43 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 44 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DCMAKE_TOOLCHAIN_FILE=${CROSS_PREFIX}/Toolchain.cmake -DBOOST_ROOT=$CROSS_PREFIX && \ 45 | make -j9 && \ 46 | cmake -DCMAKE_TOOLCHAIN_FILE=${CROSS_PREFIX}/Toolchain.cmake -P cmake_install.cmake && \ 47 | cd /src/libftdi1/examples && \ 48 | ${CC} -o lsftdi find_all.c -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 -Bstatic /opt/x86_64-apple-darwin15/lib/libftdi1.a /opt/x86_64-apple-darwin15/lib/libusb-1.0.a -Wl,-framework,IOKit -Wl,-framework,CoreFoundation -lobjc -lpthread && \ 49 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 50 | cd /src/libusb/examples && \ 51 | ${CC} -o lsusb listdevs.c -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 -Bstatic /opt/x86_64-apple-darwin15/lib/libusb-1.0.a -Wl,-framework,IOKit -Wl,-framework,CoreFoundation -lobjc -lpthread && \ 52 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 53 | cd / && \ 54 | rm -rf /src 55 | 56 | RUN mkdir /src && \ 57 | cd /src && \ 58 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 59 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 60 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 61 | tar xvfz libftdi_0.20.orig.tar.gz && \ 62 | cd /src/libusb-0.1.12 && ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 63 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 64 | cd / && \ 65 | rm -rf /src 66 | 67 | RUN mkdir /src && \ 68 | cd /src && \ 69 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 70 | tar xvfz eigen-3.3.7.tar.gz && \ 71 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 72 | cd / && \ 73 | rm -rf /src 74 | 75 | ENV CC=/osxcross-master/target/bin/${CROSS_NAME}-gcc \ 76 | CXX=/osxcross-master/target/bin/${CROSS_NAME}-g++ \ 77 | OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 78 | -------------------------------------------------------------------------------- /docker/cross-darwin-x64/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Darwin) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR x86_64) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | 8 | SET(CMAKE_AR $ENV{AR} CACHE FILEPATH "Archiver") 9 | SET(CMAKE_LINKER $ENV{LD} CACHE FILEPATH "Linker") 10 | SET(CMAKE_RANLIB $ENV{RANLIB} CACHE FILEPATH "Ranlib") 11 | 12 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 13 | 14 | SET(CMAKE_OSX_SYSROOT /osxcross-master/target/SDK/MacOSX10.11.sdk/) 15 | SET(CMAKE_EXE_LINKER_FLAGS "-v" CACHE STRING "Flags") 16 | 17 | 18 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 19 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 20 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 21 | set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 22 | 23 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 24 | -------------------------------------------------------------------------------- /docker/cross-darwin-x64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-darwin-x64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-arm/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME arm-linux-gnueabihf 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : arm : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-arm link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | RUN mkdir /src && \ 42 | cd /src && \ 43 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 44 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 45 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 46 | tar xvfz libftdi_0.20.orig.tar.gz && \ 47 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 48 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 49 | cd / && \ 50 | rm -rf /src 51 | RUN mkdir /src && \ 52 | cd /src && \ 53 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 54 | tar xvfz eigen-3.3.7.tar.gz && \ 55 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | 59 | -------------------------------------------------------------------------------- /docker/cross-linux-arm/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR arm) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-arm/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-arm:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-arm64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME aarch64-linux-gnu 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : arm : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-arm link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | RUN mkdir /src && \ 42 | cd /src && \ 43 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 44 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 45 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 46 | tar xvfz libftdi_0.20.orig.tar.gz && \ 47 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 48 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 49 | cd / && \ 50 | rm -rf /src 51 | RUN mkdir /src && \ 52 | cd /src && \ 53 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 54 | tar xvfz eigen-3.3.7.tar.gz && \ 55 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | -------------------------------------------------------------------------------- /docker/cross-linux-arm64/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR aarch64) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-arm64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-arm64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-mips64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME mips64-linux-gnuabi64 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install gcc-mips64-linux-gnuabi64 g++-mips64-linux-gnuabi64 && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : mips : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-mips link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | RUN mkdir /src && \ 42 | cd /src && \ 43 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 44 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 45 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 46 | tar xvfz libftdi_0.20.orig.tar.gz && \ 47 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 48 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 49 | cd / && \ 50 | rm -rf /src 51 | RUN mkdir /src && \ 52 | cd /src && \ 53 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 54 | tar xvfz eigen-3.3.7.tar.gz && \ 55 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | 59 | -------------------------------------------------------------------------------- /docker/cross-linux-mips64/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR mips64) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-mips64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-mips64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-mipsel/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME mipsel-linux-gnu 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install gcc-mipsel-linux-gnu g++-mipsel-linux-gnu && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : mips : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-mips link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | RUN mkdir /src && \ 42 | cd /src && \ 43 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 44 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 45 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 46 | tar xvfz libftdi_0.20.orig.tar.gz && \ 47 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 48 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 49 | cd / && \ 50 | rm -rf /src 51 | RUN mkdir /src && \ 52 | cd /src && \ 53 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 54 | tar xvfz eigen-3.3.7.tar.gz && \ 55 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | 59 | -------------------------------------------------------------------------------- /docker/cross-linux-mipsel/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR mipsel) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-mipsel/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-mipsel:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-or1k/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME or1k-linux-musl 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN cd / && wget https://github.com/stffrdhrn/gcc/releases/download/or1k-9.0.1-20190402/or1k-linux-musl-9.0.1-20190402.tar.xz && tar xvfJ or1k-linux-musl-9.0.1-20190402.tar.xz && rm or1k-linux-musl-9.0.1-20190402.tar.xz 8 | 9 | ENV AS=/or1k-linux-musl/bin/${CROSS_NAME}-as \ 10 | AR=/or1k-linux-musl/bin/${CROSS_NAME}-ar \ 11 | CC=/or1k-linux-musl/bin/${CROSS_NAME}-gcc \ 12 | CPP=/or1k-linux-musl/bin/${CROSS_NAME}-cpp \ 13 | CXX=/or1k-linux-musl/bin/${CROSS_NAME}-g++ \ 14 | LD=/or1k-linux-musl/bin/${CROSS_NAME}-ld 15 | 16 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 17 | 18 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 19 | 20 | RUN ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4 && \ 21 | cd /src/boost && \ 22 | sed -i "s/__ARMEB__/__OR1K__/g" boost/predef/other/endian.h && \ 23 | echo "using gcc : or1k : " ${CC} "; " >> tools/build/src/user-config.jam && \ 24 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 25 | ./b2 --toolset=gcc-or1k link=static install && \ 26 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 27 | make -j9 && \ 28 | make install && \ 29 | cd /src/libftdi1 && \ 30 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 31 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 32 | make -j9 && \ 33 | make install && \ 34 | cd /src/libftdi1/examples && \ 35 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 36 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 37 | cd /src/libusb/examples && \ 38 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 39 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 40 | cd / && \ 41 | rm -rf /src 42 | #RUN mkdir /src && \ 43 | # cd /src && \ 44 | # wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 45 | # wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 46 | # tar xvfz libusb_0.1.12.orig.tar.gz && \ 47 | # tar xvfz libftdi_0.20.orig.tar.gz && \ 48 | # cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 49 | # cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 50 | # cd / && \ 51 | # rm -rf /src 52 | RUN mkdir /src && \ 53 | cd /src && \ 54 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 55 | tar xvfz eigen-3.3.7.tar.gz && \ 56 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 57 | cd / && \ 58 | rm -rf /src 59 | -------------------------------------------------------------------------------- /docker/cross-linux-or1k/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR or1k) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-or1k/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-or1k:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv32/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME riscv32-unknown-linux-gnu 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN cd / && wget http://www.antmicro.com/downloads/riscv-gnu-toolchain.tar.gz && tar xvfz riscv-gnu-toolchain.tar.gz && rm riscv-gnu-toolchain.tar.gz 8 | 9 | ENV AS=/riscv-gnu-toolchain/bin/${CROSS_NAME}-as \ 10 | AR=/riscv-gnu-toolchain/bin/${CROSS_NAME}-ar \ 11 | CC=/riscv-gnu-toolchain/bin/${CROSS_NAME}-gcc \ 12 | CPP=/riscv-gnu-toolchain/bin/${CROSS_NAME}-cpp \ 13 | CXX=/riscv-gnu-toolchain/bin/${CROSS_NAME}-g++ \ 14 | LD=/riscv-gnu-toolchain/bin/${CROSS_NAME}-ld 15 | 16 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 17 | 18 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 19 | 20 | RUN ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4 && \ 21 | cd /src/boost && \ 22 | echo "using gcc : riscv : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-riscv link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | RUN mkdir /src && \ 42 | cd /src && \ 43 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 44 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 45 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 46 | tar xvfz libftdi_0.20.orig.tar.gz && \ 47 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 48 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 49 | cd / && \ 50 | rm -rf /src 51 | RUN mkdir /src && \ 52 | cd /src && \ 53 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 54 | tar xvfz eigen-3.3.7.tar.gz && \ 55 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv32/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR riscv32) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv32/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-riscv32:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME riscv64-linux-gnu 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : riscv : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-riscv link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | RUN mkdir /src && \ 42 | cd /src && \ 43 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 44 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 45 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 46 | tar xvfz libftdi_0.20.orig.tar.gz && \ 47 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 48 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 49 | cd / && \ 50 | rm -rf /src 51 | RUN mkdir /src && \ 52 | cd /src && \ 53 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 54 | tar xvfz eigen-3.3.7.tar.gz && \ 55 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv64/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR riscv64) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 12 | 13 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 14 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-riscv64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-x64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME x86_64-linux-gnu 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 8 | AR=/usr/bin/${CROSS_NAME}-ar \ 9 | CC=/usr/bin/${CROSS_NAME}-gcc \ 10 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 11 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 12 | LD=/usr/bin/${CROSS_NAME}-ld 13 | 14 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 15 | 16 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 17 | 18 | RUN cd /src/boost && \ 19 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 20 | ./b2 link=static install && \ 21 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 22 | make -j9 && \ 23 | make install && \ 24 | cd /src/libftdi1 && \ 25 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 26 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 27 | make -j9 && \ 28 | make install && \ 29 | cd /src/libftdi1/examples && \ 30 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 31 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 32 | cd /src/libusb/examples && \ 33 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 34 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 35 | cd / && \ 36 | rm -rf /src 37 | RUN mkdir /src && \ 38 | cd /src && \ 39 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 40 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 41 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 42 | tar xvfz libftdi_0.20.orig.tar.gz && \ 43 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --enable-udev=no && make install && \ 44 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} && make install && \ 45 | cd / && \ 46 | rm -rf /src 47 | 48 | RUN mkdir /src && \ 49 | cd /src && \ 50 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 51 | tar xvfz eigen-3.3.7.tar.gz && \ 52 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 53 | cd / && \ 54 | rm -rf /src 55 | -------------------------------------------------------------------------------- /docker/cross-linux-x64/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR x86_64) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | 9 | set(CMAKE_IGNORE_PATH /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/lib/) -------------------------------------------------------------------------------- /docker/cross-linux-x64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-x64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-x86/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME i686-linux-gnu 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install gcc-multilib g++-multilib && \ 8 | apt-get clean --yes 9 | 10 | COPY ${CROSS_NAME}.sh /usr/bin/${CROSS_NAME}.sh 11 | COPY ${CROSS_NAME}-as.sh /usr/bin/${CROSS_NAME}-as.sh 12 | RUN cd /usr/bin && \ 13 | chmod +x ${CROSS_NAME}.sh && \ 14 | ln -s ${CROSS_NAME}.sh ${CROSS_NAME}-gcc && \ 15 | ln -s ${CROSS_NAME}.sh ${CROSS_NAME}-g++ && \ 16 | ln -s ${CROSS_NAME}-as.sh ${CROSS_NAME}-as && \ 17 | ln -s /usr/bin/x86_64-linux-gnu-ar ${CROSS_NAME}-ar 18 | 19 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 20 | AR=/usr/bin/${CROSS_NAME}-ar \ 21 | CC=/usr/bin/${CROSS_NAME}-gcc \ 22 | CXX=/usr/bin/${CROSS_NAME}-g++ 23 | 24 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 25 | 26 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 27 | 28 | RUN cd /src/boost && \ 29 | echo "using gcc : : " ${CC} "; " >> tools/build/src/user-config.jam && \ 30 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 31 | ./b2 --toolset=gcc link=static install && \ 32 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 33 | make -j9 && \ 34 | make install && \ 35 | cd /src/libftdi1 && \ 36 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 37 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DBOOST_ROOT=$CROSS_PREFIX && \ 38 | make -j9 && \ 39 | make install && \ 40 | cd /src/libftdi1/examples && \ 41 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 42 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 43 | cd /src/libusb/examples && \ 44 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 45 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 46 | cd / && \ 47 | rm -rf /src 48 | RUN mkdir /src && \ 49 | cd /src && \ 50 | wget -c https://mirrors.mediatemple.net/debian-archive/debian/pool/main/libu/libusb/libusb_0.1.12.orig.tar.gz && \ 51 | wget -c http://ftp.ubuntu.com/ubuntu/pool/universe/libf/libftdi/libftdi_0.20.orig.tar.gz && \ 52 | tar xvfz libusb_0.1.12.orig.tar.gz && \ 53 | tar xvfz libftdi_0.20.orig.tar.gz && \ 54 | cd /src/libusb-0.1.12 && CFLAGS=-Wno-format-truncation ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu --enable-udev=no && make install && \ 55 | cd /src/libftdi-0.20 && export PATH=${CROSS_PREFIX}/bin:$PATH && CFLAGS=-Wno-format-truncation CXXFLAGS="-I${CROSS_PREFIX}/include -L${CROSS_PREFIX}/lib" ./configure --prefix=${CROSS_PREFIX} --host=x86_64-linux-gnu && make install && \ 56 | cd / && \ 57 | rm -rf /src 58 | RUN mkdir /src && \ 59 | cd /src && \ 60 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 61 | tar xvfz eigen-3.3.7.tar.gz && \ 62 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. && make install && \ 63 | cd / && \ 64 | rm -rf /src 65 | -------------------------------------------------------------------------------- /docker/cross-linux-x86/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR i686) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | -------------------------------------------------------------------------------- /docker/cross-linux-x86/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-x86:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-x86/i686-linux-gnu-as.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | exec ${0/${CROSS_NAME}-/x86_64-linux-gnu-} --32 "$@" 3 | -------------------------------------------------------------------------------- /docker/cross-linux-x86/i686-linux-gnu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | exec ${0/*${TOOLCHAIN}-/\/usr\/bin\/x86_64-linux-gnu-} -m32 "$@" 3 | -------------------------------------------------------------------------------- /docker/cross-windows-x64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME x86_64-w64-mingw32 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install mingw-w64 mingw-w64-tools && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : mingw : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-mingw --target-os=windows threading=multi threadapi=win32 link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DCMAKE_TOOLCHAIN_FILE=${CROSS_PREFIX}/Toolchain.cmake -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | 42 | RUN cp ${CROSS_PREFIX}/lib/libboost_thread_win32.a ${CROSS_PREFIX}/lib/libboost_thread.a 43 | 44 | RUN echo "1"| update-alternatives --config x86_64-w64-mingw32-gcc 45 | RUN echo "1"| update-alternatives --config x86_64-w64-mingw32-g++ 46 | 47 | RUN mkdir /src && \ 48 | cd /src && \ 49 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 50 | tar xvfz eigen-3.3.7.tar.gz && \ 51 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. -DCMAKE_TOOLCHAIN_FILE=${CROSS_PREFIX}/Toolchain.cmake && make install && \ 52 | cd / && \ 53 | rm -rf /src 54 | -------------------------------------------------------------------------------- /docker/cross-windows-x64/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Windows) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR x86_64) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | set(CMAKE_RC_COMPILER ${CROSS_NAME}-windres) 9 | 10 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 12 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 13 | 14 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 15 | -------------------------------------------------------------------------------- /docker/cross-windows-x64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-windows-x64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-windows-x86/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mmicko/cross-base:1.0 2 | 3 | ENV CROSS_NAME i686-w64-mingw32 4 | 5 | ENV CROSS_PREFIX /opt/${CROSS_NAME} 6 | 7 | RUN apt-get -y install mingw-w64 mingw-w64-tools && \ 8 | apt-get clean --yes 9 | 10 | ENV AS=/usr/bin/${CROSS_NAME}-as \ 11 | AR=/usr/bin/${CROSS_NAME}-ar \ 12 | CC=/usr/bin/${CROSS_NAME}-gcc \ 13 | CPP=/usr/bin/${CROSS_NAME}-cpp \ 14 | CXX=/usr/bin/${CROSS_NAME}-g++ \ 15 | LD=/usr/bin/${CROSS_NAME}-ld 16 | 17 | COPY Toolchain.cmake ${CROSS_PREFIX}/ 18 | 19 | ENV CMAKE_TOOLCHAIN_FILE ${CROSS_PREFIX}/Toolchain.cmake 20 | 21 | RUN cd /src/boost && \ 22 | echo "using gcc : mingw : " ${CC} "; " >> tools/build/src/user-config.jam && \ 23 | ./bootstrap.sh --prefix=${CROSS_PREFIX} --with-libraries=program_options,filesystem,thread,iostreams && \ 24 | ./b2 --toolset=gcc-mingw --target-os=windows threading=multi threadapi=win32 link=static install && \ 25 | cd /src/libusb && ./configure --prefix=${CROSS_PREFIX} --host=${CROSS_NAME} --enable-udev=no && \ 26 | make -j9 && \ 27 | make install && \ 28 | cd /src/libftdi1 && \ 29 | export PKG_CONFIG_PATH=${CROSS_PREFIX}/lib/pkgconfig && \ 30 | cmake . -DCMAKE_INSTALL_PREFIX=${CROSS_PREFIX} -DCMAKE_TOOLCHAIN_FILE=${CROSS_PREFIX}/Toolchain.cmake -DBOOST_ROOT=$CROSS_PREFIX && \ 31 | make -j9 && \ 32 | make install && \ 33 | cd /src/libftdi1/examples && \ 34 | ${CC} -o lsftdi find_all.c -static -lftdi1 -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libftdi1 && \ 35 | cp lsftdi ${CROSS_PREFIX}/bin/. && \ 36 | cd /src/libusb/examples && \ 37 | ${CC} -o lsusb listdevs.c -static -lusb-1.0 -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include/libusb-1.0 && \ 38 | cp lsusb ${CROSS_PREFIX}/bin/. && \ 39 | cd / && \ 40 | rm -rf /src 41 | 42 | RUN cp ${CROSS_PREFIX}/lib/libboost_thread_win32.a ${CROSS_PREFIX}/lib/libboost_thread.a 43 | 44 | RUN echo "1"| update-alternatives --config i686-w64-mingw32-gcc 45 | RUN echo "1"| update-alternatives --config i686-w64-mingw32-g++ 46 | 47 | RUN mkdir /src && \ 48 | cd /src && \ 49 | wget -c https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz && \ 50 | tar xvfz eigen-3.3.7.tar.gz && \ 51 | cd /src/eigen-3.3.7 && mkdir build && cd build && cmake .. -DCMAKE_TOOLCHAIN_FILE=${CROSS_PREFIX}/Toolchain.cmake && make install && \ 52 | cd / && \ 53 | rm -rf /src 54 | -------------------------------------------------------------------------------- /docker/cross-windows-x86/Toolchain.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Windows) 2 | set(CMAKE_SYSTEM_VERSION 1) 3 | set(CMAKE_SYSTEM_PROCESSOR i686) 4 | 5 | set(CMAKE_C_COMPILER $ENV{CC}) 6 | set(CMAKE_CXX_COMPILER $ENV{CXX}) 7 | set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) 8 | set(CMAKE_RC_COMPILER ${CROSS_NAME}-windres) 9 | 10 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 11 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 12 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 13 | 14 | set(CMAKE_FIND_ROOT_PATH ${CROSS_PREFIX}) 15 | -------------------------------------------------------------------------------- /docker/cross-windows-x86/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-windows-x86:1.0" . 2 | -------------------------------------------------------------------------------- /scripts/compile_icestorm.sh: -------------------------------------------------------------------------------- 1 | # -- Compile Icestorm script 2 | 3 | ICESTORM=icestorm 4 | GIT_ICESTORM=https://github.com/YosysHQ/icestorm.git 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $ICESTORM || git clone --depth=1 $GIT_ICESTORM $ICESTORM 10 | git -C $ICESTORM pull 11 | echo "" 12 | git -C $ICESTORM log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rsync -a $ICESTORM $BUILD_DIR --exclude .git 16 | 17 | cd $BUILD_DIR/$ICESTORM 18 | 19 | # -- Compile it 20 | if [ $ARCH == "darwin" ]; then 21 | sed -i "s/LDLIBS/#LDLIBS/;" iceprog/Makefile 22 | $CROSS make -j$J SUBDIRS="iceprog" \ 23 | LDFLAGS="-Bstatic -pthread -L$CROSS_PREFIX/lib -Bstatic $CROSS_PREFIX/lib/libftdi1.a $CROSS_PREFIX/lib/libusb-1.0.a -Wl,-framework,IOKit -Wl,-framework,CoreFoundation -lobjc" \ 24 | CFLAGS="-MD -O2 -Wall -std=c99 -I$CROSS_PREFIX/include/libftdi1" 25 | $CROSS make -j$J SUBDIRS="icebox icepack icemulti icepll icetime icebram" OPT_LEVEL=2 DBG_LEVEL= 26 | else 27 | $CROSS make -j$J SUBDIRS="iceprog" PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig \ 28 | LDFLAGS="-static -pthread -L$CROSS_PREFIX/lib" \ 29 | CFLAGS="-MD -O2 -Wall -std=c99 -I$CROSS_PREFIX/include/libftdi1" 30 | $CROSS make -j$J SUBDIRS="icebox icepack icemulti icepll icetime icebram" STATIC=1 OPT_LEVEL=2 DBG_LEVEL= 31 | fi 32 | 33 | TOOLS="icepack iceprog icemulti icepll icetime icebram" 34 | 35 | # -- Test the generated executables 36 | for dir in $TOOLS; do 37 | test_bin $dir/$dir 38 | done 39 | 40 | # -- Copy the executables to the bin dir 41 | for dir in $TOOLS; do 42 | cp $dir/$dir $PACKAGE_DIR/$NAME/bin/$dir$EXE 43 | done 44 | 45 | # -- Copy the chipdb*.txt data files 46 | mkdir -p $PACKAGE_DIR/$NAME/share/icebox 47 | cp -r icebox/chipdb*.txt $PACKAGE_DIR/$NAME/share/icebox 48 | cp -r icefuzz/timings_*.txt $PACKAGE_DIR/$NAME/share/icebox 49 | -------------------------------------------------------------------------------- /scripts/compile_iverilog.sh: -------------------------------------------------------------------------------- 1 | # -- Compile Iverilog script 2 | 3 | IVERILOG=iverilog 4 | GIT_IVERILOG=https://github.com/steveicarus/iverilog 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $IVERILOG || git clone $GIT_IVERILOG $IVERILOG 10 | git -C $IVERILOG checkout tags/v10_3 11 | echo "" 12 | git -C $IVERILOG log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rsync -a $IVERILOG $BUILD_DIR --exclude .git 16 | 17 | cd $BUILD_DIR/$IVERILOG 18 | 19 | # -- Generate the new configure 20 | sed -i "s/HOSTCC = @CC@/HOSTCC = gcc/g" Makefile.in 21 | sed -i "s/HOSTCC = @CC@/HOSTCC = gcc/g" vvp/Makefile.in 22 | sed -i "s/\$(CC) \$(CFLAGS) -o draw_tt/gcc \$(CFLAGS) -o draw_tt/g" vvp/Makefile.in 23 | $CROSS /bin/sh autoconf.sh 24 | 25 | # -- Force not to use libreadline and libhistory 26 | sed -i "s/ac_cv_lib_readline_readline=yes/ac_cv_lib_readline_readline=no/g" configure 27 | sed -i "s/ac_cv_lib_history_add_history=yes/ac_cv_lib_history_add_history=no/g" configure 28 | sed -i "s/ac_cv_lib_pthread_pthread_create=yes/ac_cv_lib_pthread_pthread_create=no/g" configure 29 | 30 | if [ $ARCH == "darwin" ]; then 31 | sed -i "s/find_ivl_root();/\/\/find_ivl_root();/g" driver/main.c 32 | fi 33 | 34 | # -- Prepare for building 35 | if [ $ARCH == "windows_x86" ] || [ $ARCH == "windows_amd64" ]; then 36 | $CROSS ./configure --build=x86_64-unknown-linux-gnu HOSTCC=gcc --host=$HOST CFLAGS="-O2" CXXFLAGS="-O2 -Wno-deprecated-declarations" LDFLAGS="-static" 37 | else 38 | $CROSS ./configure --build=x86_64-unknown-linux-gnu HOSTCC=gcc --host=$HOST CFLAGS="-O2" CXXFLAGS="-O2 -Wno-deprecated-declarations" LDFLAGS="-static-libgcc -static-libstdc++" 39 | fi 40 | 41 | # -- Compile it 42 | $CROSS make -j$J 43 | 44 | # -- Make binaries static 45 | if [ ${ARCH:0:5} == "linux" ] || [ $ARCH == "darwin" ]; then 46 | SUBDIRS="driver" 47 | for SUBDIR in ${SUBDIRS[@]} 48 | do 49 | $CROSS make -C $SUBDIR clean 50 | if [ $ARCH == "darwin" ]; then 51 | $CROSS make -C $SUBDIR -j$J LDFLAGS="-Bstatic" 52 | else 53 | $CROSS make -C $SUBDIR -j$J LDFLAGS="-static" 54 | fi 55 | done 56 | fi 57 | 58 | # -- Test the generated executables 59 | test_bin driver/iverilog$EXE 60 | 61 | if [ $ARCH == "windows" ]; then 62 | test_bin driver-vpi/iverilog-vpi$EXE 63 | fi 64 | 65 | cd $BUILD_DIR/$IVERILOG 66 | rm -rf BUILD_IVERILOG 67 | mkdir -p BUILD_IVERILOG 68 | # -- Install the programs into the package folder 69 | $CROSS make install prefix=/work/BUILD_IVERILOG 70 | mv BUILD_IVERILOG/* $PACKAGE_DIR/$NAME/. 71 | -------------------------------------------------------------------------------- /scripts/compile_libxsvf.sh: -------------------------------------------------------------------------------- 1 | # -- Compile ujprog script 2 | 3 | LIBXSVF=libxsvf 4 | SVN_LIBXSVF=http://svn.clifford.at/libxsvf/trunk/ 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $LIBXSVF || svn co $SVN_LIBXSVF $LIBXSVF 10 | svn up $LIBXSVF 11 | echo "" 12 | svn log $LIBXSVF -l 1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rm -rf $BUILD_DIR/$LIBXSVF 16 | rsync -a $LIBXSVF $BUILD_DIR --exclude .svn 17 | 18 | cd $BUILD_DIR/$LIBXSVF 19 | 20 | if [ $ARCH == "darwin" ]; then 21 | $CROSS /bin/sh -c '${CC} -o xsvftool-ft232h xsvftool-ft232h.c tap.c statename.c memname.c svf.c xsvf.c scan.c play.c -Wall -Os -ggdb -MD -I${CROSS_PREFIX}/include -Bstatic /opt/x86_64-apple-darwin15/lib/libftdi.a /opt/x86_64-apple-darwin15/lib/libusb.a -Wl,-framework,IOKit -Wl,-framework,CoreFoundation -lobjc -lpthread' 22 | elif [ $ARCH == "windows_amd64" ]; then 23 | echo "No Win64 support for libxsvf" 24 | elif [ $ARCH == "windows_x86" ]; then 25 | echo "No Win32 support for libxsvf" 26 | else 27 | $CROSS /bin/sh -c '${CC} -o xsvftool-ft232h xsvftool-ft232h.c tap.c statename.c memname.c svf.c xsvf.c scan.c play.c -Wall -Os -ggdb -MD -static -lftdi -lusb -lm -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include' 28 | fi 29 | 30 | if [ $ARCH != "windows_x86" ] && [ $ARCH != "windows_amd64" ]; then 31 | 32 | # -- Test the generated executables 33 | test_bin xsvftool-ft232h$EXE 34 | 35 | # -- Copy the executable to the bin dir 36 | cp xsvftool-ft232h$EXE $PACKAGE_DIR/$NAME/bin/xsvftool-ft232h$EXE 37 | 38 | fi 39 | -------------------------------------------------------------------------------- /scripts/compile_nextpnr_ecp5.sh: -------------------------------------------------------------------------------- 1 | # -- Compile nextpnr script 2 | 3 | NEXTPNR=nextpnr 4 | GIT_NEXTPNR=https://github.com/YosysHQ/nextpnr 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $NEXTPNR || git clone --depth=1 $GIT_NEXTPNR $NEXTPNR 10 | git -C $NEXTPNR pull 11 | echo "" 12 | git -C $NEXTPNR log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rsync -a $NEXTPNR $BUILD_DIR #--exclude .git 16 | 17 | cd $BUILD_DIR/ 18 | 19 | $CROSS_HOST /bin/sh -c 'rm -rf BUILD_BBA && mkdir BUILD_BBA && cd BUILD_BBA && cmake ../nextpnr -DARCH=generic -DSTATIC_BUILD=ON -DBUILD_PYTHON=OFF -DBUILD_GUI=OFF -DBOOST_ROOT=$CROSS_PREFIX && make bbasm' 20 | 21 | cd $BUILD_DIR 22 | 23 | rm -rf BUILD_ECP5 24 | mkdir -p BUILD_ECP5 25 | 26 | $CROSS /bin/sh -c 'cd BUILD_ECP5 && cmake ../nextpnr -DARCH=ecp5 -DSTATIC_BUILD=ON -DBUILD_PYTHON=OFF -DBUILD_GUI=OFF -DCMAKE_TOOLCHAIN_FILE=$CROSS_PREFIX/Toolchain.cmake -DBOOST_ROOT=$CROSS_PREFIX -DTRELLIS_LIBDIR=/work/prjtrellis/libtrellis -DTRELLIS_DATADIR=/work/prjtrellis -DBBA_IMPORT=../BUILD_BBA/bba-export.cmake' 27 | 28 | $CROSS make -C BUILD_ECP5 -j$J 29 | 30 | # -- Test the generated executables 31 | test_bin BUILD_ECP5/nextpnr-ecp5$EXE 32 | 33 | # -- Copy the executable to the bin dir 34 | cp BUILD_ECP5/nextpnr-ecp5$EXE $PACKAGE_DIR/$NAME/bin/nextpnr-ecp5$EXE 35 | -------------------------------------------------------------------------------- /scripts/compile_nextpnr_ice40.sh: -------------------------------------------------------------------------------- 1 | # -- Compile nextpnr script 2 | 3 | NEXTPNR=nextpnr 4 | GIT_NEXTPNR=https://github.com/YosysHQ/nextpnr 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $NEXTPNR || git clone --depth=1 $GIT_NEXTPNR $NEXTPNR 10 | git -C $NEXTPNR pull 11 | echo "" 12 | git -C $NEXTPNR log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rsync -a $NEXTPNR $BUILD_DIR #--exclude .git 16 | 17 | cd $BUILD_DIR/ 18 | 19 | $CROSS_HOST /bin/sh -c 'rm -rf BUILD_BBA && mkdir BUILD_BBA && cd BUILD_BBA && cmake ../nextpnr -DARCH=generic -DSTATIC_BUILD=ON -DBUILD_PYTHON=OFF -DBUILD_GUI=OFF -DBOOST_ROOT=$CROSS_PREFIX && make bbasm' 20 | 21 | # -- Copy the chipdb*.txt data files 22 | rm -rf BUILD_ICE40 23 | mkdir -p BUILD_ICE40/icebox 24 | cp -r icestorm/icebox/chipdb*.txt BUILD_ICE40/icebox 25 | cp -r icestorm/icefuzz/timings_*.txt BUILD_ICE40/icebox 26 | 27 | $CROSS /bin/sh -c 'cd BUILD_ICE40 && cmake ../nextpnr -DARCH=ice40 -DSTATIC_BUILD=ON -DBUILD_PYTHON=OFF -DBUILD_GUI=OFF -DCMAKE_TOOLCHAIN_FILE=$CROSS_PREFIX/Toolchain.cmake -DBOOST_ROOT=$CROSS_PREFIX -DICEBOX_DATADIR=/work/BUILD_ICE40/icebox -DBBA_IMPORT=../BUILD_BBA/bba-export.cmake' 28 | 29 | $CROSS make -C BUILD_ICE40 -j$J 30 | 31 | # -- Test the generated executables 32 | test_bin BUILD_ICE40/nextpnr-ice40$EXE 33 | 34 | # -- Copy the executable to the bin dir 35 | cp BUILD_ICE40/nextpnr-ice40$EXE $PACKAGE_DIR/$NAME/bin/nextpnr-ice40$EXE 36 | -------------------------------------------------------------------------------- /scripts/compile_prjtrellis.sh: -------------------------------------------------------------------------------- 1 | # -- Compile prjtrellis script 2 | 3 | PRJTRELLIS=prjtrellis 4 | GIT_PRJTRELLIS=https://github.com/YosysHQ/prjtrellis 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $PRJTRELLIS || git clone --recursive $GIT_PRJTRELLIS $PRJTRELLIS 10 | git -C $PRJTRELLIS pull 11 | echo "" 12 | git -C $PRJTRELLIS log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rm -rf $BUILD_DIR/$PRJTRELLIS 16 | rsync -a $PRJTRELLIS $BUILD_DIR #--exclude .git 17 | 18 | cd $BUILD_DIR 19 | 20 | $CROSS_HOST /bin/sh -c 'rm -rf BUILD_PY && mkdir BUILD_PY && cd BUILD_PY && cmake ../prjtrellis/libtrellis' 21 | $CROSS_HOST make -C BUILD_PY pytrellis -j$J 22 | 23 | $CROSS /bin/sh -c 'cd prjtrellis/libtrellis && cmake . -DBUILD_PYTHON=OFF -DBUILD_SHARED=OFF -DSTATIC_BUILD=ON -DCMAKE_TOOLCHAIN_FILE=$CROSS_PREFIX/Toolchain.cmake -DBOOST_ROOT=$CROSS_PREFIX' 24 | 25 | $CROSS make -C $PRJTRELLIS/libtrellis -j$J 26 | 27 | # -- Copy python module to be used by nextpnr 28 | cp BUILD_PY/pytrellis.so $PRJTRELLIS/libtrellis/. 29 | 30 | # -- Test the generated executables 31 | test_bin $PRJTRELLIS/libtrellis/ecppack$EXE 32 | test_bin $PRJTRELLIS/libtrellis/ecpunpack$EXE 33 | test_bin $PRJTRELLIS/libtrellis/ecppll$EXE 34 | 35 | # -- Copy the executable to the bin dir 36 | cp $PRJTRELLIS/libtrellis/ecppack$EXE $PACKAGE_DIR/$NAME/bin/ecppack$EXE 37 | cp $PRJTRELLIS/libtrellis/ecpunpack$EXE $PACKAGE_DIR/$NAME/bin/ecpunpack$EXE 38 | cp $PRJTRELLIS/libtrellis/ecppll$EXE $PACKAGE_DIR/$NAME/bin/ecppll$EXE 39 | cp $PRJTRELLIS/tools/bit_to_svf.py $PACKAGE_DIR/$NAME/bin/bit_to_svf.py 40 | 41 | # -- Copy the chipdb*.bin data files 42 | mkdir -p $PACKAGE_DIR/$NAME/share/trellis 43 | rsync -a $PRJTRELLIS/database $PACKAGE_DIR/$NAME/share/trellis --exclude .git 44 | rsync -a $PRJTRELLIS/misc/basecfgs $PACKAGE_DIR/$NAME/share/trellis --exclude README.md 45 | -------------------------------------------------------------------------------- /scripts/compile_ujprog.sh: -------------------------------------------------------------------------------- 1 | # -- Compile ujprog script 2 | 3 | UJPROG=ujprog 4 | GIT_UJPROG=https://github.com/f32c/tools 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $UJPROG || git clone --recursive --depth=1 $GIT_UJPROG $UJPROG 10 | git -C $UJPROG pull 11 | echo "" 12 | git -C $UJPROG log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rm -rf $BUILD_DIR/$UJPROG 16 | rsync -a $UJPROG $BUILD_DIR --exclude .git 17 | 18 | cd $BUILD_DIR/$UJPROG/ujprog 19 | 20 | if [ $ARCH == "windows_amd64" ]; then 21 | wget -c https://www.ftdichip.com/Drivers/CDM/CDM%20v2.12.28%20WHQL%20Certified.zip -O ftdi.zip 22 | unzip ftdi.zip amd64/ftd2xx.lib 23 | fi 24 | 25 | if [ $ARCH == "windows_x86" ]; then 26 | wget -c https://www.ftdichip.com/Drivers/CDM/CDM%20v2.12.28%20WHQL%20Certified.zip -O ftdi.zip 27 | unzip ftdi.zip i386/ftd2xx.lib 28 | fi 29 | 30 | sed -i "s/#include /#include \"ftd2xx.h\"/g" ujprog.c 31 | 32 | if [ $ARCH == "darwin" ]; then 33 | $CROSS /bin/sh -c '${CC} -Wall -o ujprog ujprog.c -I${CROSS_PREFIX}/include -Bstatic /opt/x86_64-apple-darwin15/lib/libftdi.a /opt/x86_64-apple-darwin15/lib/libusb.a -Wl,-framework,IOKit -Wl,-framework,CoreFoundation -lobjc -lpthread' 34 | elif [ $ARCH == "windows_amd64" ]; then 35 | $CROSS /bin/sh -c '${CC} -o ujprog.exe ujprog.c -s -static -L. -lamd64/ftd2xx' 36 | elif [ $ARCH == "windows_x86" ]; then 37 | $CROSS /bin/sh -c '${CC} -o ujprog.exe ujprog.c -s -static -L. -li386/ftd2xx' 38 | else 39 | $CROSS /bin/sh -c '${CC} -Wall -o ujprog ujprog.c -static -lftdi -lusb -lpthread -L${CROSS_PREFIX}/lib -I${CROSS_PREFIX}/include' 40 | fi 41 | 42 | # -- Test the generated executables 43 | test_bin ujprog$EXE 44 | 45 | # -- Copy the executable to the bin dir 46 | cp ujprog$EXE $PACKAGE_DIR/$NAME/bin/ujprog$EXE 47 | -------------------------------------------------------------------------------- /scripts/compile_verilator.sh: -------------------------------------------------------------------------------- 1 | # -- Compile Verilator script 2 | 3 | VERILATOR=verilator 4 | GIT_VERILATOR=https://github.com/verilator/verilator 5 | 6 | cd $UPSTREAM_DIR 7 | 8 | # -- Clone the sources from github 9 | test -e $VERILATOR || git clone $GIT_VERILATOR $VERILATOR 10 | git -C $VERILATOR checkout tags/verilator_4_020 11 | echo "" 12 | git -C $VERILATOR log -1 13 | 14 | # -- Copy the upstream sources into the build directory 15 | rsync -a $VERILATOR $BUILD_DIR --exclude .git 16 | 17 | cd $BUILD_DIR/$VERILATOR 18 | 19 | # -- Generate the new configure 20 | $CROSS autoconf -f 21 | 22 | # -- Prepare for building 23 | $CROSS ./configure --build=x86_64-unknown-linux-gnu --host=$HOST 24 | 25 | # -- Add missing include needed for windows and darwind builds 26 | cp /usr/include/FlexLexer.h $BUILD_DIR/$VERILATOR/src/. 27 | 28 | # -- Compile it 29 | if [ $ARCH == "darwin" ]; then 30 | $CROSS make opt -C src -j$J CFLAGS="-O2" CXXFLAGS="-O2" LDFLAGS="-Bstatic" 31 | else 32 | $CROSS make opt -C src -j$J CFLAGS="-O2" CXXFLAGS="-O2" LDFLAGS="-static" 33 | fi 34 | 35 | # -- Test the generated executables 36 | test_bin bin/verilator_bin 37 | 38 | # -- Copy the executable to the bin dir 39 | cp bin/verilator_bin $PACKAGE_DIR/$NAME/bin/verilator$EXE 40 | -------------------------------------------------------------------------------- /scripts/compile_yosys.sh: -------------------------------------------------------------------------------- 1 | # -- Compile Yosys script 2 | 3 | YOSYS=yosys 4 | GIT_YOSYS=https://github.com/YosysHQ/yosys 5 | 6 | cd $UPSTREAM_DIR 7 | # -- Clone the sources from github 8 | test -e $YOSYS || git clone --depth=1 $GIT_YOSYS $YOSYS 9 | git -C $YOSYS pull 10 | echo "" 11 | git -C $YOSYS log -1 12 | 13 | # -- Copy the upstream sources into the build directory 14 | rsync -a $YOSYS $BUILD_DIR --exclude .git 15 | 16 | cd $BUILD_DIR/$YOSYS 17 | 18 | $CROSS make config-gcc-static 19 | echo ENABLE_NDEBUG := 1 >> Makefile.conf 20 | echo ENABLE_ZLIB := 0 >> Makefile.conf 21 | 22 | if [ $ARCH == "darwin" ]; then 23 | sed -i "s/ -static/ -Bstatic/;" Makefile 24 | fi 25 | 26 | if [ $ARCH == "windows_x86" ] || [ $ARCH == "windows_amd64" ]; then 27 | sed -i "s/CXXFLAGS += -std=c++11 -Os/CXXFLAGS += -std=c++11 -Os -DYOSYS_WIN32_UNIX_DIR /g" Makefile 28 | $CROSS make ARCHFLAGS="-DWIN32_NO_DLL -DHAVE_STRUCT_TIMESPEC -fpermissive -w -UABC_USE_STDINT_H -DPTW32_STATIC_LIB" -j$J 29 | else 30 | $CROSS make -j$J 31 | fi 32 | 33 | # -- Test the generated executables 34 | test_bin yosys 35 | test_bin yosys-abc 36 | 37 | # -- Copy the executable file 38 | cp yosys $PACKAGE_DIR/$NAME/bin/yosys$EXE 39 | cp yosys-abc $PACKAGE_DIR/$NAME/bin/yosys-abc$EXE 40 | 41 | # -- Copy the share folder to the package folder 42 | mkdir -p $PACKAGE_DIR/$NAME/share/yosys 43 | cp -r share/* $PACKAGE_DIR/$NAME/share/yosys 44 | -------------------------------------------------------------------------------- /scripts/create_package.sh: -------------------------------------------------------------------------------- 1 | # -- Create package script 2 | 3 | # -- Copy templates/package-template.json 4 | cp -r $WORK_DIR/build-data/$NAME/package-template.json $PACKAGE_DIR/$NAME/package.json 5 | 6 | if [ $ARCH == "linux_x86_64" ]; then 7 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 8 | sed -i "s/%SYSTEM%/\"linux_x86_64\"/;" $PACKAGE_DIR/$NAME/package.json 9 | fi 10 | 11 | if [ $ARCH == "linux_i686" ]; then 12 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 13 | sed -i "s/%SYSTEM%/\"linux_i686\"/;" $PACKAGE_DIR/$NAME/package.json 14 | fi 15 | 16 | if [ $ARCH == "linux_armv7l" ]; then 17 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 18 | sed -i "s/%SYSTEM%/\"linux_armv7l\"/;" $PACKAGE_DIR/$NAME/package.json 19 | fi 20 | 21 | if [ $ARCH == "linux_aarch64" ]; then 22 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 23 | sed -i "s/%SYSTEM%/\"linux_aarch64\"/;" $PACKAGE_DIR/$NAME/package.json 24 | fi 25 | 26 | if [ $ARCH == "windows_x86" ]; then 27 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 28 | sed -i "s/%SYSTEM%/\"windows\", \"windows_x86\"/;" $PACKAGE_DIR/$NAME/package.json 29 | fi 30 | 31 | if [ $ARCH == "windows_amd64" ]; then 32 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 33 | sed -i "s/%SYSTEM%/\"windows_amd64\"/;" $PACKAGE_DIR/$NAME/package.json 34 | fi 35 | 36 | if [ $ARCH == "darwin" ]; then 37 | sed -i "s/%VERSION%/\"$VERSION\"/;" $PACKAGE_DIR/$NAME/package.json 38 | sed -i "s/%SYSTEM%/\"darwin\", \"darwin_x86_64\", \"darwin_i386\"/;" $PACKAGE_DIR/$NAME/package.json 39 | fi 40 | 41 | ## --Create a tar.gz package 42 | 43 | cd $PACKAGE_DIR/$NAME 44 | 45 | tar -czvf ../$NAME-$ARCH-$VERSION.tar.gz * 46 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | # test_bin 2 | 3 | ```bash 4 | $ bash test_bin.sh iverilog 5 | Testing iverilog file 6 | ------------------ 7 | - 1. File exists 8 | - 2. File is executable 9 | - 3. File is static 10 | ------------------ 11 | All tests [PASSED] 12 | ``` 13 | 14 | ```bash 15 | $ bash test_bin.sh iverilogx 16 | Testing iverilogx file 17 | ------------------ 18 | - 1. File exists 19 | - 2. File is executable 20 | - 3. File is static [FAILED] 21 | ``` 22 | -------------------------------------------------------------------------------- /test/test_bin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Test script 4 | 5 | FILE=$1 6 | 7 | echo "" >&2 8 | echo "Testing $FILE file" >&2 9 | echo "------------------------------" >&2 10 | 11 | function test0 { 12 | if "${@:2}" 13 | then 14 | echo "$1" >&2 15 | else 16 | echo "$1 [FAILED]" >&2 17 | exit 1 18 | fi 19 | } 20 | 21 | function test1 { 22 | test0 "- 1. File exists" test -e $1 23 | } 24 | 25 | function test2 { 26 | test0 "- 2. File is executable" test -x $1 27 | } 28 | 29 | function test3 { 30 | output=$(ldd $1 2>&1 | grep "not a dynamic executable") 31 | test0 "- 3. File is static" test -n "$output" 32 | } 33 | 34 | file $FILE 35 | 36 | echo "------------------------------" >&2 37 | 38 | test1 $FILE 39 | test2 $FILE 40 | test3 $FILE 41 | 42 | echo "------------------------------" >&2 43 | echo "All tests [PASSED]" >&2 44 | echo "" >&2 45 | --------------------------------------------------------------------------------