1
0
Fork 0
forked from Miroirs/x49gp
x50ng/Makefile
Gwenhael Le Moine ef93299925
1.6.1
2024-11-22 19:55:54 +01:00

241 lines
6.2 KiB
Makefile

TARGET = x50ng
TARGET_ALLCAPS = X50NG
VERSION_MAJOR = 1
VERSION_MINOR = 6
PATCHLEVEL = 1
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"
#
DEBUG_CFLAGS = -g # -pg
OPTIM ?= 2
LUA_VERSION ?= lua
PKG_CONFIG ?= pkg-config
### lua
LUACFLAGS = $(shell "$(PKG_CONFIG)" --cflags $(LUA_VERSION))
LUALIBS = $(shell "$(PKG_CONFIG)" --libs $(LUA_VERSION))
# GTK
GTK_VERSION ?= "+-3.0"
GTK_CFLAGS = $(shell "$(PKG_CONFIG)" --cflags gtk$(GTK_VERSION)) -DGTK_DISABLE_SINGLE_INCLUDES -DGSEAL_ENABLE
GTK_LDLIBS = $(shell "$(PKG_CONFIG)" --libs gtk$(GTK_VERSION)) -lz -lm
# Embedded qemu
QEMU_DIR = src/qemu-git
QEMU_DEFINES = -DTARGET_ARM -DX49GP \
-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 \
-D_LARGEFILE_SOURCE \
-DNEED_CPU_H \
-fno-strict-aliasing
QEMU_OBJS = $(QEMU_DIR)/arm-softmmu/exec.o \
$(QEMU_DIR)/arm-softmmu/translate-all.o \
$(QEMU_DIR)/arm-softmmu/cpu-exec.o \
$(QEMU_DIR)/arm-softmmu/translate.o \
$(QEMU_DIR)/arm-softmmu/fpu/softfloat.o \
$(QEMU_DIR)/arm-softmmu/op_helper.o \
$(QEMU_DIR)/arm-softmmu/helper.o \
$(QEMU_DIR)/arm-softmmu/disas.o \
$(QEMU_DIR)/arm-softmmu/i386-dis.o \
$(QEMU_DIR)/arm-softmmu/arm-dis.o \
$(QEMU_DIR)/arm-softmmu/tcg/tcg.o \
$(QEMU_DIR)/arm-softmmu/iwmmxt_helper.o \
$(QEMU_DIR)/arm-softmmu/neon_helper.o
QEMU_INCLUDES=-I$(QEMU_DIR)/target-arm \
-I$(QEMU_DIR) \
-I$(QEMU_DIR)/fpu \
-I$(QEMU_DIR)/arm-softmmu
# What if this is MacOSX
COCOA_LIBS=$(shell if [ "`uname -s`" = "Darwin" ]; then echo "-F/System/Library/Frameworks -framework Cocoa -framework IOKit"; fi)
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
X49GP_INCLUDES = -I./src/x50ng/ \
-I./src/x50ng/bitmaps/ \
-I./src/qemu-git/ \
$(QEMU_INCLUDES)
X49GP_CFLAGS = $(CFLAGS) \
-O$(OPTIM) \
-Wall \
-Werror \
$(DEBUG_CFLAGS) \
$(X49GP_INCLUDES) \
$(QEMU_DEFINES) \
$(GTK_CFLAGS) \
$(LUACFLAGS) \
-D_GNU_SOURCE=1 \
-DVERSION_MAJOR=$(VERSION_MAJOR) \
-DVERSION_MINOR=$(VERSION_MINOR) \
-DPATCHLEVEL=$(PATCHLEVEL) \
-DX49GP_DATADIR=\"$(INSTALL_DATA_DIR)\" \
-Wno-error=deprecated-declarations
ifeq ($(DEBUG), yes)
X49GP_CFLAGS += $(X49GP_DEBUG)
endif
X49GP_LDFLAGS = $(DEBUG_CFLAGS) $(LDFLAGS)
X49GP_LDLIBS = $(QEMU_OBJS) $(GDB_LIBS) $(COCOA_LIBS) $(GTK_LDLIBS) $(LUALIBS)
SRCS = ./src/x50ng/main.c \
./src/x50ng/module.c \
./src/x50ng/flash.c \
./src/x50ng/sram.c \
./src/x50ng/s3c2410.c \
./src/x50ng/s3c2410_sram.c \
./src/x50ng/s3c2410_memc.c \
./src/x50ng/s3c2410_intc.c \
./src/x50ng/s3c2410_power.c \
./src/x50ng/s3c2410_lcd.c \
./src/x50ng/s3c2410_nand.c \
./src/x50ng/s3c2410_uart.c \
./src/x50ng/s3c2410_timer.c \
./src/x50ng/s3c2410_usbdev.c \
./src/x50ng/s3c2410_watchdog.c \
./src/x50ng/s3c2410_io_port.c \
./src/x50ng/s3c2410_rtc.c \
./src/x50ng/s3c2410_adc.c \
./src/x50ng/s3c2410_spi.c \
./src/x50ng/s3c2410_sdi.c \
./src/x50ng/s3c2410_arm.c \
./src/x50ng/ui.c \
./src/x50ng/timer.c \
./src/x50ng/gdbstub.c \
./src/x50ng/block.c \
./src/x50ng/options.c
OBJS = $(SRCS:.c=.o)
# TEMPO hack
VVFATOBJS = ./src/x50ng/block-vvfat.o \
./src/x50ng/block-qcow.o \
./src/x50ng/block-raw.o \
$(QEMU_DIR)/cutils.o
all: do-it-all
ifeq (.depend,$(wildcard .depend))
include .depend
do-it-all: $(QEMU_DIR) dist/$(TARGET)
else
do-it-all: depend-and-build
endif
# Compilation
dist/$(TARGET): $(OBJS) $(VVFATOBJS) $(QEMU_OBJS)
$(CC) $(X49GP_LDFLAGS) -o $@ $(OBJS) $(VVFATOBJS) $(LDLIBS) $(X49GP_LDLIBS)
%.o: %.c
$(CC) $(X49GP_CFLAGS) -o $@ -c $<
./src/x50ng/block-vvfat.o: ./src/x50ng/block-vvfat.c
$(CC) $(X49GP_CFLAGS) -fno-aggressive-loop-optimizations -o $@ -c $<
# Compilation of qemu-git
$(QEMU_DIR)/config-host.h:
+( cd $(QEMU_DIR); \
./configure-small --extra-cflags=-DX49GP; \
$(MAKE) -f Makefile-small )
$(QEMU_OBJS): qemu-objs
qemu-objs:
+$(MAKE) -C $(QEMU_DIR) -f Makefile-small
clean-qemu:
$(MAKE) -C $(QEMU_DIR) -f Makefile-small clean
# Depend
MAKEDEPEND = $(CC) -MM
depend-libs: $(QEMU_DIR)/config-host.h
depend-and-build: depend
$(MAKE) -C . all
depend: depend-libs
$(MAKEDEPEND) $(X49GP_CFLAGS) $(SRCS) >.depend
# Cleaning
clean:
rm -f ./src/x50ng/*.o core *~ .depend
distclean: clean clean-qemu
rm -f dist/$(TARGET) dist/$(TARGET).desktop dist/$(TARGET).man
mrproper: distclean
make -C dist/firmware/ mrproper
# auto-format code
pretty-code:
clang-format -i ./src/x50ng/*.c $(shell ls ./src/x50ng/*.h | grep -v s3c2410.h) ## s3c2410.h triggers an error
# Populate dist/firmware/ from hpcalc.org
pull-firmware:
make -C dist/firmware/
# Create an sdcard file
sdcard:
ifeq ($(shell uname),Darwin)
rm -f sdcard.dmg
hdiutil create $@ -megabytes 64 -fs MS-DOS -volname $(TARGET)
else
/sbin/mkdosfs -v -C -S 512 -f 2 -F 16 -r 512 -R 2 -n "$(TARGET)" $@ 65536
endif
# Installation
dist/$(TARGET).desktop: src/$(TARGET).desktop.in
perl -p -e "s!TARGET!$(TARGET)!" < $^ >$@
dist/$(TARGET).man: src/$(TARGET).scd
scdoc < $^ >$@
install: all dist/$(TARGET).desktop dist/$(TARGET).man
mkdir -p "$(DESTDIR)$(INSTALL_BINARY_DIR)/"
install -D -m 755 dist/$(TARGET) "$(DESTDIR)$(INSTALL_BINARY_DIR)/$(TARGET)"
mkdir -p "$(DESTDIR)$(INSTALL_MENU_DIR)/"
install -D -m 644 dist/$(TARGET).desktop "$(DESTDIR)$(INSTALL_MENU_DIR)/$(TARGET).desktop"
mkdir -p "$(DESTDIR)$(INSTALL_MAN_DIR)/"
install -D -m 644 dist/$(TARGET).man "$(DESTDIR)$(INSTALL_MAN_DIR)/$(TARGET).1"
mkdir -p "$(DESTDIR)$(INSTALL_DATA_DIR)/"
cp -R dist/firmware/ "$(DESTDIR)$(INSTALL_DATA_DIR)/firmware"
cp dist/*.css "$(DESTDIR)$(INSTALL_DATA_DIR)/"