CMake: delete subdir CMakeLists; use one CMakeList for smocore
This commit is contained in:
@@ -65,9 +65,6 @@ add_subdirectory(wilzorApis)
|
|||||||
add_executable(salmanoff main.cpp)
|
add_executable(salmanoff main.cpp)
|
||||||
target_link_libraries(salmanoff
|
target_link_libraries(salmanoff
|
||||||
smocore
|
smocore
|
||||||
marionette
|
|
||||||
deviceManager
|
|
||||||
senseApis
|
|
||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
${DL_LIBRARY}
|
${DL_LIBRARY}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
# Generic Flex/Yacc Generation Functions
|
||||||
|
# This file provides reusable functions for generating C++ files from Flex/Bison sources
|
||||||
|
|
||||||
|
# Function to generate Flex lexer files
|
||||||
|
# Usage: generate_flex_lexer(OUTPUT_VAR INPUT_FILE [PREFIX] [HEADER_DEPENDENCY])
|
||||||
|
# OUTPUT_VAR: Variable name to store the output file path
|
||||||
|
# INPUT_FILE: Path to the .ll input file
|
||||||
|
# PREFIX: Optional prefix for the generated files (defaults to basename of input file)
|
||||||
|
# HEADER_DEPENDENCY: Optional header file that the lexer depends on (e.g., from Bison)
|
||||||
|
function(generate_flex_lexer OUTPUT_VAR INPUT_FILE)
|
||||||
|
get_filename_component(INPUT_BASENAME ${INPUT_FILE} NAME_WE)
|
||||||
|
|
||||||
|
if(ARGC GREATER 2)
|
||||||
|
set(PREFIX ${ARGV2})
|
||||||
|
else()
|
||||||
|
set(PREFIX ${INPUT_BASENAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(LEX_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}.cc)
|
||||||
|
set(LEX_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}.hh)
|
||||||
|
|
||||||
|
# Set up dependencies
|
||||||
|
set(DEPENDENCIES ${INPUT_FILE})
|
||||||
|
if(ARGC GREATER 3)
|
||||||
|
list(APPEND DEPENDENCIES ${ARGV3})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${LEX_OUTPUT}
|
||||||
|
DEPENDS ${DEPENDENCIES}
|
||||||
|
COMMAND ${FLEX_EXECUTABLE} --header-file=${LEX_HEADER} -o ${LEX_OUTPUT} ${INPUT_FILE}
|
||||||
|
COMMENT "Generating ${PREFIX}.cc from ${INPUT_FILE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(${OUTPUT_VAR} ${LEX_OUTPUT} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Function to generate Bison parser files
|
||||||
|
# Usage: generate_bison_parser(OUTPUT_VAR HEADER_VAR INPUT_FILE [PREFIX])
|
||||||
|
# OUTPUT_VAR: Variable name to store the output .cc file path
|
||||||
|
# HEADER_VAR: Variable name to store the output .hh file path
|
||||||
|
# INPUT_FILE: Path to the .yy input file
|
||||||
|
# PREFIX: Optional prefix for the generated files (defaults to basename of input file)
|
||||||
|
function(generate_bison_parser OUTPUT_VAR HEADER_VAR INPUT_FILE)
|
||||||
|
get_filename_component(INPUT_BASENAME ${INPUT_FILE} NAME_WE)
|
||||||
|
|
||||||
|
if(ARGC GREATER 3)
|
||||||
|
set(PREFIX ${ARGV3})
|
||||||
|
else()
|
||||||
|
set(PREFIX ${INPUT_BASENAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(YACC_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}.cc)
|
||||||
|
set(YACC_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}.hh)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${YACC_OUTPUT} ${YACC_HEADER}
|
||||||
|
DEPENDS ${INPUT_FILE}
|
||||||
|
COMMAND ${BISON_EXECUTABLE} -p ${PREFIX} --header=${YACC_HEADER} -o ${YACC_OUTPUT} ${INPUT_FILE}
|
||||||
|
COMMENT "Generating ${PREFIX}.cc and ${PREFIX}.hh from ${INPUT_FILE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(${OUTPUT_VAR} ${YACC_OUTPUT} PARENT_SCOPE)
|
||||||
|
set(${HEADER_VAR} ${YACC_HEADER} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Generate device attachment parser files using the generic functions
|
||||||
|
# Generate Bison parser first (creates the header file)
|
||||||
|
generate_bison_parser(YACC_OUTPUT YACC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/deviceManager/deviceAttachmentPipeSpecp.yy deviceAttachmentPipeSpecp)
|
||||||
|
|
||||||
|
# Generate Flex lexer with dependency on Bison header
|
||||||
|
generate_flex_lexer(LEX_OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/deviceManager/deviceAttachmentPipeSpecl.ll deviceAttachmentPipeSpecl ${YACC_HEADER})
|
||||||
+28
-8
@@ -1,22 +1,42 @@
|
|||||||
# Core library
|
# Include Flex/Bison generation rules
|
||||||
|
include(${CMAKE_SOURCE_DIR}/cmake/flexYacc.cmake)
|
||||||
|
|
||||||
|
# Consolidated smocore library with all source files
|
||||||
add_library(smocore STATIC
|
add_library(smocore STATIC
|
||||||
|
# Core files
|
||||||
mind.cpp
|
mind.cpp
|
||||||
opts.cpp
|
opts.cpp
|
||||||
componentThread.cpp
|
componentThread.cpp
|
||||||
component.cpp
|
component.cpp
|
||||||
|
painfulQuale.cpp
|
||||||
|
|
||||||
|
# Body
|
||||||
body/body.cpp
|
body/body.cpp
|
||||||
|
|
||||||
|
# Marionette
|
||||||
|
marionette/main.cpp
|
||||||
|
marionette/salmanoff.cpp
|
||||||
|
marionette/lifetime.cpp
|
||||||
|
marionette/qualeEvent.cpp
|
||||||
|
|
||||||
|
# DeviceManager
|
||||||
|
deviceManager/deviceManager.cpp
|
||||||
|
deviceManager/deviceAttachmentPipeSpecParser.cpp
|
||||||
|
${LEX_OUTPUT}
|
||||||
|
${YACC_OUTPUT}
|
||||||
|
|
||||||
|
# SenseApis
|
||||||
|
senseApis/senseApiManager.cpp
|
||||||
|
|
||||||
|
# MindManager
|
||||||
|
mindManager/mindManager.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(smocore PUBLIC
|
target_include_directories(smocore PUBLIC
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Link against pthread for CPU affinity functions
|
# Link against pthread for CPU affinity functions
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
target_link_libraries(smocore
|
target_link_libraries(smocore PRIVATE Threads::Threads)
|
||||||
PRIVATE Threads::Threads senseApis mindManager)
|
|
||||||
|
|
||||||
add_subdirectory(marionette)
|
|
||||||
add_subdirectory(deviceManager)
|
|
||||||
add_subdirectory(senseApis)
|
|
||||||
add_subdirectory(mindManager)
|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
# Flex/Bison generated files
|
|
||||||
set(LEX_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/deviceAttachmentPipeSpecl.cc)
|
|
||||||
set(YACC_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/deviceAttachmentPipeSpecp.cc)
|
|
||||||
set(YACC_HEADER ${CMAKE_CURRENT_BINARY_DIR}/deviceAttachmentPipeSpecp.hh)
|
|
||||||
|
|
||||||
# Generate Flex/Bison files using custom commands
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${LEX_OUTPUT}
|
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/deviceAttachmentPipeSpecl.ll ${YACC_HEADER}
|
|
||||||
COMMAND ${FLEX_EXECUTABLE} --header-file=${CMAKE_CURRENT_BINARY_DIR}/deviceAttachmentPipeSpecl.hh -o ${LEX_OUTPUT} ${CMAKE_CURRENT_SOURCE_DIR}/deviceAttachmentPipeSpecl.ll
|
|
||||||
COMMENT "Generating deviceAttachmentPipeSpecl.cc from deviceAttachmentPipeSpecl.ll"
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${YACC_OUTPUT} ${YACC_HEADER}
|
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/deviceAttachmentPipeSpecp.yy
|
|
||||||
COMMAND ${BISON_EXECUTABLE} -p deviceAttachmentPipeSpecp --header=${YACC_HEADER} -o ${YACC_OUTPUT} ${CMAKE_CURRENT_SOURCE_DIR}/deviceAttachmentPipeSpecp.yy
|
|
||||||
COMMENT "Generating deviceAttachmentPipeSpecp.cc and deviceAttachmentPipeSpecp.hh from deviceAttachmentPipeSpecp.yy"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Device manager library
|
|
||||||
add_library(deviceManager STATIC
|
|
||||||
deviceManager.cpp
|
|
||||||
deviceAttachmentPipeSpecParser.cpp
|
|
||||||
${LEX_OUTPUT}
|
|
||||||
${YACC_OUTPUT}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(deviceManager PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
add_library(marionette STATIC
|
|
||||||
main.cpp
|
|
||||||
salmanoff.cpp
|
|
||||||
lifetime.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(marionette
|
|
||||||
smocore
|
|
||||||
mindManager
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(marionette PUBLIC
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../include
|
|
||||||
)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
add_library(mindManager STATIC
|
|
||||||
mindManager.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(mindManager PUBLIC
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../include
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(mindManager
|
|
||||||
smocore
|
|
||||||
)
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
add_library(senseApis STATIC
|
|
||||||
senseApiManager.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(senseApis PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
||||||
Reference in New Issue
Block a user