summaryrefslogtreecommitdiff
path: root/cmake/elfinfo/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/elfinfo/CMakeLists.txt')
-rw-r--r--cmake/elfinfo/CMakeLists.txt38
1 files changed, 35 insertions, 3 deletions
diff --git a/cmake/elfinfo/CMakeLists.txt b/cmake/elfinfo/CMakeLists.txt
index 82efcdf..5d246c3 100644
--- a/cmake/elfinfo/CMakeLists.txt
+++ b/cmake/elfinfo/CMakeLists.txt
@@ -2,12 +2,44 @@ cmake_minimum_required(VERSION 3.2)
project(elfinfo CXX ASM)
-add_executable(elfinfo elfinfo.cpp)
+if (NOT IS_DIRECTORY "${CMAKE_SOURCE_DIR}/antlr4")
+ message(STATUS "Checking out Antlr...")
+ execute_process(
+ COMMAND git clone https://github.com/DanMcLaughlin/antlr4
+ COMMAND cd antlr4 && mvn clean install -DskipTests
+ COMMAND ${CMAKE_COMMAND} -E make_directory antlr4-build
+ COMMAND cd antlr4-build && cmake ../antlr4 -DCMAKE_INSTALL_PREFIX=../antlr4-install -DCMAKE_INSTALL_PREFIX=../antlr4-install -DCMAKE_BUILD_TYPE=Release
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ )
+endif ()
+
+#include("${CMAKE_BINARY_DIR}/antlr4/runtime/Cpp/CMakeLists.txt")
+
+#get_filename_component(ANTLR_INSTALL_DIR "${CMAKE_BINARY_DIR}" ABSOLUTE)
+
+set(ANTLR_INSTALL_DIR "${CMAKE_SOURCE_DIR}/antlr4-install")
+
+# include(ExternalProject)
+# ExternalProject_Add(antlr-project
+# SOURCE_DIR "antlr4/runtime/Cpp"
+# DOWNLOAD_COMMAND ""
+# UPDATE_COMMAND ""
+# CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${ANTLR_INSTALL_DIR} -DCMAKE_BUILD_TYPE=Release)
+
+include("${ANTLR_INSTALL_DIR}/lib/cmake/Antlr4/Antlr4TargetsShared.cmake")
+include("${ANTLR_INSTALL_DIR}/lib/cmake/Antlr4/Antlr4Helpers.cmake")
+set(ANTLR4_JAR "${CMAKE_SOURCE_DIR}/antlr4/tool/target/antlr4-4.5.4-SNAPSHOT.jar")
+
+#antlr4_add_lexer(GnuLdLexer.g4)
+#antlr4_add_parser(GnuLdParser.g4)
+antlr4_add_target(TARGET GnuLd STATIC LEXER GnuLdLexer.g4 PARSER GnuLdParser.g4)
+
+add_executable(elfinfo elfinfo.cpp ld.cpp ld.h)
target_compile_options(elfinfo PUBLIC "--std=c++14")
-target_link_libraries(elfinfo elf)
+target_link_libraries(elfinfo elf GnuLd Antlr4::antlr4_shared)
INSTALL(TARGETS elfinfo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
-)
+ )