220 lines
5.5 KiB
Makefile
Executable File
220 lines
5.5 KiB
Makefile
Executable File
# By YZBruh
|
|
|
|
# Copyright 2024 Partition Manager
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
#####
|
|
# sub-make for building parted (built-in parted)
|
|
#####
|
|
|
|
# Include required files
|
|
include ../../build/config/env.mk
|
|
ifeq ($(INC_OLDENV),true)
|
|
include ../../build/config/oldenv.mk
|
|
endif
|
|
|
|
# Some flags etc
|
|
E := @ echo
|
|
INCLUDE_DIRS := \
|
|
$(CURDIR)/../../include \
|
|
$(CURDIR)/../../include/libgnulib \
|
|
$(CURDIR)/parted \
|
|
$(CURDIR)/libparted \
|
|
$(CURDIR)/libparted/labels \
|
|
$(CURDIR)/lib
|
|
CFLAGS := \
|
|
-Wall \
|
|
-Wextra \
|
|
-fPIC \
|
|
-Wno-pointer-sign \
|
|
-Wno-sign-compare \
|
|
-Wno-gnu-designator \
|
|
-Wno-unused-variable \
|
|
-Wno-unused-parameter \
|
|
-Wno-unused-command-line-argument \
|
|
-Wno-missing-field-initializers \
|
|
-Wno-single-bit-bitfield-constant-conversion \
|
|
$(foreach dir,$(INCLUDE_DIRS),$(shell echo -I$(dir)))
|
|
AR_FLAGS := rcs
|
|
OUT := $(realpath ../../out/parted)
|
|
LIBPARTED := libparted
|
|
PARTED := parted
|
|
PATH := $(shell echo $$PREFIX)/bin
|
|
|
|
LIBPARTED_SRCS := \
|
|
$(LIBPARTED)/architecture.c \
|
|
$(LIBPARTED)/debug.c \
|
|
$(LIBPARTED)/device.c \
|
|
$(LIBPARTED)/disk.c \
|
|
$(LIBPARTED)/exception.c \
|
|
$(LIBPARTED)/filesys.c \
|
|
$(LIBPARTED)/libparted.c \
|
|
$(LIBPARTED)/timer.c \
|
|
$(LIBPARTED)/unit.c \
|
|
$(LIBPARTED)/arch/linux.c \
|
|
$(LIBPARTED)/cs/constraint.c \
|
|
$(LIBPARTED)/cs/geom.c \
|
|
$(LIBPARTED)/cs/natmath.c \
|
|
$(LIBPARTED)/fs/amiga/a-interface.c \
|
|
$(LIBPARTED)/fs/amiga/affs.c \
|
|
$(LIBPARTED)/fs/amiga/amiga.c \
|
|
$(LIBPARTED)/fs/amiga/apfs.c \
|
|
$(LIBPARTED)/fs/amiga/asfs.c \
|
|
$(LIBPARTED)/fs/btrfs/btrfs.c \
|
|
$(LIBPARTED)/fs/ext2/interface.c \
|
|
$(LIBPARTED)/fs/f2fs/f2fs.c \
|
|
$(LIBPARTED)/fs/fat/bootsector.c \
|
|
$(LIBPARTED)/fs/fat/fat.c \
|
|
$(LIBPARTED)/fs/hfs/hfs.c \
|
|
$(LIBPARTED)/fs/hfs/probe.c \
|
|
$(LIBPARTED)/fs/jfs/jfs.c \
|
|
$(LIBPARTED)/fs/linux_swap/linux_swap.c \
|
|
$(LIBPARTED)/fs/nilfs2/nilfs2.c \
|
|
$(LIBPARTED)/fs/ntfs/ntfs.c \
|
|
$(LIBPARTED)/fs/r/filesys.c \
|
|
$(LIBPARTED)/fs/r/fat/bootsector.c \
|
|
$(LIBPARTED)/fs/r/fat/calc.c \
|
|
$(LIBPARTED)/fs/r/fat/clstdup.c \
|
|
$(LIBPARTED)/fs/r/fat/context.c \
|
|
$(LIBPARTED)/fs/r/fat/count.c \
|
|
$(LIBPARTED)/fs/r/fat/fat.c \
|
|
$(LIBPARTED)/fs/r/fat/fatio.c \
|
|
$(LIBPARTED)/fs/r/fat/resize.c \
|
|
$(LIBPARTED)/fs/r/fat/table.c \
|
|
$(LIBPARTED)/fs/r/fat/traverse.c \
|
|
$(LIBPARTED)/fs/r/hfs/advfs.c \
|
|
$(LIBPARTED)/fs/r/hfs/advfs_plus.c \
|
|
$(LIBPARTED)/fs/r/hfs/cache.c \
|
|
$(LIBPARTED)/fs/r/hfs/file.c \
|
|
$(LIBPARTED)/fs/r/hfs/file_plus.c \
|
|
$(LIBPARTED)/fs/r/hfs/hfs.c \
|
|
$(LIBPARTED)/fs/r/hfs/journal.c \
|
|
$(LIBPARTED)/fs/r/hfs/probe.c \
|
|
$(LIBPARTED)/fs/r/hfs/reloc.c \
|
|
$(LIBPARTED)/fs/r/hfs/reloc_plus.c \
|
|
$(LIBPARTED)/fs/reiserfs/reiserfs.c \
|
|
$(LIBPARTED)/fs/udf/udf.c \
|
|
$(LIBPARTED)/fs/ufs/ufs.c \
|
|
$(LIBPARTED)/fs/xfs/xfs.c \
|
|
$(LIBPARTED)/labels/aix.c \
|
|
$(LIBPARTED)/labels/atari.c \
|
|
$(LIBPARTED)/labels/bsd.c \
|
|
$(LIBPARTED)/labels/dos.c \
|
|
$(LIBPARTED)/labels/dvh.c \
|
|
$(LIBPARTED)/labels/efi_crc32.c \
|
|
$(LIBPARTED)/labels/fdasd.c \
|
|
$(LIBPARTED)/labels/gpt.c \
|
|
$(LIBPARTED)/labels/loop.c \
|
|
$(LIBPARTED)/labels/mac.c \
|
|
$(LIBPARTED)/labels/pt-tools.c \
|
|
$(LIBPARTED)/labels/rdb.c \
|
|
$(LIBPARTED)/labels/sun.c \
|
|
$(LIBPARTED)/labels/vtoc.c
|
|
|
|
PARTED_SRCS := \
|
|
$(PARTED)/command.c \
|
|
$(PARTED)/jsonwrt.c \
|
|
$(PARTED)/parted.c \
|
|
$(PARTED)/strlist.c \
|
|
$(PARTED)/table.c \
|
|
$(PARTED)/ui.c \
|
|
$(PARTED)/version.c
|
|
|
|
LIBPARTED_OBJS := $(LIBPARTED_SRCS:.c=.o)
|
|
PARTED_OBJS := $(PARTED_SRCS:.c=.o)
|
|
|
|
OBJS_ALL := \
|
|
$(LIBPARTED_OBJS) \
|
|
$(PARTED_OBJS)
|
|
|
|
PROGRESS_LIST := \
|
|
make_outdir \
|
|
build_libgnulib \
|
|
build_libcharset \
|
|
build_libiconv_and_libicrt \
|
|
print_libparted \
|
|
$(LIBPARTED_OBJS) \
|
|
libparted_ar \
|
|
print_parted \
|
|
$(PARTED_OBJS) \
|
|
dummy_parted
|
|
|
|
.PHONY: all
|
|
all: $(PROGRESS_LIST)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@ rm -rf $(OBJS_ALL) $(OUT) *.a
|
|
@ $(MAKE) -C $(CURDIR)/libgnulib -s clean
|
|
@ $(MAKE) -C $(CURDIR)/libiconv -s clean
|
|
@ $(MAKE) -C $(CURDIR)/libcharset -s clean
|
|
|
|
.PHONY: install
|
|
install:
|
|
@ abort() { \
|
|
echo "$1"; \
|
|
exit 1; \
|
|
}; \
|
|
[ -f $(PATH)/parted-test ] && \
|
|
abort "Already installed."; \
|
|
cp $(OUT)/parted $(PATH)/parted-test || \
|
|
abort "Copying failed!"; \
|
|
chmod 777 $(PATH)/parted-test || \
|
|
abort "Cannot set permissions!"
|
|
|
|
.PHONY: uninstall
|
|
uninstall:
|
|
@ if [ ! -f $(PATH)/parted-test ]; then echo "Already uninstalled"; exit 1; fi
|
|
@ rm -f $(PATH)/parted-test &>/dev/null
|
|
|
|
.PHONY:
|
|
reinstall:
|
|
@ $(MAKE) -s uninstall
|
|
@ $(MAKE) -s install
|
|
|
|
$(LIBPARTED)/%.o: $(LIBPARTED)/%.c
|
|
$(E) " CC $@"
|
|
@ $(CC) -c $(CFLAGS) -o $@ $^ || exit 1
|
|
|
|
$(PARTED)/%.o: $(PARTED)/%.c
|
|
$(E) " CC $@"
|
|
@ $(CC) -c $(CFLAGS) -o $@ $^ || exit 1
|
|
|
|
libparted_ar: $(LIBPARTED_OBJS)
|
|
$(E) " AR out/parted/libparted.a"
|
|
@ $(AR) $(AR_FLAGS) $(OUT)/libparted.a $(LIBPARTED_OBJS)
|
|
|
|
build_libgnulib:
|
|
@ $(MAKE) -C $(CURDIR)/libgnulib -s
|
|
|
|
build_libcharset:
|
|
$(E) " ----------- libcharset ----------- "
|
|
@ $(MAKE) -C $(CURDIR)/libcharset -s
|
|
|
|
build_libiconv_and_libicrt:
|
|
$(E) " ----------- libicrt ----------- "
|
|
@ $(MAKE) -C $(CURDIR)/libiconv -s
|
|
|
|
make_outdir:
|
|
@ if [ ! -d $(OUT) ]; then mkdir -p $(OUT); fi
|
|
|
|
print_libparted:
|
|
$(E) " ----------- libparted ----------- "
|
|
|
|
print_parted:
|
|
$(E) " ----------- parted ----------- "
|
|
|
|
dummy_parted:
|
|
$(E) " DMY parted"
|