cmake_minimum_required(VERSION 3.8) set(CMAKE_C_COMPILER "/usr/bin/cc") project(usr C ASM) set(CMAKE_C_FLAGS_DEBUG "-O0") add_definitions(${PMAKE_ARGS}) set(CMAKE_C_COMPILER "${CBC_COM}") include_directories("..") macro( GearsCommand ) set( _OPTIONS_ARGS ) set( _ONE_VALUE_ARGS TARGET ) set( _MULTI_VALUE_ARGS SOURCES ) cmake_parse_arguments( _Gears "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} ) set (_Gears_CBC_SOURCES) set (_Gears_CSOURCES) foreach(i ${_Gears_SOURCES}) if (${i} MATCHES "\\.cbc") string(REGEX REPLACE "(.*).cbc" "c/\\1.c" j ${i}) add_custom_command ( OUTPUT ${j} DEPENDS ${i} COMMAND "perl" "gearsTools/generate_stub.pl" "-o" ${j} ${i} ) list(APPEND _Gears_CBC_SOURCES ${j}) elseif (${i} MATCHES "\\.cu") string(REGEX REPLACE "(.*).cu" "c/\\1.ptx" j ${i}) add_custom_command ( OUTPUT ${j} DEPENDS ${i} COMMAND nvcc ${NVCCFLAG} -c -ptx -o ${j} ${i} ) list(APPEND _Gears_CBC_SOURCES ${j}) else() set(j ${i}) list(APPEND _Gears_CSOURCES ${j}) endif() endforeach(i) add_custom_command ( OUTPUT c/${_Gears_TARGET}-context.c DEPENDS ${_Gears_CBC_SOURCES} COMMAND "perl" "gearsTools/generate_context.pl" "-o" ${_Gears_TARGET} ${_Gears_CBC_SOURCES} ) add_executable(${_Gears_TARGET} ${_Gears_CBC_SOURCES} ${_Gears_CSOURCES} c/${_Gears_TARGET}-context.c ) target_link_libraries(${_Gears_TARGET} ulib) endmacro() add_library(ulib STATIC ulib.c usys.S printf.c umalloc.c) #add_library(syslib string.c) set(USRCOMMANDS cat echo grep init kill ln ls mkdir rm sh stressfs usertests wc zombie hello) foreach(cmd ${USR_COMMANDS}) GearsCommand (TARGET _${cmd} SOURCES ${cmd}.c) endforeach(cmd) add_custom_command(OUTPUT fs.img COMMAND ../tools/mkfs fs.img ${USR_COMMAND} UNIX DEPENDS ${USR_COMMANDS} )