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 "")