integrate code generation into build process (first attempt)
This commit is contained in:
parent
cfec35900c
commit
aa6b1dc0ed
@ -54,7 +54,10 @@ if (ENABLE_CLANG_TIDY)
|
||||
set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
include(CodeGen)
|
||||
gen_coredsl(TGF_C ${CMAKE_CURRENT_SOURCE_DIR}/tgfs/gen_input/TGFS.core_desc interp)
|
||||
|
||||
add_subdirectory(dbt-core)
|
||||
add_subdirectory(scc)
|
||||
add_subdirectory(tgfs)
|
||||
|
52
cmake/CodeGen.cmake
Normal file
52
cmake/CodeGen.cmake
Normal file
@ -0,0 +1,52 @@
|
||||
set(ENABLE_CODEGEN "Enable code generation for supported cores" ON)
|
||||
|
||||
#helper to setup code generation and generate outputs
|
||||
set(GENERATOR_JAR ${CMAKE_CURRENT_SOURCE_DIR}/coredsl/plugins/com.minres.coredsl.generator.standalone/target/com.minres.coredsl.generator-1.0.0-SNAPSHOT.jar)
|
||||
|
||||
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/coredsl/plugins AND NOT EXISTS ${GENERATOR_JAR})
|
||||
execute_process(
|
||||
COMMAND mvn package
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/coredsl
|
||||
RESULT_VARIABLE return_code)
|
||||
endif()
|
||||
|
||||
if(ENABLE_CODEGEN AND EXISTS ${GENERATOR_JAR})
|
||||
macro(gen_coredsl CORE_NAME INPUT_FILE BACKEND)
|
||||
|
||||
#set(CORE_NAME TGF_C)
|
||||
#set(BACKEND interp)
|
||||
#set(INPUT_FILE TGFS.core_desc)
|
||||
|
||||
set(TGFS ${CMAKE_CURRENT_SOURCE_DIR}/tgfs)
|
||||
set(INPUT_DIR ${TGFS}/gen_input)
|
||||
set(REPO_DIR ${TGFS}/gen_input/CoreDSL-Instruction-Set-Description)
|
||||
set(TMPL_DIR ${TGFS}/gen_input/templates/${BACKEND})
|
||||
|
||||
string(TOUPPER ${BACKEND} BE_UPPER)
|
||||
string(TOLOWER ${CORE_NAME} CORE_NAMEL)
|
||||
|
||||
set(JAVA_OPTS --add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED --add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED --add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED --add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED --add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED --add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED --add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED --add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED --add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED)
|
||||
set(GENERATOR java ${JAVA_OPTS} -jar ${GENERATOR_JAR})
|
||||
|
||||
list(APPEND MAPPING -m "${TMPL_DIR}/CORENAME.h.gtl:${TGFS}/incl/iss/arch/${CORE_NAMEL}.h")
|
||||
list(APPEND MAPPING -m "${TMPL_DIR}/CORENAME.cpp.gtl:${TGFS}/src/iss/${CORE_NAMEL}.cpp")
|
||||
list(APPEND MAPPING -m "${TMPL_DIR}/vm_CORENAME.cpp.gtl:${TGFS}/src/vm/interp/vm_${CORE_NAMEL}.cpp")
|
||||
|
||||
set(OUTPUT_FILES ${TGFS}/incl/iss/arch/${CORE_NAMEL}.h ${TGFS}/src/iss/${CORE_NAMEL}.cpp ${TGFS}/src/vm/interp/vm_${CORE_NAMEL}.cpp)
|
||||
|
||||
add_custom_command(
|
||||
COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${MAPPING} ${INPUT_FILE}
|
||||
DEPENDS ${INPUT_FILE} ${TMPL_DIR}/CORENAME.h.gtl ${TMPL_DIR}/CORENAME.cpp.gtl ${TMPL_DIR}/vm_CORENAME.cpp.gtl
|
||||
OUTPUT ${OUTPUT_FILES}
|
||||
COMMENT "Generating code for ${CORE_NAME}."
|
||||
USES_TERMINAL VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(${CORE_NAME}_src DEPENDS ${OUTPUT_FILES})
|
||||
|
||||
endmacro()
|
||||
else()
|
||||
macro(gen_coredsl CORE_NAME INPUT_FILE BACKEND)
|
||||
add_custom_target(${CORE_NAME}_src)
|
||||
endmacro()
|
||||
endif()
|
2
coredsl
2
coredsl
@ -1 +1 @@
|
||||
Subproject commit 516ff37f81ff201f00715b077cede2ba87b3bafb
|
||||
Subproject commit 534e530557aadcf2c188d2e8dde29f8e68ed9250
|
@ -1,7 +1,7 @@
|
||||
#!/bin/nash
|
||||
##
|
||||
|
||||
export JAVA_OPTS="--add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED --add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED --add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED --add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED --add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED --add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED --add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED --add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED --add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED"
|
||||
JAVA_OPTS="--add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED --add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED --add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED --add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED --add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED --add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED --add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED --add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED --add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED"
|
||||
|
||||
GENERATOR="java $JAVA_OPTS -jar coredsl/plugins/com.minres.coredsl.generator.standalone/target/com.minres.coredsl.generator-1.0.0-SNAPSHOT.jar"
|
||||
|
||||
@ -10,9 +10,9 @@ REPO_DIR=tgfs/gen_input/CoreDSL-Instruction-Set-Description
|
||||
TMPL_DIR=tgfs/gen_input/templates/interp
|
||||
INPUT_FILE=tgfs/gen_input/TGFS.core_desc
|
||||
MAPPING=""
|
||||
MAPPING="$MAPPING -m ${TMPL_DIR}/incl-CORENAME.h.gtl->tgfs/incl/iss/arch/tgf_c.h"
|
||||
MAPPING="$MAPPING -m ${TMPL_DIR}/src-CORENAME.cpp.gtl->tgfs/src/iss/tgf_c.cpp"
|
||||
MAPPING="$MAPPING -m ${TMPL_DIR}/vm-vm_CORENAME.cpp.gtl->tgfs/src/vm/interp/vm_tgf_c.cpp"
|
||||
MAPPING="$MAPPING -m ${TMPL_DIR}/incl-CORENAME.h.gtl:tgfs/incl/iss/arch/tgf_c.h"
|
||||
MAPPING="$MAPPING -m ${TMPL_DIR}/src-CORENAME.cpp.gtl:tgfs/src/iss/tgf_c.cpp"
|
||||
MAPPING="$MAPPING -m ${TMPL_DIR}/vm-vm_CORENAME.cpp.gtl:tgfs/src/vm/interp/vm_tgf_c.cpp"
|
||||
|
||||
[ -f coredsl/plugins/com.minres.coredsl.generator.standalone/target/com.minres.coredsl.generator-1.0.0-SNAPSHOT.jar ] || (cd coredsl; mvn package)
|
||||
|
||||
|
2
tgfs
2
tgfs
@ -1 +1 @@
|
||||
Subproject commit ab554539e37566f7ca8f06d5ddf701bdf231a110
|
||||
Subproject commit c4da47ceddc9852c9255ea34474c06c77518b856
|
Loading…
Reference in New Issue
Block a user