view CMakeLists.txt @ 13:cc368e32db24

Split template into separate files
author David Demelier <markand@malikania.fr>
date Tue, 01 Mar 2016 07:31:44 +0100
parents 510ba33d678c
children d9961bad8788
line wrap: on
line source

#
# CMakeLists.txt -- CMake build system for irccd-web
#
# Copyright (c) 2016 David Demelier <markand@malikania.fr>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

cmake_minimum_required(VERSION 3.0)
project(irccd-web)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${irccd-web_SOURCE_DIR}/cmake)

find_package(Pandoc REQUIRED)

# Some variables

#set(URL http://releases.malikania.fr/irccd/irccd-2.0.0.tar.xz)
set(URL file:///tmp/irccd-2.0.0.tar.xz)
set(TEMPLATE ${irccd-web_SOURCE_DIR}/templates/template.html)
set(TEMPLATE_DOC ${irccd-web_SOURCE_DIR}/templates/template-doc.html)
set(OUTPUT ${CMAKE_BINARY_DIR}/html)
set(SOURCE ${CMAKE_SOURCE_DIR})
set(JS ${CMAKE_SOURCE_DIR}/js/joke.js)
set(CSS ${CMAKE_SOURCE_DIR}/css/irccd.css)
set(IRCCD_SOURCE_DIR ${CMAKE_BINARY_DIR}/irccd-source)
set(IRCCD_BINARY_DIR ${CMAKE_BINARY_DIR}/irccd-build)

# Compile irccd's documentation
include(ExternalProject)

ExternalProject_Add(
	irccd
	URL ${URL}
	CMAKE_ARGS -DWITH_SSL=Off -DWITH_TESTS=Off -DWITH_DOXYGEN=Off -DWITH_DOCDIR=_DOCS_
	PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${TEMPLATE_DOC} ${IRCCD_SOURCE_DIR}/doc/html/resources/template.html
	BUILD_COMMAND
		COMMAND ${CMAKE_COMMAND} --build . --target docs
		COMMAND ${CMAKE_COMMAND} --build . --target plugins
	INSTALL_COMMAND ""
	UPDATE_COMMAND ""
	BINARY_DIR ${IRCCD_BINARY_DIR}
	SOURCE_DIR ${IRCCD_SOURCE_DIR}
)

# Define the files to generate.
set(FILES about contribute documentation documentation download index support)

# Arguments for specific files.
set(index_VARS home:yes)

foreach (f ${FILES})
	pandoc(
		OUTPUT ${OUTPUT}/${f}.html
		SOURCES ${SOURCE}/${f}.md
		VARIABLE baseurl:. ${${f}_VARS}
		FROM markdown
		TO html5
		ARGS --no-highlight
		TEMPLATE ${TEMPLATE}
		MAKE_DIRECTORY
	)

	list(APPEND OUTPUTS ${OUTPUT}/${f}.html)
	list(APPEND SOURCES ${SOURCE}/${f}.md)
endforeach ()

add_custom_target(
	files
	SOURCES ${SOURCES} ${TEMPLATE} ${TEMPLATE_DOC} ${CSS} ${JS}
	DEPENDS ${OUTPUTS}
)

add_custom_target(
	web
	ALL
	COMMENT "Generating website"
	COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT}/css
	COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT}/js
	COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/css ${OUTPUT}/css
	COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/js ${OUTPUT}/js
	COMMAND ${CMAKE_COMMAND} -E copy_directory ${IRCCD_BINARY_DIR}/fakeroot/_DOCS_ ${OUTPUT}
	DEPENDS files
)