]> rtime.felk.cvut.cz Git - hubacji1/bcar.git/blobdiff - CMakeLists.txt
Update readme
[hubacji1/bcar.git] / CMakeLists.txt
index 03b93af3d022535016505775061f43b2af9403ff..982eed0744f9f91c0b65199d534dcfa65ca121a4 100644 (file)
@@ -1,35 +1,62 @@
-cmake_minimum_required(VERSION 2.8)
+# SPDX-FileCopyrightText: 2021 Jiri Vlasak <jiri.vlasak.2@cvut.cz>
+#
+# SPDX-License-Identifier: GPL-3.0-only
+
+cmake_minimum_required(VERSION 3.8)
 project(bcar)
 
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/incl)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/api)
+set(CMAKE_CXX_STANDARD 17)
+# Require compiler version (g++ >= 7 tested)
+if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
+       message(FATAL_ERROR "GCC version must be at least 7!")
+endif()
 
-add_library(bcar SHARED
-        src/bcar.cc
-)
-set_target_properties(bcar PROPERTIES
-        PUBLIC_HEADER api/bcar.h
-)
+#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
+#set (CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
 
-add_library(pslot SHARED
-        src/pslot.cc
-)
-set_target_properties(pslot PROPERTIES
-        PUBLIC_HEADER api/pslot.h
-)
+add_compile_options(-Wall -Wextra -pedantic -Werror)
+
+add_library(bcar STATIC src/bcar.cc)
+target_include_directories(bcar PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/incl)
+
+add_library(pslot STATIC src/pslot.cc)
+target_include_directories(pslot PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/incl)
+target_link_libraries(pslot bcar)
+
+add_executable(compute_pslot_table src/compute_pslot_table.cc)
+target_link_libraries(compute_pslot_table pslot)
 
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/wvtest/cpp)
-ADD_DEFINITIONS(-DWVTEST_CONFIGURED)
+add_executable(prove_parallel_slot src/prove_parallel_slot.cc)
+target_link_libraries(prove_parallel_slot pslot)
+
+add_executable(entry_positions_range src/entry_positions_range.cc)
+target_link_libraries(entry_positions_range pslot)
+
+add_executable(compare_to_vorobieva src/compare_to_vorobieva.cc)
+target_link_libraries(compare_to_vorobieva pslot)
+
+add_executable(compare_to_zips src/compare_to_zips.cc)
+target_link_libraries(compare_to_zips pslot)
+
+add_executable(compare_to_li src/compare_to_li.cc)
+target_link_libraries(compare_to_li pslot)
+
+add_executable(gen_for_gnuplot src/gen_for_gnuplot.cc)
+target_link_libraries(gen_for_gnuplot pslot)
+
+if (SKIP_UT)
+       return()
+endif()
 add_executable(ut
-        wvtest/cpp/wvtestmain.cc
-        wvtest/cpp/wvtest.cc
-        ut/bcar.t.cc
-        ut/pslot.t.cc
+       wvtest/cpp/wvtestmain.cc
+       wvtest/cpp/wvtest.cc
+       ut/bcar.t.cc
+       ut/pslot.t.cc
 )
-target_link_libraries(ut bcar)
-target_link_libraries(ut pslot)
-
+target_compile_definitions(ut PRIVATE WVTEST_CONFIGURED)
+target_include_directories(ut PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/wvtest/cpp)
+target_link_libraries(ut bcar pslot)
 add_custom_command(TARGET ut
-        POST_BUILD COMMAND ./wvtestrun ../build/ut
-        WORKING_DIRECTORY ../wvtest
+       POST_BUILD COMMAND ./wvtestrun ../build/ut
+       WORKING_DIRECTORY ../wvtest
 )