aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt67
1 files changed, 67 insertions, 0 deletions
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)