diff --git a/CMakeLists.txt b/CMakeLists.txt index b75e87378..f8dd9cb7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,41 +1,39 @@ -cmake_minimum_required(VERSION 2.8.5) +cmake_minimum_required(VERSION 3.1.0) + project(sway C) + set(CMAKE_C_FLAGS "-g") set(CMAKE_C_STANDARD 99) SET(CMAKE_C_EXTENSIONS OFF) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") add_definitions("-Wall -Wextra -Wno-unused-parameter -D_GNU_SOURCE") -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake) - -add_subdirectory(swaybg swaybg) +list(INSERT CMAKE_MODULE_PATH 0 + "${CMAKE_CURRENT_SOURCE_DIR}/CMake") if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") execute_process( COMMAND git describe --always OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) execute_process( COMMAND git rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") -SET(VERSION_GIT_COMMIT_FLAG "-DSWAY_GIT_VERSION=\"g${GIT_COMMIT_HASH}\"") -add_definitions("${VERSION_GIT_COMMIT_FLAG}") +add_definitions("-DSWAY_GIT_VERSION=\"g${GIT_COMMIT_HASH}\"") +add_definitions("-DSWAY_GIT_BRANCH=\"${GIT_BRANCH}\"") -SET(VERSION_GIT_BRANCH_FLAG "-DSWAY_GIT_BRANCH=\"${GIT_BRANCH}\"") -add_definitions("${VERSION_GIT_BRANCH_FLAG}") +string(TIMESTAMP CURRENT_DATE "%Y-%m-%d" UTC) +add_definitions("-DSWAY_VERSION_DATE=${CURRENT_DATE}") -execute_process( - COMMAND date +"%Y-%m-%d" - OUTPUT_VARIABLE CURRENT_DATE - OUTPUT_STRIP_TRAILING_WHITESPACE -) - -SET(VERSION_DATE_FLAG "-DSWAY_VERSION_DATE=${CURRENT_DATE}") -add_definitions("${VERSION_DATE_FLAG}") +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") +add_subdirectory(common) +add_subdirectory(swaybg) find_package(XKBCommon REQUIRED) find_package(WLC REQUIRED) @@ -44,14 +42,12 @@ find_package(PCRE REQUIRED) find_package(JsonC REQUIRED) FILE(GLOB sources ${PROJECT_SOURCE_DIR}/sway/*.c) -FILE(GLOB common ${PROJECT_SOURCE_DIR}/common/*.c) include_directories( ${WLC_INCLUDE_DIRS} ${PCRE_INCLUDE_DIRS} ${JSONC_INCLUDE_DIRS} ${XKBCOMMON_INCLUDE_DIRS} - include/ ) add_executable(sway @@ -64,48 +60,52 @@ target_link_libraries(sway ${XKBCOMMON_LIBRARIES} ${PCRE_LIBRARIES} ${JSONC_LIBRARIES} + sway_common ) -INSTALL( - TARGETS sway - RUNTIME DESTINATION bin -) +install( + TARGETS sway + RUNTIME DESTINATION bin + COMPONENT runtime) +install( + FILES "${CMAKE_CURRENT_SOURCE_DIR}/config" + DESTINATION /etc/sway/ + COMPONENT configuration) -INSTALL( - FILES ${PROJECT_SOURCE_DIR}/config - DESTINATION /etc/sway/ -) +add_custom_target(man ALL) -ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.1 - COMMAND ${A2X_COMMAND} --no-xmllint --doctype manpage --format manpage - -D ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR}/sway.1.txt - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/sway.1.txt -) +function (add_manpage name section) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}" + COMMAND "${A2X_COMMAND}" + --no-xmllint + --doctype manpage + --format manpage + -D "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/${name}.${section}.txt" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${name}.${section}.txt" + COMMENT "Generating manpage for ${name}.${section}") -ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.5 - COMMAND ${A2X_COMMAND} --no-xmllint --doctype manpage --format manpage - -D ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR}/sway.5.txt - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/sway.5.txt -) + add_custom_target("man-${name}.${section}" + DEPENDS + "${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}") + add_dependencies(man + "man-${name}.${section}") -ADD_CUSTOM_TARGET(man ALL - DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.1 - DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.5) + install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}" + DESTINATION "share/man/man${section}" + COMPONENT documentation) +endfunction () -INSTALL( - FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.1 - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1 -) +add_manpage(sway 1) +add_manpage(sway 5) -INSTALL( - FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.5 - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man5 -) - -INSTALL( - FILES ${PROJECT_SOURCE_DIR}/sway.desktop - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/wayland-sessions/) - -INSTALL( - FILES ${PROJECT_SOURCE_DIR}/sway-xorg.desktop - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/xsessions/) +install( + FILES "${CMAKE_CURRENT_SOURCE_DIR}/sway.desktop" + DESTINATION share/wayland-sessions + COMPONENT data) +install( + FILES "${CMAKE_CURRENT_SOURCE_DIR}/sway-xorg.desktop" + DESTINATION share/xsessions + COMPONENT data) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt new file mode 100644 index 000000000..f3a00626e --- /dev/null +++ b/common/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(sway_common STATIC + list.c + log.c) diff --git a/swaybg/CMakeLists.txt b/swaybg/CMakeLists.txt index 9351441af..1ad433240 100644 --- a/swaybg/CMakeLists.txt +++ b/swaybg/CMakeLists.txt @@ -7,9 +7,7 @@ find_package(Pango REQUIRED) include(Wayland) WAYLAND_ADD_PROTOCOL_CLIENT(proto-xdg-shell "xdg-shell.xml" xdg-shell) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../bin/") include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/../include ${WAYLAND_CLIENT_INCLUDE_DIR} ${CAIRO_INCLUDE_DIRS} ${PANGO_INCLUDE_DIRS} @@ -17,7 +15,6 @@ include_directories( FILE(GLOB sources ${PROJECT_SOURCE_DIR}/*.c) FILE(GLOB wl_sources ${PROJECT_SOURCE_DIR}/../wayland/*.c) -FILE(GLOB common ${PROJECT_SOURCE_DIR}/../common/*.c) add_executable(swaybg ${sources} @@ -25,9 +22,9 @@ add_executable(swaybg ${common} ) -TARGET_LINK_LIBRARIES(swaybg ${WAYLAND_CLIENT_LIBRARIES} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES}) +TARGET_LINK_LIBRARIES(swaybg ${WAYLAND_CLIENT_LIBRARIES} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} sway_common) -INSTALL( - TARGETS swaybg - RUNTIME DESTINATION bin -) +install( + TARGETS swaybg + RUNTIME DESTINATION bin + COMPONENT runtime)