Skip to content

Commit

Permalink
Switch to cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
xiota committed Apr 12, 2024
1 parent 10bd9dd commit 46152bb
Show file tree
Hide file tree
Showing 12 changed files with 211 additions and 2 deletions.
93 changes: 93 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
cmake_minimum_required(VERSION 3.21...3.45)

project(preview
VERSION 0.1.0
DESCRIPTION "Geany plugin to show preview of lightweight markup languages"
HOMEPAGE_URL "https://github.com/xiota/geany-preview"
)

add_library(preview SHARED)

set_target_properties(preview PROPERTIES
PREFIX ""
OUTPUT_NAME "preview"
SUFFIX ".so"
ENABLE_EXPORTS ON
)

## Options
option(PREVIEW_PDF_EXPORT "Export Fountain documents to PDF" ON)

## Build options (respecting user settings)
if(NOT DEFINED ENV{CFLAGS} AND NOT CMAKE_C_FLAGS)
set(CMAKE_C_FLAGS "-march=native -O3")
endif()

if(NOT DEFINED ENV{CXXFLAGS} AND NOT CMAKE_CXX_FLAGS)
set(CMAKE_CXX_FLAGS "-march=native -O3")
else()
endif()

## Depends
find_package(PkgConfig REQUIRED)

# Required
pkg_check_modules(PC_DEPS REQUIRED IMPORTED_TARGET
geany
libcmark-gfm
webkit2gtk-4.1
)
target_link_libraries(preview PUBLIC PkgConfig::PC_DEPS)

# Optional
pkg_check_modules(podofo IMPORTED_TARGET libpodofo>=0.10.0)

if (PREVIEW_PDF_EXPORT)
if (NOT podofo_FOUND)
message(SEND_ERROR " PoDoFo not found. Cannot export PDF.")
elseif(podofo_VERSION VERSION_LESS 0.10.0)
message(SEND_ERROR " Unsupported PoDoFo version ${podofo_VERSION}")
elseif(podofo_VERSION VERSION_GREATER_EQUAL 0.11.0)
message(STATUS " Unsupported PoDoFo version ${podofo_VERSION}")
else()
target_link_libraries(preview PUBLIC PkgConfig::podofo)
endif()
else()
message(STATUS " - PREVIEW_PDF_EXPORT=OFF. PDF export disabled.")
endif()

## Install paths
include(GNUInstallDirs)

if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE)
endif()

if(CMAKE_INSTALL_LIBDIR_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_LIBDIR "lib" CACHE PATH "..." FORCE)
endif()

# /usr/lib/geany
if (NOT DEFINED GEANY_PLUGIN_INSTALL)
set(GEANY_PLUGIN_INSTALL "${CMAKE_INSTALL_LIBDIR}/geany")
endif()

# /usr/share/geany-plugins
if (NOT DEFINED GEANY_PLUGIN_DATA)
set(GEANY_PLUGIN_DATA "${CMAKE_INSTALL_DATADIR}/geany-plugins")
endif()

# /usr/share/geany-plugins/preview
if (NOT DEFINED PREVIEW_INSTALL_DATA)
set(PREVIEW_INSTALL_DATA "${CMAKE_INSTALL_PREFIX}/${GEANY_PLUGIN_DATA}/${PROJECT_NAME}")
endif()

# /usr/share/doc/preview
if (NOT DEFINED PREVIEW_INSTALL_DOCDIR)
set(PREVIEW_INSTALL_DOCDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DOCDIR}")
endif()

## Sources
add_subdirectory(data)
add_subdirectory(docs)
add_subdirectory(src)
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions configure.ac → autotools/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ AC_INIT([preview],[m4_esyscmd(./version.sh)],[],[],[https://github.com/xiota/gea
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/pv_main.cc])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_HEADERS([cmake.h])
AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign])
AM_SILENT_RULES([yes])
AM_PROG_AR
Expand All @@ -15,7 +15,7 @@ LT_INIT([disable-static pic-only])
AC_PROG_CXX

PKG_CHECK_MODULES([GEANY], [geany >= 1.23])
PKG_CHECK_MODULES([WEBKIT], [webkit2gtk-4.0])
PKG_CHECK_MODULES([WEBKIT], [webkit2gtk-4.1])
PKG_CHECK_MODULES([CMARK], [libcmark-gfm])
PKG_CHECK_MODULES([PODOFO], [libpodofo])
AC_CONFIG_FILES([Makefile])
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
47 changes: 47 additions & 0 deletions data/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@

