diff --git a/IMSProg_editor/CMakeLists.txt b/IMSProg_editor/CMakeLists.txt index f4dd8e7..c1cc3d3 100644 --- a/IMSProg_editor/CMakeLists.txt +++ b/IMSProg_editor/CMakeLists.txt @@ -8,10 +8,15 @@ set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) project(IMSProg_editor LANGUAGES CXX) - -# Set the CMAKE_INSTALL_PREFIX to /usr if not specified +# Set the CMAKE_INSTALL_PREFIX to /usr if not specified and /usr/local for macOS if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "The default install prefix" FORCE) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "The default install prefix on macOS" FORCE) + # Set Qt5 path for macOS + set(CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}/opt/qt@5" CACHE PATH "Path to Qt5 on macOS" FORCE) + else() + set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "The default install prefix" FORCE) + endif() endif() # Set the CMAKE_INSTALL_BINDIR to /bin if not specified @@ -64,7 +69,11 @@ target_link_libraries(${PROJECT_NAME} Qt5::Core) target_link_libraries(${PROJECT_NAME} Qt5::Widgets) install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg_editor.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + +if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg_editor.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") +endif() + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/img/chipEdit64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pixmaps") install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/imsprog") diff --git a/IMSProg_programmer/CMakeLists.txt b/IMSProg_programmer/CMakeLists.txt index ce98292..1936d2a 100644 --- a/IMSProg_programmer/CMakeLists.txt +++ b/IMSProg_programmer/CMakeLists.txt @@ -11,7 +11,13 @@ project(IMSProg LANGUAGES C CXX) # Set the CMAKE_INSTALL_PREFIX to /usr if not specified if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "The default install prefix" FORCE) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "The default install prefix on macOS" FORCE) + # Set Qt5 path for macOS + set(CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}/opt/qt@5" CACHE PATH "Path to Qt5 on macOS" FORCE) + else() + set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "The default install prefix" FORCE) + endif() endif() # Set the CMAKE_INSTALL_BINDIR to /bin if not specified @@ -35,6 +41,7 @@ find_package(Qt5 REQUIRED COMPONENTS Core Widgets) find_package(Qt5Widgets REQUIRED) find_package(LibUSB REQUIRED) +if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(UDEVDIR "/usr/lib/udev") if (CMAKE_INSTALL_PREFIX STREQUAL "/usr" OR CMAKE_INSTALL_PREFIX STREQUAL "/" ) # /usr and / install prefixes at treated by cmake GNUInstallDirs as @@ -56,7 +63,7 @@ find_package(PkgConfig) endif() endif() endif() - +endif() # Qt5LinguistTools find_package(Qt5 REQUIRED COMPONENTS LinguistTools) @@ -142,20 +149,23 @@ dialogabout.ui recource.qrc ${QM_FILES} ) - + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(${PROJECT_NAME} Qt5::Core) target_link_libraries(${PROJECT_NAME} Qt5::Widgets ${LibUSB_LIBRARIES}) install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/img/IMSProg64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pixmaps") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/database/IMSProg.Dat" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/imsprog") -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/71-CH341.rules" DESTINATION "${UDEVDIR}/rules.d") + +if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/71-CH341.rules" DESTINATION "${UDEVDIR}/rules.d") +endif() install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/imsprog") -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg_database_update" +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg_database_update" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg_database_update.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") @@ -165,4 +175,3 @@ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/IMSProg_database_update.1.gz" D install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/index.html" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/doc/imsprog/html") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/io.github.bigbigmdm.imsprog.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/other/io.github.bigbigmdm.imsprog_database_update.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo") - diff --git a/README.md b/README.md index 661b482..fcf800d 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,8 @@ These commands are included in the `build_all.sh` file. ## System software requirements +### Linux + For build are needed: - g++ or clang - CMake @@ -90,10 +92,44 @@ Optionally if you want to use IMSProg_database_update script: :information_source: Debian < 11 and Ubuntu < 20.04 are not supported, you may unable to have it working on them. +### macOS +if using Homebrew then Xcode Command Line Tools will install by default, if not then install manually from terminal: + +``` +xcode-select --install +``` + +install the required packages + +using brew: + +``` +brew install qt@5 libusb cmake pkgconf +``` + +if not using the [build_all.sh](build_all.sh) script then make sure `libusb` is in your `C_INCLUDE_PATH` + +``` +export C_INCLUDE_PATH=/usr/local/opt/libusb/include +``` +Optionally if you want to use IMSProg_database_update script: +``` +brew install wget zenity +``` + + ## How to use: +Note: for macOS use CMD `⌘` instead of CTRL for keyboard shortcuts. + ## Chip programmer +### Launching +Can be launched from Terminal by running the command +``` +$ IMSProg +``` + ### Connecting - Insert the chip into the appropriate slot of the CH341A programmer. The `24xxx` and `25xxx` series chips must be inserted directly, according to the diff --git a/build_all.sh b/build_all.sh index df5f2ba..3ffa8e2 100755 --- a/build_all.sh +++ b/build_all.sh @@ -1,4 +1,6 @@ #!/bin/bash + +[[ "$OSTYPE" == "darwin"* ]] && export C_INCLUDE_PATH=/usr/local/opt/libusb/include if [ "$EUID" -ne 0 ] then echo "Please run as root! (sudo ./build_all.sh)" exit @@ -8,7 +10,7 @@ rm -rf build/ mkdir build/ cmake -S . -B build/ cmake --build build/ --parallel -sudo cmake --install build/ +cmake --install build/ rm -rf build/ cd .. #IMSProg cd IMSProg_editor @@ -16,7 +18,7 @@ rm -rf build/ mkdir build/ cmake -S . -B build/ cmake --build build/ --parallel -sudo cmake --install build/ +cmake --install build/ rm -rf build/ # Reloading the USB rules -sudo udevadm control --reload-rules +[[ "$OSTYPE" != "darwin"* ]] && udevadm control --reload-rules