├── .gitignore ├── docker ├── bin │ ├── delete_containers.sh │ ├── delete_dangling_images.sh │ ├── cross-linux-arm │ ├── cross-linux-x64 │ ├── cross-linux-x86 │ ├── cross-darwin-x64 │ ├── cross-linux-arm64 │ ├── cross-linux-mips64 │ ├── cross-linux-mipsel │ ├── cross-linux-or1k │ ├── cross-windows-x64 │ ├── cross-windows-x86 │ ├── cross-linux-riscv32 │ └── cross-linux-riscv64 ├── cross-base │ ├── build.sh │ └── Dockerfile ├── cross-linux-arm │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-x64 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-x86 │ ├── build.sh │ ├── i686-linux-gnu-as.sh │ ├── i686-linux-gnu.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-darwin-x64 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-arm64 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-mips64 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-mipsel │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-or1k │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-windows-x64 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-windows-x86 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── cross-linux-riscv32 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile └── cross-linux-riscv64 │ ├── build.sh │ ├── Toolchain.cmake │ └── Dockerfile ├── test ├── README.md └── test_bin.sh ├── scripts ├── compile_verilator.sh ├── compile_nextpnr_ecp5.sh ├── compile_yosys.sh ├── compile_nextpnr_ice40.sh ├── compile_libxsvf.sh ├── create_package.sh ├── compile_ujprog.sh ├── compile_prjtrellis.sh ├── compile_icestorm.sh └── compile_iverilog.sh └── clean.sh /.gitignore: -------------------------------------------------------------------------------- 1 | _builds/ 2 | _packages/ 3 | _upstream/ 4 | -------------------------------------------------------------------------------- /docker/bin/delete_containers.sh: -------------------------------------------------------------------------------- 1 | docker rm $(docker ps -a -q) 2 | -------------------------------------------------------------------------------- /docker/cross-base/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-base:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-arm/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-arm:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-x64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-x64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-x86/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-x86:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-darwin-x64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-darwin-x64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-arm64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-arm64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-mips64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-mips64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-mipsel/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-mipsel:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-or1k/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-or1k:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-windows-x64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-windows-x64:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-windows-x86/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-windows-x86:1.0" . 2 | -------------------------------------------------------------------------------- /docker/bin/delete_dangling_images.sh: -------------------------------------------------------------------------------- 1 | docker rmi $(docker images -f "dangling=true" -q) 2 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv32/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-riscv32:1.0" . 2 | -------------------------------------------------------------------------------- /docker/cross-linux-riscv64/build.sh: -------------------------------------------------------------------------------- 1 | docker build -t="mmicko/cross-linux-riscv64:1.0" . 2 | -------------------------------------------------------------------------------- /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-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-darwin-x64: -------------------------------------------------------------------------------- 1 | docker run --user `id -u`:`id -g` --rm -v $(pwd):/work mmicko/cross-darwin-x64: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-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/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/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-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-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/) -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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-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-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-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-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-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-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-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-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-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-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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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_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_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/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_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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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_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_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 | -------------------------------------------------------------------------------- /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-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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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-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-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-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-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-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-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-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-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-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 | --------------------------------------------------------------------------------