4 macro(CreateBootSectorTarget _target_name _asm_file _object_file)
5 get_filename_component(OBJECT_PATH ${_object_file} PATH)
6 get_filename_component(OBJECT_NAME ${_object_file} NAME)
7 file(MAKE_DIRECTORY ${OBJECT_PATH})
8 get_directory_property(defines COMPILE_DEFINITIONS)
9 get_directory_property(includes INCLUDE_DIRECTORIES)
11 foreach(arg ${defines})
12 set(result_defs ${result_defs} -D${arg})
15 foreach(arg ${includes})
16 set(result_incs -I${arg} ${result_incs})
20 OUTPUT ${_object_file}
21 COMMAND nasm -o ${_object_file} ${result_incs} ${result_defs} -f bin ${_asm_file}
23 set_source_files_properties(${_object_file} PROPERTIES GENERATED TRUE)
24 add_custom_target(${_target_name} ALL DEPENDS ${_object_file})
25 add_minicd(${_object_file} loader ${OBJECT_NAME})
30 macro(CreateBootSectorTarget _target_name _asm_file _object_file)
35 macro(idl_compile_object OBJECT SOURCE)
36 get_property(FLAGS SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS)
37 get_property(DEFINES SOURCE ${SOURCE} PROPERTY COMPILE_DEFINITIONS)
38 get_property(INCLUDE_DIRECTORIES DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
40 foreach(DIR ${INCLUDE_DIRECTORIES})
41 set(FLAGS "${FLAGS} -I${DIR}")
44 set(IDL_COMMAND ${CMAKE_IDL_COMPILE_OBJECT})
45 string(REPLACE "<CMAKE_IDL_COMPILER>" "${CMAKE_IDL_COMPILER}" IDL_COMMAND "${IDL_COMMAND}")
46 string(REPLACE <FLAGS> "${FLAGS}" IDL_COMMAND "${IDL_COMMAND}")
47 string(REPLACE "<DEFINES>" "${DEFINES}" IDL_COMMAND "${IDL_COMMAND}")
48 string(REPLACE "<OBJECT>" "${OBJECT}" IDL_COMMAND "${IDL_COMMAND}")
49 string(REPLACE "<SOURCE>" "${SOURCE}" IDL_COMMAND "${IDL_COMMAND}")
50 separate_arguments(IDL_COMMAND)
54 COMMAND ${IDL_COMMAND}
59 macro(add_interface_definitions TARGET)
60 foreach(SOURCE ${ARGN})
61 get_filename_component(FILE ${SOURCE} NAME_WE)
62 set(OBJECT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.h)
63 idl_compile_object(${OBJECT} ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE})
64 list(APPEND OBJECTS ${OBJECT})
66 add_custom_target(${TARGET} ALL DEPENDS ${OBJECTS})
69 macro(add_minicd_target _targetname _dir) # optional parameter: _nameoncd
70 if("${ARGN}" STREQUAL "")
71 get_target_property(FILENAME ${_targetname} LOCATION)
72 get_filename_component(_nameoncd ${FILENAME} NAME)
74 set(_nameoncd ${ARGN})
77 file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
80 macro(add_minicd FILENAME _dir _nameoncd)
81 file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_minicd.txt "${FILENAME}\t${_dir}\t${_nameoncd}\n")
85 include_directories(BEFORE ${REACTOS_SOURCE_DIR}/include/c++/stlport)
88 -DNATIVE_CPP_INCLUDE=${REACTOS_SOURCE_DIR}/include/c++
89 -DNATIVE_C_INCLUDE=${REACTOS_SOURCE_DIR}/include/crt)
92 macro(add_livecd_target _targetname _dir )# optional parameter : _nameoncd
93 if("${ARGN}" STREQUAL "")
94 get_target_property(FILENAME ${_targetname} LOCATION)
95 get_filename_component(_nameoncd ${FILENAME} NAME)
97 set(_nameoncd ${ARGN})
100 file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
103 macro(add_livecd FILENAME _dir)# optional parameter : _nameoncd
104 if("${ARGN}" STREQUAL "")
105 get_filename_component(_nameoncd ${FILENAME} NAME)
107 set(_nameoncd ${ARGN})
109 file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_livecd.txt "${FILENAME}\t${_dir}\t${_nameoncd}\n")
112 macro(cab_to_dir _dir_num _var_name)
114 # 2 = system32\drivers
117 # 5 = system32\drivers\etc
121 if(${_dir_num} STREQUAL "1")
122 set(${_var_name} "reactos/system32")
123 elseif(${_dir_num} STREQUAL "2")
124 set(${_var_name} "reactos/system32/drivers")
125 elseif(${_dir_num} STREQUAL "3")
126 set(${_var_name} "reactos/fonts")
127 elseif(${_dir_num} STREQUAL "4")
128 set(${_var_name} "reactos")
129 elseif(${_dir_num} STREQUAL "5")
130 set(${_var_name} "reactos/system32/drivers/etc")
131 elseif(${_dir_num} STREQUAL "6")
132 set(${_var_name} "reactos/inf")
133 elseif(${_dir_num} STREQUAL "7")
134 set(${_var_name} "reactos/bin")
135 elseif(${_dir_num} STREQUAL "8")
136 set(${_var_name} "reactos/system32/drivers")
138 message(FATAL_ERROR "Wrong directory ${_dir_num}")
142 macro(add_cab_target _targetname _num )
143 file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt "${_targetname}\t${_num}\n")
144 cab_to_dir(${_num} _dir)
145 add_livecd_target(${_targetname} ${_dir})
148 macro(add_cab FILENAME _num)
149 file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_cab.txt "${FILENAME}\t${_num}\n")
150 cab_to_dir(${_num} _dir)
151 add_livecd(${FILENAME} ${_dir})
154 macro(custom_incdefs)
155 if(NOT DEFINED result_incs) #rpc_defines
156 get_directory_property(rpc_defines COMPILE_DEFINITIONS)
157 get_directory_property(rpc_includes INCLUDE_DIRECTORIES)
159 foreach(arg ${rpc_defines})
160 set(result_defs ${result_defs} -D${arg})
163 foreach(arg ${rpc_includes})
164 set(result_incs -I${arg} ${result_incs})
169 macro(rpcproxy TARGET)
171 list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c)
173 foreach(_in_FILE ${ARGN})
174 get_filename_component(FILE ${_in_FILE} NAME_WE)
176 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c
177 COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.h ${IDL_PROXY_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
178 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl)
179 set_source_files_properties(
180 ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c
181 PROPERTIES GENERATED TRUE)
182 list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c)
183 list(APPEND IDLS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl)
184 list(APPEND PROXY_DEPENDS ${TARGET}_${FILE}_p)
185 add_custom_target(${TARGET}_${FILE}_p
186 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c)
187 #add_dependencies(${TARGET}_proxy ${TARGET}_${FILE}_p)
191 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
192 COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_DLLDATA_ARG}${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c ${IDLS}
194 set_source_files_properties(
195 ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
196 PROPERTIES GENERATED TRUE)
198 add_library(${TARGET}_proxy ${SOURCE})
199 add_dependencies(${TARGET}_proxy psdk ${PROXY_DEPENDS})
204 foreach(_in_FILE ${ARGN})
205 get_filename_component(FILE ${_in_FILE} NAME_WE)
207 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
208 COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${IDL_SERVER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
210 set_source_files_properties(
211 ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
212 PROPERTIES GENERATED TRUE)
213 add_library(${FILE}_server ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c)
214 add_dependencies(${FILE}_server psdk)
217 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
218 COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
220 set_source_files_properties(
221 ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
222 PROPERTIES GENERATED TRUE)
223 add_library(${FILE}_client ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c)
224 add_dependencies(${FILE}_client psdk)
228 macro(add_typelib TARGET)
230 foreach(SOURCE ${ARGN})
231 get_filename_component(FILE ${SOURCE} NAME_WE)
232 set(OBJECT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.tlb)
234 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.tlb
235 COMMAND ${IDL_COMPILER} ${result_incs} ${IDL_FLAGS} ${IDL_TYPELIB_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.tlb ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE}
237 list(APPEND OBJECTS ${OBJECT})
239 add_custom_target(${TARGET} ALL DEPENDS ${OBJECTS})
242 macro(add_idl_interface IDL_FILE)
244 get_filename_component(FILE ${IDL_FILE} NAME_WE)
246 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c
247 COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} -m32 --win32 -u -U ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c ${CMAKE_CURRENT_SOURCE_DIR}/${IDL_FILE}
249 set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)