diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -81,6 +81,10 @@ list(APPEND TARGET_ENTRYPOINT_NAME_LIST ${entrypoint_name}) endforeach() +# We need to set up hdrgen first since other targets depend on it. +add_subdirectory(utils/LibcTableGenUtil) +add_subdirectory(utils/HdrGen) + add_subdirectory(include) add_subdirectory(config) add_subdirectory(src) diff --git a/libc/cmake/modules/LLVMLibCHeaderRules.cmake b/libc/cmake/modules/LLVMLibCHeaderRules.cmake --- a/libc/cmake/modules/LLVMLibCHeaderRules.cmake +++ b/libc/cmake/modules/LLVMLibCHeaderRules.cmake @@ -89,14 +89,15 @@ add_custom_command( OUTPUT ${out_file} - COMMAND $ -o ${out_file} --header ${ADD_GEN_HDR_GEN_HDR} + COMMAND ${LIBC_TABLEGEN_EXE} -o ${out_file} --header ${ADD_GEN_HDR_GEN_HDR} --def ${in_file} ${replacement_params} -I ${LIBC_SOURCE_DIR} ${ENTRYPOINT_NAME_LIST_ARG} ${LIBC_SOURCE_DIR}/config/${LIBC_TARGET_OS}/api.td WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${in_file} ${fq_data_files} ${td_includes} - ${LIBC_SOURCE_DIR}/config/${LIBC_TARGET_OS}/api.td libc-hdrgen + ${LIBC_SOURCE_DIR}/config/${LIBC_TARGET_OS}/api.td + ${LIBC_TABLEGEN_EXE} ${LIBC_TABLEGEN_TARGET} ) get_fq_target_name(${target_name} fq_target_name) diff --git a/libc/utils/CMakeLists.txt b/libc/utils/CMakeLists.txt --- a/libc/utils/CMakeLists.txt +++ b/libc/utils/CMakeLists.txt @@ -1,7 +1,5 @@ add_subdirectory(CPP) add_subdirectory(FPUtil) -add_subdirectory(LibcTableGenUtil) -add_subdirectory(HdrGen) add_subdirectory(MPFRWrapper) add_subdirectory(testutils) add_subdirectory(tools) diff --git a/libc/utils/HdrGen/CMakeLists.txt b/libc/utils/HdrGen/CMakeLists.txt --- a/libc/utils/HdrGen/CMakeLists.txt +++ b/libc/utils/HdrGen/CMakeLists.txt @@ -1,6 +1,6 @@ set(LLVM_LINK_COMPONENTS Support) -add_tablegen(libc-hdrgen llvm-libc +add_tablegen(libc-hdrgen LIBC Command.h Command.cpp Generator.cpp