123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- # -*- mode: cmake -*-
- #Cmakelists.txt
- # Minimum version of CMake
- cmake_minimum_required(VERSION 2.6)
- if(COMMAND cmake_policy)
- cmake_policy(VERSION 2.6)
- endif()
- 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")
- # Source and build dirs
- set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
- set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
- # Project name - wmfs
- set(PROJECT_NAME wmfs)
- project(${PROJECT_NAME} C)
- # Definition of the wmfs source
- set(wmfs_src
- src/confparse/util.c
- src/confparse/confparse.c
- src/barwin.c
- src/client.c
- src/config.c
- src/
- src/draw.c
- src/event.c
- src/ewmh.c
- src/frame.c
- src/getinfo.c
- src/infobar.c
- src/init.c
- src/launcher.c
- src/layout.c
- src/menu.c
- src/mouse.c
- src/screen.c
- src/tag.c
- src/util.c
- src/viwmfs.c
- src/wmfs.c)
- # Set the executable from the wmfs_src
- add_executable(wmfs ${wmfs_src})
- # Set the version
- set(VERSION "WMFS-201001")
- # FLAGS
- set(CFLAGS "-g -Wall -ansi")
- set(CMAKE_C_FLAGS ${CFLAGS})
- # Linker FLAGS
- set(DEFAULT_LDFLAGS "-L /usr/local/lib -lpthread")
- if(CMAKE_SYSTEM_NAME MATCHES NetBSD)
- message("-- NetBSD system found - Using /usr/pkg/lib for linker")
- set(LDFLAGS "${DEFAULT_LDFLAGS} -L /usr/pkg/lib")
- else(CMAKE_SYSTEM_NAME MATCHES NetBSD)
- set(LDFLAGS ${DEFAULT_LDFLAGS})
- endif(CMAKE_SYSTEM_NAME MATCHES NetBSD)
- set_target_properties(wmfs PROPERTIES LINK_FLAGS ${LDFLAGS})
- # Includes dir for libs in build_dir
- include_directories(
- ${BUILD_DIR}/src
- )
- # Package find
- find_package(Freetype)
- if(FREETYPE_FOUND)
- include_directories(${FREETYPE_INCLUDE_DIRS})
- else (FREETYPE_FOUND)
- message(FATAL_ERROR "Could not find Freetype")
- endif (FREETYPE_FOUND)
- find_package(X11)
- if(X11_FOUND)
- include_directories(${X11_INCLUDE_DIR})
- else (X11_FOUND)
- message(FATAL_ERROR "Could not find X11")
- endif (X11_FOUND)
- # Link Libraries
- set(LIBRARIES_TO_LINK
- ${FREETYPE_LIBRARIES}
- ${X11_LIBRARIES}
- Xft)
- # Includes
- include(FindDoxygen)
- include(FindPkgConfig)
- # Use pkgconfig to get required libraries
- pkg_check_modules(WMFS_REQUIRED REQUIRED
- x11
- freetype2
- xft)
- # Check for xinerama
- pkg_check_modules(HAVE_XINERAMA xinerama)
- if(HAVE_XINERAMA_FOUND)
- set(WMFS_HAVE_XINERAMA "#define HAVE_XINERAMA")
- set(LIBRARIES_TO_LINK ${LIBRARIES_TO_LINK} Xinerama)
- else()
- set(WMFS_HAVE_XINERAMA "")
- endif()
- # Check for xrandr
- pkg_check_modules(HAVE_XRANDR xrandr)
- if(HAVE_XRANDR_FOUND)
- set(WMFS_HAVE_XRANDR "#define HAVE_XRANDR")
- set(LIBRARIES_TO_LINK ${LIBRARIES_TO_LINK} Xrandr)
- else()
- set(WMFS_HAVE_XRANDR "")
- endif()
- target_link_libraries(wmfs ${LIBRARIES_TO_LINK})
- # Messages
- message("Project version: ${VERSION}")
- message("Using these CFLAGS: ${CFLAGS}")
- message("Using these LDFLAGS: ${LDFLAGS}")
- message("Linking with theses libraries : ${LIBRARIES_TO_LINK}")
- # Generating man page
- find_program(GZIP_EXECUTABLE gzip)
- if(NOT GZIP_EXECUTABLE)
- message(STATUS "Looking for gzip -- not found")
- message(STATUS "Could not generating man page")
- else()
- message(STATUS "Looking for gzip -- ${GZIP_EXECUTABLE}")
- message(STATUS "Generating man page")
- set(WMFS_MAN1_FILES ${BUILD_DIR}/wmfs.1.gz)
- execute_process(
- COMMAND ${GZIP_EXECUTABLE} -c wmfs.1
- WORKING_DIRECTORY ${SOURCE_DIR}
- OUTPUT_FILE ${WMFS_MAN1_FILES})
- endif()
- # Generating CHANGELOG
- find_program(GIT_EXECUTABLE git)
- if(EXISTS ${SOURCE_DIR}/.git/HEAD AND GIT_EXECUTABLE)
- message(STATUS "Looking for git -- ${GIT_EXECUTABLE}")
- message(STATUS "Git dir -- Generating changelog...")
- set(PROJECT_CHANGELOG ${SOURCE_DIR}/changelog)
- execute_process(
- COMMAND ${GIT_EXECUTABLE} log
- WORKING_DIRECTORY ${SOURCE_DIR}
- OUTPUT_FILE ${PROJECT_CHANGELOG})
- else()
- message(STATUS "Looking for git -- not found")
- message(STATUS "Could not generating changelog")
- 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()
- #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()
- # setting WMFS_XSESSION_PATH
- if(DEFINED WMFS_XSESSION_PATH)
- set(WMFS_XSESSION_PATH ${WMFS_XSESSION_PATH} CACHE PATH "wmfs xsessions directory")
- else()
- set(WMFS_XSESSION_PATH ${PREFIX}/share/xsessions CACHE PATH "wmfs xsessions directory")
- endif()
- 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()
- if(DOXYGEN_EXECUTABLE)
- add_custom_target(doc
- COMMAND ${DOXYGEN_EXECUTABLE} ${SOURCE_DIR}/wmfs.doxygen
- WORKING_DIRECTORY ${BUILD_DIR})
- endif()
- find_program(URXVT_EXECUTABLE urxvt)
- if(URXVT_EXECUTABLE)
- set(WMFS_TERM urxvt)
- else()
- set(WMFS_TERM xterm)
- 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})
- set(WMFS_SOURCE_DIR ${SOURCE_DIR})
- # Configure files
- set(wmfs_configure_files
- src/config.h.in
- wmfs.doxygen.in
- wmfsrc.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_DEFAULT_CONF ${SOURCE_DIR}/wmfsrc)
- # installs
- install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
- if(WMFS_MAN1_FILES)
- install(FILES ${WMFS_MAN1_FILES} DESTINATION ${WMFS_MAN_PATH}/man1)
- endif()
- if(PROJECT_CHANGELOG)
- install(FILES ${PROJECT_CHANGELOG} DESTINATION ${PROJECT_DATA_PATH})
- endif()
- install(FILES ${PROJECT_TODO} ${PROJECT_README}
- ${PROJECT_DEFAULT_CONF} DESTINATION ${PROJECT_DATA_PATH})
- install(FILES ${PROJECT_DEFAULT_CONF} DESTINATION ${WMFS_SYSCONFDIR})
- install(FILES "wmfs.desktop" DESTINATION ${WMFS_XSESSION_PATH})
|