From 8fdcf6b00313829230a61da4dfe210e5f82b371e Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 9 Jul 2016 23:13:07 +0200 Subject: o Adding support for reading section sizes from ld script files. --- cmake/elfinfo/CMakeLists.txt | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'cmake/elfinfo/CMakeLists.txt') 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 -) + ) -- cgit v1.2.3