Skip to content

Commit

Permalink
build, refactor: refactor build.cmd and CMakeLists.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
xicilion committed Jan 12, 2024
1 parent b51fda6 commit 48ef658
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 17 deletions.
40 changes: 33 additions & 7 deletions build.cmd
Expand Up @@ -3,28 +3,54 @@
set WORK_ROOT=%cd%
set SOURCE_ROOT=%~dp0

set dev=0
set build_addon=0

set i=0
for %%a in (%*) do (
if "%%a"=="dev" (
set dev=1
set build_addon=1
) else if "%%a"=="ci" (
set USE_VENDER_DIST=1
set build_addon=1
) else (
set new_args[!i!]=%%a
set /a i+=1
)
)

set args_count=0
for /f %%a in ('set new_args[ 2^>nul ^| find /c "="') do set args_count=%%a

if %dev%==0 (
set USE_VENDER_DIST=1
)

if "%USE_VENDER_DIST%" == "" (
if exist "%SOURCE_ROOT%/vender/build.cmd" (
cd /d "%SOURCE_ROOT%/vender"
call build %*%
call build %new_args%
if ERRORLEVEL 1 goto exitbuild
) else goto inform
)

cd /d "%SOURCE_ROOT%/fibjs"
call build %*%
call build %new_args%
if ERRORLEVEL 1 goto exitbuild

cd /d "%SOURCE_ROOT%/fibjs/program"
call build %*%
call build %new_args%
if ERRORLEVEL 1 goto exitbuild

cd /d "%SOURCE_ROOT%/fibjs/addons"
call build %*%
if ERRORLEVEL 1 goto exitbuild
if %build_addon%==0 (
cd /d "%SOURCE_ROOT%/fibjs/addons"
call build %new_args%
if ERRORLEVEL 1 goto exitbuild
)

cd /d "%SOURCE_ROOT%/fibjs/installer"
call build %*%
call build %new_args%
if ERRORLEVEL 1 goto exitbuild

cd /d "%SOURCE_ROOT%"
Expand Down
28 changes: 18 additions & 10 deletions fibjs/program/CMakeLists.txt
Expand Up @@ -5,15 +5,25 @@ project(${name})

include(${CMAKE_CURRENT_LIST_DIR}/../../vender/build_tools/cmake/option.cmake)

set(VENDER_PATH ${BIN_PATH})

if(NOT "$ENV{USE_VENDER_DIST}" STREQUAL "")
include(FetchContent)

execute_process(
COMMAND git describe --tags --abbrev=0
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/../../vender"
OUTPUT_VARIABLE VENDER_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
file(READ ${CMAKE_CURRENT_LIST_DIR}/../../.git/modules/vender/refs/heads/dev REF_HEAD)
file(GLOB ALL_TAGS ${CMAKE_CURRENT_LIST_DIR}/../../.git/modules/vender/refs/tags/*)
foreach(FILE ${ALL_TAGS})
file(READ ${FILE} CONTENT)
if("${CONTENT}" STREQUAL "${REF_HEAD}")
get_filename_component(VENDER_TAG ${FILE} NAME)
break()
endif()
endforeach()

if("${VENDER_TAG}" STREQUAL "")
message(FATAL_ERROR "cannot find vender tag")
endif()

include(FetchContent)

if("${BUILD_OS}" STREQUAL "Linux")
set(BUILD_TARGET "linux")
Expand All @@ -40,9 +50,7 @@ if(NOT "$ENV{USE_VENDER_DIST}" STREQUAL "")
FetchContent_Populate(vender)
endif ()

set(VENDER_PATH ${vender_SOURCE_DIR}/${BUILD_OS}_${BUILD_ARCH}_${BUILD_TYPE})
else()
set(VENDER_PATH ${BIN_PATH})
file(COPY ${vender_SOURCE_DIR}/${BUILD_OS}_${BUILD_ARCH}_${BUILD_TYPE}/ DESTINATION ${VENDER_PATH})
endif()

if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
Expand Down

0 comments on commit 48ef658

Please sign in to comment.