From e2ba617405677fcf5f6c518bb772aea91ba7df7d Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Thu, 14 Jan 2021 10:43:33 +0100 Subject: [PATCH] fxsdk: command-line interface for fxSDK 2.3 * Add the CMake build system * Use CMake as the default for new projects * Change [fxsdk new] but continue supporting the previous signature * Automatically configure in [fxsdk build-fx] and [fxsdk build-cg] * Improve help screen --- Makefile | 2 +- fxsdk/assets/CMakeLists.txt | 48 +++++++ fxsdk/assets/assets-cg/example.png | Bin 0 -> 3816 bytes fxsdk/assets/assets-cg/fxconv-metadata.txt | 3 + fxsdk/assets/assets-fx/example.png | Bin 0 -> 3569 bytes fxsdk/assets/assets-fx/fxconv-metadata.txt | 3 + fxsdk/fxsdk.sh | 150 +++++++++++++-------- 7 files changed, 149 insertions(+), 57 deletions(-) create mode 100644 fxsdk/assets/CMakeLists.txt create mode 100644 fxsdk/assets/assets-cg/example.png create mode 100644 fxsdk/assets/assets-cg/fxconv-metadata.txt create mode 100644 fxsdk/assets/assets-fx/example.png create mode 100644 fxsdk/assets/assets-fx/fxconv-metadata.txt diff --git a/Makefile b/Makefile index ff25299..dc886bf 100755 --- a/Makefile +++ b/Makefile @@ -93,7 +93,7 @@ install-fxsdk: all-fxsdk install -d $(PREFIX)/bin install bin/fxsdk.sh $(PREFIX)/bin/fxsdk install -d $(PREFIX)/share/fxsdk/assets - install fxsdk/assets/* $(m644) $(PREFIX)/share/fxsdk/assets + cp -ra fxsdk/assets $(PREFIX)/share/fxsdk/ install bin/fxsdk.sh $(m755) $(PREFIX)/bin/fxsdk install -d $(PREFIX)/lib/cmake/fxsdk install fxsdk/cmake/* $(m644) $(PREFIX)/lib/cmake/fxsdk diff --git a/fxsdk/assets/CMakeLists.txt b/fxsdk/assets/CMakeLists.txt new file mode 100644 index 0000000..8319a34 --- /dev/null +++ b/fxsdk/assets/CMakeLists.txt @@ -0,0 +1,48 @@ +# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the +# toolchain file and module path of the fxSDK + +cmake_minimum_required(VERSION 3.18) +project(MyAddin) + +include(GenerateG1A) +include(GenerateG3A) +include(Fxconv) +find_package(Gint 2.1 REQUIRED) + +set(SOURCES + src/main.c + # ... +) +# Shared assets, fx-9860G-only assets and fx-CG-50-only assets +set(ASSETS + # ... +) +set(ASSETS_fx + assets-fx/example.png + # ... +) +set(ASSETS_cg + assets-cg/example.png + # ... +) + +set_source_files_properties(${ASSETS} PROPERTIES + OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/assets/fxconv-metadata.txt") +set_source_files_properties(${ASSETS_fx} PROPERTIES + OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/assets-fx/fxconv-metadata.txt") +set_source_files_properties(${ASSETS_cg} PROPERTIES + OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/assets-cg/fxconv-metadata.txt") + +set_source_files_properties(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} + PROPERTIES LANGUAGE FXCONV) + +add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) +target_link_libraries(myaddin Gint::Gint) + +if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) + generate_g1a(TARGET myaddin OUTPUT "MyAddin.g1a" + NAME "MyAddin" ICON assets-fx/icon.png) +elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) + generate_g3a(TARGET myaddin OUTPUT "MyAddin.g3a" + NAME "MyAddin" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) +endif() diff --git a/fxsdk/assets/assets-cg/example.png b/fxsdk/assets/assets-cg/example.png new file mode 100644 index 0000000000000000000000000000000000000000..8826800383eeae92dade9545feaeb68faf0720f2 GIT binary patch literal 3816 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 eRZ5JQiUR=bBzf^!G-(0=0000 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 - fxsdk (build|build-fx|build-cg) [-s] - fxsdk (send|send-fx|send-cg) +usage: ${R}fxsdk${n} (${R}new${n}|${R}build${n}|${R}build-fx${n}|${R}build-\ +cg${n}|${R}send${n}|${R}send-fx${n}|${R}send-cg${n}) [${g}ARGUMENTS${n}...] This program is a command-line helper for the fxSDK, a set of tools used in conjunction with gint to develop add-ins for CASIO fx-9860G and fx-CG 50. -Project creation: - fxsdk new +${R}fxsdk new${n} ${g}${n} [${R}--makefile${n}|${R}--cmake${n}] \ +[${g}${n}] + Create a new project in the specified folder. The default build system is + CMake. Project name can be specified now or in the project files later. - Creates a new project in the specified folder. Project info is input - interactively. Creates and populates it with default project - data. - -Compilation: - fxsdk build [-s] - fxsdk build-fx [-s] - fxsdk build-cg [-s] - - Compiles the current project for fx-9860G (.g1a target) or fx-CG 50 (.g3a +${R}fxsdk build${n} [${g}-s${n}] +${R}fxsdk build-fx${n} [${g}-s${n}] +${R}fxsdk build-cg${n} [${g}-s${n}] + Build the current project for fx-9860G (.g1a target) or fx-CG 50 (.g3a target). With 'fxsdk build', compiles every existing build folder, and ask interactively if none is found. With '-s', also sends the resulting program to the calculator. -Installation: - fxsdk send - fxsdk send-fx - fxsdk send-cg - +${R}fxsdk send${n} +${R}fxsdk send-fx${n} +${R}fxsdk send-cg${n} Sends the target file to the calculator. Uses p7 (which must be installed externally) for fx-9860G. Currently not implemented for fx-CG 50, as it requires detecting and mounting the calculator (same for the Graph 35+E II). -Project update: - fxsdk update - +${R}fxsdk update${n} Copies the latest version of the Makefile to your project. *This will discard any changes made to your Makefile.* If you have edited your Makefile, make a backup and merge the changes after updating. @@ -55,9 +50,8 @@ usage() { } error() { - echo -n "error: " >&2 - echo "$@" >&2 - echo "Try 'fxsdk --help' for more information." >&2 + echo "error:" "$@" >&2 + exit 1 } status() { @@ -66,34 +60,62 @@ status() { echo -e "\e[0m\n" } -fxsdk_new_project_interactive() { - [[ -z "$1" ]] && error "please specify the project folder" && return 1 - [[ -e "$1" ]] && error "'$1' exists, I don't dare touch it" && return 1 +fxsdk_new_project() { + # Generator to use, output folder and project name + generator="CMake" + folder="" + name="" - echo -e "Creating a new project in folder '$1'.\n" + # Parse options, then skip to positional arguments + TEMP=$(getopt -o "" -l "makefile,cmake" -n "$0" -- "$@") + eval set -- "$TEMP" + for arg; do case "$arg" in + "--makefile") generator="Makefile";; + "--cmake") generator="CMake";; + *) break;; + esac; done + while [[ "$1" != "--" ]]; do shift; done; shift - echo -ne "Full project name ? (at most 8 characters)\n> " - read NAME + if [[ -z "$1" ]]; then + usage 1 + fi + if [[ -e "$1" && "$1" != "." ]]; then + error "$1 exists, I don't dare touch it" + fi - echo "Internal name ? ('@' followed by at most 7 uppercase letters)" - echo -ne "(Add-in might not appear on calc if format is wrong)\n> " - read INTERNAL + # Determine name and internal name + if [[ ! -z "$2" ]]; then + NAME=${2::8} + upper=${2^^} + else + cap=${1^} + NAME=${cap::8} + upper=${1^^} + fi + INTERNAL=@${upper::7} + # Copy initial files to project folder + assets="$PREFIX/share/fxsdk/assets" mkdir -p "$1"/{,src,assets-fx,assets-cg} - assets="$PREFIX/share/fxsdk/assets" + case "$generator" in + "Makefile") + sed -e "s/@NAME@/$NAME/g" -e "s/@INTERNAL@/$INTERNAL/g" \ + "$assets/project.cfg" > "$1/project.cfg" + cp "$assets/Makefile" "$1";; + "CMake") + cp "$assets/CMakeLists.txt" "$1";; + esac - sed -e "s/@NAME@/$NAME/g" -e "s/@INTERNAL@/$INTERNAL/g" \ - "$assets/project.cfg" > "$1/project.cfg" - - cp "$assets"/Makefile "$1" cp "$assets"/gitignore "$1"/.gitignore cp "$assets"/main.c "$1"/src - cp "$assets"/icon-fx.png "$1"/assets-fx - cp "$assets"/icon-cg-uns.png "$1"/assets-cg - cp "$assets"/icon-cg-sel.png "$1"/assets-cg + cp "$assets"/icon-fx.png "$1"/assets-fx/icon.png + cp "$assets"/icon-cg-uns.png "$1"/assets-cg/icon-uns.png + cp "$assets"/icon-cg-sel.png "$1"/assets-cg/icon-sel.png + cp -r "$assets"/assets-fx "$1"/ + cp -r "$assets"/assets-cg "$1"/ - echo -e "\nYour project '$NAME' has been created.\n" + echo "Created a new project $NAME (build system: $generator)." echo "Type 'fxsdk build-fx' or 'fxsdk build-cg' to compile the program." } @@ -135,14 +157,12 @@ fxsdk_build() { [[ -z $platform ]] && return if [[ $platform == "fx" ]]; then - status "Making into build-fx" - make all-fx + fxsdk_build_fx return fi if [[ $platform == "cg" ]]; then - status "Making into build-fx" - make all-cg + fxsdk_build_ch return fi @@ -151,13 +171,33 @@ fxsdk_build() { } fxsdk_build_fx() { - status "Making into build-fx" - make all-fx + # CMake version; automatically configure + if [[ -e "CMakeLists.txt" ]]; then + if [[ ! -e "build-fx" ]]; then + cmake -B build-fx \ + -DCMAKE_MODULE_PATH="$PREFIX/lib/cmake/fxsdk" \ + -DCMAKE_TOOLCHAIN_FILE="$PREFIX/lib/cmake/fxsdk/FX9860G.cmake" + fi + make --no-print-directory -C build-fx + # Makefile version + else + make all-fx + fi } fxsdk_build_cg() { - status "Making into build-cg" - make all-cg + # CMake version; automatically configure + if [[ -e "CMakeLists.txt" ]]; then + if [[ ! -e "build-cg" ]]; then + cmake -B build-cg \ + -DCMAKE_MODULE_PATH="$PREFIX/lib/cmake/fxsdk" \ + -DCMAKE_TOOLCHAIN_FILE="$PREFIX/lib/cmake/fxsdk/FXCG50.cmake" + fi + make --no-print-directory -C build-cg + # Makefile version + else + make all-cg + fi } fxsdk_send() { @@ -196,12 +236,10 @@ fxsdk_update() { # Parse command name -case $1 in - +case "$1" in # Project creation "new") - shift - fxsdk_new_project_interactive "$@";; + fxsdk_new_project "${@:2}";; # Project compilation "build"|"b")