From b0004166ed95a0e1b1db0fb7640527fad81df4a3 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Sat, 26 Oct 2019 01:56:53 +0200 Subject: [PATCH 1/3] Added CMake build system : much cleaner and nicer. Solves all problems very easily on Linux, automatically links what is needed. Check if some changes are required for your weird Allegro5 setup @MarkOates ;) --- CMakeLists.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..e1d6b25d4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,48 @@ +cmake_minimum_required(VERSION 3.9) + +set(LIBNAME "allegro_flare") +set(LIBVERSION 0.9.0) + +project(${LIBNAME} VERSION ${LIBVERSION} DESCRIPTION "allegro but for C++") + +include(GNUInstallDirs) + +file(GLOB SRC_FILES + ${PROJECT_SOURCE_DIR}/src/allegro_flare/*.cpp + ${PROJECT_SOURCE_DIR}/src/allegro_flare/platform/*.cpp + ${PROJECT_SOURCE_DIR}/src/AllegroFlare/*.cpp + ${PROJECT_SOURCE_DIR}/src/NcursesArt/*.cpp + ${PROJECT_SOURCE_DIR}/include/allegro_flare/*.h + ${PROJECT_SOURCE_DIR}/include/AllegroFlare/*.h + ${PROJECT_SOURCE_DIR}/include/NcursesArt/*.h) + +IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") + file(GLOB LINUX_SRC_FILES + ${PROJECT_SOURCE_DIR}/src/allegro_flare/platform/linux/*.cpp) + list (APPEND SRC_FILES ${LINUX_SRC_FILES}) +ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") + +IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + file(GLOB MACOS_SRC_FILES + ${PROJECT_SOURCE_DIR}/src/allegro_flare/platform/mac_os/*.cpp) + list (APPEND SRC_FILES ${MACOS_SRC_FILES}) +ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + +IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") + file(GLOB WIN_SRC_FILES + ${PROJECT_SOURCE_DIR}/src/allegro_flare/platform/win/*.cpp) + list (APPEND SRC_FILES ${WIN_SRC_FILES}) +ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") + +add_library(${LIBNAME} SHARED ${SRC_FILES}) + +set_target_properties(${LIBNAME} PROPERTIES + VERSION ${LIBVERSION} + SOVERSION 1 + PUBLIC_HEADER include/allegro_flare.h) + +target_include_directories(${LIBNAME} PRIVATE include src) + +install(TARGETS ${LIBNAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) \ No newline at end of file From 803b83b338fdda0dbe40a525185db194511d609c Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Sat, 26 Oct 2019 01:58:38 +0200 Subject: [PATCH 2/3] Even if purely virtual, destructor has to be defined. See comment in code for more details. --- src/allegro_flare/drawing_interface_html_canvas.cpp | 3 +++ src/allegro_flare/drawing_interface_svg.cpp | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/allegro_flare/drawing_interface_html_canvas.cpp b/src/allegro_flare/drawing_interface_html_canvas.cpp index 61b90af82..5b907e972 100644 --- a/src/allegro_flare/drawing_interface_html_canvas.cpp +++ b/src/allegro_flare/drawing_interface_html_canvas.cpp @@ -24,6 +24,9 @@ namespace allegro_flare DrawingInterfaceHTMLCanvas::DrawingInterfaceHTMLCanvas() : DrawingInterface("html5 canvas") {} + + // Has to be defined even if pure virtual, see https://stackoverflow.com/a/15113814 + DrawingInterfaceHTMLCanvas::~DrawingInterfaceHTMLCanvas() {}; diff --git a/src/allegro_flare/drawing_interface_svg.cpp b/src/allegro_flare/drawing_interface_svg.cpp index 4f2d05b6b..516c91f82 100644 --- a/src/allegro_flare/drawing_interface_svg.cpp +++ b/src/allegro_flare/drawing_interface_svg.cpp @@ -27,7 +27,8 @@ namespace allegro_flare {} - + // Has to be defined even if pure virtual, see https://stackoverflow.com/a/15113814 + DrawingInterfaceSVG::~DrawingInterfaceSVG() {}; /* std::string DrawingInterfaceSVG::get_xml_encoded_ustr(ALLEGRO_USTR *ustr) From c7d7df99b962664e1f87abdddc2a667eda18ac3f Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Sat, 26 Oct 2019 03:25:27 +0200 Subject: [PATCH 3/3] Make Travis use CMake --- .travis.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index e68712c3a..21dc4d1e1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,13 +39,5 @@ before_install: fi script: - - make - - if [ `uname` = "Darwin" ]; then - make tests; - fi - - if [ `uname` = "Darwin" ]; then - make examples; - fi - - if [ `uname` = "Darwin" ]; then - make build_documentation; - fi + - mkdir build_dir && cd build_dir && cmake .. + - make -j6 \ No newline at end of file