diff --git a/CMakeLists.txt b/CMakeLists.txt index 576c61967666eca9f7862575cde798f674be8f49..f308c7b9013f00e328cdc6c270328f265dca50e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,45 +1,35 @@ cmake_minimum_required(VERSION 3.5) +# Alpho Vivy, CXX only project(Vivy VERSION 0.1 LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) cmake_policy(SET CMP0100 NEW) # Let cmake use moc and uic for .hh files +cmake_policy(SET CMP0009 NEW) # Do not follow symlinks with GLOB_RECURSE +# For Qt set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) +# C++20, at least we try set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# Pthread ftw set(THREADS_PREFER_PTHREAD_FLAG ON) -# Find all dependencies -find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED) +# Find Qt dependencies +find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED) -find_library(AVCODEC_LIBRARY avcodec 4.0 REQUIRED) -find_library(AVUTIL_LIBRARY avutil 4.0 REQUIRED) -find_library(SWRESAMPLE_LIBRARY swresample REQUIRED) -find_library(AVFORMAT_LIBRARY avformat REQUIRED) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") +# Find others dependencies +find_library(AVCODEC_LIBRARY avcodec 4.0 REQUIRED) +find_library(AVUTIL_LIBRARY avutil 4.0 REQUIRED) +find_library(SWRESAMPLE_LIBRARY swresample REQUIRED) +find_library(AVFORMAT_LIBRARY avformat REQUIRED) # Grab all files -file(GLOB Vivy_SRC - "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/*.cc" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/*.cc" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Lib/*.cc" - "${CMAKE_CURRENT_SOURCE_DIR}/src/UI/*.cc" -) -file(GLOB Vivy_INC - "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/*.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/*.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Lib/*.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/UI/*.hh" -) +file(GLOB_RECURSE Vivy_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") +file(GLOB_RECURSE Vivy_INC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hh") set(PROJECT_SOURCES ${Vivy_SRC} ${Vivy_INC} @@ -68,24 +58,7 @@ target_link_libraries(Vivy PRIVATE ${AVFORMAT_LIBRARY}) # Headers related things target_include_directories(Vivy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc) -target_precompile_headers(Vivy PRIVATE - # ASS headers - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Ass.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Line.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Syl.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Style.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/AssFactory.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Char.hh" - - # Libs - "${CMAKE_CURRENT_SOURCE_DIR}/src/Lib/Utils.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Lib/Audio.hh" - - # Document headers - "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/VivyDocument.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/VivyDocumentStore.hh" - "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/CRTPSubDocument.hh" -) +target_precompile_headers(Vivy PRIVATE ${Vivy_INC}) # More options and warnings target_compile_options(Vivy PRIVATE @@ -96,11 +69,16 @@ target_compile_options(Vivy PRIVATE -Woverloaded-virtual -Wnon-virtual-dtor ) +# Some compiler specific warnings and options if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") target_compile_options(Vivy PRIVATE - -Wno-unused-private-field # Skip the unused private fields for now + -Wno-unused-private-field # Skip the unused private fields for now + -fopenmp # We do OpenMP here ) + target_link_libraries(Vivy PRIVATE -fopenmp) elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") + target_compile_options(Vivy PRIVATE -fopenmp) + target_link_libraries(Vivy PRIVATE -fopenmp) endif() set_target_properties(Vivy PROPERTIES diff --git a/src/Ass/Ass.hh b/src/Lib/Ass/Ass.hh similarity index 100% rename from src/Ass/Ass.hh rename to src/Lib/Ass/Ass.hh diff --git a/src/Ass/AssFactory.cc b/src/Lib/Ass/AssFactory.cc similarity index 100% rename from src/Ass/AssFactory.cc rename to src/Lib/Ass/AssFactory.cc diff --git a/src/Ass/AssFactory.hh b/src/Lib/Ass/AssFactory.hh similarity index 98% rename from src/Ass/AssFactory.hh rename to src/Lib/Ass/AssFactory.hh index e5343ec97deae93cbd864fa1844ca2fb72512b4a..48f849b01cc6ef60afbaa5b4d18627b59d24f439 100644 --- a/src/Ass/AssFactory.hh +++ b/src/Lib/Ass/AssFactory.hh @@ -1,7 +1,7 @@ #ifndef VIVY_ASS_FACTORY_H #define VIVY_ASS_FACTORY_H -#include "../Lib/Utils.hh" +#include "../Utils.hh" #include "Style.hh" #include "Line.hh" diff --git a/src/Ass/Char.cc b/src/Lib/Ass/Char.cc similarity index 100% rename from src/Ass/Char.cc rename to src/Lib/Ass/Char.cc diff --git a/src/Ass/Char.hh b/src/Lib/Ass/Char.hh similarity index 100% rename from src/Ass/Char.hh rename to src/Lib/Ass/Char.hh diff --git a/src/Ass/Line.cc b/src/Lib/Ass/Line.cc similarity index 100% rename from src/Ass/Line.cc rename to src/Lib/Ass/Line.cc diff --git a/src/Ass/Line.hh b/src/Lib/Ass/Line.hh similarity index 100% rename from src/Ass/Line.hh rename to src/Lib/Ass/Line.hh diff --git a/src/Ass/Style.cc b/src/Lib/Ass/Style.cc similarity index 100% rename from src/Ass/Style.cc rename to src/Lib/Ass/Style.cc diff --git a/src/Ass/Style.hh b/src/Lib/Ass/Style.hh similarity index 100% rename from src/Ass/Style.hh rename to src/Lib/Ass/Style.hh diff --git a/src/Ass/StyleProperties.hh b/src/Lib/Ass/StyleProperties.hh similarity index 100% rename from src/Ass/StyleProperties.hh rename to src/Lib/Ass/StyleProperties.hh diff --git a/src/Ass/Syl.cc b/src/Lib/Ass/Syl.cc similarity index 100% rename from src/Ass/Syl.cc rename to src/Lib/Ass/Syl.cc diff --git a/src/Ass/Syl.hh b/src/Lib/Ass/Syl.hh similarity index 100% rename from src/Ass/Syl.hh rename to src/Lib/Ass/Syl.hh diff --git a/src/Document/CRTPSubDocument.cc b/src/Lib/Document/CRTPSubDocument.cc similarity index 100% rename from src/Document/CRTPSubDocument.cc rename to src/Lib/Document/CRTPSubDocument.cc diff --git a/src/Document/CRTPSubDocument.hh b/src/Lib/Document/CRTPSubDocument.hh similarity index 98% rename from src/Document/CRTPSubDocument.hh rename to src/Lib/Document/CRTPSubDocument.hh index 16c86dd2445540464ff6be2e93dd2889e1836676..f89b26f65e235f3c3b3fd72a22510c7afd7cebdd 100644 --- a/src/Document/CRTPSubDocument.hh +++ b/src/Lib/Document/CRTPSubDocument.hh @@ -5,8 +5,8 @@ #error "This is a C++ header" #endif -#include "../Lib/Utils.hh" -#include "../Lib/Audio.hh" +#include "../Utils.hh" +#include "../Audio.hh" #include "../Ass/Ass.hh" #include <QString> #include <memory> diff --git a/src/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc similarity index 99% rename from src/Document/VivyDocument.cc rename to src/Lib/Document/VivyDocument.cc index ed97966b2407efbd5ce2e206aa00a13f9d350702..66708df9e199808ec77e5c2ef8a3d81ecec88df1 100644 --- a/src/Document/VivyDocument.cc +++ b/src/Lib/Document/VivyDocument.cc @@ -1,5 +1,5 @@ #include "VivyDocument.hh" -#include "../Lib/Utils.hh" +#include "../Utils.hh" #include <QFileInfo> #include <QString> diff --git a/src/Document/VivyDocument.hh b/src/Lib/Document/VivyDocument.hh similarity index 98% rename from src/Document/VivyDocument.hh rename to src/Lib/Document/VivyDocument.hh index 8e29b3db4a94544c6923e313368d6229c6c9de59..da2f91a95ee2c198ba894db732bfe149a367b926 100644 --- a/src/Document/VivyDocument.hh +++ b/src/Lib/Document/VivyDocument.hh @@ -5,7 +5,7 @@ #error "This is a C++ header" #endif -#include "../Lib/Utils.hh" +#include "../Utils.hh" #include "CRTPSubDocument.hh" #include <memory> diff --git a/src/Document/VivyDocumentStore.cc b/src/Lib/Document/VivyDocumentStore.cc similarity index 100% rename from src/Document/VivyDocumentStore.cc rename to src/Lib/Document/VivyDocumentStore.cc diff --git a/src/Document/VivyDocumentStore.hh b/src/Lib/Document/VivyDocumentStore.hh similarity index 97% rename from src/Document/VivyDocumentStore.hh rename to src/Lib/Document/VivyDocumentStore.hh index 047a49ab29172b076b88a43af606f681fde0d5fa..f25fd3f7d374840596fa81ee0df07a38ddc4db66 100644 --- a/src/Document/VivyDocumentStore.hh +++ b/src/Lib/Document/VivyDocumentStore.hh @@ -2,7 +2,7 @@ #define VIVY_DOCUMENTSTORE_H #include "VivyDocument.hh" -#include "../Lib/Utils.hh" +#include "../Utils.hh" #include <QMap> #include <QString> diff --git a/src/UI/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc similarity index 98% rename from src/UI/AudioVisualizer.cc rename to src/UI/DocumentViews/AudioVisualizer.cc index d55f2d1c986db66c176a81183e5be70cd40eeb0e..fa8d02c1314b267a7ffb04687bb6c56070372e5c 100644 --- a/src/UI/AudioVisualizer.cc +++ b/src/UI/DocumentViews/AudioVisualizer.cc @@ -1,5 +1,5 @@ #include "AudioVisualizer.hh" -#include "../Lib/Audio.hh" +#include "../../Lib/Audio.hh" #include <algorithm> #include <QGraphicsPixmapItem> diff --git a/src/UI/AudioVisualizer.hh b/src/UI/DocumentViews/AudioVisualizer.hh similarity index 97% rename from src/UI/AudioVisualizer.hh rename to src/UI/DocumentViews/AudioVisualizer.hh index 3273d285bba08de8865e08be657cf62ba414a483..451d50800979bca9f137b3fd2dfcd3842715629b 100644 --- a/src/UI/AudioVisualizer.hh +++ b/src/UI/DocumentViews/AudioVisualizer.hh @@ -6,7 +6,7 @@ #endif #include "TimingView.hh" -#include "../Lib/Audio.hh" +#include "../../Lib/Audio.hh" #include <QWidget> #include <QString> diff --git a/src/UI/TimingBar.cc b/src/UI/DocumentViews/TimingBar.cc similarity index 100% rename from src/UI/TimingBar.cc rename to src/UI/DocumentViews/TimingBar.cc diff --git a/src/UI/TimingBar.hh b/src/UI/DocumentViews/TimingBar.hh similarity index 100% rename from src/UI/TimingBar.hh rename to src/UI/DocumentViews/TimingBar.hh diff --git a/src/UI/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc similarity index 98% rename from src/UI/TimingScene.cc rename to src/UI/DocumentViews/TimingScene.cc index 7d2e21156582e7c6c77de94958b53785c057cb1a..3c916fd0868d3364b69b0822c233357dd9667f94 100644 --- a/src/UI/TimingScene.cc +++ b/src/UI/DocumentViews/TimingScene.cc @@ -1,5 +1,5 @@ #include "TimingScene.hh" -#include "../Lib/Utils.hh" +#include "../../Lib/Utils.hh" #include <QGraphicsLineItem> #include <QGraphicsPixmapItem> diff --git a/src/UI/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh similarity index 95% rename from src/UI/TimingScene.hh rename to src/UI/DocumentViews/TimingScene.hh index 860acecbc35628983b137e517385f82da36cf1ef..901de0fa63c48079797dd50018e5ce51cf85e018 100644 --- a/src/UI/TimingScene.hh +++ b/src/UI/DocumentViews/TimingScene.hh @@ -1,8 +1,8 @@ #ifndef VIVY_TIMING_SCENE_H #define VIVY_TIMING_SCENE_H -#include "../Lib/Utils.hh" -#include "../Ass/Ass.hh" +#include "../../Lib/Utils.hh" +#include "../../Lib/Ass/Ass.hh" #include "TimingBar.hh" #include <QWidget> diff --git a/src/UI/TimingView.cc b/src/UI/DocumentViews/TimingView.cc similarity index 100% rename from src/UI/TimingView.cc rename to src/UI/DocumentViews/TimingView.cc diff --git a/src/UI/TimingView.hh b/src/UI/DocumentViews/TimingView.hh similarity index 96% rename from src/UI/TimingView.hh rename to src/UI/DocumentViews/TimingView.hh index b2f11f792576e7d66b1e2628ae2cefb12bb51e67..8f4328faa9cc0116a3ac25f342ce4a5881bf93d6 100644 --- a/src/UI/TimingView.hh +++ b/src/UI/DocumentViews/TimingView.hh @@ -5,7 +5,7 @@ #error "This is a C++ header" #endif -#include "../Lib/Utils.hh" +#include "../../Lib/Utils.hh" #include "TimingBar.hh" #include "TimingScene.hh" diff --git a/src/UI/MainWindow.hh b/src/UI/MainWindow.hh index 45910f4ad7eeb36c2bf936e2b7c45af528758a48..dc6944449cbf0a612794856da294181a0136c4f9 100644 --- a/src/UI/MainWindow.hh +++ b/src/UI/MainWindow.hh @@ -6,8 +6,8 @@ #endif #include "../Lib/Utils.hh" -#include "AudioVisualizer.hh" -#include "../Document/VivyDocumentStore.hh" +#include "../Lib/Document/VivyDocumentStore.hh" +#include "DocumentViews/AudioVisualizer.hh" #include "VivyDocumentView.hh" #include <QMainWindow> diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index 962f33d430093c88a9596464b462fa5d00b217ac..e7d540127368b3d90055ea89928990a289b1cef5 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -1,8 +1,8 @@ #include "VivyDocumentView.hh" -#include "AudioVisualizer.hh" #include "PropertyModel.hh" +#include "DocumentViews/AudioVisualizer.hh" #include "../VivyApplication.hh" -#include "../Document/VivyDocument.hh" +#include "../Lib/Document/VivyDocument.hh" #include <QHeaderView> #include <QTreeView> diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index 70535b45f472a8ca9595433d2da015a157f6a7aa..28d991b855140c748e890ce0ef5edb46f6eee12b 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -5,8 +5,8 @@ #error "This is a C++ header" #endif -#include "../Document/VivyDocument.hh" -#include "AudioVisualizer.hh" +#include "../Lib/Document/VivyDocument.hh" +#include "DocumentViews/AudioVisualizer.hh" #include "DocumentView.hh" #include "PropertyModel.hh" diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh index 4492f05473899d8e764ae4c2598cdd3520f8e4c3..579f9b78c273d7ba936d3e98b0960d702f529c66 100644 --- a/src/VivyApplication.hh +++ b/src/VivyApplication.hh @@ -9,7 +9,7 @@ #include <QApplication> #include <QPixmap> -#include "Document/VivyDocumentStore.hh" +#include "Lib/Document/VivyDocumentStore.hh" #include <memory> namespace Vivy