# variables for header
if(NOT DEFINED CSS_ASCIIDOCTOR)
set(CSS_ASCIIDOCTOR "asciidoctor.css")
endif()
if(NOT DEFINED CSS_EXTRA_DARK)
set(CSS_EXTRA_DARK "extra-dark.css")
endif()
if(NOT DEFINED CSS_EXTRA_INVERT)
set(CSS_EXTRA_INVERT "extra-invert.css")
endif()
if(NOT DEFINED CSS_EXTRA_MEDIA)
set(CSS_EXTRA_MEDIA "extra-media.css")
endif()
if(NOT DEFINED CSS_FOUNTAIN)
set(CSS_FOUNTAIN "fountain.css")
endif()
if(NOT DEFINED CSS_HEADERS)
set(CSS_HEADERS "preview.css")
endif()
if(NOT DEFINED CSS_MARKDOWN)
set(CSS_MARKDOWN "markdown.css")
endif()
if(NOT DEFINED CSS_PANDOC)
set(CSS_PANDOC "pandoc.css")
endif()

# install
install(
FILES
${CSS_ASCIIDOCTOR}
${CSS_EXTRA_DARK}
${CSS_EXTRA_INVERT}
${CSS_EXTRA_MEDIA}
${CSS_FOUNTAIN}
${CSS_HEADERS}
${CSS_MARKDOWN}
${CSS_PANDOC}
PERMISSIONS
OWNER_READ
OWNER_WRITE
GROUP_READ
WORLD_READ
DESTINATION "${PREVIEW_INSTALL_DATA}"
)

set(PARENT_SCOPE)
28 changes: 28 additions & 0 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

# variables for generated header
set(DOCS_FAQ "CQA.md")
set(DOCS_README "Readme.md")

# fix paths in readme

add_custom_target(docs_readme ALL
COMMAND sed -E -e "s@\\]\\(docs/([^\\)]+)\\)@](\\1)@" "${CMAKE_CURRENT_SOURCE_DIR}/../${DOCS_README}" > "${CMAKE_CURRENT_BINARY_DIR}/${DOCS_README}"
VERBATIM USES_TERMINAL
)

# install
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/${DOCS_README}"
"${DOCS_FAQ}"
geany-plugin-preferences.png
screenshot-908.jpg
PERMISSIONS
OWNER_READ
OWNER_WRITE
GROUP_READ
WORLD_READ
DESTINATION "${PREVIEW_INSTALL_DOCDIR}"
)

set(PARENT_SCOPE)
21 changes: 21 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

target_sources(preview
PUBLIC
pv_main.cc
PRIVATE
auxiliary.cc
fountain.cc
process.cc
pv_formats.cc
pv_settings.cc
)

## Generate header
configure_file(cmake.h.in cmake.h)
target_include_directories(
preview PUBLIC
"${CMAKE_CURRENT_BINARY_DIR}"
)

## Install
install(TARGETS preview DESTINATION "${GEANY_PLUGIN_INSTALL}")
20 changes: 20 additions & 0 deletions src/cmake.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#pragma once

#define ON 1
#define OFF 0

#define VERSION "@PROJECT_VERSION@"

#define PREVIEW_CSS_ASCIIDOCTOR "@PREVIEW_INSTALL_DATA@/@CSS_ASCIIDOCTOR@"
#define PREVIEW_CSS_EXTRA_DARK "@PREVIEW_INSTALL_DATA@/@CSS_EXTRA_DARK@"
#define PREVIEW_CSS_EXTRA_INVERT "@PREVIEW_INSTALL_DATA@/@CSS_EXTRA_INVERT@"
#define PREVIEW_CSS_EXTRA_MEDIA "@PREVIEW_INSTALL_DATA@/@CSS_EXTRA_MEDIA@"
#define PREVIEW_CSS_FOUNTAIN "@PREVIEW_INSTALL_DATA@/@CSS_FOUNTAIN@"
#define PREVIEW_CSS_HEADERS "@PREVIEW_INSTALL_DATA@/@CSS_HEADERS@"
#define PREVIEW_CSS_MARKDOWN "@PREVIEW_INSTALL_DATA@/@CSS_MARKDOWN@"
#define PREVIEW_CSS_PANDOC "@PREVIEW_INSTALL_DATA@/@CSS_PANDOC@"

#define PREVIEW_FAQ "@PREVIEW_INSTALL_DATA@/@FAQ@"
#define PREVIEW_README "@PREVIEW_INSTALL_DATA@/@README@"

#define ENABLE_EXPORT_PDF @PREVIEW_PDF_EXPORT@

0 comments on commit 46152bb

Please sign in to comment.