[FREELDR]
[reactos.git] / reactos / boot / freeldr / freeldr / CMakeLists.txt
1
2 if(ARCH MATCHES i386 OR ARCH MATCHES amd64)
3 CreateBootSectorTarget2(frldr16
4 ${CMAKE_CURRENT_SOURCE_DIR}/arch/realmode/i386.S
5 ${CMAKE_CURRENT_BINARY_DIR}/frldr16.bin
6 F800)
7 endif()
8
9 include_directories(BEFORE include)
10 include_directories(${REACTOS_SOURCE_DIR}/ntoskrnl/include)
11 include_directories(${REACTOS_SOURCE_DIR}/lib/cmlib)
12 include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs)
13 include_directories(${REACTOS_SOURCE_DIR}/include/reactos/elf)
14
15 add_definitions(-D_NTHAL_ -D_BLDR_ -D_NTSYSTEM_)
16
17 if(ARCH MATCHES arm)
18 if(SARCH MATCHES omap-zoom2)
19 add_definitions(-D_ZOOM2_)
20 endif()
21 endif()
22
23 list(APPEND FREELDR_COMMON_SOURCE
24 cmdline.c
25 debug.c
26 linuxboot.c
27 machine.c
28 options.c
29 oslist.c
30 version.c
31 arcemul/mm.c
32 arcemul/time.c
33 cache/blocklist.c
34 cache/cache.c
35 comm/rs232.c
36 disk/disk.c
37 disk/partition.c
38 disk/ramdisk.c
39 #disk/scsiport.c
40 fs/ext2.c
41 fs/fat.c
42 fs/fs.c
43 fs/iso.c
44 fs/ntfs.c
45 fs/pxe.c
46 inifile/ini_init.c
47 inifile/inifile.c
48 inifile/parse.c
49 mm/meminit.c
50 mm/mm.c
51 reactos/registry.c
52 reactos/arcname.c
53 reactos/archwsup.c
54 reactos/binhive.c
55 reactos/reactos.c
56 reactos/imageldr.c
57 ui/directui.c
58 ui/gui.c
59 ui/minitui.c
60 ui/noui.c
61 ui/tui.c
62 ui/tuimenu.c
63 ui/ui.c
64 video/fade.c
65 video/palette.c
66 video/video.c
67 windows/conversion.c
68 windows/peloader.c
69 windows/winldr.c
70 windows/wlmemory.c
71 windows/wlregistry.c
72 )
73
74 if(ARCH MATCHES i386)
75 list(APPEND FREELDR_COMMON_SOURCE
76 arch/i386/archmach.c
77 arch/i386/custom.c
78 arch/i386/drivemap.c
79 arch/i386/entry.S
80 arch/i386/halstub.c
81 arch/i386/hardware.c
82 arch/i386/hwacpi.c
83 arch/i386/hwapm.c
84 arch/i386/hwpci.c
85 arch/i386/i386bug.c
86 arch/i386/i386disk.c
87 arch/i386/i386idt.c
88 arch/i386/i386pnp.cmake.S
89 arch/i386/i386rtl.c
90 arch/i386/i386trap.S
91 arch/i386/i386vid.c
92 arch/i386/linux.cmake.S
93 arch/i386/loader.c
94 arch/i386/machpc.c
95 arch/i386/mb.S
96 arch/i386/miscboot.c
97 arch/i386/ntoskrnl.c
98 arch/i386/pccons.c
99 arch/i386/pcdisk.c
100 arch/i386/pcmem.c
101 arch/i386/pcrtc.c
102 arch/i386/pcvideo.c
103 arch/i386/machxbox.c
104 arch/i386/xboxcons.c
105 arch/i386/xboxdisk.c
106 arch/i386/xboxfont.c
107 arch/i386/xboxhw.c
108 arch/i386/xboxi2c.c
109 arch/i386/xboxmem.c
110 arch/i386/xboxrtc.c
111 arch/i386/xboxvideo.c
112 windows/i386/ntsetup.c
113 windows/i386/wlmemory.c
114 windows/headless.c
115 disk/scsiport.c)
116 if(NOT MSVC)
117 list(APPEND FREELDR_COMMON_SOURCE
118 arch/i386/drvmap.S
119 arch/i386/multiboot.S)
120 endif()
121 elseif(ARCH MATCHES amd64)
122 list(APPEND FREELDR_COMMON_SOURCE
123 arch/amd64/entry.S
124 arch/amd64/loader.c
125 arch/i386/hardware.c
126 arch/i386/hwacpi.c
127 arch/i386/hwapm.c
128 arch/i386/hwpci.c
129 arch/i386/i386rtl.c
130 arch/i386/i386disk.c
131 arch/i386/i386vid.c
132 arch/i386/machpc.c
133 arch/i386/ntoskrnl.c
134 arch/i386/pccons.c
135 arch/i386/pcdisk.c
136 arch/i386/pcmem.c
137 arch/i386/pcrtc.c
138 arch/i386/pcvideo.c
139 windows/amd64/ntsetup.c
140 windows/amd64/wlmemory.c)
141 else()
142 #TBD
143 endif()
144
145 add_library(freeldr_common ${FREELDR_COMMON_SOURCE})
146 add_dependencies(freeldr_common bugcodes)
147
148
149 list(APPEND FREELDR_BASE_SOURCE
150 bootmgr.c # This file is compiled with custom definitions
151 freeldr.c
152 rtl/bget.c
153 rtl/libsupp.c
154 )
155
156 add_executable(freeldr_pe ${FREELDR_BASE_SOURCE})
157
158 if(NOT MSVC)
159 set_target_properties(freeldr_pe PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,--exclude-all-symbols -Wl,--file-alignment,0x1000 -Wl,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lnk")
160 else()
161 set_target_properties(freeldr_pe PROPERTIES LINK_FLAGS "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION")
162 endif()
163
164 set_image_base(freeldr_pe 0x10000)
165 set_subsystem(freeldr_pe native)
166 set_entrypoint(freeldr_pe RealEntryPoint)
167
168 if(ARCH MATCHES i386)
169 target_link_libraries(freeldr_pe mini_hal)
170 endif()
171
172 target_link_libraries(freeldr_pe
173 freeldr_common
174 cportlib
175 rossym
176 cmlib
177 rtl
178 libcntpr)
179
180 add_pch(freeldr_pe include/freeldr.h)
181 add_dependencies(freeldr_pe asm)
182
183 concatenate_files(
184 ${CMAKE_CURRENT_BINARY_DIR}/frldr16.bin
185 ${CMAKE_CURRENT_BINARY_DIR}/freeldr_pe.exe
186 ${CMAKE_CURRENT_BINARY_DIR}/freeldr.sys)
187
188 add_custom_target(freeldr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/freeldr.sys)
189
190 add_cd_file(TARGET freeldr FILE ${CMAKE_CURRENT_BINARY_DIR}/freeldr.sys DESTINATION loader NO_CAB FOR all)
191
192 list(APPEND SETUPLDR_SOURCE
193 inffile/inffile.c
194 reactos/setupldr.c)
195
196 if(ARCH MATCHES i386 OR ARCH MATCHES amd64)
197 list(APPEND SETUPLDR_SOURCE windows/setupldr2.c)
198 endif()
199
200 if(NOT MSVC)
201 set_source_files_properties(${SETUPLDR_SOURCE} PROPERTIES COMPILE_FLAGS "-ffreestanding -fno-builtin -fno-inline -fno-zero-initialized-in-bss")
202 endif()
203
204 add_executable(setupldr_pe ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
205
206 if(NOT MSVC)
207 set_target_properties(setupldr_pe PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,--exclude-all-symbols -Wl,--file-alignment,0x1000 -Wl,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lnk" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
208 else()
209 set_target_properties(setupldr_pe PROPERTIES LINK_FLAGS "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
210 endif()
211
212 set_image_base(setupldr_pe 0x10000)
213 set_subsystem(setupldr_pe native)
214 set_entrypoint(setupldr_pe RealEntryPoint)
215
216 if(ARCH MATCHES i386)
217 target_link_libraries(setupldr_pe mini_hal)
218 endif()
219
220 target_link_libraries(setupldr_pe
221 freeldr_common
222 cportlib
223 rossym
224 cmlib
225 rtl
226 libcntpr)
227
228 add_dependencies(setupldr_pe asm)
229
230 concatenate_files(
231 ${CMAKE_CURRENT_BINARY_DIR}/frldr16.bin
232 ${CMAKE_CURRENT_BINARY_DIR}/setupldr_pe.exe
233 ${CMAKE_CURRENT_BINARY_DIR}/setupldr.sys)
234
235 add_custom_target(setupldr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/setupldr.sys)
236
237 add_cd_file(TARGET setupldr FILE ${CMAKE_CURRENT_BINARY_DIR}/setupldr.sys DESTINATION loader NO_CAB FOR all)
238