cmake_minimum_required(VERSION 3.2) project(elfinfo CXX ASM) 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 GnuLd Antlr4::antlr4_shared) INSTALL(TARGETS elfinfo RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib )