Skip to content

Commit

Permalink
build, feat: support cross build for android/linux.
Browse files Browse the repository at this point in the history
  • Loading branch information
xicilion committed Nov 29, 2022
1 parent a2f9ec4 commit fa89e88
Show file tree
Hide file tree
Showing 14 changed files with 80 additions and 19 deletions.
18 changes: 11 additions & 7 deletions build
Expand Up @@ -19,25 +19,29 @@ SOURCE_ROOT="`( cd \"$SOURCE_ROOT\" && pwd )`"

. ${SOURCE_ROOT}/vender/build_tools/scripts/inst_deps.sh

args="$@"

for i in "$@"
do
case $i in
amd64|arm64) BUILD_ARCH=$i
i386|amd64|arm|arm64|armv6|mips|mips64|ppc|ppc64) BUILD_ARCH=$i
;;
alpine) BUILD_ALPINE="alpine"
linux|alpine|android) BUILD_OS=$i
args="${args/${BUILD_OS}/""}"
;;
esac
done

if [[ $BUILD_ALPINE == "alpine" ]]; then
if [[ $BUILD_ARCH == "" ]]; then
if [[ $BUILD_OS ]]; then
if [[ "${BUILD_ARCH}" == "" ]]; then
BUILD_ARCH=amd64
fi

args="$@"
args="${args/alpine/""}"
if [[ "${args}" == "" ]]; then
args="amd64"
fi

docker run --rm -v ${SOURCE_ROOT}:/fibjs fibjs/alpine-build-env:${BUILD_ARCH} bash -c "cd /fibjs; bash build ${args}"
docker run --rm -v ${SOURCE_ROOT}:/fibjs fibjs/${BUILD_OS}-build-env:${BUILD_ARCH} bash -c "cd /fibjs; bash build ${args}"
exit $?
fi

Expand Down
4 changes: 4 additions & 0 deletions dockerfiles/android-build-env.amd64
@@ -0,0 +1,4 @@
FROM dockcross/android-x86_64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"
4 changes: 4 additions & 0 deletions dockerfiles/android-build-env.arm64
@@ -0,0 +1,4 @@
FROM dockcross/android-arm64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"
14 changes: 12 additions & 2 deletions dockerfiles/build-image.sh
@@ -1,5 +1,15 @@
docker build --rm -f alpine-build-env.arm64 -t fibjs/alpine-build-env:arm64 .
docker build --rm -f android-build-env.amd64 -t fibjs/android-build-env:amd64 .
docker build --rm -f android-build-env.arm64 -t fibjs/android-build-env:arm64 .

docker build --rm -f linux-build-env.amd64 -t fibjs/linux-build-env:amd64 .
docker build --rm -f linux-build-env.i386 -t fibjs/linux-build-env:i386 .
docker build --rm -f linux-build-env.arm64 -t fibjs/linux-build-env:arm64 .
docker build --rm -f linux-build-env.arm -t fibjs/linux-build-env:arm .
docker build --rm -f linux-build-env.mips64 -t fibjs/linux-build-env:mips64 .
docker build --rm -f linux-build-env.mips -t fibjs/linux-build-env:mips .

docker build --rm -f alpine-build-env.amd64 -t fibjs/alpine-build-env:amd64 .
docker build --rm -f alpine-build-env.arm64 -t fibjs/alpine-build-env:arm64 .

docker build --rm -f alpine-test-env.amd64 -t fibjs/alpine-test-env:amd64 .
docker build --rm -f alpine-test-env.arm64 -t fibjs/alpine-test-env:arm64 .
docker build --rm -f alpine-test-env.amd64 -t fibjs/alpine-test-env:amd64 .
14 changes: 14 additions & 0 deletions dockerfiles/linux-build-env.amd64
@@ -0,0 +1,14 @@
FROM ubuntu:20.04

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"

RUN apt-get update
RUN apt-get install make -y
RUN apt-get install cmake -y
RUN apt-get install ccache -y
RUN apt-get install git -y
RUN apt-get install libx11-dev -y

RUN apt-get install clang -y
RUN apt-get install g++ -y
6 changes: 6 additions & 0 deletions dockerfiles/linux-build-env.arm
@@ -0,0 +1,6 @@
FROM fibjs/linux-build-env:amd64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"

