58
|
1 cmake_minimum_required(VERSION 3.8)
|
|
2 project(usr C ASM)
|
|
3
|
|
4
|
|
5 set(CMAKE_C_FLAGS_DEBUG "-O0")
|
|
6 add_definitions(${PMAKE_ARGS})
|
|
7 set(CMAKE_C_COMPILER "${CBC_COM}")
|
|
8
|
|
9 include_directories("..")
|
|
10
|
|
11 macro( GearsCommand )
|
|
12 set( _OPTIONS_ARGS )
|
|
13 set( _ONE_VALUE_ARGS TARGET )
|
|
14 set( _MULTI_VALUE_ARGS SOURCES )
|
|
15 cmake_parse_arguments( _Gears "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} )
|
|
16
|
|
17 set (_Gears_CBC_SOURCES)
|
|
18 set (_Gears_CSOURCES)
|
|
19 foreach(i ${_Gears_SOURCES})
|
|
20 if (${i} MATCHES "\\.cbc")
|
|
21 string(REGEX REPLACE "(.*).cbc" "c/\\1.c" j ${i})
|
|
22 add_custom_command (
|
|
23 OUTPUT ${j}
|
|
24 DEPENDS ${i}
|
|
25 COMMAND "perl" "gearsTools/generate_stub.pl" "-o" ${j} ${i}
|
|
26 )
|
|
27 list(APPEND _Gears_CBC_SOURCES ${j})
|
|
28 elseif (${i} MATCHES "\\.cu")
|
|
29 string(REGEX REPLACE "(.*).cu" "c/\\1.ptx" j ${i})
|
|
30 add_custom_command (
|
|
31 OUTPUT ${j}
|
|
32 DEPENDS ${i}
|
|
33 COMMAND nvcc ${NVCCFLAG} -c -ptx -o ${j} ${i}
|
|
34 )
|
|
35 list(APPEND _Gears_CBC_SOURCES ${j})
|
|
36 else()
|
|
37 set(j ${i})
|
|
38 list(APPEND _Gears_CSOURCES ${j})
|
|
39 endif()
|
|
40 endforeach(i)
|
|
41
|
|
42 add_custom_command (
|
|
43 OUTPUT c/${_Gears_TARGET}-context.c
|
|
44 DEPENDS ${_Gears_CBC_SOURCES}
|
|
45 COMMAND "perl" "gearsTools/generate_context.pl" "-o" ${_Gears_TARGET} ${_Gears_CBC_SOURCES}
|
|
46 )
|
|
47 add_executable(${_Gears_TARGET} ${_Gears_CBC_SOURCES} ${_Gears_CSOURCES} c/${_Gears_TARGET}-context.c )
|
|
48 target_link_libraries(${_Gears_TARGET} ulib)
|
|
49 endmacro()
|
|
50
|
|
51 add_library(ulib STATIC ulib.c usys.c printf.c umalloc.c)
|
|
52
|
|
53 set(USR_COMMANDS _cat _echo _grep _init _kill _ln _ls _mkdir _rm _sh _stressfs _usertests _wc _zombie _hello)
|
|
54
|
|
55 foreach(cmd ${USR_COMMANDS)
|
|
56 GearsCommand (TARGET ${cmd} SOURCES ${cmd}.c)
|
|
57 end foreach(cmd)
|
|
58
|
|
59 add_custom_command(OUTPUT fs.img
|
|
60 COMMAND ./mkfs fs.img ${USR_COMMAND} UNIX
|
|
61 DEPENDS ${USR_COMMANDS}
|
|
62 )
|
|
63
|