diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..6c3b77c0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.13) + +# TODO: test, triple + +project(lcc C) + +add_subdirectory(lburg) +add_subdirectory(src) +add_subdirectory(cpp) +add_subdirectory(etc) +add_subdirectory(lib) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt new file mode 100644 index 00000000..accff2ed --- /dev/null +++ b/cpp/CMakeLists.txt @@ -0,0 +1,12 @@ +add_executable(cpp + cpp.c + lex.c + nlist.c + tokens.c + macro.c + eval.c + include.c + hideset.c + getopt.c + unix.c + ) \ No newline at end of file diff --git a/etc/CMakeLists.txt b/etc/CMakeLists.txt new file mode 100644 index 00000000..aa4d4aad --- /dev/null +++ b/etc/CMakeLists.txt @@ -0,0 +1,18 @@ +add_executable(lcc + lcc.c) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + target_sources(lcc PRIVATE win32.c) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_sources(lcc PRIVATE linux.c) +endif() + +add_executable(bprint + bprint.c) + +target_link_libraries(bprint PRIVATE profio) + +add_executable(ops EXCLUDE_FROM_ALL + ops.c) + +target_link_libraries(ops PRIVATE c) \ No newline at end of file diff --git a/lburg/CMakeLists.txt b/lburg/CMakeLists.txt new file mode 100644 index 00000000..25b0ae1d --- /dev/null +++ b/lburg/CMakeLists.txt @@ -0,0 +1,14 @@ + +add_executable(lburg + lburg.c + gram.c) + +target_include_directories(lburg PRIVATE lburg) + +# lburg function for generation of c files from md files +function(lburg md_file c_file) + add_custom_command(OUTPUT ${c_file} + DEPENDS ${md_file} + COMMAND lburg ${md_file} ${c_file} + VERBATIM) +endfunction() \ No newline at end of file diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 00000000..3c312892 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(liblcc STATIC + assert.c + yynull.c + bbexit.c) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..21efef97 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,56 @@ +add_executable(rcc + main.c) + +target_link_libraries(rcc PRIVATE librcc) + +lburg(${CMAKE_CURRENT_SOURCE_DIR}/dagcheck.md dagcheck.c) +lburg(${CMAKE_CURRENT_SOURCE_DIR}/alpha.md alpha.c ) +lburg(${CMAKE_CURRENT_SOURCE_DIR}/mips.md mips.c ) +lburg(${CMAKE_CURRENT_SOURCE_DIR}/sparc.md sparc.c ) +lburg(${CMAKE_CURRENT_SOURCE_DIR}/x86.md x86.c ) +lburg(${CMAKE_CURRENT_SOURCE_DIR}/x86linux.md x86linux.c) + +add_library(librcc STATIC + alloc.c + bind.c + dag.c + dagcheck.c + decl.c + enode.c + error.c + expr.c + event.c + init.c + inits.c + input.c + lex.c + list.c + main.c + output.c + prof.c + profio.c + simp.c + stmt.c + string.c + sym.c + trace.c + tree.c + types.c + null.c + symbolic.c + gen.c + bytecode.c + alpha.c + mips.c + sparc.c + stab.c + x86.c + x86linux.c) + +target_include_directories(librcc PUBLIC .) + +add_library(c INTERFACE) +target_include_directories(c INTERFACE .) + +add_library(profio INTERFACE) +target_include_directories(profio INTERFACE .) \ No newline at end of file