# Copyright 2019 Maciej Woźniak, Wojciech Kosior # This is free and unencumbered software released into the public domain. # Anyone is free to copy, modify, publish, use, compile, sell, or # distribute this software, either in source code form or as a compiled # binary, for any purpose, commercial or non-commercial, and by any # means. # In jurisdictions that recognize copyright laws, the author or authors # of this software dedicate any and all copyright interest in the # software to the public domain. We make this dedication for the benefit # of the public at large and to the detriment of our heirs and # successors. We intend this dedication to be an overt act of # relinquishment in perpetuity of all present and future rights to this # software under copyright law. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # For more information, please refer to <http://unlicense.org/> cmake_minimum_required(VERSION 3.5) project (mull) enable_language (Fortran) # Default to Release build if(NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release") # set(CMAKE_BUILD_TYPE "Debug") endif() # FFLAGS depend on the compiler get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) if(CMAKE_Fortran_COMPILER_ID MATCHES "Intel") set(dialect "-std08 -module . -implicitnone -fpp -pedantic") set(bounds " -check bounds") set(realeaseopts "-funroll-all-loops -O2") set(debugopts "-O0 -g -traceback -check all -debug extended -debug-parameters all") endif() if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") set(dialect "-ffree-form -std=f2008 -fimplicit-none -cpp -Wall -pedantic") set(bounds " -fbounds-check") set(realeaseopts "-funroll-all-loops -O2") set(debugopts "-O0 -g3 -fbacktrace -fcheck=all -fdump-fortran-optimized") endif() set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${bounds}") set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${debugopts}") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${dialect}") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_RELEASE_FLAGS} ${realeaseopts}") include_directories("${PROJECT_SOURCE_DIR}/src") set(SRC src) set(mull_SRC ${SRC}/naivemath.F90 ${SRC}/bettermath.F90 ${SRC}/dotmath.F90 ${SRC}/bettermath2.F90 ${SRC}/blockmath.F90 ${SRC}/main.F90 ) # Target definition add_executable(mull ${mull_SRC})