Skip to content

Commit

Permalink
chore: add support to tcc compiler
Browse files Browse the repository at this point in the history
  • Loading branch information
RodrigoDornelles committed Oct 12, 2023
1 parent 23bbe52 commit 83975b7
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 1 deletion.
42 changes: 42 additions & 0 deletions cmake/find/tcc.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
set(TCC_PATHS "${CMAKE_SOURCE_DIR}/../tcc" "${CMAKE_SOURCE_DIR}/../tinycc" "${CMAKE_SOURCE_DIR}/vendor/tcc")

if(IGNORE_PATH)
find_program(TCC tcc PATHS ${TCC_PATHS} NO_DEFAULT_PATH)
else()
find_program(TCC tcc PATHS ${TCC_PATHS})
endif()

if(NOT DEFINED CMAKE_MAKE_PROGRAM)
set(CMAKE_MAKE_PROGRAM "make")
endif()

if(NOT TCC)
cmake_minimum_required(VERSION 3.14)
include(FetchContent)
FetchContent_Populate(
vendor_tcc
GIT_TAG "mob"
GIT_REPOSITORY "https://github.com/C-Chads/tinycc"
SOURCE_DIR "${CMAKE_SOURCE_DIR}/vendor/tcc"
SUBBUILD_DIR "${CMAKE_SOURCE_DIR}/CMakeFiles/git_tcc_cache"
BINARY_DIR "${CMAKE_SOURCE_DIR}/CMakeFiles/git_tcc_cache"
)
execute_process(
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/vendor/tcc"
COMMAND "./configure"
COMMAND_ERROR_IS_FATAL ANY
)
execute_process(
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/vendor/tcc"
COMMAND "${CMAKE_MAKE_PROGRAM}"
COMMAND_ERROR_IS_FATAL ANY
)
endif()

find_program(TCC tcc PATHS ${TCC_PATHS} REQUIRED)
get_filename_component(TCC_LIBC ${TCC} DIRECTORY)
execute_process(COMMAND ${TCC} -v
OUTPUT_VARIABLE TCC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY
)
4 changes: 4 additions & 0 deletions cmake/flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,7 @@ endif()
if (ZIG_VERSION)
add_compile_options("-DTBC_COMPILER_NICKNAME=\"zig ${ZIG_VERSION}\"")
endif()

if (TCC_VERSION)
add_compile_options("-DTBC_COMPILER_NICKNAME=\"${TCC_VERSION}\"")
endif()
4 changes: 4 additions & 0 deletions cmake/target.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ elseif(${TARGET} MATCHES "zig-(.+)-(.+)-(.+)")
include(${CMAKE_SOURCE_DIR}/cmake/force.cmake)
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/toolchain/zig.cmake")
message("-- using zig cross compiler.")
elseif(${TARGET} MATCHES "tcc")
include("${CMAKE_SOURCE_DIR}/cmake/find/tcc.cmake")
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/toolchain/tcc.cmake")
message("-- using tcc fast compiler.")
elseif(${TARGET} STREQUAL msvc)
message("-- using msvc native compiler.")
set(MSVC TRUE)
Expand Down
4 changes: 4 additions & 0 deletions cmake/toolchain/tcc.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set(CMAKE_C_COMPILER ${TCC} -L${TCC_LIBC} -I${TCC_LIBC}/include)
set(CMAKE_C_COMPILER_ID ${TCC} -L${TCC_LIBC} -I${TCC_LIBC}/include)
set(CMAKE_C_COMPILER_WORKS 1)
set(CMAKE_C_COMPILER_ID_WORKS 1)
2 changes: 1 addition & 1 deletion scripts/clean_vendor.bat
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@echo off
rmdir /s /q vendor >nul 2>&1
rmdir /s /q vendor_* >nul 2>&1

rmdir /s /q CMakeFiles/git_*_cache >nul 2>&1
1 change: 1 addition & 0 deletions scripts/clean_vendor.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
rm -Rf vendor
rm -Rf vendor_*
rm -Rf CMakeFiles/git_*_cache

0 comments on commit 83975b7

Please sign in to comment.