123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- #CMakeLists.txt
- CONFIGURE_FILE(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
- IMMEDIATE @ONLY)
- ADD_CUSTOM_TARGET(uninstall
- "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
- # Minimum version of CMake
- cmake_minimum_required(VERSION 2.6)
- if(COMMAND cmake_policy)
- cmake_policy(VERSION 2.6)
- endif()
- # Source dir
- set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
- set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
- # Other
- #set(CMAKE_BUILD_TYPE RELEASE)
- option(WITH_LOGOS "install wmfs logos")
- option(GENERATE_MANPAGES "generate manpages" ON)
- # Project name - wmfs
- set(PROJECT_NAME wmfs)
- project(${PROJECT_NAME} C)
- # Definition of the wmfs source
- set(wmfs_src
- wmfs.c
- config.c
- event.c
- util.c)
- # Set the executable from the wmfs_src
- add_executable(wmfs ${wmfs_src})
- # Set the version - NOT USED AT THE MOMENT
- set(VERSION wmfs-devel)
- # CFLAGS
- set(CFLAGS "-g -Wall")
- set(CMAKE_C_FLAGS ${CFLAGS})
- # Link Libraries
- set(LIBRARIES_TO_LINK
- X11
- confuse)
- target_link_libraries(wmfs ${LIBRARIES_TO_LINK})
- # Messages
- message("Project version : ${VERSION}")
- message("Using these CFLAGS : ${CFLAGS}")
- message("Linking with theses libraries : ${LIBRARIES_TO_LINK}")
- # Includes
- include(FindPkgConfig)
- #include(CPack) # need to configure it for packaging
- # Use pkgconfig to get required libraries
- pkg_check_modules(wmfs_required
- x11
- libconfuse)
- # Find exterbal programs
- macro(a_find_program var prg req)
- set(required ${req})
- find_program(${var} ${prg})
- if(NOT ${var})
- message(STATUS "${prg} not found.")
- if(required)
- message(FATAL_ERROR "${prg} is required to build wmfs")
- endif()
- else()
- message(STATUS "${prg} -> ${${var}}")
- endif()
- endmacro()
- find_program(GIT_EXECUTABLE git)
- # programs needed for man pages
- a_find_program(ASCIIDOC_EXECUTABLE asciidoc FALSE)
- a_find_program(XMLTO_EXECUTABLE xmlto FALSE)
- a_find_program(GZIP_EXECUTABLE gzip FALSE)
- a_find_program(CAT_EXECUTABLE cat TRUE)
- # Generating CHANGELOG
- if(EXISTS ${SOURCE_DIR}/.git/HEAD AND GIT_EXECUTABLE)
- # generate
- execute_process(
- COMMAND ${GIT_EXECUTABLE} log
- WORKING_DIRECTORY ${SOURCE_DIR}
- #COMMENT "Generating CHANGELOG"
- OUTPUT_VARIABLE WMFS_CHANGELOG
- )
- set(CHANGELOG_FILE ${SOURCE_DIR}/CHANGELOG)
- file(WRITE ${CHANGELOG_FILE} ${WMFS_CHANGELOG})
- endif()
- # {{{ Check if documentation can be build
- if(GENERATE_MANPAGES)
- if(NOT ASCIIDOC_EXECUTABLE OR NOT XMLTO_EXECUTABLE OR NOT GZIP_EXECUTABLE)
- if(NOT ASCIIDOC_EXECUTABLE)
- SET(missing "asciidoc")
- endif()
- if(NOT XMLTO_EXECUTABLE)
- SET(missing ${missing} " xmlto")
- endif()
- if(NOT GZIP_EXECUTABLE)
- SET(missing ${missing} " gzip")
- endif()
- message(STATUS "Not generating manpages. Missing: " ${missing})
- set(GENERATE_MANPAGES OFF)
- endif()
- endif()
- #If a sysconfdir is specified, use it instead
- #of the default configuration dir.
- if(DEFINED SYSCONFDIR)
- set(SYSCONFDIR ${SYSCONFDIR} CACHE PATH "config directory")
- else()
- set(SYSCONFDIR /etc CACHE PATH "config directory")
- endif()
- #If an XDG Config Dir is specificed, use it instead
- #of the default XDG configuration dir.
- if(DEFINED XDG_CONFIG_DIR)
- set(XDG_CONFIG_DIR ${XDG_CONFIG_SYS} CACHE PATH "xdg config directory")
- else()
- set(XDG_CONFIG_DIR ${SYSCONFDIR}/xdg CACHE PATH "xdg config directory")
- endif()
- # sets
- # {{{ Install path and configuration variables
- if(DEFINED PREFIX)
- set(PREFIX ${PREFIX} CACHE PATH "install prefix")
- set(CMAKE_INSTALL_PREFIX ${PREFIX})
- else()
- set(PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "install prefix")
- endif()
- # set man path
- set(WMFS_MAN_SRCS
- ${SOURCE_DIR}/wmfs.1.txt)
- if(DEFINED WMFS_MAN_PATH)
- set(WMFS_MAN_PATH ${WMFS_MAN_PATH} CACHE PATH "wmfs manpage directory")
- else()
- set(WMFS_MAN_PATH ${PREFIX}/share/man CACHE PATH "wmfs manpage directory")
- endif()
- # {{{ Manpages
- if(GENERATE_MANPAGES)
- foreach(txtfile ${WMFS_MAN_SRCS})
- string(REGEX REPLACE ".txt\$" ".xml" xmlfile ${txtfile})
- string(REPLACE ${SOURCE_DIR}
- ${BUILD_DIR} xmlfile ${xmlfile})
- string(REGEX REPLACE ".xml\$" ".gz" gzfile ${xmlfile})
- string(REGEX REPLACE ".gz\$" "" manfile ${gzfile})
- add_custom_command(
- COMMAND ${CAT_EXECUTABLE} ${txtfile}
- | ${ASCIIDOC_EXECUTABLE} -d manpage -b docbook -o ${xmlfile} -
- WORKING_DIRECTORY ${BUILD_DIR}
- OUTPUT ${xmlfile}
- DEPENDS ${txtfile}
- VERBATIM)
- add_custom_command(
- COMMAND ${XMLTO_EXECUTABLE} man ${xmlfile}
- OUTPUT ${manfile}
- DEPENDS ${xmlfile})
- add_custom_command(
- COMMAND ${CAT_EXECUTABLE} ${manfile}
- | ${GZIP_EXECUTABLE}
- > ${gzfile}
- OUTPUT ${gzfile}
- DEPENDS ${manfile}
- VERBATIM)
- set(MAN_FILES ${MAN_FILES} ${gzfile})
- # figure out in what section to install to from filename
- string(REGEX REPLACE "^.*\\.([0-9])\\.gz\$" "\\1" section ${gzfile})
- set(WMFS_MAN${section}_FILES ${WMFS_MAN${section}_FILES} ${gzfile})
- endforeach()
- add_custom_target(man ALL DEPENDS ${MAN_FILES})
- endif()
- # }}}
- # Remplace strings in configs
- set(WMFS_VERSION ${VERSION})
- set(WMFS_COMPILE_MACHINE ${CMAKE_SYSTEM_PROCESSOR})
- set(WMFS_COMPILE_BY $ENV{USER})
- set(WMFS_COMPILE_FLAGS ${CFLAGS})
- set(WMFS_LINKED_LIBS ${LIBRARIES_TO_LINK})
- set(WMFS_SYSCONFDIR ${XDG_CONFIG_DIR}/${PROJECT_NAME})
- # Configure files
- set(wmfs_configure_files
- config.h.in)
- macro(a_configure_file file)
- string(REGEX REPLACE ".in\$" "" outfile ${file})
- message(STATUS "Configuring ${outfile}")
- configure_file(${SOURCE_DIR}/${file}
- ${SOURCE_DIR}/${outfile}
- ESCAPE_QUOTE
- @ONLY)
- endmacro()
- foreach(file ${wmfs_configure_files})
- a_configure_file(${file})
- endforeach()
- set(PROJECT_DATA_PATH share/${PROJECT_NAME})
- set(PROJECT_TODO ${SOURCE_DIR}/TODO)
- set(PROJECT_README ${SOURCE_DIR}/README)
- set(PROJECT_CHANGELOG ${SOURCE_DIR}/CHANGELOG)
- set(PROJECT_DEFAULT_CONF ${SOURCE_DIR}/wmfsrc)
- # installs
- install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
- if(WITH_LOGOS)
- set(PROJECT_LOGOS ${PROJECT_DATA_PATH}/logos)
- set(PROJECT_LOGOS_DIR ${SOURCE_DIR}/logos)
- install(DIRECTORY ${PROJECT_LOGOS_DIR} DESTINATION ${PROJECT_DATA_PATH})
- message("Install With logos")
- endif()
- if(GENERATE_MANPAGES)
- install(FILES ${WMFS_MAN1_FILES} DESTINATION ${WMFS_MAN_PATH}/man1)
- endif()
- install(FILES ${PROJECT_TODO} ${PROJECT_README} ${PROJECT_CHANGELOG}
- ${PROJECT_DEFAULT_CONF} DESTINATION ${PROJECT_DATA_PATH})
- install(FILES ${PROJECT_DEFAULT_CONF} DESTINATION ${WMFS_SYSCONFDIR})
|