Loading TangoAccessControl/CMakeLists.txt +28 −68 Original line number Diff line number Diff line #============================================================================= # # file : CMakeLists.txt # # description : File to generate a TANGO device server using cmake. # # project : TangoAccessControl # # $Author: $ # # $Revision: $ # $Date: $ # #============================================================================= # This file is generated by POGO # (Program Obviously used to Generate tango Object) #============================================================================= # # cmake_minimum_required (VERSION 2.8) set(CMAKE_SKIP_RPATH true) # MAKE_ENV is the path to find common environment to buil project # set(MAKE_ENV ${TANGO_HOME}) # # Project definitions # cmake_minimum_required(VERSION 3.7 FATAL_ERROR) project(TangoAccessControl) # # optional compiler flags # set(CXXFLAGS_USER -g) if(NOT CMAKE_BUILD_TYPE) message("No build type specified - default is DEBUG") set(CMAKE_BUILD_TYPE DEBUG) endif() include(FindPkgConfig) include(configure/FindMySQL.cmake) # # Get global information # include(${MAKE_ENV}/cmake_tango.opt) if(NOT MYSQL_FOUND) message(SEND_ERROR " Can not find MySQL client library.") endif() # # Files for TangoAccessControl TANGO class # set(TANGOACCESSCONTROL TangoAccessControl) set(TANGOACCESSCONTROL_INCLUDE ${CMAKE_SOURCE_DIR}) set(TANGOACCESSCONTROL_SRC ${TANGOACCESSCONTROL}.cpp ${TANGOACCESSCONTROL}Class.cpp ${TANGOACCESSCONTROL}StateMachine.cpp DbUtils.cpp) # # Files for AccessControl TANGO class # set(ACCESSCONTROL_PATH ../AbstractClasses) set(ACCESSCONTROL AccessControl) set(ACCESSCONTROL_INCLUDE ../AbstractClasses) set(ACCESSCONTROL_SRC ${ACCESSCONTROL_PATH}/${ACCESSCONTROL}.cpp ${ACCESSCONTROL_PATH}/${ACCESSCONTROL}Class.cpp ${ACCESSCONTROL_PATH}/${ACCESSCONTROL}StateMachine.cpp) pkg_search_module(TANGO_PKG REQUIRED tango) set(SOURCES ClassFactory.cpp DbUtils.cpp TangoAccessControlStateMachine.cpp TangoAccessControl.cpp TangoAccessControlClass.cpp main.cpp) # # User additional include, link folders/libraries and source files # set(USER_INCL_DIR /usr/include/mysql) set(USER_LIB_DIR /usr/lib/x86_64-linux-gnu) set(USER_LIBS mysqlclient_r) set(USER_SRC_FILES ) set(ADDITIONAL_SOURCES ../AbstractClasses/AccessControl.cpp ../AbstractClasses/AccessControlClass.cpp ../AbstractClasses/AccessControlStateMachine.cpp) # # Set gloabal info and include directories # set(ALL_CLASS_INCLUDE ${TANGOACCESSCONTROL_INCLUDE} ${ACCESSCONTROL_INCLUDE} ${USER_INCL_DIR}) set(SERVER_SRC ${TANGOACCESSCONTROL_SRC} ${ACCESSCONTROL_SRC} ${USER_SRC_FILES} ClassFactory.cpp main.cpp) include_directories(${ALL_CLASS_INCLUDE} ${USER_INCL_DIR} ${TANGO_INCLUDES}) include_directories(${CMAKE_SOURCE_DIR} ../AbstractClasses ${TANGO_PKG_INCLUDE_DIRS} ${MYSQL_INCLUDE_DIRS}) link_directories(${TANGO_PKG_LIBRARY_DIRS}) # # Device Server generation # set(SERVER_NAME TangoAccessControl) include(${MAKE_ENV}/cmake_common_target.opt) add_executable(TangoAccessControl ${SOURCES} ${ADDITIONAL_SOURCES}) target_link_libraries(TangoAccessControl ${TANGO_PKG_LIBRARIES} ${MYSQL_LIBRARIES} -Wl,-z,now -pie) target_compile_options(TangoAccessControl PUBLIC ${TANGO_PKG_CFLAGS_OTHER} -Wall -Wextra -D_FORTIFY_SOURCE=2 -O1 -fpie) install(TARGETS TangoAccessControl RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}" CONFIGURATIONS ${CMAKE_BUILD_TYPE}) TangoAccessControl/TangoAccessControl.h +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ #include <AccessControl.h> #include <mysql.h> #ifndef LIBMARIADB #if MYSQL_VERSION_ID >= 80001 typedef bool my_bool; #endif #endif #define CONTROL_SYSTEM "CtrlSystem" #define SERVICE_PROP_NAME "Services" Loading TangoAccessControl/configure/FindMySQL.cmake 0 → 100644 +50 −0 Original line number Diff line number Diff line # - Try to find MySQL. # Once done this will define: # MYSQL_FOUND - If false, do not try to use MySQL. # MYSQL_INCLUDE_DIRS - Where to find mysql.h, etc. # MYSQL_LIBRARIES - The libraries to link against. # if( WIN32 ) find_path( MYSQL_INCLUDE_DIR NAMES "mysql.h" PATHS "$ENV{PROGRAMFILES}/MySQL/*/include" "$ENV{PROGRAMFILES(x86)}/MySQL/*/include" "$ENV{SYSTEMDRIVE}/MySQL/*/include" ) find_library( MYSQL_LIBRARY NAMES "mysqlclient" "mysqlclient_r" PATHS "$ENV{PROGRAMFILES}/MySQL/*/lib" "$ENV{PROGRAMFILES(x86)}/MySQL/*/lib" "$ENV{SYSTEMDRIVE}/MySQL/*/lib" ) else() find_path( MYSQL_INCLUDE_DIR NAMES "mysql.h" PATHS "/usr/include/mysql" "/usr/include/mariadb" "/usr/local/include/mysql" "/usr/mysql/include/mysql" ) find_library( MYSQL_LIBRARY NAMES "mysqlclient" "mysqlclient_r" PATHS "/lib/mysql" "/lib64/mysql" "/usr/lib/mysql" "/usr/lib/mariadb" "/usr/lib64/mysql" "/usr/local/lib/mysql" "/usr/local/lib64/mysql" "/usr/mysql/lib/mysql" "/usr/mysql/lib64/mysql" ) endif() # handle the QUIETLY and REQUIRED arguments and set MYSQL_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) find_package_handle_standard_args( MYSQL DEFAULT_MSG MYSQL_LIBRARY MYSQL_INCLUDE_DIR) set( MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIR} ) set( MYSQL_LIBRARIES ${MYSQL_LIBRARY} ) mark_as_advanced( MYSQL_INCLUDE_DIR MYSQL_LIBRARY ) Loading
TangoAccessControl/CMakeLists.txt +28 −68 Original line number Diff line number Diff line #============================================================================= # # file : CMakeLists.txt # # description : File to generate a TANGO device server using cmake. # # project : TangoAccessControl # # $Author: $ # # $Revision: $ # $Date: $ # #============================================================================= # This file is generated by POGO # (Program Obviously used to Generate tango Object) #============================================================================= # # cmake_minimum_required (VERSION 2.8) set(CMAKE_SKIP_RPATH true) # MAKE_ENV is the path to find common environment to buil project # set(MAKE_ENV ${TANGO_HOME}) # # Project definitions # cmake_minimum_required(VERSION 3.7 FATAL_ERROR) project(TangoAccessControl) # # optional compiler flags # set(CXXFLAGS_USER -g) if(NOT CMAKE_BUILD_TYPE) message("No build type specified - default is DEBUG") set(CMAKE_BUILD_TYPE DEBUG) endif() include(FindPkgConfig) include(configure/FindMySQL.cmake) # # Get global information # include(${MAKE_ENV}/cmake_tango.opt) if(NOT MYSQL_FOUND) message(SEND_ERROR " Can not find MySQL client library.") endif() # # Files for TangoAccessControl TANGO class # set(TANGOACCESSCONTROL TangoAccessControl) set(TANGOACCESSCONTROL_INCLUDE ${CMAKE_SOURCE_DIR}) set(TANGOACCESSCONTROL_SRC ${TANGOACCESSCONTROL}.cpp ${TANGOACCESSCONTROL}Class.cpp ${TANGOACCESSCONTROL}StateMachine.cpp DbUtils.cpp) # # Files for AccessControl TANGO class # set(ACCESSCONTROL_PATH ../AbstractClasses) set(ACCESSCONTROL AccessControl) set(ACCESSCONTROL_INCLUDE ../AbstractClasses) set(ACCESSCONTROL_SRC ${ACCESSCONTROL_PATH}/${ACCESSCONTROL}.cpp ${ACCESSCONTROL_PATH}/${ACCESSCONTROL}Class.cpp ${ACCESSCONTROL_PATH}/${ACCESSCONTROL}StateMachine.cpp) pkg_search_module(TANGO_PKG REQUIRED tango) set(SOURCES ClassFactory.cpp DbUtils.cpp TangoAccessControlStateMachine.cpp TangoAccessControl.cpp TangoAccessControlClass.cpp main.cpp) # # User additional include, link folders/libraries and source files # set(USER_INCL_DIR /usr/include/mysql) set(USER_LIB_DIR /usr/lib/x86_64-linux-gnu) set(USER_LIBS mysqlclient_r) set(USER_SRC_FILES ) set(ADDITIONAL_SOURCES ../AbstractClasses/AccessControl.cpp ../AbstractClasses/AccessControlClass.cpp ../AbstractClasses/AccessControlStateMachine.cpp) # # Set gloabal info and include directories # set(ALL_CLASS_INCLUDE ${TANGOACCESSCONTROL_INCLUDE} ${ACCESSCONTROL_INCLUDE} ${USER_INCL_DIR}) set(SERVER_SRC ${TANGOACCESSCONTROL_SRC} ${ACCESSCONTROL_SRC} ${USER_SRC_FILES} ClassFactory.cpp main.cpp) include_directories(${ALL_CLASS_INCLUDE} ${USER_INCL_DIR} ${TANGO_INCLUDES}) include_directories(${CMAKE_SOURCE_DIR} ../AbstractClasses ${TANGO_PKG_INCLUDE_DIRS} ${MYSQL_INCLUDE_DIRS}) link_directories(${TANGO_PKG_LIBRARY_DIRS}) # # Device Server generation # set(SERVER_NAME TangoAccessControl) include(${MAKE_ENV}/cmake_common_target.opt) add_executable(TangoAccessControl ${SOURCES} ${ADDITIONAL_SOURCES}) target_link_libraries(TangoAccessControl ${TANGO_PKG_LIBRARIES} ${MYSQL_LIBRARIES} -Wl,-z,now -pie) target_compile_options(TangoAccessControl PUBLIC ${TANGO_PKG_CFLAGS_OTHER} -Wall -Wextra -D_FORTIFY_SOURCE=2 -O1 -fpie) install(TARGETS TangoAccessControl RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}" CONFIGURATIONS ${CMAKE_BUILD_TYPE})
TangoAccessControl/TangoAccessControl.h +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ #include <AccessControl.h> #include <mysql.h> #ifndef LIBMARIADB #if MYSQL_VERSION_ID >= 80001 typedef bool my_bool; #endif #endif #define CONTROL_SYSTEM "CtrlSystem" #define SERVICE_PROP_NAME "Services" Loading
TangoAccessControl/configure/FindMySQL.cmake 0 → 100644 +50 −0 Original line number Diff line number Diff line # - Try to find MySQL. # Once done this will define: # MYSQL_FOUND - If false, do not try to use MySQL. # MYSQL_INCLUDE_DIRS - Where to find mysql.h, etc. # MYSQL_LIBRARIES - The libraries to link against. # if( WIN32 ) find_path( MYSQL_INCLUDE_DIR NAMES "mysql.h" PATHS "$ENV{PROGRAMFILES}/MySQL/*/include" "$ENV{PROGRAMFILES(x86)}/MySQL/*/include" "$ENV{SYSTEMDRIVE}/MySQL/*/include" ) find_library( MYSQL_LIBRARY NAMES "mysqlclient" "mysqlclient_r" PATHS "$ENV{PROGRAMFILES}/MySQL/*/lib" "$ENV{PROGRAMFILES(x86)}/MySQL/*/lib" "$ENV{SYSTEMDRIVE}/MySQL/*/lib" ) else() find_path( MYSQL_INCLUDE_DIR NAMES "mysql.h" PATHS "/usr/include/mysql" "/usr/include/mariadb" "/usr/local/include/mysql" "/usr/mysql/include/mysql" ) find_library( MYSQL_LIBRARY NAMES "mysqlclient" "mysqlclient_r" PATHS "/lib/mysql" "/lib64/mysql" "/usr/lib/mysql" "/usr/lib/mariadb" "/usr/lib64/mysql" "/usr/local/lib/mysql" "/usr/local/lib64/mysql" "/usr/mysql/lib/mysql" "/usr/mysql/lib64/mysql" ) endif() # handle the QUIETLY and REQUIRED arguments and set MYSQL_FOUND to TRUE if # all listed variables are TRUE include( FindPackageHandleStandardArgs ) find_package_handle_standard_args( MYSQL DEFAULT_MSG MYSQL_LIBRARY MYSQL_INCLUDE_DIR) set( MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIR} ) set( MYSQL_LIBRARIES ${MYSQL_LIBRARY} ) mark_as_advanced( MYSQL_INCLUDE_DIR MYSQL_LIBRARY )