Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
250 changes: 250 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
CC = gcc -I. -DANDROID
AR = ar
ECHO = echo
ifeq ($(windir),)
EXE =
RM = rm -f
else
EXE = .exe
RM = del
endif

CFLAGS = -DHOST -Icore/include -Icore/libsparse/include -Icore/libsparse -Ilibselinux/include -Icore/mkbootimg
DFLAGS = -Werror -Iandroid_suport_include
LIBC_FLAGS = -Ibionic/libc/include -Ibionic/libc/kernel/uapi -Ibionic/libc/kernel/uapi/asm-x86
LIBLOG_FLAGS = -DLIBLOG_LOG_TAG=1005 -DFAKE_LOG_DEVICE=1
LDFLAGS = -L.
LIBZ = -lz
LIB_LOCAL = -lsparse -lselinux -lpcre -lcutils -llog -lmincrypt
SELINUX_SRCS= \
libselinux/src/booleans.c \
libselinux/src/canonicalize_context.c \
libselinux/src/disable.c \
libselinux/src/enabled.c \
libselinux/src/fgetfilecon.c \
libselinux/src/fsetfilecon.c \
libselinux/src/getenforce.c \
libselinux/src/getfilecon.c \
libselinux/src/getpeercon.c \
libselinux/src/lgetfilecon.c \
libselinux/src/load_policy.c \
libselinux/src/lsetfilecon.c \
libselinux/src/policyvers.c \
libselinux/src/setenforce.c \
libselinux/src/setfilecon.c \
libselinux/src/context.c \
libselinux/src/mapping.c \
libselinux/src/stringrep.c \
libselinux/src/compute_create.c \
libselinux/src/compute_av.c \
libselinux/src/avc.c \
libselinux/src/avc_sidtab.c \
libselinux/src/get_initial_context.c \
libselinux/src/sestatus.c \
libselinux/src/deny_unknown.c
SELINUX_HOST= \
libselinux/src/callbacks.c \
libselinux/src/check_context.c \
libselinux/src/freecon.c \
libselinux/src/init.c \
libselinux/src/label.c \
libselinux/src/label_file.c \
libselinux/src/label_android_property.c
LIBMINCRYPT_SRCS= core/libmincrypt/*.c
LIBSPARSE_SRCS= \
core/libsparse/backed_block.c \
core/libsparse/output_file.c \
core/libsparse/sparse.c \
core/libsparse/sparse_crc32.c \
core/libsparse/sparse_err.c \
core/libsparse/sparse_read.c
EXT4FS_SRCS= \
extras/ext4_utils/make_ext4fs.c \
extras/ext4_utils/ext4fixup.c \
extras/ext4_utils/ext4_utils.c \
extras/ext4_utils/allocate.c \
extras/ext4_utils/contents.c \
extras/ext4_utils/extent.c \
extras/ext4_utils/indirect.c \
extras/ext4_utils/sha1.c \
extras/ext4_utils/wipe.c \
extras/ext4_utils/crc16.c \
extras/ext4_utils/ext4_sb.c
EXT4FS_MAIN= \
extras/ext4_utils/make_ext4fs_main.c \
extras/ext4_utils/canned_fs_config.c
LIBCUTILS_SRCS= \
core/libcutils/hashmap.c \
core/libcutils/native_handle.c \
core/libcutils/config_utils.c \
core/libcutils/load_file.c \
core/libcutils/strlcpy.c \
core/libcutils/open_memstream.c \
core/libcutils/record_stream.c \
core/libcutils/process_name.c \
core/libcutils/threads.c \
core/libcutils/sched_policy.c \
core/libcutils/iosched_policy.c \
core/libcutils/str_parms.c \
core/libcutils/fs_config.c
LIBLOG_SRCS= \
core/liblog/uio.c \
core/liblog/event_tag_map.c \
core/liblog/fake_log_device.c \
core/liblog/log_event_write.c \
core/liblog/logprint.c
LIBLOG_HOST= \
core/liblog/log_read.c \
core/liblog/log_read_kern.c \
core/liblog/logd_write_kern.c
LIBLOG_SRC= \
core/liblog/logd_write.c

all: \
libselinux \
libz \
libsparse \
libpcre \
libmincrypt \
libcutils \
liblog \
mkbootimg$(EXE) \
mkbootfs$(EXE) \
unpackbootimg$(EXE) \
simg2img$(EXE) \
simg2simg$(EXE) \
img2simg$(EXE) \
append2simg$(EXE) \
make_ext4fs$(EXE) \
ext2simg$(EXE) \
sgs4ext4fs$(EXE)

.PHONY: libselinux

libselinux:
@$(ECHO) "Building libselinux..."
@$(CROSS_COMPILE)$(CC) -c $(SELINUX_SRCS) $(CFLAGS) $(SELINUX_HOST)
@$(AR) cqs $@.a *.o
@$(RM) -rfv *.o
@$(ECHO) "*******************************************"

libpcre:
@$(ECHO) "Building libpcre..."
@$(AR) cqs $@.a pcre/dist/*.o
@$(ECHO) "*******************************************"

libz:
@$(ECHO) "Building zlib_host..."
@$(AR) cqs $@.a zlib/src/*.o
@$(ECHO) "*******************************************"

libsparse:
@$(ECHO) "Building libsparse_host..."
@$(ECHO) "*******************************************"
@$(CROSS_COMPILE)$(CC) -c $(LIBSPARSE_SRCS) $(CFLAGS)
@$(AR) -x libz.a
@$(AR) cqs $@.a *.o
@$(RM) -rfv *.o
@$(ECHO) "*******************************************"

libmincrypt:
@$(ECHO) "Building libmincrypt_host..."
@$(CROSS_COMPILE)$(CC) -c $(LIBMINCRYPT_SRCS) $(CFLAGS) $(DFLAGS)
@$(AR) cqs $@.a *.o
@$(RM) -rfv *.o
@$(ECHO) "*******************************************"

libcutils:
@$(ECHO) "Building libcutils_host..."
@$(CC) -c $(LIBCUTILS_SRCS) $(CFLAGS) $(LIB_LOCAL) $(DFLAGS)
@$(AR) cqs $@.a *.o
@$(RM) -rfv *.o
@$(ECHO) "*******************************************"

liblog:
@$(ECHO) "Building liblog_host..."
@$(CC) -c $(LIBLOG_SRCS) $(CFLAGS) $(LDFLAGS) $(LIB_LOCAL) $(DFLAGS)
@$(CC) -c $(LIBLOG_HOST) $(CFLAGS) $(LDFLAGS) $(DFLAGS) $(LIB_LOCAL) $(LIBC_FLAGS) $(DFLAGS)
@$(CC) -c $(LIBLOG_SRC) $(CFLAGS) $(LDFLAGS) $(DFLAGS) $(LIB_LOCAL) $(LIBLOG_FLAGS) $(DFLAGS)
@$(AR) cqs $@.a *.o
@$(RM) -rfv *.o
@$(ECHO) "*******************************************"

mkbootimg$(EXE):
@$(ECHO) "Building mkbootimg..."
@$(CC) external/android_system_core/mkbootimg/mkbootimg.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBZ) $(LIB_LOCAL)
@$(ECHO) "*******************************************"

mkbootfs$(EXE):
@$(ECHO) "Building mkbootfs..."
@$(CC) core/cpio/mkbootfs.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBZ) $(LIB_LOCAL)
@$(ECHO) "*******************************************"

simg2img$(EXE):
@$(ECHO) "Building simg2img..."
@$(CROSS_COMPILE)$(CC) core/libsparse/simg2img.c -o $@ $(LIBSPARSE_SRCS) $(CFLAGS) $(LIBZ)
@$(ECHO) "*******************************************"

simg2simg$(EXE):
@$(ECHO) "Building simg2simg..."
@$(CROSS_COMPILE)$(CC) core/libsparse/simg2simg.c -o $@ $(LIBSPARSE_SRCS) $(CFLAGS) $(LIBZ)
@$(ECHO) "*******************************************"

img2simg$(EXE):
@$(ECHO) "Building img2simg..."
@$(CROSS_COMPILE)$(CC) core/libsparse/img2simg.c -o $@ $(LIBSPARSE_SRCS) $(CFLAGS) $(LIBZ)
@$(ECHO) "*******************************************"

append2simg$(EXE):
@$(ECHO) "Building append2simg..."
@$(CROSS_COMPILE)$(CC) core/libsparse/append2simg.c -o $@ $(LIBSPARSE_SRCS) $(CFLAGS) $(LIBZ)
@$(ECHO) "*******************************************"

make_ext4fs$(EXE):
@$(ECHO) "Building make_ext4fs..."
@$(CROSS_COMPILE)$(CC) -o $@ $(EXT4FS_MAIN) $(EXT4FS_SRCS) $(LIB_LOCAL) $(CFLAGS) $(LDFLAGS)
@$(ECHO) "*******************************************"

ext2simg$(EXE):
@$(ECHO) "Building ext2simg..."
@$(CROSS_COMPILE)$(CC) -o $@ extras/ext4_utils/ext2simg.c $(EXT4FS_SRCS) $(CFLAGS) $(LDFLAGS) $(LIB_LOCAL)
@$(ECHO) "*******************************************"

unpackbootimg$(EXE):
@$(ECHO) "Building unpackbootimg..."
@$(CROSS_COMPILE)$(CC) external/android_system_core/mkbootimg/unpackbootimg.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIB_LOCAL)
@$(ECHO) "*******************************************"

sgs4ext4fs$(EXE):
@$(ECHO) "Building sgs4ext4fs..."
@$(CROSS_COMPILE)$(CC) external/sgs4ext4fs/main.c -o $@
@$(ECHO) "*******************************************"

@$(ECHO) "Cleaning..."
@$(RM) -rfv *.a

.PHONY:

clean:
@$(ECHO) "Cleaning..."
@$(RM) -rfv *.o *.a *.exe


@$(ECHO) "*******************************************"

.PHONY:

clear:
@$(ECHO) "Clearing..."
@$(RM) -rfv *.o *.a mkuserimg.sh file_contexts simg_dump.py
@$(RM) -drfv \
core \
extras \
libselinux \
zlib \
external \
pcre \
sepolicy \
bionic

@$(ECHO) "*******************************************"
7 changes: 7 additions & 0 deletions USE_MINGW
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

#ifndef USE_MINGW
#define lseek64 lseek
#define ftruncate64 ftruncate
#define mmap64 mmap
#define off64_t off_t
#endif
100 changes: 100 additions & 0 deletions configure
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#!/bin/bash
#
# configure script for android_img_repack_tools.
#
BRANCH=android-6.0.1_r22
BRANCH_EXT=cm-13.0
FILE=sepolicy/file_contexts
FILE1=extras/ext4_utils/mkuserimg.sh
FILE2=core/libsparse/defs.h
FILE3=core/libsparse/img2simg.c
FILE4=extras/ext4_utils/ext4_sb.h
FILE5=core/libsparse/output_file.c
FILE6=core/libsparse/append2simg.c
FILE7=core/libsparse/simg_dump.py


get_src() {
git clone $1
}
checkout() {
git checkout $BRANCH
}
checkout_external() {
git checkout $BRANCH_EXT
}
edit_text() {
sed -i $1 $2
}

mkdir external

get_src https://android.googlesource.com/platform/external/sepolicy/
cd sepolicy
checkout
cd ..
get_src https://android.googlesource.com/platform/system/core
cd core
checkout
cd ..
get_src https://android.googlesource.com/platform/system/extras
cd extras
checkout
cd ..
get_src https://android.googlesource.com/platform/external/libselinux
cd libselinux
checkout
cd ..
get_src https://android.googlesource.com/platform/bionic
cd bionic
checkout
cd ..
get_src https://android.googlesource.com/platform/external/pcre
cd pcre
checkout
cd ..
get_src https://android.googlesource.com/platform/external/zlib
cd zlib
checkout
cd ../external
get_src https://github.com/CyanogenMod/android_system_core.git
cd android_system_core
checkout_external
cd ..
get_src https://github.com/Chainfire/sgs4ext4fs
cd ..



echo
echo "for android.googlesource.com choosed branch $BRANCH..."
echo
echo "for Cyanogen Mod source choosed branch $BRANCH_EXT..."
echo
cd pcre/dist
./configure && make
cd ../../zlib/src
./configure && make
cd ../..

echo Patch files

sed -i '/^/s:MAKE_EXT4FS_CMD="make_ext4fs:MAKE_EXT4FS_CMD="./make_ext4fs:' $FILE1

sed -i '15r USE_MINGW' $FILE2

sed -i '34r USE_MINGW' $FILE3

sed -i '15r USE_MINGW' $FILE4

sed -i '707a\#define USE_MINGW' $FILE5

sed -i '43r USE_MINGW' $FILE6



cp -fv $FILE .
cp -fv $FILE1 .
cp -fv $FILE7 .

make