summaryrefslogtreecommitdiffstats
path: root/rbutil/libtools.make
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2021-12-15 21:04:28 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2021-12-24 18:05:53 +0100
commitc876d3bbefe0dc00c27ca0c12d29da5874946962 (patch)
tree69f468a185a369b01998314bc3ecc19b70f4fcaa /rbutil/libtools.make
parent6c6f0757d7a902feb293be165d1490c42bc8e7ad (diff)
downloadrockbox-c876d3bbefe0dc00c27ca0c12d29da5874946962.tar.gz
rockbox-c876d3bbefe0dc00c27ca0c12d29da5874946962.zip
rbutil: Merge rbutil with utils folder.
rbutil uses several components from the utils folder, and can be considered part of utils too. Having it in a separate folder is an arbitrary split that doesn't help anymore these days, so merge them. This also allows other utils to easily use libtools.make without the need to navigate to a different folder. Change-Id: I3fc2f4de19e3e776553efb5dea5f779dfec0dc21
Diffstat (limited to 'rbutil/libtools.make')
-rw-r--r--rbutil/libtools.make183
1 files changed, 0 insertions, 183 deletions
diff --git a/rbutil/libtools.make b/rbutil/libtools.make
deleted file mode 100644
index 3ab150e876..0000000000
--- a/rbutil/libtools.make
+++ /dev/null
@@ -1,183 +0,0 @@
-# __________ __ ___.
-# Open \______ \ ____ ____ | | _\_ |__ _______ ___
-# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
-# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
-# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
-# \/ \/ \/ \/ \/
-
-# libtools.make
-#
-# Common Makefile for tools used by Rockbox Utility.
-# Provides rules for building as library, universal library (OS X) and
-# standalone binary.
-#
-# LIBSOURCES is a list of files to build the lib
-# SOURCES is a list of files to build for the main binary
-# EXTRADEPS is a list of make targets dependencies
-#
-ifndef V
-SILENT = @
-endif
-
-# Get directory this Makefile is in for relative paths.
-TOP := $(dir $(lastword $(MAKEFILE_LIST)))
-ifeq ($(OS),Windows_NT)
-SHELL = cmd.exe
-mkdir = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1))
-rm = if exist $(subst /,\,$(1)) del /q /s $(subst /,\,$(1))
-else
-mkdir = mkdir -p $(1)
-rm = rm -rf $(1)
-endif
-
-# overwrite for releases
-APPVERSION ?= $(shell $(TOP)/../tools/version.sh $(TOP)/..)
-GCCFLAGS += -DVERSION=\"$(APPVERSION)\"
-TARGET_DIR ?= $(abspath .)/
-
-CC := gcc
-CXX := g++
-# use either CC or CXX to link: this makes sure the compiler knows about its
-# internal dependencies. Use CXX if we have at least one c++ file, since we
-# then need to link the c++ standard library (which CXX does for us).
-ifeq ($(strip $(filter %.cpp,$(SOURCES) $(LIBSOURCES))),)
-LD := $(CC)
-else
-LD := $(CXX)
-endif
-CPPDEFINES := $(shell echo foo | $(CROSS)$(CC) -dM -E -)
-
-BINARY = $(OUTPUT)
-# when building a Windows binary add the correct file suffix
-ifeq ($(findstring CYGWIN,$(CPPDEFINES)),CYGWIN)
-BINARY = $(OUTPUT).exe
-GCCFLAGS += -mno-cygwin
-COMPILETARGET = cygwin
-else
-ifeq ($(findstring MINGW,$(CPPDEFINES)),MINGW)
-BINARY = $(OUTPUT).exe
-COMPILETARGET = mingw
-# use POSIX/C99 printf on windows
-GCCFLAGS += -D__USE_MINGW_ANSI_STDIO=1
-else
-ifeq ($(findstring APPLE,$(CPPDEFINES)),APPLE)
-COMPILETARGET = darwin
-LDOPTS += $(LDOPTS_OSX)
-else
-COMPILETARGET = posix
-endif
-endif
-endif
-$(info Compiler creates $(COMPILETARGET) binaries)
-
-# OS X specifics. Needs to consider cross compiling for Windows.
-ifeq ($(findstring APPLE,$(CPPDEFINES)),APPLE)
-# When building for 10.4+ we need to use gcc. Otherwise clang is used, so use
-# that to determine if we need to set arch and isysroot.
-ifeq ($(findstring __clang__,$(CPPDEFINES)),__clang__)
-GCCFLAGS += -mmacosx-version-min=10.5
-ifneq ($(ISYSROOT),)
-GCCFLAGS += -isysroot $(ISYSROOT)
-endif
-else
-# when building libs for OS X 10.4+ build for both i386 and ppc at the same time.
-# This creates fat objects, and ar can only create the archive but not operate
-# on it. As a result the ar call must NOT use the u (update) flag.
-ARCHFLAGS += -arch ppc -arch i386
-# building against SDK 10.4 is not compatible with gcc-4.2 (default on newer Xcode)
-# might need adjustment for older Xcode.
-CC = gcc-4.0
-GCCFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
-endif
-endif
-
-BUILD_DIR ?= $(TARGET_DIR)build$(COMPILETARGET)
-OBJDIR = $(abspath $(BUILD_DIR))/
-
-all: $(BINARY)
-
-OBJS := $(addsuffix .o,$(addprefix $(OBJDIR),$(notdir $(SOURCES))))
-LIBOBJS := $(addsuffix .o,$(addprefix $(OBJDIR),$(notdir $(LIBSOURCES))))
-
-# create dependency files. Make sure to use the same prefix as with OBJS!
-$(foreach src,$(SOURCES) $(LIBSOURCES),$(eval $(addprefix $(OBJDIR),$(notdir $(src).o)): $(src)))
-$(foreach src,$(SOURCES) $(LIBSOURCES),$(eval $(addprefix $(OBJDIR),$(notdir $(src).d)): $(src)))
-DEPS = $(addprefix $(OBJDIR),$(addsuffix .d,$(notdir $(SOURCES) $(LIBSOURCES))))
--include $(DEPS)
-
-# additional link dependencies for the standalone executable
-# extra dependencies: libucl
-LIBUCL = libucl.a
-$(LIBUCL): $(OBJDIR)$(LIBUCL)
-
-$(OBJDIR)$(LIBUCL):
- $(SILENT)$(MAKE) -C $(TOP)/../tools/ucl/src TARGET_DIR=$(OBJDIR) CC=$(CC) $@
-
-LIBBZIP2 = libbz2.a
-$(LIBBZIP2): $(OBJDIR)$(LIBBZIP2)
-$(OBJDIR)$(LIBBZIP2):
- $(SILENT)$(MAKE) -C $(TOP)/bzip2 TARGET_DIR=$(OBJDIR) CC=$(CC) $@
-
-LIBMICROTAR = libmicrotar.a
-$(LIBMICROTAR): $(OBJDIR)$(LIBMICROTAR)
-
-$(OBJDIR)$(LIBMICROTAR):
- $(SILENT)$(MAKE) -C $(TOP)/../lib/microtar/src TARGET_DIR=$(OBJDIR) CC=$(CC) $@
-
-# building the standalone executable
-$(BINARY): $(OBJS) $(EXTRADEPS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) $(TARGET_DIR)lib$(OUTPUT).a
- $(info LD $@)
- $(SILENT)$(call mkdir,$(dir $@))
-# EXTRADEPS need to be built into OBJDIR.
- $(SILENT)$(CROSS)$(LD) $(ARCHFLAGS) $(LDFLAGS) -o $(BINARY) \
- $(OBJS) $(addprefix $(OBJDIR),$(EXTRADEPS)) \
- $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) lib$(OUTPUT).a $(addprefix $(OBJDIR),$(EXTRADEPS)) $(LDOPTS)
-
-# common rules
-$(OBJDIR)%.c.o:
- $(info CC $<)
- $(SILENT)$(call mkdir,$(dir $@))
- $(SILENT)$(CROSS)$(CC) $(ARCHFLAGS) $(GCCFLAGS) $(CFLAGS) -MMD -c -o $@ $<
-
-$(OBJDIR)%.cpp.o:
- $(info CXX $<)
- $(SILENT)$(call mkdir,$(dir $@))
- $(SILENT)$(CROSS)$(CXX) $(ARCHFLAGS) $(GCCFLAGS) $(CXXFLAGS) -MMD -c -o $@ $<
-
-# lib rules
-lib$(OUTPUT).a: $(TARGET_DIR)lib$(OUTPUT).a
-lib$(OUTPUT): $(TARGET_DIR)lib$(OUTPUT).a
-
-$(TARGET_DIR)lib$(OUTPUT).a: $(LIBOBJS) \
- $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
-# rules to build a DLL. Only works for W32 as target (i.e. MinGW toolchain)
-dll: $(OUTPUT).dll
-$(OUTPUT).dll: $(TARGET_DIR)$(OUTPUT).dll
-$(TARGET_DIR)$(OUTPUT).dll: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
- $(info DLL $(notdir $@))
- $(SILENT)$(call mkdir,$(dir $@))
- $(SILENT)$(CROSS)$(CC) $(ARCHFLAGS) $(GCCFLAGS) -shared -o $@ $^ \
- -Wl,--output-def,$(TARGET_DIR)$(OUTPUT).def
-
-# create lib file from objects
-$(TARGET_DIR)lib$(OUTPUT).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
- $(info AR $(notdir $@))
- $(SILENT)$(call mkdir,$(dir $@))
- $(SILENT)$(call rm,$@)
- $(SILENT)$(CROSS)$(AR) rcs $@ $^
-
-clean:
- $(call rm, $(OBJS) $(OUTPUT) $(TARGET_DIR)lib$(OUTPUT)*.a $(OUTPUT).dmg)
- $(call rm, $(OUTPUT)-* i386 ppc $(OBJDIR))
-
-# extra tools
-BIN2C = $(TOP)/tools/bin2c
-$(BIN2C):
- $(MAKE) -C $(TOP)/tools
-
-# OS X specifics
-$(OUTPUT).dmg: $(OUTPUT)
- $(info DMG $@)
- $(SILENT)$(call mkdir,"$(OUTPUT)-$(APPVERSION)")
- $(SILENT)cp -p $(OUTPUT) "$(OUTPUT)-$(APPVERSION)"
- $(SILENT)hdiutil create -srcfolder "$(OUTPUT)-$(APPVERSION)" $@