diff --git a/CMakeLists.txt b/CMakeLists.txt index c076d5ef4..8a85d9667 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.13) project(yosys LANGUAGES CXX C) set(YOSYS_VER "0.50+1") +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) + include(CheckCXXCompilerFlag) set(CMAKE_CXX_STANDARD 17) @@ -15,6 +17,10 @@ set(CMAKE_C_EXTENSIONS OFF) find_package(FLEX 2.6 REQUIRED) find_package(BISON 3.0 REQUIRED) find_package(Python3 3.5 REQUIRED COMPONENTS Interpreter) +find_package(ZLIB REQUIRED) +find_package(Readline REQUIRED) +#find_package(Editline REQUIRED) +find_package(TCL 8.6 REQUIRED) add_executable(yosys) #target_include_directories(yosys PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) @@ -22,6 +28,11 @@ add_executable(yosys) #target_compile_definitions(yosys PRIVATE _YOSYS_) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) add_compile_definitions(_YOSYS_) +add_compile_definitions(YOSYS_ENABLE_READLINE) +#add_compile_definitions(YOSYS_ENABLE_EDITLINE) + +add_compile_definitions(YOSYS_ENABLE_TCL) +target_include_directories(yosys PRIVATE ${TCL_INCLUDE_PATH}) add_subdirectory(kernel) add_subdirectory(libs) @@ -89,4 +100,7 @@ add_subdirectory(techlibs/quicklogic) add_subdirectory(techlibs/sf2) add_subdirectory(techlibs/xilinx) -target_link_libraries(yosys PRIVATE z) +target_link_libraries(yosys PRIVATE ZLIB::ZLIB) +target_link_libraries(yosys PRIVATE ${READLINE_LIBRARY}) +#target_link_libraries(yosys PRIVATE ${EDITLINE_LIBRARY}) +target_link_libraries(yosys PRIVATE ${TCL_LIBRARY}) diff --git a/cmake/FindEditline.cmake b/cmake/FindEditline.cmake new file mode 100644 index 000000000..38d075fd2 --- /dev/null +++ b/cmake/FindEditline.cmake @@ -0,0 +1,13 @@ +# Modified from FindReadline.cmake (PH Feb 2012) + +if(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY) + set(EDITLINE_FOUND TRUE) +else() + find_path(EDITLINE_INCLUDE_DIR readline.h PATH_SUFFIXES editline edit/readline) + + find_library(EDITLINE_LIBRARY NAMES edit) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Editline DEFAULT_MSG EDITLINE_INCLUDE_DIR EDITLINE_LIBRARY) + + mark_as_advanced(EDITLINE_INCLUDE_DIR EDITLINE_LIBRARY) +endif() diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake new file mode 100644 index 000000000..6b650464e --- /dev/null +++ b/cmake/FindReadline.cmake @@ -0,0 +1,27 @@ +# from http://websvn.kde.org/trunk/KDE/kdeedu/cmake/modules/FindReadline.cmake +# http://websvn.kde.org/trunk/KDE/kdeedu/cmake/modules/COPYING-CMAKE-SCRIPTS +# --> BSD licensed +# +# GNU Readline library finder +if(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND NCURSES_LIBRARY) + set(READLINE_FOUND TRUE) +else() + find_path(READLINE_INCLUDE_DIR readline/readline.h /usr/include/readline) + + # 2008-04-22 The next clause used to read like this: + # + # FIND_LIBRARY(READLINE_LIBRARY NAMES readline) + # FIND_LIBRARY(NCURSES_LIBRARY NAMES ncurses ) + # include(FindPackageHandleStandardArgs) + # FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG NCURSES_LIBRARY READLINE_INCLUDE_DIR READLINE_LIBRARY ) + # + # I was advised to modify it such that it will find an ncurses library if + # required, but not if one was explicitly given, that is, it allows the + # default to be overridden. PH + + find_library(READLINE_LIBRARY NAMES readline) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Readline DEFAULT_MSG READLINE_INCLUDE_DIR READLINE_LIBRARY) + + mark_as_advanced(READLINE_INCLUDE_DIR READLINE_LIBRARY) +endif()