Add cmake-based header generation

This commit is contained in:
Alex Beregszaszi 2022-06-27 00:42:09 +02:00 committed by Nikola Matic
parent 4780613cd9
commit 67e82d8065
3 changed files with 49 additions and 0 deletions

21
stdlib/CMakeLists.txt Normal file
View File

@ -0,0 +1,21 @@
# This will re-generate the headers if any file within src was modified.
set_directory_properties(PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/stdlib/src/)
set(STDLIB precompiles)
set(GENERATED_STDLIB_HEADERS)
foreach(src IN LISTS STDLIB)
set(STDLIB_FILE ${CMAKE_SOURCE_DIR}/stdlib/src/${src}.sol)
file(READ ${STDLIB_FILE} STDLIB_FILE_CONTENT HEX)
string(REGEX MATCHALL ".." STDLIB_FILE_CONTENT "${STDLIB_FILE_CONTENT}")
string(REGEX REPLACE ";" ",\n\t0x" STDLIB_FILE_CONTENT "${STDLIB_FILE_CONTENT}")
set(STDLIB_FILE_CONTENT "0x${STDLIB_FILE_CONTENT}")
set(STDLIB_FILE_NAME ${src})
configure_file("${CMAKE_SOURCE_DIR}/stdlib/stdlib.src.h.in" ${CMAKE_BINARY_DIR}/include/stdlib/${src}.h @ONLY)
list(APPEND GENERATED_STDLIB_HEADERS ${CMAKE_BINARY_DIR}/include/stdlib/${src}.h)
endforeach()
configure_file("${CMAKE_SOURCE_DIR}/stdlib/stdlib.h.in" ${CMAKE_BINARY_DIR}/include/stdlib.h @ONLY)
#add_library(stdlib
# ${GENERATED_STDLIB_HEADERS}
#)

15
stdlib/stdlib.h.in Normal file
View File

@ -0,0 +1,15 @@
#pragma once
#include <map>
#include <string>
#include "stdlib/precompiles.h"
namespace solidity::stdlib
{
static std::map<std::string, std::string> sources = {
{ "std/precompiles.sol", precompiles },
};
} // namespace solidity::stdlib

13
stdlib/stdlib.src.h.in Normal file
View File

@ -0,0 +1,13 @@
// The generation of this file is defined in stdlib/CMakeLists.txt.
// This file was generated by using the content of stdlib/src/@STDLIB_FILE_NAME@.sol.
#pragma once
namespace solidity::stdlib
{
static char const @STDLIB_FILE_NAME@[] = {
@STDLIB_FILE_CONTENT@, 0
};
} // namespace solidity::stdlib