@@ -86,6 +86,70 @@ INSTALL(
8686 DESTINATION ${libpkgdata} /pkgconfig
8787)
8888
89+ ########################################################################
90+ # Create Pkg Config File
91+ ########################################################################
92+
93+ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
94+ SET (SYSTEM_IS_LINUX TRUE )
95+ SET (UDEV_OPTION_DEFAULT ON )
96+ else ()
97+ SET (SYSTEM_IS_LINUX FALSE )
98+ SET (UDEV_OPTION_DEFAULT OFF )
99+ endif ()
100+
101+ option (INSTALL_UDEV_RULES
102+ "Install udev rules for the HackRF"
103+ ${UDEV_OPTION_DEFAULT}
104+ )
105+
106+ set (UDEV_RULES_PATH
107+ "/etc/udev/rules.d"
108+ CACHE STRING
109+ "Target directory for udev rule installation. Ensure you have permissions to write to this directory."
110+ )
111+
112+ if (SYSTEM_IS_LINUX)
113+ if (INSTALL_UDEV_RULES)
114+ if (NOT DEFINED UDEV_RULES_GROUP)
115+ foreach (group usb plugdev)
116+ execute_process (COMMAND "getent" group "${group} "
117+ RESULT_VARIABLE _GETENT_RESULT
118+ OUTPUT_QUIET
119+ ERROR_QUIET)
120+ if (NOT _GETENT_RESULT)
121+ message (STATUS "Setting udev rule group to - ${group} " )
122+ set (UDEV_RULES_GROUP ${group} )
123+ break ()
124+ endif (NOT _GETENT_RESULT)
125+ endforeach (group)
126+ endif (NOT DEFINED UDEV_RULES_GROUP)
127+ if (DEFINED UDEV_RULES_GROUP)
128+ set (HACKRF_GROUP "${UDEV_RULES_GROUP} "
129+ CACHE STRING "Group to associate HackRF devices with in udev rules" )
130+ configure_file (${CMAKE_CURRENT_SOURCE_DIR} /53-hackrf.rules.in
131+ ${CMAKE_CURRENT_BINARY_DIR} /53-hackrf.rules
132+ @ONLY
133+ )
134+ message (STATUS "HackRF udev rules will be installed to '${UDEV_RULES_PATH} ' upon running 'make install'" )
135+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /53-hackrf.rules
136+ DESTINATION ${UDEV_RULES_PATH}
137+ COMPONENT "udev_rules" )
138+ else (UDEV_RULES_GROUP)
139+ message (STATUS "HackRF udev rules will not be installed because no suitable group was found" )
140+ message (STATUS "A group can be specified with -DUDEV_RULES_GROUP=<group>" )
141+ endif (DEFINED UDEV_RULES_GROUP)
142+ else (INSTALL_UDEV_RULES)
143+ message (STATUS
144+ "HackRF udev rules will not be installed because INSTALL_UDEV_RULES=OFF"
145+ )
146+ endif (INSTALL_UDEV_RULES)
147+ else (SYSTEM_IS_LINUX)
148+ if (INSTALL_UDEV_RULES)
149+ message (STATUS "udev rules not supported on this platform. Hide this message via -DINSTALL_UDEV_RULES=Off" )
150+ endif (INSTALL_UDEV_RULES)
151+ endif (SYSTEM_IS_LINUX)
152+
89153########################################################################
90154# Create uninstall target
91155########################################################################
0 commit comments