From 128e53d220d97225803d61d86f8e43439563181d Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 26 Jul 2016 00:22:55 +0200 Subject: WIP: kicad_gen is a util to generate schematic.h files from KiCAD netlist files. Current code contains a lexer and parser for KiCAD's netlist files and code to build a tree of the netlist which can be used for generation. Contains CMake code for integrating the generation into CMake too. --- CMakeLists.txt | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 CMakeLists.txt (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..914bfb9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,67 @@ +cmake_minimum_required(VERSION 3.5) +project(kicad_utils) + +find_package(Antlr4) +antlr4_add_target(TARGET KicadNet LEXER KicadNetLexer.g4 PARSER KicadNetParser.g4 STATIC) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + +set(SOURCE_FILES main.cpp kicad.cpp include/trygvis/kicad.h) +add_executable(kicad_utils ${SOURCE_FILES}) +target_include_directories(kicad_utils PUBLIC include) +target_link_libraries(kicad_utils KicadNet Antlr4::antlr4_shared) +target_compile_options(kicad_utils PUBLIC --std=c++14) +target_compile_options(kicad_utils PUBLIC -Wall -Wextra) + +add_custom_target(all_examples) + +function(kicad_gen) + set(options IN_SOURCE) + set(oneValueArgs TARGET NET REF OUTPUT_DIR) + + cmake_parse_arguments(kicad_gen "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if (NOT kicad_gen_TARGET) + message(FATAL_ERROR "TARGET is required") + endif () + set(TARGET "${kicad_gen_TARGET}") + + if (NOT kicad_gen_NET) + message(FATAL_ERROR "NET is required") + endif () + set(NET "${CMAKE_CURRENT_SOURCE_DIR}/${kicad_gen_NET}") + + if (NOT kicad_gen_REF) + message(FATAL_ERROR "REF is required") + endif () + set(REF "${kicad_gen_REF}") + + if (kicad_gen_OUTPUT_DIR) + if (kicad_gen_IN_SOURCE) + message(FATAL_ERROR "IN_SOURCE can't be used if OUTPUT_DIR is used") + endif () + + set(OUTPUT_DIR "${kicad_gen_OUTPUT_DIR}") + else () + message("IN_SOURCE=${kicad_gen_IN_SOURCE}") + if (kicad_gen_IN_SOURCE) + set(OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + else () + set(OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") + endif () + endif () + + set(OUTPUT_FILE "${OUTPUT_DIR}/${TARGET}") + message("OUTPUT_FILE=${OUTPUT_FILE}") + message("NET=${NET}") + + add_custom_command(OUTPUT ${OUTPUT_FILE} + COMMAND kicad_utils -f ${NET} -r ${REF} > kicad-${TARGET}.tmp + COMMAND cmake -E make_directory -p ${OUTPUT_DIR} + COMMAND cmake -E rename kicad-${TARGET}.tmp ${OUTPUT_FILE} + MAIN_DEPENDENCY ${NET} + DEPENDS kicad_utils + COMMENT "Generating ${TARGET}") +endfunction() + +add_subdirectory(examples) -- cgit v1.2.3