From db49685413a28e814a47f94c126d754a753c7efa Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Mon, 30 Jun 2008 20:05:53 +0200 Subject: [PATCH] atoms: autogenerate atom list Signed-off-by: Julien Danjou --- CMakeLists.txt | 38 ++++++++++++---- awesomeConfig.cmake | 10 ++--- build-utils/atoms-ext.sh | 9 ++++ build-utils/atoms-int.sh | 20 +++++++++ common/atoms.c | 95 +--------------------------------------- common/atoms.h | 46 +------------------ common/atoms.list | 45 +++++++++++++++++++ 7 files changed, 110 insertions(+), 153 deletions(-) create mode 100755 build-utils/atoms-ext.sh create mode 100755 build-utils/atoms-int.sh create mode 100644 common/atoms.list diff --git a/CMakeLists.txt b/CMakeLists.txt index 4080c392..129c0677 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,7 +82,7 @@ set(AWE_SRCS ${SOURCE_DIR}/widgets/systray.c) set(AWE_CLIENT_SRCS - ${SOURCE_DIR}/awesome-client.c + ${SOURCE_DIR}/awesome-client.c ${SOURCE_DIR}/common/socket.c ${SOURCE_DIR}/common/util.c ${SOURCE_DIR}/common/version.c) @@ -115,7 +115,7 @@ add_custom_command( OUTPUT ${BUILD_DIR}/layoutgen.h WORKING_DIRECTORY ${SOURCE_DIR} DEPENDS ${LAYOUTGEN_DEPS} - COMMENT "Generating layoutgen.h." + COMMENT "Generating layoutgen.h" VERBATIM) add_custom_command( @@ -124,12 +124,30 @@ add_custom_command( OUTPUT ${BUILD_DIR}/widgetgen.h WORKING_DIRECTORY ${SOURCE_DIR} DEPENDS ${SOURCE_DIR}/widget.h - COMMENT "Generating widgetgen.h." + COMMENT "Generating widgetgen.h" VERBATIM) -# gperf +# atoms file(MAKE_DIRECTORY ${BUILD_DIR}/common) +add_custom_command( + COMMAND ${SOURCE_DIR}/build-utils/atoms-ext.sh ${SOURCE_DIR}/common/atoms.list + ARGS > ${BUILD_DIR}/common/atoms-extern.h + OUTPUT ${BUILD_DIR}/common/atoms-extern.h + WORKING_DIRECTORY ${SOURCE_DIR} + DEPENDS ${SOURCE_DIR}/common/atoms.list + COMMENT "Generating atoms-extern.h" + VERBATIM) +add_custom_command( + COMMAND ${SOURCE_DIR}/build-utils/atoms-int.sh ${SOURCE_DIR}/common/atoms.list + ARGS > ${BUILD_DIR}/common/atoms-intern.h + OUTPUT ${BUILD_DIR}/common/atoms-intern.h + WORKING_DIRECTORY ${SOURCE_DIR} + DEPENDS ${SOURCE_DIR}/common/atoms.list + COMMENT "Generating atoms-intern.h" + VERBATIM) + +# gperf add_custom_command( COMMAND ${SOURCE_DIR}/build-utils/gperf.sh ARGS ${SOURCE_DIR}/common/tokenize.gperf @@ -151,6 +169,8 @@ add_custom_command( add_custom_target(generated_sources DEPENDS ${BUILD_DIR}/widgetgen.h ${BUILD_DIR}/layoutgen.h + ${BUILD_DIR}/common/atoms-intern.h + ${BUILD_DIR}/common/atoms-extern.h ${BUILD_DIR}/common/tokenize.c ${BUILD_DIR}/common/tokenize.h) @@ -158,7 +178,7 @@ add_dependencies(${PROJECT_AWE_NAME} generated_sources) add_dependencies(${PROJECT_AWECLIENT_NAME} generated_sources) # }}} -# {{{ version stamp +# {{{ Version stamp if(BUILD_FROM_GIT) add_custom_target(version_stamp ALL COMMAND ${SOURCE_DIR}/build-utils/git-version-stamp.sh @@ -171,7 +191,7 @@ if(BUILD_FROM_GIT) endif() # }}} -# {{{ Manpages. +# {{{ Manpages if(GENERATE_MANPAGES) foreach(txtfile ${AWE_MAN_SRCS}) string(REGEX REPLACE ".txt\$" ".xml" xmlfile ${txtfile}) @@ -289,7 +309,7 @@ if(GENERATE_LUADOC) endif() # }}} -# {{{ compile Lua libs +# {{{ Compile Lua libs if(LUAC_EXECUTABLE) foreach(luafile ${AWE_LUA_FILES}) string(REGEX REPLACE ".lua\$" ".luac" luacfile ${luafile}) @@ -311,7 +331,7 @@ if(LUAC_EXECUTABLE) endif() # }}} -# {{{ dist tarball +# {{{ Dist tarball if(BUILD_FROM_GIT) add_custom_target(dist COMMAND ${SOURCE_DIR}/build-utils/dist.sh ${VERSION} @@ -319,7 +339,7 @@ if(BUILD_FROM_GIT) endif() # }}} -# {{{ Installation. +# {{{ Installation install(TARGETS ${PROJECT_AWE_NAME} ${PROJECT_AWECLIENT_NAME} RUNTIME DESTINATION bin) install(FILES ${AWE_LUA_FILES} ${AWE_LUAC_FILES} DESTINATION ${AWESOME_LUA_LIB_PATH}) install(FILES ${AWE_CONF_FILES} DESTINATION ${AWESOME_CONF_PATH}) diff --git a/awesomeConfig.cmake b/awesomeConfig.cmake index 5b70bc10..e05bc8c1 100644 --- a/awesomeConfig.cmake +++ b/awesomeConfig.cmake @@ -75,7 +75,7 @@ if(GENERATE_LUADOC) endif() # }}} -# {{{ version stamp +# {{{ Version stamp if(EXISTS ${SOURCE_DIR}/.git/HEAD AND GIT_EXECUTABLE) # get current version execute_process( @@ -170,7 +170,7 @@ set(AWESOMECLIENT_LIBRARIES ${LIB_NCURSES}) # }}} -# {{{ Optional libraries. +# {{{ Optional libraries # # this sets up: # AWESOME_OPTIONAL_LIBRARIES @@ -199,7 +199,7 @@ if(WITH_IMLIB2) endif() # }}} -# {{{ Install path and configuration variables. +# {{{ Install path and configuration variables if(DEFINED PREFIX) set(PREFIX ${PREFIX} CACHE PATH "install prefix") set(CMAKE_INSTALL_PREFIX ${PREFIX}) @@ -215,7 +215,7 @@ else() set(SYSCONFDIR ${PREFIX}/etc CACHE PATH "config directory") endif() -# hide to avoid confusion +# Hide to avoid confusion mark_as_advanced(CMAKE_INSTALL_PREFIX) set(AWESOME_VERSION ${VERSION}) @@ -231,7 +231,7 @@ set(AWESOME_LUA_LIB_PATH ${AWESOME_DATA_PATH}/lib) set(AWESOME_ICON_PATH ${AWESOME_DATA_PATH}/icons) # }}} -# {{{ Configure files. +# {{{ Configure files set(AWESOME_CONFIGURE_FILES config.h.in awesomerc.lua.in diff --git a/build-utils/atoms-ext.sh b/build-utils/atoms-ext.sh new file mode 100755 index 00000000..59ba03a3 --- /dev/null +++ b/build-utils/atoms-ext.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +echo "/* This file is autogenerated by $0 - do not edit */" +echo + +while read atom +do + echo extern xcb_atom_t $atom\; +done < $1 diff --git a/build-utils/atoms-int.sh b/build-utils/atoms-int.sh new file mode 100755 index 00000000..dde2fe9f --- /dev/null +++ b/build-utils/atoms-int.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +echo "/* This file is autogenerated by $0 - do not edit */" +echo + +while read atom +do + echo xcb_atom_t $atom\; +done < $1 + +echo +echo 'static atom_item_t ATOM_LIST[] =' +echo '{' + +while read atom +do + echo ' { "'$atom'", &'$atom' },' +done < $1 + +echo '};' diff --git a/common/atoms.c b/common/atoms.c index 8dcfbc70..47a9743f 100644 --- a/common/atoms.c +++ b/common/atoms.c @@ -22,106 +22,13 @@ #include "common/atoms.h" #include "common/util.h" -xcb_atom_t _NET_SUPPORTED; -xcb_atom_t _NET_CLIENT_LIST; -xcb_atom_t _NET_CLIENT_LIST_STACKING; -xcb_atom_t _NET_NUMBER_OF_DESKTOPS; -xcb_atom_t _NET_CURRENT_DESKTOP; -xcb_atom_t _NET_DESKTOP_NAMES; -xcb_atom_t _NET_ACTIVE_WINDOW; -xcb_atom_t _NET_WORKAREA; -xcb_atom_t _NET_SUPPORTING_WM_CHECK; -xcb_atom_t _NET_CLOSE_WINDOW; -xcb_atom_t _NET_WM_NAME; -xcb_atom_t _NET_WM_VISIBLE_NAME; -xcb_atom_t _NET_WM_DESKTOP; -xcb_atom_t _NET_WM_ICON_NAME; -xcb_atom_t _NET_WM_VISIBLE_ICON_NAME; -xcb_atom_t _NET_WM_WINDOW_TYPE; -xcb_atom_t _NET_WM_WINDOW_TYPE_NORMAL; -xcb_atom_t _NET_WM_WINDOW_TYPE_DESKTOP; -xcb_atom_t _NET_WM_WINDOW_TYPE_DOCK; -xcb_atom_t _NET_WM_WINDOW_TYPE_SPLASH; -xcb_atom_t _NET_WM_WINDOW_TYPE_DIALOG; -xcb_atom_t _NET_WM_ICON; -xcb_atom_t _NET_WM_PID; -xcb_atom_t _NET_WM_STATE; -xcb_atom_t _NET_WM_STATE_STICKY; -xcb_atom_t _NET_WM_STATE_SKIP_TASKBAR; -xcb_atom_t _NET_WM_STATE_FULLSCREEN; -xcb_atom_t _NET_WM_STATE_ABOVE; -xcb_atom_t _NET_WM_STATE_BELOW; -xcb_atom_t _NET_WM_STATE_MODAL; -xcb_atom_t _NET_WM_STATE_HIDDEN; -xcb_atom_t _NET_WM_STATE_DEMANDS_ATTENTION; -xcb_atom_t UTF8_STRING; -xcb_atom_t _AWESOME_PROPERTIES; -xcb_atom_t WM_PROTOCOLS; -xcb_atom_t WM_DELETE_WINDOW; -xcb_atom_t _XEMBED; -xcb_atom_t _XEMBED_INFO; -xcb_atom_t _NET_SYSTEM_TRAY_OPCODE; -xcb_atom_t _KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR; -xcb_atom_t MANAGER; -xcb_atom_t _XROOTPMAP_ID; -xcb_atom_t WM_STATE; -xcb_atom_t _NET_WM_WINDOW_OPACITY; -xcb_atom_t _NET_SYSTEM_TRAY_ORIENTATION; - typedef struct { const char *name; xcb_atom_t *atom; } atom_item_t; -static atom_item_t ATOM_LIST[] = -{ - { "_NET_SUPPORTED", &_NET_SUPPORTED }, - { "_NET_CLIENT_LIST", &_NET_CLIENT_LIST }, - { "_NET_CLIENT_LIST_STACKING", &_NET_CLIENT_LIST_STACKING }, - { "_NET_NUMBER_OF_DESKTOPS", &_NET_NUMBER_OF_DESKTOPS }, - { "_NET_CURRENT_DESKTOP", &_NET_CURRENT_DESKTOP }, - { "_NET_DESKTOP_NAMES", &_NET_DESKTOP_NAMES }, - { "_NET_ACTIVE_WINDOW", &_NET_ACTIVE_WINDOW }, - { "_NET_WORKAREA", &_NET_WORKAREA }, - { "_NET_SUPPORTING_WM_CHECK", &_NET_SUPPORTING_WM_CHECK }, - { "_NET_CLOSE_WINDOW", &_NET_CLOSE_WINDOW }, - { "_NET_WM_NAME", &_NET_WM_NAME }, - { "_NET_WM_VISIBLE_NAME", &_NET_WM_VISIBLE_NAME }, - { "_NET_WM_DESKTOP", &_NET_WM_DESKTOP }, - { "_NET_WM_ICON_NAME", &_NET_WM_ICON_NAME }, - { "_NET_WM_VISIBLE_ICON_NAME", &_NET_WM_VISIBLE_ICON_NAME }, - { "_NET_WM_WINDOW_TYPE", &_NET_WM_WINDOW_TYPE }, - { "_NET_WM_WINDOW_TYPE_NORMAL", &_NET_WM_WINDOW_TYPE_NORMAL }, - { "_NET_WM_WINDOW_TYPE_DESKTOP", &_NET_WM_WINDOW_TYPE_DESKTOP }, - { "_NET_WM_WINDOW_TYPE_DOCK", &_NET_WM_WINDOW_TYPE_DOCK }, - { "_NET_WM_WINDOW_TYPE_SPLASH", &_NET_WM_WINDOW_TYPE_SPLASH }, - { "_NET_WM_WINDOW_TYPE_DIALOG", &_NET_WM_WINDOW_TYPE_DIALOG }, - { "_NET_WM_ICON", &_NET_WM_ICON }, - { "_NET_WM_PID", &_NET_WM_PID }, - { "_NET_WM_STATE", &_NET_WM_STATE }, - { "_NET_WM_STATE_STICKY", &_NET_WM_STATE_STICKY }, - { "_NET_WM_STATE_SKIP_TASKBAR", &_NET_WM_STATE_SKIP_TASKBAR }, - { "_NET_WM_STATE_FULLSCREEN", &_NET_WM_STATE_FULLSCREEN }, - { "_NET_WM_STATE_ABOVE", &_NET_WM_STATE_ABOVE }, - { "_NET_WM_STATE_BELOW", &_NET_WM_STATE_BELOW }, - { "_NET_WM_STATE_MODAL", &_NET_WM_STATE_MODAL }, - { "_NET_WM_STATE_HIDDEN", &_NET_WM_STATE_HIDDEN }, - { "_NET_WM_STATE_DEMANDS_ATTENTION", &_NET_WM_STATE_DEMANDS_ATTENTION }, - { "UTF8_STRING", &UTF8_STRING }, - { "_AWESOME_PROPERTIES", &_AWESOME_PROPERTIES }, - { "WM_PROTOCOLS", &WM_PROTOCOLS }, - { "WM_DELETE_WINDOW", &WM_DELETE_WINDOW }, - { "_XEMBED", &_XEMBED }, - { "_XEMBED_INFO", &_XEMBED_INFO }, - { "_NET_SYSTEM_TRAY_OPCODE", &_NET_SYSTEM_TRAY_OPCODE }, - { "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", &_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR }, - { "MANAGER", &MANAGER }, - { "_XROOTPMAP_ID", &_XROOTPMAP_ID }, - { "WM_STATE", &WM_STATE }, - { "_NET_WM_WINDOW_OPACITY", &_NET_WM_WINDOW_OPACITY }, - { "_NET_SYSTEM_TRAY_ORIENTATION", &_NET_SYSTEM_TRAY_ORIENTATION }, -}; +#include "common/atoms-intern.h" void atoms_init(xcb_connection_t *conn) diff --git a/common/atoms.h b/common/atoms.h index dfd2c6cb..be9ecd43 100644 --- a/common/atoms.h +++ b/common/atoms.h @@ -24,51 +24,7 @@ #include -extern xcb_atom_t _NET_SUPPORTED; -extern xcb_atom_t _NET_CLIENT_LIST; -extern xcb_atom_t _NET_CLIENT_LIST_STACKING; -extern xcb_atom_t _NET_NUMBER_OF_DESKTOPS; -extern xcb_atom_t _NET_CURRENT_DESKTOP; -extern xcb_atom_t _NET_DESKTOP_NAMES; -extern xcb_atom_t _NET_ACTIVE_WINDOW; -extern xcb_atom_t _NET_WORKAREA; -extern xcb_atom_t _NET_SUPPORTING_WM_CHECK; -extern xcb_atom_t _NET_CLOSE_WINDOW; -extern xcb_atom_t _NET_WM_NAME; -extern xcb_atom_t _NET_WM_VISIBLE_NAME; -extern xcb_atom_t _NET_WM_DESKTOP; -extern xcb_atom_t _NET_WM_ICON_NAME; -extern xcb_atom_t _NET_WM_VISIBLE_ICON_NAME; -extern xcb_atom_t _NET_WM_WINDOW_TYPE; -extern xcb_atom_t _NET_WM_WINDOW_TYPE_NORMAL; -extern xcb_atom_t _NET_WM_WINDOW_TYPE_DESKTOP; -extern xcb_atom_t _NET_WM_WINDOW_TYPE_DOCK; -extern xcb_atom_t _NET_WM_WINDOW_TYPE_SPLASH; -extern xcb_atom_t _NET_WM_WINDOW_TYPE_DIALOG; -extern xcb_atom_t _NET_WM_ICON; -extern xcb_atom_t _NET_WM_PID; -extern xcb_atom_t _NET_WM_STATE; -extern xcb_atom_t _NET_WM_STATE_STICKY; -extern xcb_atom_t _NET_WM_STATE_SKIP_TASKBAR; -extern xcb_atom_t _NET_WM_STATE_FULLSCREEN; -extern xcb_atom_t _NET_WM_STATE_ABOVE; -extern xcb_atom_t _NET_WM_STATE_BELOW; -extern xcb_atom_t _NET_WM_STATE_MODAL; -extern xcb_atom_t _NET_WM_STATE_HIDDEN; -extern xcb_atom_t _NET_WM_STATE_DEMANDS_ATTENTION; -extern xcb_atom_t UTF8_STRING; -extern xcb_atom_t _AWESOME_PROPERTIES; -extern xcb_atom_t WM_PROTOCOLS; -extern xcb_atom_t WM_DELETE_WINDOW; -extern xcb_atom_t _XEMBED; -extern xcb_atom_t _XEMBED_INFO; -extern xcb_atom_t _NET_SYSTEM_TRAY_OPCODE; -extern xcb_atom_t _KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR; -extern xcb_atom_t MANAGER; -extern xcb_atom_t _XROOTPMAP_ID; -extern xcb_atom_t WM_STATE; -extern xcb_atom_t _NET_WM_WINDOW_OPACITY; -extern xcb_atom_t _NET_SYSTEM_TRAY_ORIENTATION; +#include "common/atoms-extern.h" void atoms_init(xcb_connection_t *); diff --git a/common/atoms.list b/common/atoms.list new file mode 100644 index 00000000..6caac531 --- /dev/null +++ b/common/atoms.list @@ -0,0 +1,45 @@ +_NET_SUPPORTED +_NET_CLIENT_LIST +_NET_CLIENT_LIST_STACKING +_NET_NUMBER_OF_DESKTOPS +_NET_CURRENT_DESKTOP +_NET_DESKTOP_NAMES +_NET_ACTIVE_WINDOW +_NET_WORKAREA +_NET_SUPPORTING_WM_CHECK +_NET_CLOSE_WINDOW +_NET_WM_NAME +_NET_WM_VISIBLE_NAME +_NET_WM_DESKTOP +_NET_WM_ICON_NAME +_NET_WM_VISIBLE_ICON_NAME +_NET_WM_WINDOW_TYPE +_NET_WM_WINDOW_TYPE_NORMAL +_NET_WM_WINDOW_TYPE_DESKTOP +_NET_WM_WINDOW_TYPE_DOCK +_NET_WM_WINDOW_TYPE_SPLASH +_NET_WM_WINDOW_TYPE_DIALOG +_NET_WM_ICON +_NET_WM_PID +_NET_WM_STATE +_NET_WM_STATE_STICKY +_NET_WM_STATE_SKIP_TASKBAR +_NET_WM_STATE_FULLSCREEN +_NET_WM_STATE_ABOVE +_NET_WM_STATE_BELOW +_NET_WM_STATE_MODAL +_NET_WM_STATE_HIDDEN +_NET_WM_STATE_DEMANDS_ATTENTION +UTF8_STRING +_AWESOME_PROPERTIES +WM_PROTOCOLS +WM_DELETE_WINDOW +_XEMBED +_XEMBED_INFO +_NET_SYSTEM_TRAY_OPCODE +_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR +MANAGER +_XROOTPMAP_ID +WM_STATE +_NET_WM_WINDOW_OPACITY +_NET_SYSTEM_TRAY_ORIENTATION