cmake_minimum_required(VERSION 3.20) project(fandevice) find_package(PkgConfig REQUIRED) find_package(Doxygen) pkg_check_modules(LIBUSB REQUIRED libusb-1.0) set(SRC_FILES fandevice.c usbshm.c) message("Platform " ${CMAKE_SYSTEM_NAME}) if(WIN32) message("Building for Windows") file(GLOB_RECURSE ARGP_SRC ${PROJECT_SOURCE_DIR}/argp/*.*) set(SRC_FILES ${SRC_FILES} ${ARGP_SRC}) include_directories(./argp) else() message("Building for UNIX") if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE) endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) endif(WIN32) add_library(${PROJECT_NAME} SHARED ${SRC_FILES}) target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARIES}) target_include_directories(${PROJECT_NAME} PUBLIC ${LIBUSB_INCLUDE_DIRS}) add_definitions("-std=c17 -Wall -O2 -fno-strict-aliasing") install(TARGETS ${PROJECT_NAME} DESTINATION lib) install(FILES ./fandevice.h DESTINATION include) link_directories(${CMAKE_CURRENT_BINARY_DIR}) add_executable(${PROJECT_NAME}_cli main.c) add_dependencies(${PROJECT_NAME}_cli ${PROJECT_NAME}) target_link_libraries( ${PROJECT_NAME}_cli ${PROJECT_NAME}) add_definitions("-std=c17 -Wall -O2 -fno-strict-aliasing") install(TARGETS ${PROJECT_NAME}_cli DESTINATION bin) configure_file(pkgconfig/fandevice.pc.in pkgconfig/fandevice.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/fandevice.pc DESTINATION lib/pkgconfig) if(CMAKE_SYSTEM_NAME MATCHES "^Linux") set(UDEV_RULES_INSTALL_DIR /lib/udev/rules.d CACHE PATH "install directory for linux udev config") install(FILES 90-fandevice.rules DESTINATION ${UDEV_RULES_INSTALL_DIR}) endif()