Files
WFR-Examples/CMakeLists.txt.orig
2017-04-11 15:48:26 +02:00

110 lines
3.6 KiB
Plaintext
Executable File

cmake_minimum_required(VERSION 2.8)
project(wfr-examples C CXX)
# Compiler flags
set(CMAKE_CXX_FLAGS_DEBUG "-O3 -g3 -pg -DNDEBUG -Wall")
set(CMAKE_C_FLAGS_DEBUG "-O3 -g3 -pg -DNDEBUG -Wall")
# Find WFR-libraries
if (NOT WFR_FOUND)
if (NOT WFR_DIR)
set(WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../WFR-lib/dist")
endif()
find_package(WFR REQUIRED)
endif()
# Find IWIR2WFR compiler
if (NOT IWIR2WFR_FOUND)
if (NOT IWIR2WFR_DIR)
set(IWIR2WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../IWIR2WFRcompiler/dist")
endif()
find_package(IWIR2WFR REQUIRED)
endif()
# We need OpenMP
FIND_PACKAGE(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
# Where to install the output
get_directory_property(hasParent PARENT_DIRECTORY)
if (NOT hasParent)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/dist")
endif()
endif()
# Setup include dir
include_directories(${WFR_INCLUDE_DIR})
# Enable C++11 support
ADD_DEFINITIONS( -std=c++11 )
#
# Convenience function for setting up individual unit-tests
#
function(add_wfr_example name add_inc)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.h
COMMAND ${IWIR2WFR_EXE} -i ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/wfr/${name}.iwir -o ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name} -skipmain -printir -repoconfig ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/wfr/repo/${name}.properties
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr
)
add_definitions("-pg -g3")
add_executable(${name}-wfr.bin ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${ARGN})
target_include_directories(${name}-wfr.bin PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr ${add_inc})
target_link_libraries(${name}-wfr.bin ${WFR_LIBRARIES})
add_dependencies(${name}-wfr.bin wfr_lib) # Otherwise we would have race conditions when compiling the parent project with -j
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.h DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/wfr)
install(TARGETS ${name}-wfr.bin DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/wfr)
endfunction()
function(add_omp_example name add_inc)
add_executable(${name}-omp.bin ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/openmp/${name}.cpp ${ARGN})
target_include_directories(${name}-omp.bin PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${name}/openmp ${add_inc})
target_link_libraries(${name}-omp.bin ${WFR_LIBRARIES})
add_dependencies(${name}-omp.bin wfr_lib) # Otherwise we would have race conditions when compiling the parent project with -j
install(TARGETS ${name}-omp.bin DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/openmp)
endfunction()
#
# Setup individual examples
#
add_wfr_example(montage-pegasus "")
add_omp_example(montage-pegasus "")
add_wfr_example(povray "")
add_omp_example(povray "")
add_wfr_example(raincloud "")
add_omp_example(raincloud "")
add_wfr_example(raincloud.test01 "")
add_wfr_example(raincloud.transformed "")
add_wfr_example(sparselu-for "")
add_omp_example(sparselu-for "")
add_wfr_example(sparselu-while "")
add_omp_example(sparselu-while "")
add_wfr_example(starrs-merge "")
add_omp_example(starrs-merge "")
add_wfr_example(nested_for_01 "")
add_wfr_example(nested_for_02 "")
add_wfr_example(nested_for_02b "")
add_wfr_example(nested_for_02c "")
add_wfr_example(nested_for_02d "")
add_wfr_example(nested_for_03 "")
add_wfr_example(nested_for_04 "")
add_wfr_example(unrolling_for_01 "")
add_wfr_example(unrolling_for_02 "")