source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/makefile @ 369

Last change on this file since 369 was 369, checked in by gregli@…, 12 years ago

Removed align directives for initalization code and added define for align in boot-time calls to the assembly library (defaulting to 1), resulting in a significant savings for the AT and 386 builds. Fixed a bug with switch command line handling in the serial server. Put in CR characters in licesnse.txt, so that it properly displays on Windows. In the configurator, added default values for user supplied CHS and LBA values, defaulting to values within range when those features are enabled. Updated the copyright message in the configurator as the literal word Copyright is important.

File size: 7.6 KB
Line 
1###############################################################################
2# Makefile to build XTIDE Universal BIOS.                                     #
3#                                                                             #
4# Valid makefile targets are:                                                 #
5# all       Removes existing files and builds binary files in \Build          #
6# small     Builds 8 kiB binaries only (without checksum)                     #
7# large     Builds 15 kiB binaries only (without checksum)                    #
8# clean     Removes all files from \Build                                     #
9# checksum* Builds all and then generates checksum byte to all binary files   #
10# strings*  Compress src\strings.asm to src\StringsCompressed.asm             #
11#                                                                             #
12# * at the end of target name means that Perl is required for the job.        #
13# Build directory must be created manually if it does not exist.              #
14#                                                                             #
15###############################################################################
16
17###########################################
18# Source files and destination executable #
19###########################################
20
21# Assembly source code file (*.asm):
22SRC_ASM = Src/Main.asm
23
24# Program executable file name without extension:
25PROG = ide
26
27
28#######################################
29# Destination and include directories #
30#######################################
31
32# Directory where binary file will be compiled to
33BUILD_DIR = Build
34
35# Subdirectories where included files are:
36HEADERS = Inc/
37HEADERS += Inc/Controllers/
38HEADERS += Src/
39HEADERS += Src/Boot/
40HEADERS += Src/Handlers/
41HEADERS += Src/Handlers/Int13h/
42HEADERS += Src/Handlers/Int13h/EBIOS/
43HEADERS += Src/Handlers/Int13h/Tools/
44HEADERS += Src/Device/
45HEADERS += Src/Device/IDE/
46HEADERS += Src/Device/MemoryMappedIDE/
47HEADERS += Src/Device/Serial/
48HEADERS += Src/Initialization/
49HEADERS += Src/Libraries/
50HEADERS += Src/VariablesAndDPTs/
51
52# Subdirectories where library files are:
53LIBS = ../Assembly_Library/Inc/
54LIBS += ../Assembly_Library/Src/
55LIBS += ../Assembly_Library/Src/Display/
56LIBS += ../Assembly_Library/Src/File/
57LIBS += ../Assembly_Library/Src/Keyboard/
58LIBS += ../Assembly_Library/Src/Menu/
59LIBS += ../Assembly_Library/Src/Menu/Dialog/
60LIBS += ../Assembly_Library/Src/String/
61LIBS += ../Assembly_Library/Src/Time/
62LIBS += ../Assembly_Library/Src/Util/
63LIBS += ../Assembly_Library/Src/Serial/
64LIBS += ../XTIDE_Universal_BIOS/Inc/
65HEADERS += $(LIBS)
66
67
68#################################################################
69# Assembler preprocessor defines.                               #
70#################################################################
71DEFINES = INCLUDE_MENU_LIBRARY EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS MODULE_EBIOS MODULE_STRINGS_COMPRESSED
72DEFINES_XT = ELIMINATE_CGA_SNOW MODULE_SERIAL MODULE_SERIAL_FLOPPY
73DEFINES_XTPLUS = ELIMINATE_CGA_SNOW USE_186 MODULE_SERIAL MODULE_SERIAL_FLOPPY
74DEFINES_AT = USE_286 USE_AT MODULE_SERIAL MODULE_SERIAL_FLOPPY
75DEFINES_XT_LARGE = $(DEFINES_XT) MODULE_JRIDE MODULE_ADVANCED_ATA
76DEFINES_XTPLUS_LARGE = $(DEFINES_XTPLUS) MODULE_JRIDE MODULE_ADVANCED_ATA
77DEFINES_AT_LARGE = $(DEFINES_AT) MODULE_JRIDE MODULE_ADVANCED_ATA
78DEFINES_JRIDE_8K = ELIMINATE_CGA_SNOW MODULE_JRIDE
79DEFINES_386_8K = USE_386 USE_AT MODULE_ADVANCED_ATA
80
81
82###################
83# Other variables #
84###################
85
86# Target size of the ROM, used in main.asm for number of 512B blocks and by checksum Perl script below
87ROMSIZE = 8192
88ROMSIZE_LARGE = 15360
89
90# Add -D in front of every preprocessor define declaration
91DEFS = $(DEFINES:%=-D%)
92DEFS_XT = $(DEFINES_XT:%=-D%) -DROMSIZE=$(ROMSIZE)
93DEFS_XTPLUS = $(DEFINES_XTPLUS:%=-D%) -DROMSIZE=$(ROMSIZE)
94DEFS_AT = $(DEFINES_AT:%=-D%) -DROMSIZE=$(ROMSIZE)
95DEFS_XT_LARGE = $(DEFINES_XT_LARGE:%=-D%) -DROMSIZE=$(ROMSIZE_LARGE)
96DEFS_XTPLUS_LARGE = $(DEFINES_XTPLUS_LARGE:%=-D%) -DROMSIZE=$(ROMSIZE_LARGE)
97DEFS_AT_LARGE = $(DEFINES_AT_LARGE:%=-D%) -DROMSIZE=$(ROMSIZE_LARGE)
98DEFS_JRIDE_8K = $(DEFINES_JRIDE_8K:%=-D%) -DROMSIZE=$(ROMSIZE)
99DEFS_386_8K = $(DEFINES_386_8K:%=-D%) -DROMSIZE=$(ROMSIZE)
100
101# Add -I in front of all header directories
102IHEADERS = $(HEADERS:%=-I%)
103
104# Path + target file to be built
105TARGET = $(BUILD_DIR)/$(PROG)
106
107#########################
108# Compilers and linkers #
109#########################
110
111# Make
112MAKE = mingw32-make.exe
113
114# Assembler
115AS = nasm.exe
116
117# use this command to erase files.
118RM = -del /Q
119
120
121#############################
122# Compiler and linker flags #
123#############################
124
125# Assembly compiler flags
126ASFLAGS = -f bin                # Produce binary object files
127ASFLAGS += $(DEFS)              # Preprocessor defines
128ASFLAGS += $(IHEADERS)          # Set header file directory paths
129ASFLAGS += -Worphan-labels      # Warn about labels without colon
130ASFLAGS += -O9                  # Optimize operands to their shortest forms
131
132
133############################################
134# Build process. Actual work is done here. #
135############################################
136
137all: clean small large
138    @echo All done!
139
140small: at xtplus xt jride_8k 386_8k
141    @echo All 8 kiB binaries built!
142
143large: at_large xtplus_large xt_large
144    @echo All 15 kiB binaries built!
145
146at:
147    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_AT) -l"$(TARGET)_at.lst" -o"$(TARGET)_at.bin"
148    @echo * 8k AT version "$(TARGET)_at.bin" built.
149
150at_large:
151    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_AT_LARGE) -l"$(TARGET)_atl.lst" -o"$(TARGET)_atl.bin"
152    @echo *15k AT version "$(TARGET)_atl.bin" built.
153
154xtplus:
155    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_XTPLUS) -l"$(TARGET)_xtp.lst" -o"$(TARGET)_xtp.bin"
156    @echo * 8k XT Plus version "$(TARGET)_xtp.bin" built.
157
158xtplus_large:
159    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_XTPLUS_LARGE) -l"$(TARGET)_xtpl.lst" -o"$(TARGET)_xtpl.bin"
160    @echo *15k XT Plus version "$(TARGET)_xtpl.bin" built.
161
162xt:
163    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_XT) -l"$(TARGET)_xt.lst" -o"$(TARGET)_xt.bin"
164    @echo * 8k XT version "$(TARGET)_xt.bin" built.
165
166xt_large:
167    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_XT_LARGE) -l"$(TARGET)_xtl.lst" -o"$(TARGET)_xtl.bin"
168    @echo *15k XT version "$(TARGET)_xtl.bin" built.
169
170jride_8k:
171    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_JRIDE_8K) -l"$(TARGET)_jr8k.lst" -o"$(TARGET)_jr8k.bin"
172    @echo * 8k JR-IDE/ISA version "$(TARGET)_jr8k.bin" built.
173
174386_8k:
175    @$(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_386_8K) -l"$(TARGET)_386.lst" -o"$(TARGET)_386.bin"
176    @echo * 8k 386 version "$(TARGET)_386.bin" built.
177
178strings: src\Strings.asm
179    @$(AS) src\Strings.asm $(ASFLAGS) $(DEFS_XT) -DCHECK_FOR_UNUSED_ENTRYPOINTS -DMODULE_STRINGS_COMPRESSED_PRECOMPRESS -o build\Strings.bin -l build\StringsPrecompress.lst
180    @perl ..\tools\StringsCompress.pl < build\StringsPrecompress.lst > src\StringsCompressed.asm
181    @echo StringsCompressed.asm updated!
182
183clean:
184    @$(RM) $(BUILD_DIR)\*.*
185    @echo Deleted "(*.*)" from "$(BUILD_DIR)/"
186
187checksum: all
188    @perl ..\tools\checksum.pl $(TARGET)_atl.bin $(ROMSIZE_LARGE)
189    @perl ..\tools\checksum.pl $(TARGET)_xtpl.bin $(ROMSIZE_LARGE)
190    @perl ..\tools\checksum.pl $(TARGET)_xtl.bin $(ROMSIZE_LARGE)
191    @perl ..\tools\checksum.pl $(TARGET)_at.bin $(ROMSIZE)
192    @perl ..\tools\checksum.pl $(TARGET)_xtp.bin $(ROMSIZE)
193    @perl ..\tools\checksum.pl $(TARGET)_xt.bin $(ROMSIZE)
194    @perl ..\tools\checksum.pl $(TARGET)_jr8k.bin $(ROMSIZE)
195    @perl ..\tools\checksum.pl $(TARGET)_386.bin $(ROMSIZE)
196
197xt_unused: xt
198    $(AS) "$(SRC_ASM)" $(ASFLAGS) $(DEFS_XT) -o"$(TARGET)_xt_unused.asm" -E -DCHECK_FOR_UNUSED_ENTRYPOINTS
199    perl ..\tools\unused.pl $(TARGET)_xt.lst $(TARGET)_xt_unused.asm
200
Note: See TracBrowser for help on using the repository browser.