blob: 40328390da22cf172ef54b2244c6eb8502042cee [file] [log] [blame]
cmake_minimum_required(VERSION 3.9)
project("genfasm")
#Create library
add_library(fasm
src/fasm.cpp
src/fasm.h
src/lut.cpp
src/lut.h
src/parameters.cpp
src/parameters.h
src/fasm_utils.cpp
src/fasm_utils.h
)
target_include_directories(fasm PUBLIC src)
target_link_libraries(fasm
libvpr
libvtrutil
libarchfpga
libsdcparse
libblifparse
libtatum
libargparse
libpugixml)
add_executable(genfasm src/main.cpp)
target_link_libraries(genfasm fasm)
#Supress IPO link warnings if IPO is enabled
get_target_property(GENFASM_USES_IPO genfasm INTERPROCEDURAL_OPTIMIZATION)
if (GENFASM_USES_IPO)
set_target_properties(genfasm PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
endif()
#Specify link-time dependancies
install(TARGETS genfasm DESTINATION bin)
#
# Unit Tests
#
set(TEST_SOURCES
test/main.cpp
test/test_fasm.cpp
test/test_lut.cpp
test/test_parameters.cpp
test/test_utils.cpp
)
add_executable(test_fasm ${TEST_SOURCES})
target_link_libraries(test_fasm fasm libcatch)
#Supress IPO link warnings if IPO is enabled
get_target_property(TEST_FASM_USES_IPO test_fasm INTERPROCEDURAL_OPTIMIZATION)
if (TEST_FASM_USES_IPO)
set_target_properties(test_fasm PROPERTIES LINK_FLAGS ${IPO_LINK_WARN_SUPRESS_FLAGS})
endif()
add_test(
NAME test_fasm
COMMAND test_fasm --use-colour=yes
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test
)