Parcourir la source

improve Makefile and add raspberry pi cross target

Ivan Avdeev il y a 6 ans
Parent
commit
98b87a7d97
2 fichiers modifiés avec 67 ajouts et 90 suppressions
  1. 67 20
      Makefile
  2. 0 70
      compile.sh

+ 67 - 20
Makefile

@@ -1,14 +1,63 @@
 .SUFFIXES:
-.DEFAULT:
+MAKEOPTS+=-r
 
-CC ?= cc
-CFLAGS += -Wall -Wextra -pedantic -Iatto -O0 -g -D_GNU_SOURCE -Isrc/atto -fPIE -pie
-LIBS = -lX11 -lXfixes -lGL -lm -pthread
-OBJDIR ?= .obj
 MAP ?= d1_trainstation_01
 VPKDIR ?= ~/.local/share/Steam/steamapps/common/Half-Life\ 2/hl2
 ARGS ?= -p $(VPKDIR)/hl2_textures_dir.vpk -p $(VPKDIR)/hl2_misc_dir.vpk -p $(VPKDIR)/hl2_pak_dir.vpk -d $(VPKDIR)
 
+CFLAGS += -Wall -Wextra -pedantic -D_GNU_SOURCE -Isrc/atto -fPIE
+LIBS = -lX11 -lXfixes -lGL -lm -pthread
+BUILDDIR ?= build
+
+ifeq ($(DEBUG), 1)
+	CONFIG = dbg
+	CFLAGS += -O0 -g
+else
+	CONFIG = rel
+	CFLAGS += -O3
+endif
+
+ifeq ($(NOWERROR), 1)
+	CONFIG := $(CONFIG)nowerror
+else
+	CFLAGS += -Werror
+endif
+
+ifeq ($(RASPBERRY), 1)
+	PLATFORM = pi
+	RPI_ROOT ?= /opt/raspberry-pi
+
+	ifeq ($(CROSS), 1)
+		RPI_TOOLCHAIN ?= gcc-linaro-arm-linux-gnueabihf-raspbian-x64
+		RPI_TOOLCHAINDIR ?= $(RPI_ROOT)/raspberry-tools/arm-bcm2708/$(RPI_TOOLCHAIN)
+		RPI_VCDIR ?= $(RPI_ROOT)/raspberry-firmware/hardfp/opt/vc
+		CC = $(RPI_TOOLCHAINDIR)/bin/arm-linux-gnueabihf-gcc
+		COMPILER = gcc
+	else
+		RPI_VCDIR ?= /opt/vc
+		CC ?= cc
+	endif
+
+	CFLAGS += -I$(RPI_VCDIR)/include -I$(RPI_VCDIR)/include/interface/vcos/pthreads
+	CFLAGS += -I$(RPI_VCDIR)/include/interface/vmcs_host/linux -DATTO_PLATFORM_RPI
+	LIBS = -lGLESv2 -lEGL -lbcm_host -lvcos -lvchiq_arm -L$(RPI_VCDIR)/lib -lrt -lm
+
+	SOURCES += \
+		src/atto/src/app_linux.c \
+		src/atto/src/app_rpi.c
+
+else
+	PLATFORM = desktop
+	CC ?= cc
+	LIBS = -lX11 -lXfixes -lGL -lm -pthread
+	SOURCES += \
+		src/atto/src/app_linux.c \
+		src/atto/src/app_x11.c
+endif
+
+COMPILER ?= $(CC)
+OBJDIR ?= $(BUILDDIR)/$(PLATFORM)-$(CONFIG)-$(COMPILER)
+
 DEPFLAGS = -MMD -MP
 COMPILE.c = $(CC) -std=gnu99 $(CFLAGS) $(DEPFLAGS) -MT $@ -MF $@.d
 
@@ -16,11 +65,9 @@ $(OBJDIR)/%.c.o: %.c
 	@mkdir -p $(dir $@)
 	$(COMPILE.c) -c $< -o $@
 
-TOOL_EXE = $(OBJDIR)/OpenSource
-all: $(TOOL_EXE)
-TOOL_SRCS = \
-	src/atto/src/app_linux.c \
-	src/atto/src/app_x11.c \
+EXE = $(OBJDIR)/OpenSource
+all: $(EXE)
+SOURCES += \
 	src/OpenSource.c \
 	src/bsp.c \
 	src/atlas.c \
@@ -32,21 +79,21 @@ TOOL_SRCS = \
 	src/cache.c \
 	src/dxt.c \
 	src/render.c
