# $Id: Makefile,v 1.29 2008/12/11 12:18:17 ecd Exp $ # SRC_DIR = ./src X49GP_DEBUG = \ -DDEBUG_X49GP_MODULES \ -DDEBUG_S3C2410_SRAM \ -DDEBUG_S3C2410_MEMC \ -DDEBUG_S3C2410_INTC \ -DDEBUG_S3C2410_POWER \ -DDEBUG_S3C2410_LCD \ -DDEBUG_S3C2410_UART \ -DDEBUG_S3C2410_TIMER \ -DDEBUG_S3C2410_USBDEV \ -DDEBUG_S3C2410_WATCHDOG \ -DDEBUG_S3C2410_IO_PORT \ -DDEBUG_S3C2410_RTC \ -DDEBUG_S3C2410_ADC \ -DDEBUG_S3C2410_SDI \ -DDEBUG_S3C2410_SPI \ -DDEBUG_X49GP_SYSCALL \ -DDEBUG_X49GP_FLASH_READ \ -DDEBUG_X49GP_FLASH_WRITE \ -UDEBUG_X49GP_SYSRAM_READ \ -UDEBUG_X49GP_SYSRAM_WRITE \ -UDEBUG_X49GP_ERAM_READ \ -UDEBUG_X49GP_ERAM_WRITE \ -UDEBUG_X49GP_IRAM_READ \ -UDEBUG_X49GP_IRAM_WRITE \ -DDEBUG_X49GP_TIMER_IDLE \ -DDEBUG_X49GP_ARM_IDLE \ -DDEBUG_X49GP_ENABLE_IRQ \ -DDEBUG_X49GP_BLOCK \ -DDEBUG_X49GP_MAIN \ -DDEBUG_X49GP_UI DEBUG = -g # -pg IMAGE49GP = dist/hp49g+.png IMAGE50G = dist/hp50g.png QEMU_DEFINES = -DTARGET_ARM -DX49GP \ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ -fno-strict-aliasing # Use this to debug # DEFINES = $(X49GP_DEBUG) $(QEMU_DEFINES) # Use this for speed DEFINES = $(QEMU_DEFINES) QEMU=src/qemu-git QEMUMAKE = $(shell if [ "`uname -s`" = "Linux" -a "`uname -m`" = "sun4u" ]; then echo "sparc32 $(MAKE)"; else echo "$(MAKE)"; fi) QEMU_DIR=$(QEMU) QEMU_DIR_BUILD=$(QEMU_DIR)/arm-softmmu QEMU_DEFINES+=-DNEED_CPU_H QEMU_OBJS = $(QEMU_DIR_BUILD)/exec.o $(QEMU_DIR_BUILD)/translate-all.o $(QEMU_DIR_BUILD)/cpu-exec.o $(QEMU_DIR_BUILD)/translate.o $(QEMU_DIR_BUILD)/fpu/softfloat.o $(QEMU_DIR_BUILD)/op_helper.o $(QEMU_DIR_BUILD)/helper.o $(QEMU_DIR_BUILD)/disas.o $(QEMU_DIR_BUILD)/i386-dis.o $(QEMU_DIR_BUILD)/arm-dis.o $(QEMU_DIR_BUILD)/tcg/tcg.o $(QEMU_DIR_BUILD)/iwmmxt_helper.o $(QEMU_DIR_BUILD)/neon_helper.o X49GP_LDFLAGS = X49GP_LIBS = $(QEMU_OBJS) QEMU_INCDIR=$(QEMU_DIR) QEMU_INC=-I$(QEMU_INCDIR)/target-arm -I$(QEMU_INCDIR) -I$(QEMU_INCDIR)/fpu -I$(QEMU_INCDIR)/arm-softmmu X49GP_INCLUDES = -I$(SRC_DIR)/include -I$(SRC_DIR)/bitmaps $(QEMU_INC) INCLUDES = $(GDB_INCLUDES) $(X49GP_INCLUDES) INSTALL_PREFIX = /usr/local INSTALL_BINARY_DIR = "$(INSTALL_PREFIX)"/bin INSTALL_DATA_DIR = "$(INSTALL_PREFIX)"/share/$(TARGET) INSTALL_DOC_DIR = "$(INSTALL_PREFIX)"/doc/$(TARGET) INSTALL_MENU_DIR = "$(INSTALL_PREFIX)"/share/applications INSTALL_MAN_DIR = "$(INSTALL_PREFIX)/share/man/man1" DEFINES += -DX49GP_DATADIR=\"$(INSTALL_DATA_DIR)\" CC = gcc LD = $(CC) AR = ar RANLIB = ranlib CC += $(shell if [ "`uname -m`" = "sparc64" -o "`uname -m`" = "sun4u" ]; then echo "-mcpu=ultrasparc -m32"; fi) COCOA_LIBS=$(shell if [ "`uname -s`" = "Darwin" ]; then echo "-F/System/Library/Frameworks -framework Cocoa -framework IOKit"; fi) X49GP_CFLAGS = -O2 -Wall -Werror $(DEBUG) $(INCLUDES) $(DEFINES) -Wno-error=deprecated-declarations -Wno-error=stringop-overflow= -Wno-error=array-bounds X49GP_LDFLAGS += $(DEBUG) $(GDB_LDFLAGS) X49GP_LDLIBS = $(X49GP_LIBS) $(GDB_LIBS) $(COCOA_LIBS) MAKEDEPEND = $(CC) -MM X49GP_CFLAGS += $(shell pkg-config --cflags gtk+-2.0) X49GP_LDLIBS += $(shell pkg-config --libs gtk+-2.0) -lz -lm LIBS = $(QEMU) SRCS = $(SRC_DIR)/main.c \ $(SRC_DIR)/module.c \ $(SRC_DIR)/flash.c \ $(SRC_DIR)/sram.c \ $(SRC_DIR)/s3c2410.c \ $(SRC_DIR)/s3c2410_sram.c \ $(SRC_DIR)/s3c2410_memc.c \ $(SRC_DIR)/s3c2410_intc.c \ $(SRC_DIR)/s3c2410_power.c \ $(SRC_DIR)/s3c2410_lcd.c \ $(SRC_DIR)/s3c2410_nand.c \ $(SRC_DIR)/s3c2410_uart.c \ $(SRC_DIR)/s3c2410_timer.c \ $(SRC_DIR)/s3c2410_usbdev.c \ $(SRC_DIR)/s3c2410_watchdog.c \ $(SRC_DIR)/s3c2410_io_port.c \ $(SRC_DIR)/s3c2410_rtc.c \ $(SRC_DIR)/s3c2410_adc.c \ $(SRC_DIR)/s3c2410_spi.c \ $(SRC_DIR)/s3c2410_sdi.c \ $(SRC_DIR)/s3c2410_arm.c \ $(SRC_DIR)/ui.c \ $(SRC_DIR)/timer.c \ $(SRC_DIR)/tiny_font.c \ $(SRC_DIR)/symbol.c \ $(SRC_DIR)/gdbstub.c \ $(SRC_DIR)/block.c OBJS = $(SRCS:.c=.o) # TEMPO hack VVFATOBJS = $(SRC_DIR)/block-vvfat.o \ $(SRC_DIR)/block-qcow.o \ $(SRC_DIR)/block-raw.o VVFATOBJS += $(QEMU_DIR)/cutils.o TARGET = dist/x49gp TARGET_BIN = x49gp TARGET_ALLCAPS = X49GP all: do-it-all ifeq (.depend,$(wildcard .depend)) include .depend do-it-all: $(QEMU) $(TARGET) else do-it-all: depend-and-build endif $(TARGET): $(OBJS) $(VVFATOBJS) $(QEMU_OBJS) $(CC) $(LDFLAGS) $(X49GP_LDFLAGS) -o $@ $(OBJS) $(VVFATOBJS) $(LDLIBS) $(X49GP_LDLIBS) install: all $(TARGET).desktop $(TARGET).man install -D -m 755 $(TARGET) "$(DESTDIR)$(INSTALL_BINARY_DIR)/$(TARGET)" install -D -m 644 $(IMAGE49GP) "$(DESTDIR)$(INSTALL_DATA_DIR)/$(IMAGE49GP)" install -D -m 644 $(IMAGE50G) "$(DESTDIR)$(INSTALL_DATA_DIR)/$(IMAGE50G)" install -D -m 755 dist/firmware "$(DESTDIR)$(INSTALL_DATA_DIR)/firmware" install -D -m 644 $(TARGET).desktop "$(DESTDIR)$(INSTALL_MENU_DIR)/$(TARGET).desktop" install -D -m 644 $(TARGET).man "$(DESTDIR)$(INSTALL_MAN_DIR)/$(TARGET).1" $(TARGET).desktop: $(TARGET).desktop.in perl -p -e "s!TARGET!$(TARGET_BIN)!" < $(TARGET).desktop.in >$@ $(TARGET).man: $(TARGET).man.in perl -p -e "s!TARGET_ALLCAPS!$(TARGET_ALLCAPS)!;" -e "s!TARGET!$(TARGET_BIN)!" < $(TARGET).man.in >$@ dist/sdcard: ifeq ($(shell uname),Darwin) rm -f sdcard.dmg hdiutil create $@ -megabytes 64 -fs MS-DOS -volname x49gp else /sbin/mkdosfs -v -C -S 512 -f 2 -F 16 -r 512 -R 2 -n "x49gp" $@ 65536 endif sim: dummy $(MAKE) -C $@ $(QEMU)/config-host.h: +( cd $(QEMU); \ ./configure-small --extra-cflags=-DX49GP; \ $(QEMUMAKE) -f Makefile-small ) $(QEMU_OBJS): _dir_qemu _dir_qemu: dummy +$(QEMUMAKE) -C $(QEMU) -f Makefile-small %.o: %.c $(CC) $(CFLAGS) $(X49GP_CFLAGS) -o $@ -c $< $(SRC_DIR)/block-vvfat.o: $(SRC_DIR)/block-vvfat.c $(CC) $(CFLAGS) $(X49GP_CFLAGS) -fno-aggressive-loop-optimizations -o $@ -c $< clean-qemu: $(MAKE) -C $(QEMU) -f Makefile-small clean clean: clean-qemu rm -f $(SRC_DIR)/*.o core *~ .depend distclean: clean $(MAKE) -C $(QEMU) -f Makefile-small distclean rm -f $(TARGET) $(TARGET).desktop $(TARGET).man depend-libs: $(QEMU)/config-host.h depend-and-build: depend $(MAKE) -C . all depend: depend-libs $(MAKEDEPEND) $(CFLAGS) $(X49GP_CFLAGS) $(SRCS) >.depend mrproper: clean-qemu distclean make -C dist/firmware/ mrproper pretty-code: clang-format -i $(SRC_DIR)/*.c $(SRC_DIR)/*.h pull-firmware: make -C dist/firmware/ dummy: