Commit 511d537b by lvzhengyang

re-organize the project fir structure

parent 9150c0e1
......@@ -87,7 +87,7 @@ function(swig_lib)
# These includes are always needed.
target_include_directories(${ARG_NAME}
PRIVATE
${MINIEDA_HOME}/include
${MINIEDA_HOME}/src/main/include
)
if (${ARG_LANGUAGE} STREQUAL tcl)
......
......@@ -46,7 +46,7 @@ target_compile_features(minieda PUBLIC cxx_std_17)
target_include_directories(minieda
PUBLIC
${MINIEDA_HOME}/include
${MINIEDA_HOME}/src/main/include
${MINIEDA_HOME}/pkgs/include
${MINIEDA_HOME}/pkgs/boost_1_78_0
)
......@@ -87,7 +87,7 @@ install(TARGETS minieda DESTINATION bin)
add_custom_target(minieda_tags etags -o TAGS
${MINIEDA_SOURCE}
${MINIEDA_HOME}/include/eda/*.hh
${MINIEDA_HOME}/main/include/eda/*.hh
WORKING_DIRECTORY ${MINIEDA_HOME}/src
DEPENDS ${MINIEDA_SOURCE} ${MINIEDA_HEADERS} ${MINIEDA_TCL_FILES}
)
# include cmake functions defined in the path
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/src/cmake")
include("swig_lib")
# paths for submodule
set(odb_HOME ${PROJECT_SOURCE_DIR}/src/odb)
# main program source
set(MINIEDA_SOURCE
MiniEda.cc
Main.cc
)
# Swig Config
# swig_lib(NAME minieda_swig
# NAMESPACE eda
# I_FILE MiniEda.i
# SCRIPTS MiniEda.tcl
# )
set_source_files_properties(MiniEda.i PROPERTIES CPLUSPLUS ON)
set(LANGUAGE_OPTIONS -namespace -prefix eda)
set_property(SOURCE MiniEda.i
PROPERTY COMPILE_OPTIONS ${LANGUAGE_OPTIONS}
-Werror
-w317,325,378,401,402,467,472,503,509)
set_property(SOURCE ${ARG_I_FILE}
PROPERTY SWIG_MODULE_NAME ${ARG_NAME})
set_property(SOURCE ${ARG_I_FILE}
PROPERTY USE_SWIG_DEPENDENCIES TRUE)
swig_add_library(minieda_swig
LANGUAGE tcl
TYPE STATIC
SOURCES MiniEda.i
)
get_target_property(GEN_SRCS minieda_swig SOURCES)
foreach(GEN_SRC ${GEN_SRCS})
set_source_files_properties(${GEN_SRC}
PROPERTIES
COMPILE_OPTIONS "-Wno-cast-qual;-Wno-missing-braces"
)
endforeach()
target_include_directories(minieda_swig
PRIVATE
${MINIEDA_HOME}/include
${TCL_INCLUDE_PATH}
)
set(MINIEDA_INIT ${CMAKE_CURRENT_BINARY_DIR}/minieda_swig-tclInitVar.cc)
set(MINIEDA_TCL_FILES MiniEda.tcl Util.tcl)
add_custom_command(OUTPUT ${MINIEDA_INIT}
COMMAND ${MINIEDA_HOME}/src/cmake/etc/TclEncode.tcl ${MINIEDA_INIT} minieda_swig_tcl_inits ${MINIEDA_TCL_FILES}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${MINIEDA_TCL_FILES} ${MINIEDA_HOME}/src/cmake/etc/TclEncode.tcl
)
target_sources(minieda_swig
PRIVATE
${MINIEDA_INIT}
)
target_link_libraries(minieda_swig
PRIVATE
utl
odb
)
add_executable(minieda
${MINIEDA_SOURCE}
)
target_compile_options(minieda
PRIVATE
-Wextra -pedantic -Wcast-qual
)
set_target_properties(minieda PROPERTIES
# Disable compiler specific extensions like gnu++11.
CXX_EXTENSIONS OFF
# Export symbols for stack trace printing
ENABLE_EXPORTS ON
)
target_compile_features(minieda PUBLIC cxx_std_17)
target_include_directories(minieda
PUBLIC
${MINIEDA_HOME}/include
${MINIEDA_HOME}/pkgs/include
${MINIEDA_HOME}/pkgs/boost_1_78_0
)
# Link Libraries
target_link_libraries(minieda
minieda_swig
utl
odb
${CMAKE_THREAD_LIBS_INIT}
${TCL_LIBRARY}
)
# tclReadline
if (TCL_READLINE_LIBRARY AND TCL_READLINE_H)
target_compile_definitions(minieda PRIVATE ENABLE_READLINE)
target_link_libraries(minieda ${TCL_READLINE_LIBRARY})
target_include_directories(minieda PRIVATE ${TCL_READLINE_H})
message(STATUS "TCL readline enabled")
else()
message(STATUS "TCL readline disabled")
endif()
if (BUILD_TCLX AND TCLX_LIBRARY AND TCLX_H)
target_compile_definitions(minieda PRIVATE ENABLE_TCLX)
target_link_libraries(minieda ${TCLX_LIBRARY})
target_include_directories(minieda PRIVATE ${TCLX_H})
message(STATUS "Tcl Extended enabled")
else()
message(STATUS "Tcl Extended disabled")
endif()
if (ZLIB_FOUND)
target_link_libraries(minieda ${ZLIB_LIBRARIES})
endif()
install(TARGETS minieda DESTINATION bin)
add_custom_target(minieda_tags etags -o TAGS
${MINIEDA_SOURCE}
${MINIEDA_HOME}/include/eda/*.hh
WORKING_DIRECTORY ${MINIEDA_HOME}/src
DEPENDS ${MINIEDA_SOURCE} ${MINIEDA_HEADERS} ${MINIEDA_TCL_FILES}
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment