cmake_minimum_required(VERSION 3.22)
project(PBSketch)
if(MSVC)
    add_compile_options(/arch:AVX2)
else()
    add_compile_options(-mbmi)
endif()
set(CMAKE_CXX_STANDARD 17)
include_directories(${CMAKE_SOURCE_DIR})

add_executable(PBSketch
        main.cpp

        common/murmur3.cc
        benchmark/gtdetector/burstCorrectDetector.h
        benchmark/gtdetector/periodCorrectDetector.cpp
        benchmark/gtdetector/periodCorrectDetector.h

        common/burstSetter.h
        Baseline/burst/BurstSketchSetter.h
        Baseline/burst/BurstSketchSetter.h
        common/periodicSetter.h
        common/burstsetter.cpp
        common/burstsetter.cpp
        benchmark/gtdetector/PBDetector.h
        benchmark/utils/performance.cpp
        benchmark/utils/performance.h
        benchmark/utils/Comparer.cpp
        benchmark/utils/Comparer.h
        benchmark/memorytest.cpp
        benchmark/memorytest.h


        common/UpDownBurst.h
        PBSketch/PartTwo/PTwoBucket.h
        common/pairutil.h
        common/pairutil.cpp
        PBSketch/PartTwo/PartTwo.h
        PBSketch/PBSketch.h
        PBSketch/PartTwo/bobHash.h

        Baseline/Baseline.h
        Baseline/GSUBucket.h
        Baseline/GSUHeap.cpp
        Baseline/GSUHeap.h
        Baseline/PeriodicSketch.h
        Baseline/periodicutil.cpp
        Baseline/periodicutil.h
        Baseline/periodichash.h
        Baseline/burst/BurstSketchStageOne.h
        Baseline/burst/BurstSketchStageTwo.h

        benchmark/ThroughputTest.cpp
        benchmark/ThroughputTest.h
        benchmark/utils/Setterbuilder.cpp
        benchmark/utils/Setterbuilder.h
        benchmark/utils/ParamBuilder.h
        benchmark/utils/ParamAnalyzer.cpp
        benchmark/utils/ParamAnalyzer.h

        ratelimiting/LeakyBucket.cpp
        ratelimiting/LeakyBucket.h
        ratelimiting/PBSketchLeakyBucket.h
        ratelimiting/Counter.cpp
        ratelimiting/Counter.h
        ratelimiting/PBSketchCounter.h

        ratelimiting/Test.h
        ratelimiting/Test.cpp
        benchmark/ParamTest.cpp
        benchmark/ParamTest.h


        PBSketch/PartOne/PartOne.h
        common/datasetAnalysis/MAWIDataset.h

        PBSketchOpt/PBSketchOpt.h
        PBSketchOpt/PartOne/PartOneOpt.h
        PBSketch/PBSketch.h
        PBSketch/PartOne/PartOneSetter.h
        PBSketch/PartOne/PartOneSetter.h
)