RUN apt-get install g++-arm-linux-gnueabihf -y
6 changes: 6 additions & 0 deletions dockerfiles/linux-build-env.arm64
@@ -0,0 +1,6 @@
FROM fibjs/linux-build-env:amd64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"

RUN apt-get install g++-aarch64-linux-gnu -y
6 changes: 6 additions & 0 deletions dockerfiles/linux-build-env.i386
@@ -0,0 +1,6 @@
FROM fibjs/linux-build-env:amd64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"

RUN apt-get install g++-i686-linux-gnu -y
6 changes: 6 additions & 0 deletions dockerfiles/linux-build-env.mips
@@ -0,0 +1,6 @@
FROM fibjs/linux-build-env:amd64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"

RUN apt-get install g++-mips-linux-gnu -y
6 changes: 6 additions & 0 deletions dockerfiles/linux-build-env.mips64
@@ -0,0 +1,6 @@
FROM fibjs/linux-build-env:amd64

LABEL AUTHOR="xicilion"
LABEL AUTHOR_EMAIL="lion@9465.net"

RUN apt-get install g++-mips64-linux-gnuabi64 -y
4 changes: 1 addition & 3 deletions fibjs/build.cmake
Expand Up @@ -8,7 +8,5 @@ if(NOT "${CLEAN_BUILD}" STREQUAL "true")
set(WORK_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/..")
endif()

set(OUT_PATH "${WORK_ROOT}/out/${CMAKE_HOST_SYSTEM_NAME}_${BUILD_ARCH}_${BUILD_TYPE}")
set(BIN_PATH "${WORK_ROOT}/bin/${CMAKE_HOST_SYSTEM_NAME}_${BUILD_ARCH}_${BUILD_TYPE}")
build("${CMAKE_CURRENT_SOURCE_DIR}" "${OUT_PATH}/fibjs" ${BIN_PATH})
build("${CMAKE_CURRENT_SOURCE_DIR}" "${WORK_ROOT}" "fibjs")
endif()
5 changes: 2 additions & 3 deletions fibjs/installer/build.cmake
Expand Up @@ -8,13 +8,12 @@ if(NOT "${CLEAN_BUILD}" STREQUAL "true")
set(WORK_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../..")
endif()

set(BIN_PATH "${WORK_ROOT}/bin/${CMAKE_HOST_SYSTEM_NAME}_${BUILD_ARCH}_${BUILD_TYPE}")
set(BIN_PATH "${WORK_ROOT}/bin/${DIST_DIRNAME}")

if(${BUILD_TYPE} STREQUAL "release")
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
execute_process(WORKING_DIRECTORY ${BIN_PATH} COMMAND cscript ${CMAKE_CURRENT_SOURCE_DIR}/gen_install.vbs)
set(OUT_PATH "${WORK_ROOT}/out/${CMAKE_HOST_SYSTEM_NAME}_${BUILD_ARCH}_${BUILD_TYPE}")
build("${CMAKE_CURRENT_SOURCE_DIR}" "${OUT_PATH}/installer" $BIN_PATH)
build("${CMAKE_CURRENT_SOURCE_DIR}" "${WORK_ROOT}" "installer")

execute_process(COMMAND dumpbin /dependents ${BIN_PATH}/fibjs.exe)
else()
Expand Down
4 changes: 1 addition & 3 deletions fibjs/program/build.cmake
Expand Up @@ -8,7 +8,5 @@ if(NOT "${CLEAN_BUILD}" STREQUAL "true")
set(WORK_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../..")
endif()

set(OUT_PATH "${WORK_ROOT}/out/${CMAKE_HOST_SYSTEM_NAME}_${BUILD_ARCH}_${BUILD_TYPE}")
set(BIN_PATH "${WORK_ROOT}/bin/${CMAKE_HOST_SYSTEM_NAME}_${BUILD_ARCH}_${BUILD_TYPE}")
build("${CMAKE_CURRENT_SOURCE_DIR}" "${OUT_PATH}/program" ${BIN_PATH})
build("${CMAKE_CURRENT_SOURCE_DIR}" "${WORK_ROOT}" "program")
endif()
2 changes: 1 addition & 1 deletion vender

0 comments on commit fa89e88

Please sign in to comment.