cmake_minimum_required(VERSION 3.3.0)

include(CMakeParseArguments)

project(yosys)

# Version number 
set(YOSYS_VERSION_MAJOR 0.7)
set(YOSYS_VERSION_MINOR 0)
set(YOSYS_VERSION_PATCH 0)

# Options to enable/disable dependencies
option(YOSYS_ENABLE_TCL, "Enable TCL parser integrated in yosys" ON)
option(YOSYS_ENABLE_ABC, "Enable ABC library integrated in yosys" ON)
option(YOSYS_ENABLE_PLUGINS, "Enable plug-in in yosys" ON)
option(YOSYS_ENABLE_READLINE, "Enable readline library in yosys" ON)
option(YOSYS_ENABLE_VERIFIC, "Enable verification library in yosys" OFF)
option(YOSYS_ENABLE_COVER, "Enable coverage test in yosys" ON)
option(YOSYS_ENABLE_LIBYOSYS, "Enable static library compiled yosys" OFF)
option(YOSYS_ENABLE_GPROF, "Enable profiling in compiled yosys" OFF)
option(YOSYS_ENABLE_NDEBUG, "Enable non-debugging feature in compiled yosys" OFF)

#
## Search and link dependent packages
## We need readline to compile 
if (YOSYS_ENABLE_READLINE)
  find_package(Readline REQUIRED)
endif()
#
#########################
##                      #
## Compiler Flags Setup #
##                      #
#########################
#
## Compiler flag configuration checks
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
#
## Required Compiler Standard 
#set(CMAKE_CXX_STANDARD 11) # need at least c+11 standard
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
#
## Set warning flags
#set(WARN_FLAGS_TO_CHECK "") # checklist of warning flags
#set(WARN_FLAGS "") # actual warning flags to be added during compilation
## Add warning flags depending on options 
#if (YOSYS_ENABLE_NDEBUG)
#  set(WARN_FLAGS_TO_CHECK, ${WARN_FLAGS_TO_CHECK}, "-O3")
#endif()
#
#
##Collect the source files
#file(GLOB_RECURSE EXEC_YOSYS kernel/yosys.cc)
#file(GLOB_RECURSE LIB_SOURCES kernel/*.cc)
#file(GLOB_RECURSE LIB_HEADERS kernel/*.h)
#files_to_dirs(LIB_HEADERS LIB_INCLUDE_DIRS)
#
## Use c++ compiler for c source files
#set_source_files_properties(${LIB_SOURCES} PROPERTIES LANGUAGE CXX)
#set_source_files_properties(${EXEC_SOURCES} PROPERTIES LANGUAGE CXX)
#set_source_files_properties(${EXEC_SOURCES_SHELL} PROPERTIES LANGUAGE CXX)
#
##Build the library
#add_library(libyosys STATIC
#            ${LIB_HEADERS}
#            ${LIB_SOURCES})
#
## add header files to be included
#target_include_directories(libyosys PUBLIC ${LIB_INCLUDE_DIRS})
#set_target_properties(libyosys PROPERTIES PREFIX "") #Avoid extra 'lib' prefix#Create the executable
#
##Specify link-time dependancies
#target_link_libraries(libyosys
#                      readline)
#
## Build targets
## 1. yosys
#add_executable(yosys ${EXEC_SOURCES})
#target_link_libraries(vpr
#                      libyosys)
# 2. yosys-config

# run makefile provided, we pass-on the options to the local make file 
add_custom_target(
  yosys ALL 
  COMMAND 
    $(MAKE) 
    #CC=${CMAKE_C_COMPILER} 
    #CXX=${CMAKE_CXX_COMPILER} 
    #LD=${CMAKE_CXX_COMPILER} 
    #ENABLE_TCL=${YOSYS_ENABLE_TCL}
    #ENABLE_ABC=${YOSYS_ENABLE_ABC}
    #ENABLE_PLUGINS=${YOSYS_ENABLE_PLUGINS}
    #ENABLE_READLINE=${YOSYS_ENABLE_READLINE}
    #ENABLE_VERIFIC=${YOSYS_ENABLE_VERIFIC}
    #ENABLE_COVER=${YOSYS_ENABLE_COVER}
    #ENABLE_LIBYOSYS=${YOSYS_ENABLE_LIBYOSYS}
    #ENABLE_GPROF=${YOSYS_ENABLE_GPROF}
    #ENABLE_NDEBUG=${YOSYS_ENABLE_NDEBUG}
  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  COMMENT "Compile Yosys with given Makefile"
)