cmake_minimum_required(VERSION 3.10) project(mruby_mcux) # Specify mRuby configuration file via variables if(NOT DEFINED MRUBY_MCUX_TARGET) message(WARNING "MRUBY_MCUX_TARGET not defined, using default.") set(MRUBY_MCUX_TARGET imxrt1052) # Default target endif() add_custom_command( OUTPUT "mruby/${MRUBY_MCUX_TARGET}/lib/libmruby.a__" # FIXME: Force the target run every time... "mruby/${MRUBY_MCUX_TARGET}/lib/libmruby.a" COMMAND "${CMAKE_COMMAND}" "-E" "env" "MRUBY_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/configs/${MRUBY_MCUX_TARGET}.rb" "MRUBY_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}/mruby" "INSTALL_DIR=${CMAKE_CURRENT_BINARY_DIR}/mruby/bin" "./minirake" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/mruby" ) add_custom_target(mruby_libs DEPENDS "mruby/${MRUBY_MCUX_TARGET}/lib/libmruby.a__" # FIXME: Force the target run every time... "mruby/${MRUBY_MCUX_TARGET}/lib/libmruby.a" ) set_target_properties(mruby_libs PROPERTIES ADDITIONAL_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/mruby" ) add_library(${PROJECT_NAME} INTERFACE) add_dependencies(${PROJECT_NAME} mruby_libs) target_include_directories(${PROJECT_NAME} INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/mruby/${MRUBY_MCUX_TARGET}/include" "mruby/include" "mrbgems" ) target_link_directories(${PROJECT_NAME} INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/mruby/${MRUBY_MCUX_TARGET}/lib" ) target_link_libraries(${PROJECT_NAME} INTERFACE "mruby" "c" "m" )