-TOOL_OBJS = $(TOOL_SRCS:%=$(OBJDIR)/%.o)
-TOOL_DEPS = $(TOOL_OBJS:%=%.d)
+OBJECTS = $(SOURCES:%=$(OBJDIR)/%.o)
+DEPS = $(OBJECTS:%=%.d)
 
--include $(TOOL_DEPS)
+-include $(DEPS)
 
-$(TOOL_EXE): $(TOOL_OBJS)
-	$(CXX) $(LIBS) $^ -o $@
+$(EXE): $(OBJECTS)
+	$(CC) $(LIBS) $^ -o $@
 
 clean:
-	rm -f $(TOOL_OBJS) $(TOOL_DEPS) $(TOOL_EXE)
+	rm -f $(OBJECTS) $(DEPS) $(EXE)
 
-run: $(TOOL_EXE)
-	$(TOOL_EXE) $(ARGS) $(MAP)
+run: $(EXE)
+	$(EXE) $(ARGS) $(MAP)
 
-debug: $(TOOL_EXE)
-	gdb --args $(TOOL_EXE) $(ARGS) $(MAP)
+debug: $(EXE)
+	gdb --args $(EXE) $(ARGS) $(MAP)
 
 .PHONY: all clean run_tool debug_tool

+ 0 - 70
compile.sh

@@ -1,70 +0,0 @@
-#!/bin/sh
-set -euo pipefail
-#IFS=$'\n\t'
-
-CFLAGS=${CFLAGS:-}
-LDFLAGS=${LDFLAGS:-}
-
-ASAN=
-CROSS=
-DEBUG=
-RPI=
-RPI_ROOT=${RPI_ROOT:-'/opt/raspberry-pi'}
-
-SOURCES='src/OpenSource.c src/bsp.c src/atlas.c src/filemap.c src/collection.c src/material.c src/texture.c src/cache.c src/dxt.c src/render.c'
-WERROR='-Werror'
-CFLAGS="-D_GNU_SOURCE $CFLAGS"
-
-while [ $# -gt 0 ]
-do
-	case "$1" in
-		-C) CROSS=1;;
-		-D) DEBUG=1;;
-		-P) RPI=1;;
-		-S) ASAN=1;;
-		-W) WERROR='';;
-	esac
-	shift
-done
-
-if [ $ASAN ]
-then
-	CFLAGS="-fsanitize=address $CFLAGS"
-fi
-
-if [ $DEBUG ]
-then
-	CFLAGS="-O0 -g $CFLAGS"
-else
-	CFLAGS="-O3 $CFLAGS"
-fi
-
-if [ $RPI ]
-then
-	if [ $CROSS ]
-	then
-		RPI_TOOLCHAIN=${RPI_TOOLCHAIN:-"gcc-linaro-arm-linux-gnueabihf-raspbian-x64"}
-		RPI_TOOLCHAINDIR=${RPI_TOOLCHAINDIR:-"$RPI_ROOT/raspberry-tools/arm-bcm2708/$RPI_TOOLCHAIN"}
-		RPI_VCDIR=${RPI_VCDIR:-"$RPI_ROOT/raspberry-firmware/hardfp/opt/vc"}
-		CC=${CC:-"$RPI_TOOLCHAINDIR/bin/arm-linux-gnueabihf-gcc"}
-	else
-		RPI_VCDIR=${RPI_VCDIR:-"/opt/vc"}
-		CC=${CC:-cc}
-	fi
-
-	CFLAGS="-std=gnu99 -Wall -Wextra $WERROR $CFLAGS"
-	CFLAGS="-I$RPI_VCDIR/include -I$RPI_VCDIR/include/interface/vcos/pthreads $CFLAGS"
-	CFLAGS="-I$RPI_VCDIR/include/interface/vmcs_host/linux -DATTO_PLATFORM_RPI $CFLAGS"
-	LDFLAGS="-lGLESv2 -lEGL -lbcm_host -lvcos -lvchiq_arm -L$RPI_VCDIR/lib -lrt -lm $LDFLAGS"
-	SOURCES+=' src/atto/src/app_linux.c src/atto/src/app_rpi.c'
-else
-	CC=${CC:-clang}
-	CFLAGS="-std=c99 -Wall -Wextra -pedantic $WERROR $CFLAGS"
-	LDFLAGS="-lm -lGL -lX11 -lXfixes $LDFLAGS"
-	SOURCES+=' src/atto/src/app_linux.c src/atto/src/app_x11.c'
-fi
-
-CFLAGS="-Isrc/atto -fPIE -pie $CFLAGS"
-
-echo $CC $CFLAGS $SOURCES $LDFLAGS -o OpenSource
-$CC $CFLAGS $SOURCES $LDFLAGS -o OpenSource