diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 00000000..d98cadf4 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,563 @@ +################################################################################ + +.PHONY: clean + +PROGRAM_NAME ?= vlmcsd +CLIENT_NAME ?= vlmcs +MULTI_NAME ?= vlmcsdmulti +CONFIG ?= config.h + +# crypto library to use for standard algos, could save ~1-2kb ;) +# can be either 'openssl', 'polarssl' or anything other for internal impl +CRYPTO ?= internal + +# use DNS_PARSER=internal if your OS doesn't supply the DNS parser routines +DNS_PARSER ?= OS + +# You should supply your own version string here + +VLMCSD_VERSION ?= $(shell test -d .svn && echo svn`svnversion`) + +FEATURES ?= full +VERBOSE ?= NO + +################################################################################ + +CC ?= gcc +TARGETPLATFORM := $(shell LANG=en_US.UTF-8 $(CC) -v 2>&1 | grep '^Target: ' | cut -f 2 -d ' ') + +ifneq (,$(findstring darwin,$(TARGETPLATFORM))) + DARWIN := 1 + UNIX := 1 +endif + +ifneq (,$(findstring androideabi,$(TARGETPLATFORM))) + ANDROID := 1 + UNIX := 1 +endif + +ifneq (,$(findstring minix,$(TARGETPLATFORM))) + MINIX := 1 + UNIX := 1 +endif + +ifneq (,$(findstring mingw,$(TARGETPLATFORM))) + MINGW := 1 + WIN := 1 +endif + +ifneq (,$(findstring cygwin,$(TARGETPLATFORM))) + CYGWIN := 1 + WIN := 1 +endif + +ifneq (,$(findstring freebsd,$(TARGETPLATFORM))) + FREEBSD := 1 + UNIX := 1 + BSD := 1 +endif + +ifneq (,$(findstring netbsd,$(TARGETPLATFORM))) + NETBSD := 1 + UNIX := 1 + BSD := 1 +endif + +ifneq (,$(findstring openbsd,$(TARGETPLATFORM))) + OPENBSD := 1 + UNIX := 1 + BSD := 1 +endif + +ifneq (,$(findstring solaris,$(TARGETPLATFORM))) + SOLARIS := 1 + UNIX := 1 +endif + +ifneq (,$(findstring linux,$(TARGETPLATFORM))) + LINUX := 1 + UNIX := 1 +endif + +ifeq ($(CYGWIN),1) + DLL_NAME ?= cygkms.dll +else ifeq ($(WIN),1) + DLL_NAME ?= libkms.dll +else ifeq ($(DARWIN),1) + DLL_NAME ?= libkms.dylib +else + DLL_NAME ?= libkms.so +endif + +BASECFLAGS = -DCONFIG=\"$(CONFIG)\" -DBUILD_TIME=$(shell date '+%s') -g -Os -fno-strict-aliasing -fomit-frame-pointer -ffunction-sections -fdata-sections +BASELDFLAGS = +STRIPFLAGS = +CLIENTLDFLAGS = +SERVERLDFLAGS = + +ifeq ($(NOLIBS),1) + NOLRESOLV=1 + NOLPTHREAD=1 +endif + +ifneq ($(NO_DNS),1) + ifneq ($(ANDROID),1) + ifneq ($(NOLRESOLV),1) + + ifeq ($(MINGW),1) + BASELDFLAGS += -ldnsapi + endif + + ifeq ($(LINUX),1) + BASELDFLAGS += -lresolv + endif + + ifeq ($(DARWIN),1) + BASELDFLAGS += -lresolv + endif + + ifeq ($(CYGWIN),1) + DNS_PARSER := internal + BASELDFLAGS += -lresolv + endif + + ifeq ($(OPENBSD),1) + DNS_PARSER := internal + endif + + ifeq ($(SOLARIS),1) + BASELDFLAGS += -lresolv + endif + + endif + endif +else + BASECFLAGS += -DNO_DNS +endif + +ifneq ($(CAT),2) + BASECFLAGS += "-Wall" +endif + +ifeq ($(DARWIN), 1) + STRIPFLAGS += -Wl,-S -Wl,-x + BASECFLAGS += -Wno-deprecated-declarations +else ifeq ($(shell uname), SunOS) + STRIPFLAGS += -s + ifeq ($(notdir $(LD_ALTEXEC)),gld) + BASELDFLAGS += -Wl,--gc-sections + endif + BASELDFLAGS += -lsocket +else + ifneq ($(CC),tcc) + BASELDFLAGS += -Wl,--gc-sections + endif + STRIPFLAGS += -s +endif + +ifeq ($(FEATURES), embedded) + BASECFLAGS += -DNO_HELP -DNO_USER_SWITCH -DNO_BASIC_PRODUCT_LIST -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_VERBOSE_LOG +else ifeq ($(FEATURES), autostart) + BASECFLAGS += -DNO_HELP +else ifeq ($(FEATURES), minimum) + BASECFLAGS += -DNO_TIMEOUT -DNO_SIGHUP -DNO_CL_PIDS -DNO_EXTENDED_PRODUCT_LIST -DNO_BASIC_PRODUCT_LIST -DNO_LOG -DNO_RANDOM_EPID -DNO_INI_FILE -DNO_INI_FILE -DNO_HELP -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_USER_SWITCH -DNO_VERBOSE_LOG -DNO_LIMIT +else ifeq ($(FEATURES), most) + BASECFLAGS += -DNO_SIGHUP -DNO_PID_FILE -DNO_LIMIT +else ifeq ($(FEATURES), inetd) + BASECFLAGS += -DNO_SIGHUP -DNO_SOCKETS -DNO_PID_FILE -DNO_LIMIT +else ifeq ($(FEATURES), fixedepids) + BASECFLAGS += -DNO_SIGHUP -DNO_CL_PIDS -DNO_RANDOM_EPID -DNO_INI_FILE +endif + +ifdef INI + BASECFLAGS += -DINI_FILE=\"$(INI)\" +endif + +ifeq ($(THREADS), 1) + BASECFLAGS += -DUSE_THREADS +endif + +ifeq ($(CHILD_HANDLER), 1) + BASECFLAGS += -DCHILD_HANDLER +endif + +ifeq ($(NO_TIMEOUT), 1) + BASECFLAGS += -DNO_TIMEOUT +endif + +ifdef WINDOWS + BASECFLAGS += -DEPID_WINDOWS=\"$(WINDOWS)\" +endif + +ifdef OFFICE2010 + BASECFLAGS += -DEPID_OFFICE2010=\"$(OFFICE2010)\" +endif + +ifdef OFFICE2013 + BASECFLAGS += -DEPID_OFFICE2013=\"$(OFFICE2013)\" +endif + +ifdef HWID + BASECFLAGS += -DHWID=$(HWID) +endif + +ifdef TERMINAL_WIDTH + BASECFLAGS += -DTERMINAL_FIXED_WIDTH=$(TERMINAL_WIDTH) +endif + +ifeq ($(NOPROCFS), 1) + BASECFLAGS += -DNO_PROCFS +endif + +ifeq ($(AUXV), 1) + BASECFLAGS += -DUSE_AUXV +endif + +ifneq ($(ANDROID), 1) +ifneq ($(MINIX), 1) +ifneq ($(NOLPTHREAD), 1) + ifeq ($(findstring NO_LIMIT,$(CFLAGS) $(BASECFLAGS)),) + BASELDFLAGS += -lpthread + endif + + ifneq ($(findstring USE_THREADS,$(BASECFLAGS)),) + BASELDFLAGS += -lpthread + endif +endif +endif +endif + +$(MULTI_NAME): BASECFLAGS += -DMULTI_CALL_BINARY=1 + +all: $(CLIENT_NAME) $(PROGRAM_NAME) + +ifdef CAT + allmulti: $(CLIENT_NAME) $(PROGRAM_NAME) $(MULTI_NAME) +endif + +ifneq ($(strip $(VLMCSD_VERSION)),) + BASECFLAGS += -DVERSION=\"$(VLMCSD_VERSION),\ built\ $(shell date -u '+%Y-%m-%d %H:%M:%S' | sed -e 's/ /\\ /g')\ UTC\" +endif + +ifdef CAT + BASECFLAGS += -DONE_FILE +endif + +SRCS = crypto.c kms.c endian.c output.c shared_globals.c helpers.c +HEADERS = $(CONFIG) types.h rpc.h vlmcsd.h endian.h crypto.h kms.h network.h output.h shared_globals.h vlmcs.h helpers.h +DEPS = $(MULTI_SRCS:.c=.d) + +VLMCSD_SRCS = vlmcsd.c $(SRCS) +VLMCSD_OBJS = $(VLMCSD_SRCS:.c=.o) + +VLMCS_SRCS = vlmcs.c $(SRCS) +VLMCS_OBJS = $(VLMCS_SRCS:.c=.o) + +MULTI_SRCS = vlmcsd.c vlmcs.c vlmcsdmulti.c $(SRCS) +MULTI_OBJS = $(MULTI_SRCS:.c=.o) + +DLL_SRCS = libkms.c $(SRCS) +DLL_OBJS = $(DLL_SRCS:.c=.o) + +PDFDOCS = vlmcs.1.pdf vlmcsd.7.pdf vlmcsd.8.pdf vlmcsdmulti.1.pdf vlmcsd.ini.5.pdf +HTMLDOCS = $(PDFDOCS:.pdf=.html) +UNIXDOCS = $(PDFDOCS:.pdf=.unix.txt) +DOSDOCS = $(PDFDOCS:.pdf=.dos.txt) + +ifneq ($(NO_DNS),1) + + VLMCS_SRCS += dns_srv.c + MULTI_SRCS += dns_srv.c + +ifeq ($(DNS_PARSER),internal) +ifneq ($(MINGW),1) + VLMCS_SRCS += ns_parse.c ns_name.c + MULTI_SRCS += ns_parse.c ns_name.c + BASECFLAGS += "-DDNS_PARSER_INTERNAL" +endif +endif + +endif + +ifeq ($(MSRPC),1) + VLMCSD_SRCS += msrpc-server.c + VLMCS_SRCS += msrpc-client.c + MULTI_SRCS += msrpc-server.c msrpc-client.c + BASECFLAGS += -DUSE_MSRPC -Wno-unknown-pragmas + BASELDFLAGS += -lrpcrt4 +else + SRCS += network.c rpc.c +endif + +ifeq "$(WIN)" "1" + VLMCSD_SRCS += ntservice.c + MULTI_SRCS += ntservice.c +endif + +ifeq ($(CRYPTO), openssl_with_aes) + BASECFLAGS += -D_CRYPTO_OPENSSL -D_USE_AES_FROM_OPENSSL + BASELDFLAGS += -lcrypto + SRCS += crypto_openssl.c +else ifeq ($(CRYPTO), openssl_with_aes_soft) + BASECFLAGS += -D_CRYPTO_OPENSSL -D_USE_AES_FROM_OPENSSL -D_OPENSSL_SOFTWARE + BASELDFLAGS += -lcrypto + SRCS += crypto_openssl.c +else ifeq ($(CRYPTO), openssl) + BASECFLAGS += -D_CRYPTO_OPENSSL + BASELDFLAGS += -lcrypto + SRCS += crypto_openssl.c +else ifeq ($(CRYPTO), polarssl) + BASECFLAGS += -D_CRYPTO_POLARSSL + BASELDFLAGS += -lpolarssl +else ifeq ($(CRYPTO), windows) + BASECFLAGS += -D_CRYPTO_WINDOWS + SRCS += crypto_windows.c + #BASELDFLAGS += -lpolarssl +else + BASECFLAGS += -D_CRYPTO_INTERNAL + SRCS += crypto_internal.c +endif + +ifneq ($(STRIP),0) + BASELDFLAGS += $(STRIPFLAGS) +endif + +ifeq ($(OPENSSL_HMAC),0) + BASECFLAGS += -D_OPENSSL_NO_HMAC +endif + +ifeq ($(DEPENDENCIES),2) + BASECFLAGS += -MMD +endif + +ifeq ($(VERBOSE),3) + COMPILER := $(shell printf "%-40s" $(notdir $(CC))) +endif + +ifeq ($(CAT),2) + LDCMD := CC/LD +else + LDCMD := LD +endif + +-include $(MULTI_SRCS:.c=.d) + +%.o: %.c + ifeq ($(VERBOSE),1) + $(CC) $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(PLATFORMFLAGS) -c $< + ifeq ($(DEPENDENCIES),1) + $(CC) $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(PLATFORMFLAGS) -MM -MF $*.d $< + endif + else + @echo "$(COMPILER) CC $@ <- $<" + @$(CC) $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(PLATFORMFLAGS) -c $< + ifeq ($(DEPENDENCIES),1) + @echo "$(COMPILER) DEP $*.d <- $<" + @$(CC) $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(PLATFORMFLAGS) -MM -MF $*.d $< + endif + endif + +vlmcsd_all.c: $(VLMCSD_SRCS) + ifeq ($(VERBOSE),1) + cat $^ > $@ + else + @echo "$(COMPILER) CAT $@ <- $^" + @cat $^ > $@ + endif + +vlmcs_all.c: $(VLMCS_SRCS) + ifeq ($(VERBOSE),1) + cat $^ > $@ + else + @echo "$(COMPILER) CAT $@ <- $^" + @cat $^ > $@ + endif + +vlmcsdmulti_all.c: $(MULTI_SRCS) + ifeq ($(VERBOSE),1) + cat $^ > $@ + else + @echo "$(COMPILER) CAT $@ <- $^" + @cat $^ > $@ + endif + +ifdef CAT +ifeq ($(CAT),2) +$(PROGRAM_NAME): vlmcsd_all.c +else +$(PROGRAM_NAME): vlmcsd_all.o +endif +else +$(PROGRAM_NAME): $(VLMCSD_OBJS) +endif + ifeq ($(VERBOSE),1) + +$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) + else + +@echo "$(COMPILER) $(LDCMD) $@ <- $^" + +@$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) + endif + +ifdef CAT +ifeq ($(CAT),2) +$(CLIENT_NAME): vlmcs_all.c +else +$(CLIENT_NAME): vlmcs_all.o +endif +else +$(CLIENT_NAME): $(VLMCS_OBJS) +endif + ifeq ($(VERBOSE),1) + +$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) + else + +@echo "$(COMPILER) $(LDCMD) $@ <- $^" + +@$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) + endif + +ifdef CAT +ifeq ($(CAT),2) +$(MULTI_NAME): vlmcsdmulti_all.c +else +$(MULTI_NAME): vlmcsdmulti_all.o +endif +else +$(MULTI_NAME): $(MULTI_OBJS) +endif + ifeq ($(VERBOSE),1) + +$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) + else + +@echo "$(COMPILER) $(LDCMD) $@ <- $^" + +@$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) + endif + +$(DLL_NAME): $(DLL_SRCS) + ifeq ($(VERBOSE),1) + +$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) -shared -DIS_LIBRARY=1 -UNO_SOCKETS -UUSE_MSRPC + else + +@echo "$(COMPILER) $(LDCMD) $@ <- $^" + +@$(CC) -o $@ $^ $(PLATFORMFLAGS) $(BASECFLAGS) $(CFLAGS) $(BASELDFLAGS) $(LDFLAGS) -shared -DIS_LIBRARY=1 -UNO_SOCKETS -UUSE_MSRPC + endif + + +%.pdf : % + ifeq ($(shell uname), Darwin) + groff -Tps -mandoc -c $< | pstopdf -i -o $@ + else + groff -Tpdf -mandoc -c $< > $@ + endif + +%.html : % + groff -Thtml -mandoc -c $< > $@ + +%.unix.txt : % + groff -P -c -Tutf8 -mandoc -c $< | col -bx > $@ + +%.dos.txt : %.unix.txt +# unix2dos -n $< $@ +# sed -e 's/$$/\r/' $< > $@ + awk 'sub("$$", "\r")' $< > $@ + +pdfdocs : $(PDFDOCS) + +dosdocs : $(DOSDOCS) + +unixdocs : $(UNIXDOCS) + +htmldocs : $(HTMLDOCS) + +alldocs : $(UNIXDOCS) $(HTMLDOCS) $(PDFDOCS) $(DOSDOCS) + +clean: + rm -f *.o *.d *_all.c $(PROGRAM_NAME) $(MULTI_NAME) $(DLL_NAME) $(CLIENT_NAME) $(PDFDOCS) $(DOSDOCS) $(UNIXDOCS) $(HTMLDOCS) + +help: + @echo "Type:" + @echo " ${MAKE} - to build $(PROGRAM_NAME) and $(CLIENT_NAME)" + @echo " ${MAKE} clean - to remove $(PROGRAM_NAME) and $(CLIENT_NAME)" + @echo " ${MAKE} help - to see this help" + @echo " ${MAKE} pdfdocs - Create PDF versions of the documentation (Requires groff with PDF support)." + @echo " ${MAKE} htmldocs - Create HTML versions of the documentation." + @echo " ${MAKE} unixdocs - Create Unix TXT versions of the documentation." + @echo " ${MAKE} dosdocs - Create DOS/Windows TXT versions of the documentation." + @echo " ${MAKE} alldocs - Create all versions of the documentation." + @echo " ${MAKE} -j - Use parallel tasks (SMP support) when compiling $(PROGRAM_NAME) and $(CLIENT_NAME)" + @echo "" + @echo " ${MAKE} $(PROGRAM_NAME) - to build the server only." + @echo " ${MAKE} $(CLIENT_NAME) - to build the client only." + @echo " ${MAKE} $(MULTI_NAME) - to build $(PROGRAM_NAME) and $(CLIENT_NAME) in a single multi-call binary" + @echo " ${MAKE} $(DLL_NAME) - to build the shared library $(DLL_NAME)" + @echo "" + @echo "Options:" + @echo " CONFIG= Compile as instead of config.h." + @echo " INI= Compile $(PROGRAM_NAME) with default ini file " + @echo " PROGRAM_NAME= Use as output file name for the KMS server. Defaults to vlmcsd." + @echo " CLIENT_NAME= Use as output file name for the KMS client. Defaults to vlmcs." + @echo " MULTI_NAME= Use as output file name for the multi-call binary. Defaults to vlmcsdmulti." + @echo " DEPENDENCIES=1 Create dependency files." + @echo " CRYPTO=openssl Use openssl for SHA256/HMAC calculations." + @echo " CRYPTO=openssl_with_aes EXPERIMENTAL: Use openssl for SHA256/HMAC and AES calculations (hardware, e.g. AES-NI on x86)." + @echo " CRYPTO=openssl_with_aes_soft EXPERIMENTAL: Use openssl for SHA256/HMAC and AES calculations (software)." + @echo " CRYPTO=polarssl Use polarssl instead of internal crypto code for SHA256/HMAC calculations." + @echo " CRYPTO=windows Use Windows CryptoAPI instead of internal crypto code for SHA256/HMAC calculations." + @echo " CC= Use compiler . Supported compilers are gcc, icc, tcc and clang. Others may or may not work." + @echo " TERMINAL_WIDTH= Assume a fixed terminal width of columns. Use in case of problems only." + @echo " VLMCSD_VERSION= Sets as your version identifier. Defaults to \"private build\"." + @echo " CFLAGS= Pass as additional arguments to the compiler." + @echo " LDFLAGS= Pass as additional arguments to the linker." + @echo " PLATFORMFLAGS= Pass as additional arguments to the compiler and the linker." + @echo " BASECFLAGS= Pass only as arguments to the compiler (advanced users only)." + @echo " BASELDFLAGS= Pass only as arguments to the linker (advanced users only)." + @echo " STRIP=0 Don't strip debug information from $(PROGRAM_NAME) and $(CLIENT_NAME) (for developers)." + @echo " VERBOSE=1 Be verbose when making targets." + @echo " VERBOSE=3 Show name of compiler." + @echo " THREADS=1 Use threads instead of fork(). Automatically set for native Windows. Recommended for Cygwin." + @echo " WINDOWS= Use as the default ePID for Windows (when using $(PROGRAM_NAME) with -r 0)." + @echo " OFFICE2010= Use as the default ePID for Office2010 (when using $(PROGRAM_NAME) with -r 0)." + @echo " OFFICE2013= Use as the default ePID for Office2013 (when using $(PROGRAM_NAME) with -r 0)." + @echo " HWID= Use as the default HWID (when it can't be found in an ini file)." + @echo " FEATURES=full Compile $(PROGRAM_NAME) with all features (default)." + @echo " FEATURES=most Compile $(PROGRAM_NAME) without rarely used features." + @echo " FEATURES=embedded Compile $(PROGRAM_NAME) with typical features for embedded systems." + @echo " FEATURES=autostart Removes features typically not needed if you place $(PROGRAM_NAME) in an autostart script." + @echo " FEATURES=inetd Compile $(PROGRAM_NAME) for running through an internet superserver only." + @echo " FEATURES=minimum Compiles only basic features of $(PROGRAM_NAME)." + @echo " FEATURES=fixedepids $(PROGRAM_NAME) only uses bultin internal ePIDs." + @echo "" + @echo "Useful CFLAGS to save memory when running $(PROGRAM_NAME) on very small embedded devices (finer control than FEATURES=):" + @echo " -DNO_EXTENDED_PRODUCT_LIST Don't compile the detailed product list." + @echo " -DNO_BASIC_PRODUCT_LIST Don't compile the basic product list." + @echo " -DNO_VERBOSE_LOG Don't support verbose logging. Removes -v option." + @echo " -DNO_LOG Don't add support for logging. Implies -DNO_VERBOSE_LOG -DNO_EXTENDED_PRODUCT_LIST and -DNO_BASIC_PRODUCT_LIST." + @echo " -DNO_RANDOM_EPID Don't support random ePIDs." + @echo " -DNO_INI_FILE Don't support reading ePIDs/HWIDs from a file." + @echo " -DNO_PID_FILE Don't support writing a PID file. Removes -p option." + @echo " -DNO_USER_SWITCH Don't support changing uid/gid after program start. Removes -u and -g options." + @echo " -DNO_HELP Don't support command line help." + @echo " -DNO_CUSTOM_INTERVALS Don't support custom intervals for retry and refresh activation. Removes -A and -R options." + @echo " -DNO_SOCKETS Don't support standalone operation. Requires an internet superserver to start $(PROGRAM_NAME)." + @echo " -DNO_CL_PIDS Don't support specifying ePIDs and HwId from the command line in $(PROGRAM_NAME)." + @echo " -DNO_LIMIT Don't support limiting concurrent clients in $(PROGRAM_NAME)." + @echo " -DNO_SIGHUP Don't support SIGHUP handling in $(PROGRAM_NAME)." + @echo "" + @echo "Troubleshooting options" + @echo " CAT=1 Combine all sources in a single file." + @echo " CAT=2 Combine all sources in a single file and don't create a *.o file." + @echo " NOPROCFS=1 Don't rely on a properly mounted proc filesystem in /proc." + @echo " AUXV=1 Use /proc/self/auxv (requires Linux with glibc >= 2.16 or musl.)" + @echo " NOLPTHREAD=1 Disable detection if -lpthread is required (for use with Android NDK)." + @echo " NOLRESOLV=1 Disable detection if -lresolv is requires (for use with Android NDK)." + @echo " NOLIBS=1 Do not attempt to autodetect any library dependencies." + @echo " OPENSSL_HMAC=0 Compile for openssl versions that don't have HMAC support (required on some embedded devices)." + @echo " NO_TIMEOUT=1 Do not set timeouts for sockets (for systems that don't support it)." + @echo " CHILD_HANDLER=1 Install a handler for SIGCHLD (for systems that don't support SA_NOCLDWAIT)." + @echo " NO_DNS=1 Compile vlmcs without support for detecting KMS servers via DNS." + @echo " DNS_PARSER=internal Use $(CLIENT_NAME) internal DNS parsing routines. No effect on MingW (native Windows)." + @echo "" + @echo "Other useful CFLAGS:" + @echo " -DSUPPORT_WINE Add code that the Windows version of $(PROGRAM_NAME) runs on Wine if MSRPC=1" + @echo " -D_PEDANTIC Report rare error/warning conditions instead of silently ignoring them." + @echo " -DINCLUDE_BETAS Include SKU / activation IDs for obsolete beta/preview products." + @echo " -DFD_SETSIZE= Allow -L statements in $(PROGRAM_NAME) (default: 64 on Windows, 1024 on most Unixes)." + @echo " -flto Use link time optimization. Not supported by old compilers (gcc < 4.7). Use whenever supported." + @echo " -flto=jobserver Utilize all CPUs during link time optimization. Requires ${MAKE} -j " + @echo " -fno-stack-protector No stack checking. Smaller binaries." + @echo " -pipe Use pipes instead of temporary files (faster compilation, extends the life of your SSD)." diff --git a/KMSServer.idl b/KMSServer.idl new file mode 100644 index 00000000..361c5b93 --- /dev/null +++ b/KMSServer.idl @@ -0,0 +1,14 @@ +[ + uuid(51C82175-844E-4750-B0D8-EC255555BC06), + version(1.0), +] +interface KMSServer +{ + int RequestActivation + ( + [in] int requestSize, + [in, size_is(requestSize)] unsigned char* request, + [out] int* responseSize, + [out, size_is( , *responseSize)] unsigned char** response + ); +} \ No newline at end of file diff --git a/KMSServer_c_mingw_gcc.c b/KMSServer_c_mingw_gcc.c new file mode 100644 index 00000000..22b028d8 --- /dev/null +++ b/KMSServer_c_mingw_gcc.c @@ -0,0 +1,278 @@ + + +/* this ALWAYS GENERATED file contains the RPC client stubs */ + + + /* File created by MIDL compiler version 8.00.0595 */ +/* at Thu Oct 18 15:24:14 2012 + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0595 + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#if !defined(_M_IA64) && !defined(_M_AMD64) && !defined(_ARM_) + + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif + +#pragma warning( disable: 4211 ) /* redefine extern to static */ +#pragma warning( disable: 4232 ) /* dllimport identity*/ +#pragma warning( disable: 4024 ) /* array to pointer mapping*/ +#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */ + +#pragma optimize("", off ) + +#include + +#include "KMSServer_h.h" + +#define TYPE_FORMAT_STRING_SIZE 43 +#define PROC_FORMAT_STRING_SIZE 59 +#define EXPR_FORMAT_STRING_SIZE 1 +#define TRANSMIT_AS_TABLE_SIZE 0 +#define WIRE_MARSHAL_TABLE_SIZE 0 + +typedef struct _KMSServer_MIDL_TYPE_FORMAT_STRING + { + short Pad; + unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_TYPE_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_PROC_FORMAT_STRING + { + short Pad; + unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_PROC_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_EXPR_FORMAT_STRING + { + long Pad; + unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_EXPR_FORMAT_STRING; + + +static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = +{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; + + +extern const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString; +extern const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString; +extern const KMSServer_MIDL_EXPR_FORMAT_STRING KMSServer__MIDL_ExprFormatString; + +#define GENERIC_BINDING_TABLE_SIZE 0 + + +/* Standard interface: KMSServer, ver. 1.0, + GUID={0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}} */ + + + +static const RPC_CLIENT_INTERFACE KMSServer___RpcClientInterface = + { + sizeof(RPC_CLIENT_INTERFACE), + {{0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}},{1,0}}, + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + 0, + 0, + 0, + 0, + 0, + 0x00000000 + }; +RPC_IF_HANDLE KMSServer_v1_0_c_ifspec = (RPC_IF_HANDLE)& KMSServer___RpcClientInterface; + +extern const MIDL_STUB_DESC KMSServer_StubDesc; + +static RPC_BINDING_HANDLE KMSServer__MIDL_AutoBindHandle; + + +int RequestActivation( + /* [in] */ handle_t IDL_handle, + /* [in] */ int requestSize, + /* [size_is][in] */ unsigned char *request, + /* [out] */ int *responseSize, + /* [size_is][size_is][out] */ unsigned char **response) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall2( + ( PMIDL_STUB_DESC )&KMSServer_StubDesc, + (PFORMAT_STRING) &KMSServer__MIDL_ProcFormatString.Format[0], + ( unsigned char * )&IDL_handle); + return ( int )_RetVal.Simple; + +} + + +#if !defined(__RPC_WIN32__) +#error Invalid build platform for this stub. +#endif + +#if !(TARGET_IS_NT50_OR_LATER) +#error You need Windows 2000 or later to run this stub because it uses these features: +#error /robust command line switch. +#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems. +#error This app will fail with the RPC_X_WRONG_STUB_VERSION error. +#endif + +#if !MULTI_CALL_BINARY +/*static*/ const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString = + { + 0, + { + + /* Procedure RequestActivation */ + + 0x0, /* 0 */ + 0x48, /* Old Flags: */ +/* 2 */ NdrFcLong( 0x0 ), /* 0 */ +/* 6 */ NdrFcShort( 0x0 ), /* 0 */ +/* 8 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ +/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ + 0x0, /* 0 */ +/* 12 */ NdrFcShort( 0x0 ), /* x86 Stack size/offset = 0 */ +/* 14 */ NdrFcShort( 0x8 ), /* 8 */ +/* 16 */ NdrFcShort( 0x24 ), /* 36 */ +/* 18 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ + 0x5, /* 5 */ +/* 20 */ 0x8, /* 8 */ + 0x7, /* Ext Flags: new corr desc, clt corr check, srv corr check, */ +/* 22 */ NdrFcShort( 0x1 ), /* 1 */ +/* 24 */ NdrFcShort( 0x1 ), /* 1 */ +/* 26 */ NdrFcShort( 0x0 ), /* 0 */ + + /* Parameter IDL_handle */ + +/* 28 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 30 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 32 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter requestSize */ + +/* 34 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ +/* 36 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 38 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ + + /* Parameter request */ + +/* 40 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 42 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 44 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter responseSize */ + +/* 46 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */ +/* 48 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 50 */ NdrFcShort( 0x16 ), /* Type Offset=22 */ + + /* Parameter response */ + +/* 52 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 54 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 56 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + 0x0 + } + }; + +/*static*/ const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString = + { + 0, + { + NdrFcShort( 0x0 ), /* 0 */ +/* 2 */ + 0x11, 0x0, /* FC_RP */ +/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ +/* 6 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 8 */ NdrFcShort( 0x1 ), /* 1 */ +/* 10 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x0, /* */ +/* 12 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 14 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 16 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ +/* 18 */ + 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */ +/* 20 */ 0x8, /* FC_LONG */ + 0x5c, /* FC_PAD */ +/* 22 */ + 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */ +/* 24 */ NdrFcShort( 0x2 ), /* Offset= 2 (26) */ +/* 26 */ + 0x12, 0x0, /* FC_UP */ +/* 28 */ NdrFcShort( 0x2 ), /* Offset= 2 (30) */ +/* 30 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 32 */ NdrFcShort( 0x1 ), /* 1 */ +/* 34 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x54, /* FC_DEREFERENCE */ +/* 36 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 38 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 40 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ + + 0x0 + } + }; + +#endif // !MULTI_CALL_BINARY + +static const unsigned short KMSServer_FormatStringOffsetTable[] = + { + 0 + }; + +//typedef void *(__RPC_API midl_user_allocate_t)(size_t); +typedef void *(__RPC_API *midl_allocate_t)(size_t); + +#if !MULTI_CALL_BINARY +/*static*/ const MIDL_STUB_DESC KMSServer_StubDesc = + { + (void *)& KMSServer___RpcClientInterface, + (midl_allocate_t)MIDL_user_allocate, + MIDL_user_free, + &KMSServer__MIDL_AutoBindHandle, + 0, + 0, + 0, + 0, + KMSServer__MIDL_TypeFormatString.Format, + 1, /* -error bounds_check flag */ + 0x50002, /* Ndr library version */ + 0, + 0x8000253, /* MIDL Version 8.0.595 */ + 0, + 0, + 0, /* notify & notify_flag routine table */ + 0x1, /* MIDL flag */ + 0, /* cs routines */ + 0, /* proxy/server info */ + 0 + }; + +#endif // !MULTI_CALL_BINARY + +#pragma optimize("", on ) +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif + + +#endif /* !defined(_M_IA64) && !defined(_M_AMD64) && !defined(_ARM_) */ + diff --git a/KMSServer_c_x64_mingw_gcc.c b/KMSServer_c_x64_mingw_gcc.c new file mode 100644 index 00000000..b3d5fcd1 --- /dev/null +++ b/KMSServer_c_x64_mingw_gcc.c @@ -0,0 +1,731 @@ + + +/* this ALWAYS GENERATED file contains the RPC client stubs */ + + + /* File created by MIDL compiler version 8.00.0603 */ +/* at Fri Feb 20 04:17:07 2015 + * modified by Hotbird64 to work with MingW-w64 and gcc + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.00.0603 + protocol : all , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#if defined(_M_AMD64) + + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif + +#pragma warning( disable: 4211 ) /* redefine extern to static */ +#pragma warning( disable: 4232 ) /* dllimport identity*/ +#pragma warning( disable: 4024 ) /* array to pointer mapping*/ + +#include + +#include "KMSServer_h.h" + +#define TYPE_FORMAT_STRING_SIZE 43 +#define PROC_FORMAT_STRING_SIZE 61 +#define EXPR_FORMAT_STRING_SIZE 1 +#define TRANSMIT_AS_TABLE_SIZE 0 +#define WIRE_MARSHAL_TABLE_SIZE 0 + +typedef struct _KMSServer_MIDL_TYPE_FORMAT_STRING + { + short Pad; + unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_TYPE_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_PROC_FORMAT_STRING + { + short Pad; + unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_PROC_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_EXPR_FORMAT_STRING + { + long Pad; + unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_EXPR_FORMAT_STRING; + + +static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = +{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; + +static const RPC_SYNTAX_IDENTIFIER _NDR64_RpcTransferSyntax = +{{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}; + + + +extern const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString; +extern const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString; +extern const KMSServer_MIDL_EXPR_FORMAT_STRING KMSServer__MIDL_ExprFormatString; + +#define GENERIC_BINDING_TABLE_SIZE 0 + + +/* Standard interface: KMSServer, ver. 1.0, + GUID={0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}} */ + + extern const MIDL_STUBLESS_PROXY_INFO KMSServer_ProxyInfo; + + +static const RPC_CLIENT_INTERFACE KMSServer___RpcClientInterface = + { + sizeof(RPC_CLIENT_INTERFACE), + {{0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}},{1,0}}, + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + 0, + 0, + 0, + 0, + &KMSServer_ProxyInfo, + 0x02000000 + }; +RPC_IF_HANDLE KMSServer_v1_0_c_ifspec = (RPC_IF_HANDLE)& KMSServer___RpcClientInterface; + +extern const MIDL_STUB_DESC KMSServer_StubDesc; + +static RPC_BINDING_HANDLE KMSServer__MIDL_AutoBindHandle; + + +int RequestActivation( + /* [in] */ handle_t IDL_handle, + /* [in] */ int requestSize, + /* [size_is][in] */ unsigned char *request, + /* [out] */ int *responseSize, + /* [size_is][size_is][out] */ unsigned char **response) +{ + + CLIENT_CALL_RETURN _RetVal; + + _RetVal = NdrClientCall3( + ( PMIDL_STUBLESS_PROXY_INFO )&KMSServer_ProxyInfo, + 0, + 0, + IDL_handle, + requestSize, + request, + responseSize, + response); + return ( int )_RetVal.Simple; + +} + + +#if !defined(__RPC_WIN64__) +#error Invalid build platform for this stub. +#endif + +#if !MULTI_CALL_BINARY +/*static*/ const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString = + { + 0, + { + + /* Procedure RequestActivation */ + + 0x0, /* 0 */ + 0x48, /* Old Flags: */ +/* 2 */ NdrFcLong( 0x0 ), /* 0 */ +/* 6 */ NdrFcShort( 0x0 ), /* 0 */ +/* 8 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */ +/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ + 0x0, /* 0 */ +/* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ +/* 14 */ NdrFcShort( 0x8 ), /* 8 */ +/* 16 */ NdrFcShort( 0x24 ), /* 36 */ +/* 18 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ + 0x5, /* 5 */ +/* 20 */ 0xa, /* 10 */ + 0x7, /* Ext Flags: new corr desc, clt corr check, srv corr check, */ +/* 22 */ NdrFcShort( 0x1 ), /* 1 */ +/* 24 */ NdrFcShort( 0x1 ), /* 1 */ +/* 26 */ NdrFcShort( 0x0 ), /* 0 */ +/* 28 */ NdrFcShort( 0x0 ), /* 0 */ + + /* Parameter IDL_handle */ + +/* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ +/* 34 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter requestSize */ + +/* 36 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ +/* 38 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ +/* 40 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ + + /* Parameter request */ + +/* 42 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 44 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ +/* 46 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter responseSize */ + +/* 48 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */ +/* 50 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */ +/* 52 */ NdrFcShort( 0x16 ), /* Type Offset=22 */ + + /* Parameter response */ + +/* 54 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 56 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */ +/* 58 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + 0x0 + } + }; + +/*static*/ const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString = + { + 0, + { + NdrFcShort( 0x0 ), /* 0 */ +/* 2 */ + 0x11, 0x0, /* FC_RP */ +/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ +/* 6 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 8 */ NdrFcShort( 0x1 ), /* 1 */ +/* 10 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x0, /* */ +/* 12 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ +/* 14 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 16 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ +/* 18 */ + 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */ +/* 20 */ 0x8, /* FC_LONG */ + 0x5c, /* FC_PAD */ +/* 22 */ + 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */ +/* 24 */ NdrFcShort( 0x2 ), /* Offset= 2 (26) */ +/* 26 */ + 0x12, 0x0, /* FC_UP */ +/* 28 */ NdrFcShort( 0x2 ), /* Offset= 2 (30) */ +/* 30 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 32 */ NdrFcShort( 0x1 ), /* 1 */ +/* 34 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x54, /* FC_DEREFERENCE */ +/* 36 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ +/* 38 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 40 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ + + 0x0 + } + }; + +#endif //!MULTI_CALL_BINARY + +static const unsigned short KMSServer_FormatStringOffsetTable[] = + { + 0 + }; + + + +#endif /* defined(_M_AMD64)*/ + + + +/* this ALWAYS GENERATED file contains the RPC client stubs */ + + + /* File created by MIDL compiler version 8.00.0603 */ +/* at Fri Feb 20 04:17:07 2015 + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.00.0603 + protocol : all , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#if defined(_M_AMD64) + + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +#if !defined(__RPC_WIN64__) +#error Invalid build platform for this stub. +#endif + + +#include "ndr64types.h" +#include "pshpack8.h" + +typedef +struct +{ + NDR64_FORMAT_UINT32 frag1; + struct _NDR64_EXPR_OPERATOR frag2; + struct _NDR64_EXPR_VAR frag3; +} +__midl_frag13_t; + +extern const __midl_frag13_t __midl_frag13; + +typedef +struct +{ + struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; + struct _NDR64_ARRAY_ELEMENT_INFO frag2; +} +__midl_frag12_t; +extern const __midl_frag12_t __midl_frag12; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag11_t; +extern const __midl_frag11_t __midl_frag11; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag10_t; +extern const __midl_frag10_t __midl_frag10; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag8_t; +extern const __midl_frag8_t __midl_frag8; + +typedef +NDR64_FORMAT_CHAR +__midl_frag7_t; +extern const __midl_frag7_t __midl_frag7; + +typedef +struct +{ + NDR64_FORMAT_UINT32 frag1; + struct _NDR64_EXPR_VAR frag2; +} +__midl_frag6_t; +extern const __midl_frag6_t __midl_frag6; + +typedef +struct +{ + struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; + struct _NDR64_ARRAY_ELEMENT_INFO frag2; +} +__midl_frag5_t; +extern const __midl_frag5_t __midl_frag5; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag4_t; +extern const __midl_frag4_t __midl_frag4; + +typedef +NDR64_FORMAT_CHAR +__midl_frag3_t; +extern const __midl_frag3_t __midl_frag3; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; + struct _NDR64_PARAM_FORMAT frag7; +} +__midl_frag2_t; +extern const __midl_frag2_t __midl_frag2; + +typedef +NDR64_FORMAT_UINT32 +__midl_frag1_t; +extern const __midl_frag1_t __midl_frag1; + +#if !MULTI_CALL_BINARY +/*static*/ const __midl_frag13_t __midl_frag13 = +{ +/* */ + (NDR64_UINT32) 1 /* 0x1 */, + { + /* struct _NDR64_EXPR_OPERATOR */ + 0x4, /* FC_EXPR_OPER */ + 0x5, /* OP_UNARY_INDIRECTION */ + 0x5, /* FC64_INT32 */ + (NDR64_UINT8) 0 /* 0x0 */ + }, + { + /* struct _NDR64_EXPR_VAR */ + 0x3, /* FC_EXPR_VAR */ + 0x7, /* FC64_INT64 */ + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT32) 24 /* 0x18 */ /* Offset */ + } +}; + +/*static*/ const __midl_frag12_t __midl_frag12 = +{ +/* *char */ + { + /* *char */ + 0x41, /* FC64_CONF_ARRAY */ + (NDR64_UINT8) 0 /* 0x0 */, + { + /* *char */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag13 + }, + { + /* struct _NDR64_ARRAY_ELEMENT_INFO */ + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag7 + } +}; + +/*static*/ const __midl_frag11_t __midl_frag11 = +{ +/* *char */ + 0x21, /* FC64_UP */ + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag12 +}; + +/*static*/ const __midl_frag10_t __midl_frag10 = +{ +/* **char */ + 0x20, /* FC64_RP */ + (NDR64_UINT8) 20 /* 0x14 */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag11 +}; + +/*static*/ const __midl_frag8_t __midl_frag8 = +{ +/* *int */ + 0x20, /* FC64_RP */ + (NDR64_UINT8) 12 /* 0xc */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag3 +}; + +/*static*/ const __midl_frag7_t __midl_frag7 = +0x10 /* FC64_CHAR */; + +/*static*/ const __midl_frag6_t __midl_frag6 = +{ +/* */ + (NDR64_UINT32) 1 /* 0x1 */, + { + /* struct _NDR64_EXPR_VAR */ + 0x3, /* FC_EXPR_VAR */ + 0x5, /* FC64_INT32 */ + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT32) 8 /* 0x8 */ /* Offset */ + } +}; + +/*static*/ const __midl_frag5_t __midl_frag5 = +{ +/* *char */ + { + /* *char */ + 0x41, /* FC64_CONF_ARRAY */ + (NDR64_UINT8) 0 /* 0x0 */, + { + /* *char */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag6 + }, + { + /* struct _NDR64_ARRAY_ELEMENT_INFO */ + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag7 + } +}; + +/*static*/ const __midl_frag4_t __midl_frag4 = +{ +/* *char */ + 0x20, /* FC64_RP */ + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag5 +}; + +/*static*/ const __midl_frag3_t __midl_frag3 = +0x5 /* FC64_INT32 */; + +/*static*/ const __midl_frag2_t __midl_frag2 = +{ +/* RequestActivation */ + { + /* RequestActivation */ /* procedure RequestActivation */ + (NDR64_UINT32) 23986240 /* 0x16e0040 */, /* explicit handle */ /* IsIntrepreted, ServerMustSize, ClientMustSize, HasReturn, ServerCorrelation, ClientCorrelation, HasExtensions */ + (NDR64_UINT32) 48 /* 0x30 */ , /* Stack size */ + (NDR64_UINT32) 8 /* 0x8 */, + (NDR64_UINT32) 40 /* 0x28 */, + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT16) 5 /* 0x5 */, + (NDR64_UINT16) 8 /* 0x8 */ + }, + { + /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ + { + /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ + 0x72, /* FC64_BIND_PRIMITIVE */ + (NDR64_UINT8) 0 /* 0x0 */, + 0 /* 0x0 */, /* Stack offset */ + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT8) 0 /* 0x0 */ + }, + (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ + }, + { + /* requestSize */ /* parameter requestSize */ + &__midl_frag3, + { + /* requestSize */ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 0 + }, /* [in], Basetype, ByValue */ + (NDR64_UINT16) 0 /* 0x0 */, + 8 /* 0x8 */, /* Stack offset */ + }, + { + /* request */ /* parameter request */ + &__midl_frag5, + { + /* request */ + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 0 + }, /* MustSize, MustFree, [in], SimpleRef */ + (NDR64_UINT16) 0 /* 0x0 */, + 16 /* 0x10 */, /* Stack offset */ + }, + { + /* responseSize */ /* parameter responseSize */ + &__midl_frag3, + { + /* responseSize */ + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 1 + }, /* [out], Basetype, SimpleRef, UseCache */ + (NDR64_UINT16) 0 /* 0x0 */, + 24 /* 0x18 */, /* Stack offset */ + }, + { + /* response */ /* parameter response */ + &__midl_frag10, + { + /* response */ + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 1 + }, /* MustSize, MustFree, [out], UseCache */ + (NDR64_UINT16) 0 /* 0x0 */, + 32 /* 0x20 */, /* Stack offset */ + }, + { + /* int */ /* parameter int */ + &__midl_frag3, + { + /* int */ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 0 + }, /* [out], IsReturn, Basetype, ByValue */ + (NDR64_UINT16) 0 /* 0x0 */, + 40 /* 0x28 */, /* Stack offset */ + } +}; + +/*static*/ const __midl_frag1_t __midl_frag1 = +(NDR64_UINT32) 0 /* 0x0 */; + +#endif // !MULTI_CALL_BINARY + +#include "poppack.h" + + +static const FormatInfoRef KMSServer_Ndr64ProcTable[] = + { + &__midl_frag2 + }; + +//typedef void *__RPC_USER MIDL_user_allocate_t(SIZE_T) +typedef void *(__RPC_API *midl_allocate_t)(size_t); + +#if !MULTI_CALL_BINARY +/*static*/ const MIDL_STUB_DESC KMSServer_StubDesc = + { + (void *)& KMSServer___RpcClientInterface, + (midl_allocate_t)MIDL_user_allocate, + MIDL_user_free, + &KMSServer__MIDL_AutoBindHandle, + 0, + 0, + 0, + 0, + KMSServer__MIDL_TypeFormatString.Format, + 1, /* -error bounds_check flag */ + 0x60000, /* Ndr library version */ + 0, + 0x800025b, /* MIDL Version 8.0.603 */ + 0, + 0, + 0, /* notify & notify_flag routine table */ + 0x2000001, /* MIDL flag */ + 0, /* cs routines */ + (void *)& KMSServer_ProxyInfo, /* proxy/server info */ + 0 + }; +#endif // !MULTI_CALL_BINARY + +static const MIDL_SYNTAX_INFO KMSServer_SyntaxInfo [ 2 ] = + { + { + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + 0, + KMSServer__MIDL_ProcFormatString.Format, + KMSServer_FormatStringOffsetTable, + KMSServer__MIDL_TypeFormatString.Format, + 0, + 0, + 0 + } + ,{ + {{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}, + 0, + 0 , + (unsigned short *) KMSServer_Ndr64ProcTable, + 0, + 0, + 0, + 0 + } + }; + +/*static*/ const MIDL_STUBLESS_PROXY_INFO KMSServer_ProxyInfo = + { + &KMSServer_StubDesc, + KMSServer__MIDL_ProcFormatString.Format, + KMSServer_FormatStringOffsetTable, + (RPC_SYNTAX_IDENTIFIER*)&_RpcTransferSyntax, + 2, + (MIDL_SYNTAX_INFO*)KMSServer_SyntaxInfo + + }; + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif + + +#endif /* defined(_M_AMD64)*/ + diff --git a/KMSServer_h.h b/KMSServer_h.h new file mode 100644 index 00000000..946619d3 --- /dev/null +++ b/KMSServer_h.h @@ -0,0 +1,80 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + +/* Modified by Hotbird64 for use with MingW and gcc */ + + + /* File created by MIDL compiler version 8.00.0595 */ +/* at Thu Oct 18 15:24:14 2012 + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0595 + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +//#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __KMSServer_h_h__ +#define __KMSServer_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifdef __cplusplus +extern "C"{ +#endif + + +#ifndef __KMSServer_INTERFACE_DEFINED__ +#define __KMSServer_INTERFACE_DEFINED__ + +/* interface KMSServer */ +/* [version][uuid] */ + +int RequestActivation( + /* [in] */ handle_t IDL_handle, + /* [in] */ int requestSize, + /* [size_is][in] */ unsigned char *request, + /* [out] */ int *responseSize, + /* [size_is][size_is][out] */ unsigned char **response); + + + +extern RPC_IF_HANDLE KMSServer_v1_0_c_ifspec; +extern RPC_IF_HANDLE KMSServer_v1_0_s_ifspec; +#endif /* __KMSServer_INTERFACE_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/KMSServer_s2_mingw_gcc.c b/KMSServer_s2_mingw_gcc.c new file mode 100644 index 00000000..492c6ba0 --- /dev/null +++ b/KMSServer_s2_mingw_gcc.c @@ -0,0 +1,282 @@ + + +/* this ALWAYS GENERATED file contains the RPC server stubs */ + +/* WARNING! manually edited by Hotbird64 to work with MingW */ + + /* File created by MIDL compiler version 8.00.0595 */ +/* at Thu Oct 18 15:24:14 2012 + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0595 + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#if !defined(_M_IA64) && !defined(_M_AMD64) && !defined(_ARM_) + + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif + +#pragma warning( disable: 4211 ) /* redefine extern to static */ +#pragma warning( disable: 4232 ) /* dllimport identity*/ +#pragma warning( disable: 4024 ) /* array to pointer mapping*/ +#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */ + +#pragma optimize("", off ) + +#include +#include "KMSServer_h.h" + +#define TYPE_FORMAT_STRING_SIZE 43 +#define PROC_FORMAT_STRING_SIZE 59 +#define EXPR_FORMAT_STRING_SIZE 1 +#define TRANSMIT_AS_TABLE_SIZE 0 +#define WIRE_MARSHAL_TABLE_SIZE 0 + +typedef struct _KMSServer_MIDL_TYPE_FORMAT_STRING + { + short Pad; + unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_TYPE_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_PROC_FORMAT_STRING + { + short Pad; + unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_PROC_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_EXPR_FORMAT_STRING + { + long Pad; + unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_EXPR_FORMAT_STRING; + + +static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = +{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; + +extern const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString; +extern const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString; +extern const KMSServer_MIDL_EXPR_FORMAT_STRING KMSServer__MIDL_ExprFormatString; + +/* Standard interface: KMSServer, ver. 1.0, + GUID={0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}} */ + + +extern const MIDL_SERVER_INFO KMSServer_ServerInfo; + +extern const RPC_DISPATCH_TABLE KMSServer_v1_0_DispatchTable; + + int ProcessActivationRequest( + /* [in] */ handle_t IDL_handle, + /* [in] */ int requestSize, + /* [size_is][in] */ unsigned char *request, + /* [out] */ int *responseSize, + /* [size_is][size_is][out] */ unsigned char **response); + + static const RPC_SERVER_INTERFACE KMSServer___RpcServerInterface = + { + sizeof(RPC_SERVER_INTERFACE), + {{0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}},{1,0}}, + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + (RPC_DISPATCH_TABLE*)&KMSServer_v1_0_DispatchTable, + 0, + 0, + 0, + &KMSServer_ServerInfo, + 0x04000000 + }; +RPC_IF_HANDLE KMSServer_v1_0_s_ifspec = (RPC_IF_HANDLE)& KMSServer___RpcServerInterface; + +extern const MIDL_STUB_DESC KMSServer_StubDesc; + + +#if !defined(__RPC_WIN32__) +#error Invalid build platform for this stub. +#endif + +#if !(TARGET_IS_NT50_OR_LATER) +#error You need Windows 2000 or later to run this stub because it uses these features: +#error /robust command line switch. +#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems. +#error This app will fail with the RPC_X_WRONG_STUB_VERSION error. +#endif + +const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString = + { + 0, + { + + /* Procedure RequestActivation */ + + 0x0, /* 0 */ + 0x48, /* Old Flags: */ +/* 2 */ NdrFcLong( 0x0 ), /* 0 */ +/* 6 */ NdrFcShort( 0x0 ), /* 0 */ +/* 8 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */ +/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ + 0x0, /* 0 */ +/* 12 */ NdrFcShort( 0x0 ), /* x86 Stack size/offset = 0 */ +/* 14 */ NdrFcShort( 0x8 ), /* 8 */ +/* 16 */ NdrFcShort( 0x24 ), /* 36 */ +/* 18 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ + 0x5, /* 5 */ +/* 20 */ 0x8, /* 8 */ + 0x7, /* Ext Flags: new corr desc, clt corr check, srv corr check, */ +/* 22 */ NdrFcShort( 0x1 ), /* 1 */ +/* 24 */ NdrFcShort( 0x1 ), /* 1 */ +/* 26 */ NdrFcShort( 0x0 ), /* 0 */ + + /* Parameter IDL_handle */ + +/* 28 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 30 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 32 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter requestSize */ + +/* 34 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ +/* 36 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */ +/* 38 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ + + /* Parameter request */ + +/* 40 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 42 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 44 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter responseSize */ + +/* 46 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */ +/* 48 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */ +/* 50 */ NdrFcShort( 0x16 ), /* Type Offset=22 */ + + /* Parameter response */ + +/* 52 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 54 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */ +/* 56 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + 0x0 + } + }; + +const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString = + { + 0, + { + NdrFcShort( 0x0 ), /* 0 */ +/* 2 */ + 0x11, 0x0, /* FC_RP */ +/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ +/* 6 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 8 */ NdrFcShort( 0x1 ), /* 1 */ +/* 10 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x0, /* */ +/* 12 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */ +/* 14 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 16 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ +/* 18 */ + 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */ +/* 20 */ 0x8, /* FC_LONG */ + 0x5c, /* FC_PAD */ +/* 22 */ + 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */ +/* 24 */ NdrFcShort( 0x2 ), /* Offset= 2 (26) */ +/* 26 */ + 0x12, 0x0, /* FC_UP */ +/* 28 */ NdrFcShort( 0x2 ), /* Offset= 2 (30) */ +/* 30 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 32 */ NdrFcShort( 0x1 ), /* 1 */ +/* 34 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x54, /* FC_DEREFERENCE */ +/* 36 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */ +/* 38 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 40 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ + + 0x0 + } + }; + +static const unsigned short KMSServer_FormatStringOffsetTable[] = + { + 0 + }; + +typedef void *(__RPC_API *midl_allocate_t)(size_t); + +const MIDL_STUB_DESC KMSServer_StubDesc = + { + (void *)& KMSServer___RpcServerInterface, + (midl_allocate_t)MIDL_user_allocate, + MIDL_user_free, + 0, + 0, + 0, + 0, + 0, + KMSServer__MIDL_TypeFormatString.Format, + 1, /* -error bounds_check flag */ + 0x50002, /* Ndr library version */ + 0, + 0x8000253, /* MIDL Version 8.0.595 */ + 0, + 0, + 0, /* notify & notify_flag routine table */ + 0x1, /* MIDL flag */ + 0, /* cs routines */ + 0, /* proxy/server info */ + 0 + }; + +static const RPC_DISPATCH_FUNCTION KMSServer_table[] = + { + NdrServerCall2, + 0 + }; +const RPC_DISPATCH_TABLE KMSServer_v1_0_DispatchTable = + { + 1, + (RPC_DISPATCH_FUNCTION*)KMSServer_table + }; + +static const SERVER_ROUTINE KMSServer_ServerRoutineTable[] = + { + (SERVER_ROUTINE)ProcessActivationRequest + }; + +const MIDL_SERVER_INFO KMSServer_ServerInfo = + { + &KMSServer_StubDesc, + KMSServer_ServerRoutineTable, + KMSServer__MIDL_ProcFormatString.Format, + KMSServer_FormatStringOffsetTable, + 0, + 0, + 0, + 0}; +#pragma optimize("", on ) +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif + + +#endif /* !defined(_M_IA64) && !defined(_M_AMD64) && !defined(_ARM_) */ + diff --git a/KMSServer_s2_x64_mingw_gcc.c b/KMSServer_s2_x64_mingw_gcc.c new file mode 100644 index 00000000..9cf4baee --- /dev/null +++ b/KMSServer_s2_x64_mingw_gcc.c @@ -0,0 +1,730 @@ + + +/* this ALWAYS GENERATED file contains the RPC server stubs */ + + + /* File created by MIDL compiler version 8.00.0603 */ +/* at Fri Feb 20 04:17:07 2015 + * Modified by Hotbird64 to work with gcc and MingW-w64 + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.00.0603 + protocol : all , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#if defined(_M_AMD64) + +int ProcessActivationRequest( + /* [in] */ handle_t IDL_handle, + /* [in] */ int requestSize, + /* [size_is][in] */ unsigned char *request, + /* [out] */ int *responseSize, + /* [size_is][size_is][out] */ unsigned char **response); + + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif + +#pragma warning( disable: 4211 ) /* redefine extern to static */ +#pragma warning( disable: 4232 ) /* dllimport identity*/ +#pragma warning( disable: 4024 ) /* array to pointer mapping*/ + +#include +#include "KMSServer_h.h" + +#define TYPE_FORMAT_STRING_SIZE 43 +#define PROC_FORMAT_STRING_SIZE 61 +#define EXPR_FORMAT_STRING_SIZE 1 +#define TRANSMIT_AS_TABLE_SIZE 0 +#define WIRE_MARSHAL_TABLE_SIZE 0 + +typedef struct _KMSServer_MIDL_TYPE_FORMAT_STRING + { + short Pad; + unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_TYPE_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_PROC_FORMAT_STRING + { + short Pad; + unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_PROC_FORMAT_STRING; + +typedef struct _KMSServer_MIDL_EXPR_FORMAT_STRING + { + long Pad; + unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; + } KMSServer_MIDL_EXPR_FORMAT_STRING; + + +static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = +{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; + +static const RPC_SYNTAX_IDENTIFIER _NDR64_RpcTransferSyntax = +{{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}; + + +extern const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString; +extern const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString; +extern const KMSServer_MIDL_EXPR_FORMAT_STRING KMSServer__MIDL_ExprFormatString; + +/* Standard interface: KMSServer, ver. 1.0, + GUID={0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}} */ + + +extern const MIDL_SERVER_INFO KMSServer_ServerInfo; + +extern const RPC_DISPATCH_TABLE KMSServer_v1_0_DispatchTable; + +static const RPC_SERVER_INTERFACE KMSServer___RpcServerInterface = + { + sizeof(RPC_SERVER_INTERFACE), + {{0x51C82175,0x844E,0x4750,{0xB0,0xD8,0xEC,0x25,0x55,0x55,0xBC,0x06}},{1,0}}, + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + (RPC_DISPATCH_TABLE*)&KMSServer_v1_0_DispatchTable, + 0, + 0, + 0, + &KMSServer_ServerInfo, + 0x06000000 + }; +RPC_IF_HANDLE KMSServer_v1_0_s_ifspec = (RPC_IF_HANDLE)& KMSServer___RpcServerInterface; + +extern const MIDL_STUB_DESC KMSServer_StubDesc; + + +#if !defined(__RPC_WIN64__) +#error Invalid build platform for this stub. +#endif + +/*static*/ const KMSServer_MIDL_PROC_FORMAT_STRING KMSServer__MIDL_ProcFormatString = + { + 0, + { + + /* Procedure RequestActivation */ + + 0x0, /* 0 */ + 0x48, /* Old Flags: */ +/* 2 */ NdrFcLong( 0x0 ), /* 0 */ +/* 6 */ NdrFcShort( 0x0 ), /* 0 */ +/* 8 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */ +/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ + 0x0, /* 0 */ +/* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ +/* 14 */ NdrFcShort( 0x8 ), /* 8 */ +/* 16 */ NdrFcShort( 0x24 ), /* 36 */ +/* 18 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */ + 0x5, /* 5 */ +/* 20 */ 0xa, /* 10 */ + 0x7, /* Ext Flags: new corr desc, clt corr check, srv corr check, */ +/* 22 */ NdrFcShort( 0x1 ), /* 1 */ +/* 24 */ NdrFcShort( 0x1 ), /* 1 */ +/* 26 */ NdrFcShort( 0x0 ), /* 0 */ +/* 28 */ NdrFcShort( 0x0 ), /* 0 */ + + /* Parameter IDL_handle */ + +/* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ +/* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ +/* 34 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter requestSize */ + +/* 36 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */ +/* 38 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ +/* 40 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ + + /* Parameter request */ + +/* 42 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */ +/* 44 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ +/* 46 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + /* Parameter responseSize */ + +/* 48 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */ +/* 50 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */ +/* 52 */ NdrFcShort( 0x16 ), /* Type Offset=22 */ + + /* Parameter response */ + +/* 54 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */ +/* 56 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */ +/* 58 */ 0x8, /* FC_LONG */ + 0x0, /* 0 */ + + 0x0 + } + }; + +/*static*/ const KMSServer_MIDL_TYPE_FORMAT_STRING KMSServer__MIDL_TypeFormatString = + { + 0, + { + NdrFcShort( 0x0 ), /* 0 */ +/* 2 */ + 0x11, 0x0, /* FC_RP */ +/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ +/* 6 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 8 */ NdrFcShort( 0x1 ), /* 1 */ +/* 10 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x0, /* */ +/* 12 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ +/* 14 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 16 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ +/* 18 */ + 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */ +/* 20 */ 0x8, /* FC_LONG */ + 0x5c, /* FC_PAD */ +/* 22 */ + 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */ +/* 24 */ NdrFcShort( 0x2 ), /* Offset= 2 (26) */ +/* 26 */ + 0x12, 0x0, /* FC_UP */ +/* 28 */ NdrFcShort( 0x2 ), /* Offset= 2 (30) */ +/* 30 */ + 0x1b, /* FC_CARRAY */ + 0x0, /* 0 */ +/* 32 */ NdrFcShort( 0x1 ), /* 1 */ +/* 34 */ 0x28, /* Corr desc: parameter, FC_LONG */ + 0x54, /* FC_DEREFERENCE */ +/* 36 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ +/* 38 */ NdrFcShort( 0x1 ), /* Corr flags: early, */ +/* 40 */ 0x2, /* FC_CHAR */ + 0x5b, /* FC_END */ + + 0x0 + } + }; + +static const unsigned short KMSServer_FormatStringOffsetTable[] = + { + 0 + }; + + +static const RPC_DISPATCH_FUNCTION KMSServer_table[] = + { + NdrServerCall2, + 0 + }; +/*static*/ const RPC_DISPATCH_TABLE KMSServer_v1_0_DispatchTable = + { + 1, + (RPC_DISPATCH_FUNCTION*)KMSServer_table + }; + + +#endif /* defined(_M_AMD64)*/ + + + +/* this ALWAYS GENERATED file contains the RPC server stubs */ + + + /* File created by MIDL compiler version 8.00.0603 */ +/* at Fri Feb 20 04:17:07 2015 + */ +/* Compiler settings for KMSServer.idl: + Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.00.0603 + protocol : all , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#if defined(_M_AMD64) + + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +#if !defined(__RPC_WIN64__) +#error Invalid build platform for this stub. +#endif + + +#include "ndr64types.h" +#include "pshpack8.h" + + +typedef +struct +{ + NDR64_FORMAT_UINT32 frag1; + struct _NDR64_EXPR_OPERATOR frag2; + struct _NDR64_EXPR_VAR frag3; +} +__midl_frag13_t; +extern const __midl_frag13_t __midl_frag13; + +typedef +struct +{ + struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; + struct _NDR64_ARRAY_ELEMENT_INFO frag2; +} +__midl_frag12_t; +extern const __midl_frag12_t __midl_frag12; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag11_t; +extern const __midl_frag11_t __midl_frag11; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag10_t; +extern const __midl_frag10_t __midl_frag10; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag8_t; +extern const __midl_frag8_t __midl_frag8; + +typedef +NDR64_FORMAT_CHAR +__midl_frag7_t; +extern const __midl_frag7_t __midl_frag7; + +typedef +struct +{ + NDR64_FORMAT_UINT32 frag1; + struct _NDR64_EXPR_VAR frag2; +} +__midl_frag6_t; +extern const __midl_frag6_t __midl_frag6; + +typedef +struct +{ + struct _NDR64_CONF_ARRAY_HEADER_FORMAT frag1; + struct _NDR64_ARRAY_ELEMENT_INFO frag2; +} +__midl_frag5_t; +extern const __midl_frag5_t __midl_frag5; + +typedef +struct _NDR64_POINTER_FORMAT +__midl_frag4_t; +extern const __midl_frag4_t __midl_frag4; + +typedef +NDR64_FORMAT_CHAR +__midl_frag3_t; +extern const __midl_frag3_t __midl_frag3; + +typedef +struct +{ + struct _NDR64_PROC_FORMAT frag1; + struct _NDR64_BIND_AND_NOTIFY_EXTENSION frag2; + struct _NDR64_PARAM_FORMAT frag3; + struct _NDR64_PARAM_FORMAT frag4; + struct _NDR64_PARAM_FORMAT frag5; + struct _NDR64_PARAM_FORMAT frag6; + struct _NDR64_PARAM_FORMAT frag7; +} +__midl_frag2_t; +extern const __midl_frag2_t __midl_frag2; + +typedef +NDR64_FORMAT_UINT32 +__midl_frag1_t; +extern const __midl_frag1_t __midl_frag1; + +/*static*/ const __midl_frag13_t __midl_frag13 = +{ +/* */ + (NDR64_UINT32) 1 /* 0x1 */, + { + /* struct _NDR64_EXPR_OPERATOR */ + 0x4, /* FC_EXPR_OPER */ + 0x5, /* OP_UNARY_INDIRECTION */ + 0x5, /* FC64_INT32 */ + (NDR64_UINT8) 0 /* 0x0 */ + }, + { + /* struct _NDR64_EXPR_VAR */ + 0x3, /* FC_EXPR_VAR */ + 0x7, /* FC64_INT64 */ + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT32) 24 /* 0x18 */ /* Offset */ + } +}; + +/*static*/ const __midl_frag12_t __midl_frag12 = +{ +/* *char */ + { + /* *char */ + 0x41, /* FC64_CONF_ARRAY */ + (NDR64_UINT8) 0 /* 0x0 */, + { + /* *char */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag13 + }, + { + /* struct _NDR64_ARRAY_ELEMENT_INFO */ + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag7 + } +}; + +/*static*/ const __midl_frag11_t __midl_frag11 = +{ +/* *char */ + 0x21, /* FC64_UP */ + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag12 +}; + +/*static*/ const __midl_frag10_t __midl_frag10 = +{ +/* **char */ + 0x20, /* FC64_RP */ + (NDR64_UINT8) 20 /* 0x14 */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag11 +}; + +/*static*/ const __midl_frag8_t __midl_frag8 = +{ +/* *int */ + 0x20, /* FC64_RP */ + (NDR64_UINT8) 12 /* 0xc */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag3 +}; + +/*static*/ const __midl_frag7_t __midl_frag7 = +0x10 /* FC64_CHAR */; + +/*static*/ const __midl_frag6_t __midl_frag6 = +{ +/* */ + (NDR64_UINT32) 1 /* 0x1 */, + { + /* struct _NDR64_EXPR_VAR */ + 0x3, /* FC_EXPR_VAR */ + 0x5, /* FC64_INT32 */ + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT32) 8 /* 0x8 */ /* Offset */ + } +}; + +/*static*/ const __midl_frag5_t __midl_frag5 = +{ +/* *char */ + { + /* *char */ + 0x41, /* FC64_CONF_ARRAY */ + (NDR64_UINT8) 0 /* 0x0 */, + { + /* *char */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }, + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag6 + }, + { + /* struct _NDR64_ARRAY_ELEMENT_INFO */ + (NDR64_UINT32) 1 /* 0x1 */, + &__midl_frag7 + } +}; + +/*static*/ const __midl_frag4_t __midl_frag4 = +{ +/* *char */ + 0x20, /* FC64_RP */ + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT16) 0 /* 0x0 */, + &__midl_frag5 +}; + +/*static*/ const __midl_frag3_t __midl_frag3 = +0x5 /* FC64_INT32 */; + +/*static*/ const __midl_frag2_t __midl_frag2 = +{ +/* RequestActivation */ + { + /* RequestActivation */ /* procedure RequestActivation */ + (NDR64_UINT32) 23986240 /* 0x16e0040 */, /* explicit handle */ /* IsIntrepreted, ServerMustSize, ClientMustSize, HasReturn, ServerCorrelation, ClientCorrelation, HasExtensions */ + (NDR64_UINT32) 48 /* 0x30 */ , /* Stack size */ + (NDR64_UINT32) 8 /* 0x8 */, + (NDR64_UINT32) 40 /* 0x28 */, + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT16) 0 /* 0x0 */, + (NDR64_UINT16) 5 /* 0x5 */, + (NDR64_UINT16) 8 /* 0x8 */ + }, + { + /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ + { + /* struct _NDR64_BIND_AND_NOTIFY_EXTENSION */ + 0x72, /* FC64_BIND_PRIMITIVE */ + (NDR64_UINT8) 0 /* 0x0 */, + 0 /* 0x0 */, /* Stack offset */ + (NDR64_UINT8) 0 /* 0x0 */, + (NDR64_UINT8) 0 /* 0x0 */ + }, + (NDR64_UINT16) 0 /* 0x0 */ /* Notify index */ + }, + { + /* requestSize */ /* parameter requestSize */ + &__midl_frag3, + { + /* requestSize */ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 0 + }, /* [in], Basetype, ByValue */ + (NDR64_UINT16) 0 /* 0x0 */, + 8 /* 0x8 */, /* Stack offset */ + }, + { + /* request */ /* parameter request */ + &__midl_frag5, + { + /* request */ + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 0 + }, /* MustSize, MustFree, [in], SimpleRef */ + (NDR64_UINT16) 0 /* 0x0 */, + 16 /* 0x10 */, /* Stack offset */ + }, + { + /* responseSize */ /* parameter responseSize */ + &__midl_frag3, + { + /* responseSize */ + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 1 + }, /* [out], Basetype, SimpleRef, UseCache */ + (NDR64_UINT16) 0 /* 0x0 */, + 24 /* 0x18 */, /* Stack offset */ + }, + { + /* response */ /* parameter response */ + &__midl_frag10, + { + /* response */ + 1, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 1 + }, /* MustSize, MustFree, [out], UseCache */ + (NDR64_UINT16) 0 /* 0x0 */, + 32 /* 0x20 */, /* Stack offset */ + }, + { + /* int */ /* parameter int */ + &__midl_frag3, + { + /* int */ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + (NDR64_UINT16) 0 /* 0x0 */, + 0 + }, /* [out], IsReturn, Basetype, ByValue */ + (NDR64_UINT16) 0 /* 0x0 */, + 40 /* 0x28 */, /* Stack offset */ + } +}; + +/*static*/ const __midl_frag1_t __midl_frag1 = +(NDR64_UINT32) 0 /* 0x0 */; + + +#include "poppack.h" + + +static const FormatInfoRef KMSServer_Ndr64ProcTable[] = + { + &__midl_frag2 + }; + +//typedef void *__RPC_USER MIDL_user_allocate_t(SIZE_T); +typedef void *(__RPC_API *midl_allocate_t)(size_t); + +/*static*/ const MIDL_STUB_DESC KMSServer_StubDesc = + { + (void *)& KMSServer___RpcServerInterface, + (midl_allocate_t)MIDL_user_allocate, + MIDL_user_free, + 0, + 0, + 0, + 0, + 0, + KMSServer__MIDL_TypeFormatString.Format, + 1, /* -error bounds_check flag */ + 0x60000, /* Ndr library version */ + 0, + 0x800025b, /* MIDL Version 8.0.603 */ + 0, + 0, + 0, /* notify & notify_flag routine table */ + 0x2000001, /* MIDL flag */ + 0, /* cs routines */ + (void *)& KMSServer_ServerInfo, /* proxy/server info */ + 0 + }; + +static const RPC_DISPATCH_FUNCTION KMSServer_NDR64__table[] = + { + NdrServerCallAll, + 0 + }; +static const RPC_DISPATCH_TABLE KMSServer_NDR64__v1_0_DispatchTable = + { + 1, + (RPC_DISPATCH_FUNCTION*)KMSServer_NDR64__table + }; + +static const MIDL_SYNTAX_INFO KMSServer_SyntaxInfo [ 2 ] = + { + { + {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, + (RPC_DISPATCH_TABLE*)&KMSServer_v1_0_DispatchTable, + KMSServer__MIDL_ProcFormatString.Format, + KMSServer_FormatStringOffsetTable, + KMSServer__MIDL_TypeFormatString.Format, + 0, + 0, + 0 + } + ,{ + {{0x71710533,0xbeba,0x4937,{0x83,0x19,0xb5,0xdb,0xef,0x9c,0xcc,0x36}},{1,0}}, + (RPC_DISPATCH_TABLE*)&KMSServer_NDR64__v1_0_DispatchTable, + 0 , + (unsigned short *) KMSServer_Ndr64ProcTable, + 0, + 0, + 0, + 0 + } + }; + + +static const SERVER_ROUTINE KMSServer_ServerRoutineTable[] = + { + (SERVER_ROUTINE)ProcessActivationRequest + }; + +/*static*/ const MIDL_SERVER_INFO KMSServer_ServerInfo = + { + &KMSServer_StubDesc, + KMSServer_ServerRoutineTable, + KMSServer__MIDL_ProcFormatString.Format, + (unsigned short *) KMSServer_FormatStringOffsetTable, + 0, + (RPC_SYNTAX_IDENTIFIER*)&_NDR64_RpcTransferSyntax, + 2, + (MIDL_SYNTAX_INFO*)KMSServer_SyntaxInfo + }; +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif + + +#endif /* defined(_M_AMD64)*/ + diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..682542e3 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +# Let BSD make switch to GNU make +all ${.TARGETS}: + @echo "================================================================" + @echo " PLEASE USE THE GNU VERSION OF MAKE (gmake) INSTEAD OF ${MAKE} " + @echo "================================================================" + @echo "" + @gmake $@ diff --git a/README b/README new file mode 100644 index 00000000..c1f64b21 --- /dev/null +++ b/README @@ -0,0 +1,13 @@ +To view the documentation cd to the directory containing the distribution +files and type + +man ./vlmcsd.8 + to see documentation for vlmcsd + +man ./vlmcs.1 + to see documentation for vlmcs + +man ./vlmcsd.7 + to see general documentation for kms + +If you don't have man, you may also use the .txt, .html and .pdf files diff --git a/README.compile-and-pre-built-binaries b/README.compile-and-pre-built-binaries new file mode 100644 index 00000000..1f658bd0 --- /dev/null +++ b/README.compile-and-pre-built-binaries @@ -0,0 +1,110 @@ +Compilation and pre-built binaries FAQ +====================================== + +What is the best pre-built binary for my system or device? +---------------------------------------------------------- + +None. The best binary is compiled by yourself using a toolchain that is +optimized for your system or device in every respect. + + +How do I compile my own binary? +------------------------------- + +On a full blown desktop system this is relativly easy. If not already done so, +install a C compiler (e.g. gcc or clang) through your packet manager, e.g. +"sudo apt-get install gcc" (Debian/Ubuntu) or "sudo yum install gcc" +(RedHat/Fedora). + +Then cd to your vlmcsd directory and type "make". vlmcs and vlmcsd will +be built right away for your local system. + +If you installed gcc and it is not the default compiler for your OS or +distribution, you may need to type "make CC=gcc" to explicitly select a +specific C compiller. + + +How do I compile a binary for my embedded device? +------------------------------------------------- + +What you need is cross-compiling toolchain for your device. It consists of a +C compiler, libraries, header files and some tools (called binutils). The +toolchain must match the device in processor architecture, endianess, ABI, +library and header files version, library configuration, ... + +If the endianess or ABI differs or the version of some library between +toolchain and device differs too much, the resulting binary does not run +on your device. + +Once you have a proper toolchain (probably found on the Internet for download), +unpack it to any directory and type + + "make CC=/path/to/toolchain/bindir/c-compiler-binary" + +Building vlmcsd for using a cross-compiling toolchain is as easy as building +vlmcsd for your local machine. The only question is, whether this you have +a toolchain that actually matches your device. + +Whenever you change any parameter of the make command line, you must "clean" +the source directory from intermediate files and output from previous runs +of make. You can do so by typeing "make clean" or force make to behave as if +the directory were clean by adding -B to the command line, e.g. + + "make -B CC=/path/to/toolchain/bindir/c-compiler-binary" + + +I have downloaded several promising toolchains for my device but they all +don't work. Can I create my own toolchain? +------------------------------------------------------------------------- + +You can use tools like buildroot or OpenWRT. Both are able to create toolchains +for many embedded devices. But this is out of the scope of this document. +If you are unable to walk through thousands of configuration options and make +the right choice, you may probably want to try the pre-built binaries. + + +How to choose a pre-built binary? +--------------------------------- + +The directory structure for the binaries is + +binaries ++ ++-- + + + +-- + + + +-- (omitted if CPU or OS does not allow multi-endianess) + + + +-- + + can also be "static". That means no special library is required. +Static binaries are much bigger and need more RAM than dynamic binaries but +are more likely to run on your system. Use a static binary only, if none of +the dynmic binaries run. + +Don't get confused when a binary is named after an OS or a specific device, +e.g. the name contains "openwrt", "tomato" or "Fritzbox". This does not mean +that the binary will run only on that OS or on that device. It is a hint only +where I got or built the toolchain from. + + +How to determine the endianess of my system? +-------------------------------------------- + +- All Intel CPUs (x86, x32, x64) are little-endian only +- Windows is little-endian only even if the CPU support big-endian +- big-endian ARM is extremely uncommon. You can safely assume little-endian +- little-endian PowerPC virtually does not exist since only newer POWER7 + and POWER8 CPUs support it. Always assume big-endian. +- For MIPS both little-endian and big-endian are common. Most Broadcomm and + TI chips run little-endian. Most Atheros and Ikanos CPUs run big-endian. + +Try typing + echo -n I | od -o | awk 'FNR==1{ print substr($2,6,1)}' + +This returns 1 for little-endian systems and 0 for big-endian systems. However +some devices do not have the od command and thus this method won't work. + + + diff --git a/README.openssl b/README.openssl new file mode 100644 index 00000000..23998244 --- /dev/null +++ b/README.openssl @@ -0,0 +1,55 @@ +IMPORTANT +========= + +1. Do not use any of the OpenSSL binaries +2. Do not compile OpenSSL binaries yourself + +(except for doing some research into the deep internals of OpenSSL) + +REASONS +======= + +All OpenSSL binaries included are highly experimental and are likely to fail +in many cases. To get some real benefit from OpenSSL (or PolarSSL) it should +handle all crypting/hashing. + +However this is not possible because Microsoft has slightly altered AES +encryption in KMSv6 and uses a non-AES variant of the Rijndael CMAC in +KMSv4. OpenSSL is not able to handle this if you use it correctly. + +This means OpenSSL can be used safely only for SHA256 and HMAC SHA256 +calculations used in KMSv5 and KMSv6 but the code size benefit is only +100 to 300 bytes (depending on the architecture). + +To benefit more from OpenSSL (getting it performing the AES stuff) I do +the first phase of AES encryption/decryption (called key expansion) with my +own code. I then poke the expanded key into internal OpenSSL structs to make +it behave in a way not intended by the OpenSSL developers but in a way to +perform non-standard AES crypting as required by KMSv4 and KMSv6. KMSv5 is +the only protocol that could use OpenSSL without hacking the OpenSSL internals. + +That means vlmcsd still needs about 40% of the internal AES code plus some +OpenSSL hacking code to poke the expanded key into OpenSSL. + +The entire OpenSSL hacking does not work in every case because the internal +OpenSSL structs differ depending on the OpenSSL version, OpenSSL configuration +at compile time (whether it is configured to use compiled C code or assembler +code), CPU architecture and CPU features (whether it can perform AES in +hardware). + +SUMMARY +======= + +If you use OpenSSL in a safe way (compile with CRYPTO=openssl), there is not +much benefit from it. The binary may become bigger or smaller and you +definitely need more RAM when you run vlmcsd or vlmcs. + +If you use hacked OpenSSL (compile with CRYPTO=openssl_with_aes or +CRYPTO=openssl_with_aes_soft) you risk malfunction of vlmcs/vlmcsd even if it +performed correctly several times before. + +Both vlmcs and vlmcsd do not have more features when compiled with OpenSSL +support. It may be faster (especially on CPUs with hardware assisted AES) but +uses more memory and may fail or perform unreliably. + + diff --git a/buildroot-configs/arm/little-endian/glibc/armv4-el-glibc2.20-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/glibc/armv4-el-glibc2.20-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..1767da2e --- /dev/null +++ b/buildroot-configs/arm/little-endian/glibc/armv4-el-glibc2.20-gcc4.9.1-binutils2.24.config @@ -0,0 +1,1458 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv4t" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm920t" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_arm920t=y +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +BR2_ARM_SOFT_FLOAT=y +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/glibc/armv4t-el-glibc2.20-gcc4.9.1-binutils2.24-thumb1.config b/buildroot-configs/arm/little-endian/glibc/armv4t-el-glibc2.20-gcc4.9.1-binutils2.24-thumb1.config new file mode 100644 index 00000000..c1e0a72a --- /dev/null +++ b/buildroot-configs/arm/little-endian/glibc/armv4t-el-glibc2.20-gcc4.9.1-binutils2.24-thumb1.config @@ -0,0 +1,1457 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv4t" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm920t" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_arm920t=y +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/glibc/armv5-el-glibc2.20-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/glibc/armv5-el-glibc2.20-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..24ec5a85 --- /dev/null +++ b/buildroot-configs/arm/little-endian/glibc/armv5-el-glibc2.20-gcc4.9.1-binutils2.24.config @@ -0,0 +1,1485 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv5te" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm926ej-s" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +# BR2_arm920t is not set +# BR2_arm922t is not set +BR2_arm926t=y +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set + +# +# on2-8170-libs needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set + +# +# on2-8170-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91BOOTSTRAP3 is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_LPC32XXCDL is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/glibc/armv5t-el-glibc2.20-gcc4.9.2-binutils2.25-thumb1.config b/buildroot-configs/arm/little-endian/glibc/armv5t-el-glibc2.20-gcc4.9.2-binutils2.25-thumb1.config new file mode 100644 index 00000000..8f6382ac --- /dev/null +++ b/buildroot-configs/arm/little-endian/glibc/armv5t-el-glibc2.20-gcc4.9.2-binutils2.25-thumb1.config @@ -0,0 +1,1630 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2015.02-git-00870-g3ac6390 Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm926ej-s" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_BINFMT_ELF=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_ARM_CPU_ARMV5=y +# BR2_arm920t is not set +# BR2_arm922t is not set +BR2_arm926t=y +# BR2_arm1136jf_s is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_STATIC_LIBS is not set +BR2_SHARED_LIBS=y +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Advanced +# +# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +# BR2_KERNEL_HEADERS_3_17 is not set +BR2_KERNEL_HEADERS_3_18=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.18.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +# BR2_BINUTILS_VERSION_2_24 is not set +BR2_BINUTILS_VERSION_2_25=y +BR2_BINUTILS_VERSION="2.25" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.2" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.18" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_SYSTEM_BIN_SH_BUSYBOX=y + +# +# bash, dash, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS +# +# BR2_SYSTEM_BIN_SH_NONE is not set +BR2_SYSTEM_BIN_SH="/bin/busybox" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_DVDAUTHOR is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +BR2_PACKAGE_KODI_ARCH_SUPPORTS=y + +# +# kodi requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MODPLUGTOOLS is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set + +# +# on2-8170-libs needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set +# BR2_PACKAGE_YMPD is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BLKTRACE is not set +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTRACE is not set +# BR2_PACKAGE_LTTNG_BABELTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_SPIDEV_TEST is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_TRINITY is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CPPUNIT is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set + +# +# glmark2 needs an OpenGL or an openGL ES and EGL backend provided by mesa3d +# + +# +# glmark2 needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, dynamic library, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AM335X_PRU_PACKAGE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set + +# +# on2-8170-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_PPS_TOOLS is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on Python +# + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_TRIGGERHAPPY is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads +# +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set +# BR2_PACKAGE_XORRISO is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_GUILE is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +BR2_PACKAGE_MONO_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONO is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_MP4V2 is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TINYALSA is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_SZIP is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y +# BR2_PACKAGE_BOTAN is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_EXIV2 is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_HICOLOR_ICON_THEME is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBGTK3 is not set +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPCIACCESS is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set +# BR2_PACKAGE_YAML_CPP is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set +# BR2_PACKAGE_X264 is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_CANFESTIVAL is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNICE is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSHOUT is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBUPNPP is not set +# BR2_PACKAGE_LIBURIPARSER is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +BR2_PACKAGE_BDWGC_ARCH_SUPPORTS=y +# BR2_PACKAGE_BDWGC is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_DING_LIBS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GLM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBBSD is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +# BR2_PACKAGE_LIBLINEAR is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LIGHTNING is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_QLIBC is not set + +# +# Security +# +# BR2_PACKAGE_LIBSELINUX is not set +# BR2_PACKAGE_LIBSEMANAGE is not set +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBCLI is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set +# BR2_PACKAGE_USTR is not set + +# +# Mail +# +# BR2_PACKAGE_DOVECOT is not set +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_CLAMAV is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPERF3 is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_JANUS_GATEWAY is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGINX is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_PURE_FTPD is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHAIRPORT_SYNC is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINC is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VNSTAT is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set + +# +# xtables-addons needs a Linux kernel to be built +# +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_IRQBALANCE is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91BOOTSTRAP3 is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_LPC32XXCDL is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +# BR2_PACKAGE_HOST_CRAMFS is not set +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MKE2IMG is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_QEMU is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2015.02 +# +# BR2_PACKAGE_STRONGSWAN_TOOLS is not set +# BR2_PACKAGE_XBMC_ADDON_XVDR is not set +# BR2_PACKAGE_XBMC_PVR_ADDONS is not set +# BR2_PACKAGE_XBMC is not set +# BR2_PACKAGE_XBMC_ALSA_LIB is not set +# BR2_PACKAGE_XBMC_AVAHI is not set +# BR2_PACKAGE_XBMC_DBUS is not set +# BR2_PACKAGE_XBMC_LIBBLURAY is not set +# BR2_PACKAGE_XBMC_GOOM is not set +# BR2_PACKAGE_XBMC_RSXS is not set +# BR2_PACKAGE_XBMC_LIBCEC is not set +# BR2_PACKAGE_XBMC_LIBMICROHTTPD is not set +# BR2_PACKAGE_XBMC_LIBNFS is not set +# BR2_PACKAGE_XBMC_RTMPDUMP is not set +# BR2_PACKAGE_XBMC_LIBSHAIRPLAY is not set +# BR2_PACKAGE_XBMC_LIBSMBCLIENT is not set +# BR2_PACKAGE_XBMC_LIBTHEORA is not set +# BR2_PACKAGE_XBMC_LIBUSB is not set +# BR2_PACKAGE_XBMC_LIBVA is not set +# BR2_PACKAGE_XBMC_WAVPACK is not set +# BR2_PREFER_STATIC_LIB is not set + +# +# Legacy options removed in 2014.11 +# +# BR2_x86_generic is not set +# BR2_GCC_VERSION_4_4_X is not set +# BR2_sparc_sparchfleon is not set +# BR2_sparc_sparchfleonv8 is not set +# BR2_sparc_sparcsfleon is not set +# BR2_sparc_sparcsfleonv8 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/glibc/armv6-el-hf-glibc2.20-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/glibc/armv6-el-hf-glibc2.20-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..90a9a787 --- /dev/null +++ b/buildroot-configs/arm/little-endian/glibc/armv6-el-hf-glibc2.20-gcc4.9.1-binutils2.24.config @@ -0,0 +1,1474 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv6zk" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm1176jzf-s" +BR2_GCC_TARGET_FPU="vfp" +BR2_GCC_TARGET_FLOAT_ABI="hard" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +# BR2_arm920t is not set +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +BR2_arm1176jzf_s=y +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +# BR2_ARM_EABI is not set +BR2_ARM_EABIHF=y +BR2_ARM_FPU_VFPV2=y +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# owl-linux is only supported on ARM9 architecture +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/glibc/armv7-el-glibc2.20-gcc4.9.1-binutils2.24-thumb2.config b/buildroot-configs/arm/little-endian/glibc/armv7-el-glibc2.20-gcc4.9.1-binutils2.24-thumb2.config new file mode 100644 index 00000000..481430e9 --- /dev/null +++ b/buildroot-configs/arm/little-endian/glibc/armv7-el-glibc2.20-gcc4.9.1-binutils2.24-thumb2.config @@ -0,0 +1,1485 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv7-a" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="cortex-a8" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_NEON=y +BR2_ARM_CPU_HAS_VFPV2=y +BR2_ARM_CPU_HAS_VFPV3=y +BR2_ARM_CPU_HAS_THUMB2=y +# BR2_arm920t is not set +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +BR2_cortex_a8=y +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_FPU_VFPV3 is not set +# BR2_ARM_FPU_VFPV3D16 is not set +# BR2_ARM_FPU_NEON is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TIDSP_BINARIES is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# owl-linux is only supported on ARM9 architecture +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DSP_TOOLS is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set +# BR2_TARGET_XLOADER is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/musl/armv4-el-musl-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/musl/armv4-el-musl-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..65f44f6e --- /dev/null +++ b/buildroot-configs/arm/little-endian/musl/armv4-el-musl-gcc4.9.1-binutils2.24.config @@ -0,0 +1,1495 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv4t" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm920t" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_arm920t=y +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +BR2_ARM_SOFT_FLOAT=y +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/musl/armv4t-el-musl-gcc4.9.1-binutils2.24-thumb1.config b/buildroot-configs/arm/little-endian/musl/armv4t-el-musl-gcc4.9.1-binutils2.24-thumb1.config new file mode 100644 index 00000000..ea7c73c6 --- /dev/null +++ b/buildroot-configs/arm/little-endian/musl/armv4t-el-musl-gcc4.9.1-binutils2.24-thumb1.config @@ -0,0 +1,1496 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv4t" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm920t" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_arm920t=y +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/musl/armv5-el-musl-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/musl/armv5-el-musl-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..04e55746 --- /dev/null +++ b/buildroot-configs/arm/little-endian/musl/armv5-el-musl-gcc4.9.1-binutils2.24.config @@ -0,0 +1,1522 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv5te" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm926ej-s" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +# BR2_arm920t is not set +# BR2_arm922t is not set +BR2_arm926t=y +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set + +# +# on2-8170-libs needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set + +# +# on2-8170-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91BOOTSTRAP3 is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_LPC32XXCDL is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/musl/armv5t-el-musl-gcc4.9.1-binutils2.24-thumb1.config b/buildroot-configs/arm/little-endian/musl/armv5t-el-musl-gcc4.9.1-binutils2.24-thumb1.config new file mode 100644 index 00000000..193521c5 --- /dev/null +++ b/buildroot-configs/arm/little-endian/musl/armv5t-el-musl-gcc4.9.1-binutils2.24-thumb1.config @@ -0,0 +1,1521 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv5te" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm926ej-s" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +# BR2_arm920t is not set +# BR2_arm922t is not set +BR2_arm926t=y +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set + +# +# on2-8170-libs needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set + +# +# on2-8170-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91BOOTSTRAP3 is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_LPC32XXCDL is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/musl/armv7-el-musl-gcc4.9.1-binutils2.24-thumb2.config b/buildroot-configs/arm/little-endian/musl/armv7-el-musl-gcc4.9.1-binutils2.24-thumb2.config new file mode 100644 index 00000000..f66438f0 --- /dev/null +++ b/buildroot-configs/arm/little-endian/musl/armv7-el-musl-gcc4.9.1-binutils2.24-thumb2.config @@ -0,0 +1,1505 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv7-a" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="cortex-a8" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_NEON=y +BR2_ARM_CPU_HAS_VFPV2=y +BR2_ARM_CPU_HAS_VFPV3=y +BR2_ARM_CPU_HAS_THUMB2=y +# BR2_arm920t is not set +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +BR2_cortex_a8=y +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_FPU_VFPV3 is not set +# BR2_ARM_FPU_VFPV3D16 is not set +# BR2_ARM_FPU_NEON is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TIDSP_BINARIES is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# +# BR2_PACKAGE_LTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_AVRDUDE is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# owl-linux is only supported on ARM9 architecture +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DSP_TOOLS is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set +# BR2_TARGET_XLOADER is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/uclibc/armv4-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/uclibc/armv4-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..fa6d9030 --- /dev/null +++ b/buildroot-configs/arm/little-endian/uclibc/armv4-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24.config @@ -0,0 +1,2081 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv4t" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm920t" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_arm920t=y +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +BR2_ARM_SOFT_FLOAT=y +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="arm" +BR2_UCLIBC_ARM_BX=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc needs a toolchain w/ C++, IPv6, largefile, threads, wchar +# + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ largefile, threads, wchar +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# strace needs a toolchain w/ largefile +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_SUNXI_TOOLS is not set + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# pifmrds needs a toolchain w/ largefile +# +# BR2_PACKAGE_RNG_TOOLS is not set + +# +# rpi-userland needs a toolchain w/ C++, largefile, threads +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# armadillo needs a toolchain w/ C++, largefile +# + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cblas/clapack needs a toolchain w/ largefile +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# + +# +# lttng-libust needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# + +# +# mongrel2 needs a toolchain w/ C++, IPv6, threads, largefile, wchar +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/uclibc/armv4t-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb1.config b/buildroot-configs/arm/little-endian/uclibc/armv4t-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb1.config new file mode 100644 index 00000000..b386dd04 --- /dev/null +++ b/buildroot-configs/arm/little-endian/uclibc/armv4t-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb1.config @@ -0,0 +1,2080 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv4t" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm920t" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_THUMB=y +BR2_arm920t=y +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="arm" +BR2_UCLIBC_ARM_BX=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc needs a toolchain w/ C++, IPv6, largefile, threads, wchar +# + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ largefile, threads, wchar +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# strace needs a toolchain w/ largefile +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_SUNXI_TOOLS is not set + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# pifmrds needs a toolchain w/ largefile +# +# BR2_PACKAGE_RNG_TOOLS is not set + +# +# rpi-userland needs a toolchain w/ C++, largefile, threads +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# armadillo needs a toolchain w/ C++, largefile +# + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cblas/clapack needs a toolchain w/ largefile +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# + +# +# lttng-libust needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# + +# +# mongrel2 needs a toolchain w/ C++, IPv6, threads, largefile, wchar +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/uclibc/armv5-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24.config b/buildroot-configs/arm/little-endian/uclibc/armv5-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24.config new file mode 100644 index 00000000..4076aadf --- /dev/null +++ b/buildroot-configs/arm/little-endian/uclibc/armv5-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24.config @@ -0,0 +1,2110 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv5te" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm926ej-s" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="arm" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +# BR2_arm920t is not set +# BR2_arm922t is not set +BR2_arm926t=y +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +BR2_ARM_INSTRUCTIONS_ARM_CHOICE=y +# BR2_ARM_INSTRUCTIONS_THUMB is not set +BR2_ARM_INSTRUCTIONS_ARM=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="arm" +BR2_UCLIBC_ARM_BX=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# + +# +# on2-8170-libs needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc needs a toolchain w/ C++, IPv6, largefile, threads, wchar +# + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ largefile, threads, wchar +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# strace needs a toolchain w/ largefile +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_SUNXI_TOOLS is not set + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# + +# +# on2-8170-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# pifmrds needs a toolchain w/ largefile +# +# BR2_PACKAGE_RNG_TOOLS is not set + +# +# rpi-userland needs a toolchain w/ C++, largefile, threads +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set + +# +# nodejs needs a toolchain w/ C++, IPv6, largefile, threads +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# armadillo needs a toolchain w/ C++, largefile +# + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cblas/clapack needs a toolchain w/ largefile +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# + +# +# lttng-libust needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# + +# +# mongrel2 needs a toolchain w/ C++, IPv6, threads, largefile, wchar +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91BOOTSTRAP3 is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_LPC32XXCDL is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/uclibc/armv5t-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb1.config b/buildroot-configs/arm/little-endian/uclibc/armv5t-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb1.config new file mode 100644 index 00000000..c7d7130a --- /dev/null +++ b/buildroot-configs/arm/little-endian/uclibc/armv5t-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb1.config @@ -0,0 +1,2109 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv5te" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="arm926ej-s" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_THUMB=y +# BR2_arm920t is not set +# BR2_arm922t is not set +BR2_arm926t=y +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="arm" +BR2_UCLIBC_ARM_BX=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# + +# +# on2-8170-libs needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc needs a toolchain w/ C++, IPv6, largefile, threads, wchar +# + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ largefile, threads, wchar +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# strace needs a toolchain w/ largefile +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_SUNXI_TOOLS is not set + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# + +# +# on2-8170-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# pifmrds needs a toolchain w/ largefile +# +# BR2_PACKAGE_RNG_TOOLS is not set + +# +# rpi-userland needs a toolchain w/ C++, largefile, threads +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set + +# +# nodejs needs a toolchain w/ C++, IPv6, largefile, threads +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# armadillo needs a toolchain w/ C++, largefile +# + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cblas/clapack needs a toolchain w/ largefile +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# + +# +# lttng-libust needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# + +# +# mongrel2 needs a toolchain w/ C++, IPv6, threads, largefile, wchar +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91BOOTSTRAP3 is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_LPC32XXCDL is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/arm/little-endian/uclibc/armv7-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb2.config b/buildroot-configs/arm/little-endian/uclibc/armv7-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb2.config new file mode 100644 index 00000000..274e761e --- /dev/null +++ b/buildroot-configs/arm/little-endian/uclibc/armv7-el-uclibc0.9.33.2-gcc4.9.1-binutils2.24-thumb2.config @@ -0,0 +1,2110 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00245-gb7fcf3b Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +BR2_SOFT_FLOAT=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="armv7-a" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="cortex-a8" +BR2_GCC_TARGET_FLOAT_ABI="soft" +BR2_GCC_TARGET_MODE="thumb" +BR2_ARCH_HAS_ATOMICS=y +BR2_ARM_CPU_HAS_NEON=y +BR2_ARM_CPU_HAS_VFPV2=y +BR2_ARM_CPU_HAS_VFPV3=y +BR2_ARM_CPU_HAS_THUMB2=y +# BR2_arm920t is not set +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136jf_s_r0 is not set +# BR2_arm1136jf_s_r1 is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +BR2_cortex_a8=y +# BR2_cortex_a9 is not set +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +# BR2_arm1136jf_s is not set +BR2_ARM_EABI=y +# BR2_ARM_EABIHF is not set +BR2_ARM_SOFT_FLOAT=y +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_FPU_VFPV3 is not set +# BR2_ARM_FPU_VFPV3D16 is not set +# BR2_ARM_FPU_NEON is not set +# BR2_ARM_INSTRUCTIONS_ARM_CHOICE is not set +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="arm" +BR2_UCLIBC_ARM_BX=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TIDSP_BINARIES is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +BR2_PACKAGE_XBMC_ARCH_SUPPORTS=y + +# +# xbmc needs a toolchain w/ C++, IPv6, largefile, threads, wchar +# + +# +# xbmc requires an OpenGL ES and EGL backend +# +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ largefile, threads, wchar +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# strace needs a toolchain w/ largefile +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_SUNXI_TOOLS is not set + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# owl-linux is only supported on ARM9 architecture +# + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# pifmrds needs a toolchain w/ largefile +# +# BR2_PACKAGE_RNG_TOOLS is not set + +# +# rpi-userland needs a toolchain w/ C++, largefile, threads +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set + +# +# sunxi-cedarx needs an (e)glibc toolchain +# + +# +# sunxi-mali needs an (e)glibc toolchain +# +# BR2_PACKAGE_SYSSTAT is not set + +# +# ti-gfx needs an (e)glibc toolchain and a Linux kernel to be built +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set + +# +# nodejs needs a toolchain w/ C++, IPv6, largefile, threads +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set + +# +# libfslcodec needs an (e)glibc toolchain +# +# BR2_PACKAGE_LIBFSLPARSER is not set + +# +# libfslvpuwrap needs an imx-specific Linux kernel to be built +# +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# armadillo needs a toolchain w/ C++, largefile +# + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cblas/clapack needs a toolchain w/ largefile +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# + +# +# lttng-libust needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# + +# +# mongrel2 needs a toolchain w/ C++, IPv6, threads, largefile, wchar +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DSP_TOOLS is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_UBOOT is not set +# BR2_TARGET_XLOADER is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/glibc/mips16-eb-gcc4.9-glibc2.20-binutils2.24.config b/buildroot-configs/mips/big-endian/glibc/mips16-eb-gcc4.9-glibc2.20-binutils2.24.config new file mode 100644 index 00000000..b2fe0d3d --- /dev/null +++ b/buildroot-configs/mips/big-endian/glibc/mips16-eb-gcc4.9-glibc2.20-binutils2.24.config @@ -0,0 +1,1407 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os -mips16" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/glibc/mips32-eb-gcc4.9-glibc2.20-binutils2.24.config b/buildroot-configs/mips/big-endian/glibc/mips32-eb-gcc4.9-glibc2.20-binutils2.24.config new file mode 100644 index 00000000..49c4ab38 --- /dev/null +++ b/buildroot-configs/mips/big-endian/glibc/mips32-eb-gcc4.9-glibc2.20-binutils2.24.config @@ -0,0 +1,1407 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/glibc/mips32r2-eb-gcc4.9-glibc2.20-binutils2.24.config b/buildroot-configs/mips/big-endian/glibc/mips32r2-eb-gcc4.9-glibc2.20-binutils2.24.config new file mode 100644 index 00000000..a4960238 --- /dev/null +++ b/buildroot-configs/mips/big-endian/glibc/mips32r2-eb-gcc4.9-glibc2.20-binutils2.24.config @@ -0,0 +1,1407 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32r2" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +# BR2_mips_32 is not set +BR2_mips_32r2=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/musl/mips32-eb-gcc4.9-musl-binutils2.24.config b/buildroot-configs/mips/big-endian/musl/mips32-eb-gcc4.9-musl-binutils2.24.config new file mode 100644 index 00000000..e68ae9ad --- /dev/null +++ b/buildroot-configs/mips/big-endian/musl/mips32-eb-gcc4.9-musl-binutils2.24.config @@ -0,0 +1,1417 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/musl/mips32r2-eb-gcc4.9-musl-binutils2.24.config b/buildroot-configs/mips/big-endian/musl/mips32r2-eb-gcc4.9-musl-binutils2.24.config new file mode 100644 index 00000000..06d33d4b --- /dev/null +++ b/buildroot-configs/mips/big-endian/musl/mips32r2-eb-gcc4.9-musl-binutils2.24.config @@ -0,0 +1,1417 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32r2" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +# BR2_mips_32 is not set +BR2_mips_32r2=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/uclibc/mips16-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/big-endian/uclibc/mips16-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..07b11613 --- /dev/null +++ b/buildroot-configs/mips/big-endian/uclibc/mips16-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2004 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="mips" +BR2_UCLIBC_MIPS_ABI="O32" +BR2_UCLIBC_MIPS_ISA="MIPS32" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os -mips16" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs an (e)glibc toolchain +# + +# +# strace needs a toolchain w/ largefile +# + +# +# strace is not supported on MIPS using a uClibc toolchain +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/uclibc/mips32-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/big-endian/uclibc/mips32-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..777a4a7e --- /dev/null +++ b/buildroot-configs/mips/big-endian/uclibc/mips32-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2003 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="mips" +BR2_UCLIBC_MIPS_ABI="O32" +BR2_UCLIBC_MIPS_ISA="MIPS32" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs an (e)glibc toolchain +# + +# +# strace needs a toolchain w/ largefile +# + +# +# strace is not supported on MIPS using a uClibc toolchain +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/big-endian/uclibc/mips32r2-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/big-endian/uclibc/mips32r2-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..371ee4ab --- /dev/null +++ b/buildroot-configs/mips/big-endian/uclibc/mips32r2-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2003 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +BR2_mips=y +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mips" +BR2_ENDIAN="BIG" +BR2_GCC_TARGET_ARCH="mips32r2" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +# BR2_mips_32 is not set +BR2_mips_32r2=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="mips" +BR2_UCLIBC_MIPS_ABI="O32" +BR2_UCLIBC_MIPS_ISA="MIPS32R2" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs an (e)glibc toolchain +# + +# +# strace needs a toolchain w/ largefile +# + +# +# strace is not supported on MIPS using a uClibc toolchain +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/glibc/mips16-el-gcc4.9-glibc2.20-binutils2.24.config b/buildroot-configs/mips/little-endian/glibc/mips16-el-gcc4.9-glibc2.20-binutils2.24.config new file mode 100644 index 00000000..d4247f3e --- /dev/null +++ b/buildroot-configs/mips/little-endian/glibc/mips16-el-gcc4.9-glibc2.20-binutils2.24.config @@ -0,0 +1,1411 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os -mips16" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/glibc/mips32-el-gcc4.9-glibc2.20-binutils2.24.config b/buildroot-configs/mips/little-endian/glibc/mips32-el-gcc4.9-glibc2.20-binutils2.24.config new file mode 100644 index 00000000..727bf660 --- /dev/null +++ b/buildroot-configs/mips/little-endian/glibc/mips32-el-gcc4.9-glibc2.20-binutils2.24.config @@ -0,0 +1,1411 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/glibc/mips32r2-el-gcc4.9-glibc2.20-binutils2.24.config b/buildroot-configs/mips/little-endian/glibc/mips32r2-el-gcc4.9-glibc2.20-binutils2.24.config new file mode 100644 index 00000000..a5647e18 --- /dev/null +++ b/buildroot-configs/mips/little-endian/glibc/mips32r2-el-gcc4.9-glibc2.20-binutils2.24.config @@ -0,0 +1,1411 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32r2" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +# BR2_mips_32 is not set +BR2_mips_32r2=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_ENABLE_SSP is not set +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" +BR2_PACKAGE_GLIBC=y +# BR2_GLIBC_VERSION_2_19 is not set +BR2_GLIBC_VERSION_2_20=y +BR2_GLIBC_VERSION_STRING="2.20" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +# BR2_PACKAGE_LTP_TESTSUITE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUNWIND is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/musl/mips32-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/little-endian/musl/mips32-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..6f01c1e1 --- /dev/null +++ b/buildroot-configs/mips/little-endian/musl/mips32-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,1421 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/musl/mips32r2-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/little-endian/musl/mips32r2-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..75100180 --- /dev/null +++ b/buildroot-configs/mips/little-endian/musl/mips32r2-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,1421 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32r2" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +# BR2_mips_32 is not set +BR2_mips_32r2=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_MUSL=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_LIBC="musl" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_LARGEFILE=y +BR2_INET_IPV6=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPG123 is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UPMPDCLI is not set + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set + +# +# simicsfs needs a Linux kernel to be built +# +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OLA is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENPGM is not set +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBICAL is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_UTIL_LINUX is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/uclibc/mips16-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/little-endian/uclibc/mips16-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..e0e5e5ea --- /dev/null +++ b/buildroot-configs/mips/little-endian/uclibc/mips16-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2010 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="mips" +BR2_UCLIBC_MIPS_ABI="O32" +BR2_UCLIBC_MIPS_ISA="MIPS32" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os -mips16" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs an (e)glibc toolchain +# + +# +# strace needs a toolchain w/ largefile +# + +# +# strace is not supported on MIPS using a uClibc toolchain +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set + +# +# nodejs needs a toolchain w/ C++, IPv6, largefile, threads +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/uclibc/mips32-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/little-endian/uclibc/mips32-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..6f2fd305 --- /dev/null +++ b/buildroot-configs/mips/little-endian/uclibc/mips32-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2010 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +BR2_mips_32=y +# BR2_mips_32r2 is not set +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="mips" +BR2_UCLIBC_MIPS_ABI="O32" +BR2_UCLIBC_MIPS_ISA="MIPS32" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs an (e)glibc toolchain +# + +# +# strace needs a toolchain w/ largefile +# + +# +# strace is not supported on MIPS using a uClibc toolchain +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set + +# +# nodejs needs a toolchain w/ C++, IPv6, largefile, threads +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/mips/little-endian/uclibc/mips32r2-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/mips/little-endian/uclibc/mips32r2-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..f82c8799 --- /dev/null +++ b/buildroot-configs/mips/little-endian/uclibc/mips32r2-el-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2010 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +BR2_mipsel=y +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="mipsel" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="mips32r2" +BR2_GCC_TARGET_ABI="32" +BR2_ARCH_HAS_ATOMICS=y +# BR2_mips_32 is not set +BR2_mips_32r2=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_MIPS_OABI32=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="mips" +BR2_UCLIBC_MIPS_ABI="O32" +BR2_UCLIBC_MIPS_ISA="MIPS32R2" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y + +# +# google-breakpad requires an (e)glibc toolchain w/ C++ enabled +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set + +# +# rt-tests needs an (e)glibc toolchain +# + +# +# strace needs a toolchain w/ largefile +# + +# +# strace is not supported on MIPS using a uClibc toolchain +# +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# midori needs libgtk2 and a toolchain w/ C++, wchar, threads +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# + +# +# ola needs a toolchain w/ C++, threads, largefile, wchar +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set + +# +# nodejs needs a toolchain w/ C++, IPv6, largefile, threads +# +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS=y + +# +# webkit needs libgtk2 and a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/buildroot-configs/ppc/big-endian/uclibc/ppc-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config b/buildroot-configs/ppc/big-endian/uclibc/ppc-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config new file mode 100644 index 00000000..584b1a11 --- /dev/null +++ b/buildroot-configs/ppc/big-endian/uclibc/ppc-eb-gcc4.9-uclibc0.9.33.2-binutils2.24.config @@ -0,0 +1,2038 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2014.11-git-00318-gae69ead Configuration +# +BR2_HAVE_DOT_CONFIG=y + +# +# Target options +# +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_bfin is not set +# BR2_i386 is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +BR2_powerpc=y +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sh64 is not set +# BR2_sparc is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH="powerpc" +BR2_ENDIAN="BIG" +BR2_ARCH_HAS_ATOMICS=y +BR2_generic_powerpc=y +# BR2_powerpc_401 is not set +# BR2_powerpc_403 is not set +# BR2_powerpc_405 is not set +# BR2_powerpc_405fp is not set +# BR2_powerpc_440 is not set +# BR2_powerpc_440fp is not set +# BR2_powerpc_464 is not set +# BR2_powerpc_464fp is not set +# BR2_powerpc_476 is not set +# BR2_powerpc_476fp is not set +# BR2_powerpc_505 is not set +# BR2_powerpc_601 is not set +# BR2_powerpc_602 is not set +# BR2_powerpc_603 is not set +# BR2_powerpc_603e is not set +# BR2_powerpc_604 is not set +# BR2_powerpc_604e is not set +# BR2_powerpc_620 is not set +# BR2_powerpc_630 is not set +# BR2_powerpc_740 is not set +# BR2_powerpc_7400 is not set +# BR2_powerpc_7450 is not set +# BR2_powerpc_750 is not set +# BR2_powerpc_821 is not set +# BR2_powerpc_823 is not set +# BR2_powerpc_860 is not set +# BR2_powerpc_970 is not set +# BR2_powerpc_8540 is not set +# BR2_powerpc_8548 is not set +# BR2_powerpc_e300c2 is not set +# BR2_powerpc_e300c3 is not set +# BR2_powerpc_e500mc is not set +# BR2_powerpc_power4 is not set +# BR2_powerpc_power5 is not set +# BR2_powerpc_power6 is not set +# BR2_powerpc_power7 is not set +# BR2_powerpc_power8 is not set +BR2_powerpc_CLASSIC=y +# BR2_POWERPC_SOFT_FLOAT is not set + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="http://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_DEBIAN_MIRROR="http://ftp.debian.org" +BR2_LUAROCKS_MIRROR="http://luarocks.org/repositories/rocks" +BR2_CPAN_MIRROR="http://search.cpan.org/CPAN" +BR2_JLEVEL=16 +BR2_CCACHE=y +BR2_CCACHE_DIR="$(HOME)/.buildroot-ccache" +BR2_CCACHE_INITIAL_SETUP="" +# BR2_DEPRECATED is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +# BR2_STRIP_none is not set +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +BR2_OPTIMIZE_S=y + +# +# enabling Stack Smashing Protection requires support in the toolchain +# +# BR2_PREFER_STATIC_LIB is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_UCLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +BR2_KERNEL_HEADERS_3_16=y +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="3.16.3" +BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_GLIBC is not set +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc" +BR2_PACKAGE_UCLIBC=y + +# +# uClibc Options +# +BR2_UCLIBC_VERSION_0_9_33=y +# BR2_UCLIBC_VERSION_SNAPSHOT is not set +BR2_UCLIBC_VERSION_STRING="0.9.33.2" +BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config" +# BR2_TOOLCHAIN_BUILDROOT_LARGEFILE is not set +BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +# BR2_TOOLCHAIN_BUILDROOT_WCHAR is not set +# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set +# BR2_PTHREADS_NONE is not set +# BR2_PTHREADS is not set +# BR2_PTHREADS_OLD is not set +BR2_PTHREADS_NATIVE=y +# BR2_PTHREAD_DEBUG is not set +# BR2_TOOLCHAIN_BUILDROOT_USE_SSP is not set +# BR2_UCLIBC_INSTALL_UTILS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +BR2_UCLIBC_TARGET_ARCH="powerpc" +BR2_UCLIBC_POWERPC_TYPE="CLASSIC" + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +BR2_BINUTILS_VERSION_2_24=y +BR2_BINUTILS_VERSION="2.24" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +BR2_GCC_NEEDS_MPC=y +BR2_GCC_SUPPORTS_GRAPHITE=y +# BR2_GCC_VERSION_4_4_X is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_GCC_VERSION_4_8_X is not set +BR2_GCC_VERSION_4_9_X=y +# BR2_GCC_VERSION_SNAP is not set +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="4.9.1" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_GCC_ENABLE_TLS=y +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +# BR2_PACKAGE_HOST_GDB is not set +BR2_INET_IPV6=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US de fr" +BR2_GENERATE_LOCALE="" +BR2_NEEDS_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="-pipe -Os" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="3.16" + +# +# System configuration +# +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +# BR2_TARGET_GENERIC_PASSWD_DES is not set +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set + +# +# systemd needs an (e)glibc toolchain, headers >= 3.10 +# +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_TARGET_GENERIC_GETTY=y + +# +# getty options +# +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_TARGET_GENERIC_GETTY_BAUDRATE="115200" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set + +# +# Audio and video applications +# + +# +# alsa-utils needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set + +# +# espeak needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_FAAD2 is not set + +# +# ffmpeg needs a toolchain w/ largefile, IPv6 +# + +# +# flac needs a toolchain w/ wchar +# + +# +# flite needs a toolchain w/ wchar +# + +# +# gstreamer 0.10 needs a toolchain w/ wchar, threads +# + +# +# gstreamer 1.x needs a toolchain w/ wchar, threads +# + +# +# jack2 needs a toolchain w/ largefile, threads, C++ +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_MADPLAY is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_MPG123 is not set + +# +# mplayer needs a toolchain w/ largefile +# +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPUS_TOOLS is not set + +# +# pulseaudio needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_SOX is not set + +# +# tstools needs a toolchain w/ largefile +# + +# +# twolame needs a toolchain w/ largefile +# + +# +# upmpdcli needs a toolchain w/ C++, largefile, threads +# + +# +# vlc needs a uclibc snapshot or (e)glibc toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_INFOZIP is not set + +# +# lz4 needs a toolchain w/ largefile +# + +# +# lzip needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_XZ is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set + +# +# dstat needs a toolchain w/ wchar +# +# BR2_PACKAGE_DUMA is not set + +# +# fio needs a toolchain w/ largefile, threads +# + +# +# gdb/gdbserver needs a toolchain w/ threads, threads debug +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# kexec-lite needs a toolchain w/ largefile, wchar, dynamic library +# + +# +# ktap needs a Linux kernel to be built +# + +# +# latencytop needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LMBENCH is not set + +# +# ltp-testsuite needs a toolchain w/ IPv6, RPC, largefile, threads +# + +# +# ltrace needs toolchain w/ largefile, wchar +# + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ largefile, threads, wchar +# +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_OPROFILE is not set + +# +# pax-utils needs a toolchain w/ largefile +# + +# +# perf needs a toolchain w/ largefile and a Linux kernel to be built +# +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# strace needs a toolchain w/ largefile +# +# BR2_PACKAGE_STRESS is not set + +# +# sysprof needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_TINYMEMBENCH is not set + +# +# trace-cmd needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set + +# +# cvs needs a toolchain w/ wchar +# +# BR2_PACKAGE_FLEX is not set + +# +# gettext needs a toolchain w/ wchar +# + +# +# git needs a toolchain w/ largefile +# +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_PACKAGE_SUBVERSION is not set + +# +# tree needs a toolchain w/ wchar +# + +# +# Filesystem and flash utilities +# + +# +# btrfs-progs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CRAMFS is not set + +# +# curlftpfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# dosfstools needs a toolchain w/ largefile, wchar +# + +# +# e2fsprogs needs a toolchain w/ largefile, wchar +# + +# +# e2tools needs a toolchain w/ threads, largefile and wchar +# + +# +# ecryptfs-utils needs a toolchain w/ largefile, threads, wchar +# + +# +# exfat needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# exfat-utils needs a toolchain w/ largefile, wchar +# + +# +# f2fs-tools needs a toolchain w/ largefile, wchar +# + +# +# flashbench needs a toolchain w/ largefile +# + +# +# genext2fs needs a toolchain w/ largefile +# +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MAKEDEVS is not set + +# +# mmc-utils needs a toolchain w/ largefile, headers >= 3.0 +# +# BR2_PACKAGE_MTD is not set + +# +# mtools needs a toolchain w/ wchar +# + +# +# nfs-utils needs a toolchain w/ largefile, threads +# + +# +# ntfs-3g needs a toolchain w/ largefile, wchar, threads +# + +# +# simicsfs needs a Linux kernel to be built +# + +# +# squashfs needs a toolchain w/ largefile, threads +# + +# +# sshfs needs a toolchain w/ largefile, wchar, threads, dynamic library +# + +# +# unionfs needs a toolchain w/ largefile, threads, dynamic library +# + +# +# xfsprogs needs a toolchain w/ largefile, wchar +# + +# +# Games +# +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GNUPLOT is not set + +# +# jhead needs a toolchain w/ wchar +# + +# +# rrdtool needs a toolchain w/ wchar +# + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# + +# +# mesa3d needs udev /dev management and a toolchain w/ C++, largefile, NPTL +# +# BR2_PACKAGE_OCRAD is not set + +# +# psplash needs a toolchain w/ wchar +# +# BR2_PACKAGE_SDL is not set + +# +# Other GUIs +# + +# +# EFL needs a toolchain w/ wchar +# +# BR2_PACKAGE_QT is not set + +# +# Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++ +# + +# +# weston needs udev and a toolchain w/ threads, headers >= 3.0 +# + +# +# X.org needs a toolchain w/ wchar, threads, dynamic library +# + +# +# X applications +# + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# X window managers +# + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# avrdude needs a toolchain w/ threads, largefile, wchar +# + +# +# bcache-tools needs udev /dev management and a toolchain w/ largefile, wchar +# + +# +# cdrkit needs a toolchain w/ largefile +# + +# +# cryptsetup needs a toolchain w/ largefile, wchar, threads, dynamic library +# +# BR2_PACKAGE_DBUS is not set + +# +# dmraid needs a toolchain w/ largefile, threads, dynamic library +# + +# +# dvb-apps utils needs a toolchain w/ largefile, threads, headers >= 3.3 +# + +# +# dvbsnoop needs a toolchain w/ largefile +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# + +# +# eudev needs a toolchain w/ largefile, wchar, dynamic library +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ largefile, wchar, C++ +# + +# +# gvfs needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_I2C_TOOLS is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, largefile, wchar +# +# BR2_PACKAGE_LSUIO is not set + +# +# lvm2 needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEDIA_CTL is not set + +# +# memtester needs a toolchain w/ largefile +# + +# +# minicom needs a toolchain w/ wchar +# +# BR2_PACKAGE_NANOCOM is not set + +# +# neard needs a toolchain w/ wchar, threads +# + +# +# ofono needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# parted needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set + +# +# sg3-utils needs a toolchain w/ largefile, threads +# + +# +# sispmctl needs a toolchain w/ threads, wchar +# +# BR2_PACKAGE_SMARTMONTOOLS is not set + +# +# smstools3 needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set + +# +# udisks needs udev /dev management +# + +# +# udisks needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# +# BR2_PACKAGE_USBUTILS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_ENSCRIPT is not set +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set + +# +# python needs a toolchain w/ wchar, threads +# + +# +# python3 needs a toolchain w/ wchar, threads +# + +# +# ruby needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set + +# +# libmpd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsndfile needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SPEEX is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# + +# +# libarchive needs a toolchain w/ wchar +# +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_ZLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# + +# +# gnutls needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +# BR2_PACKAGE_LIBGPG_ERROR is not set +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set + +# +# libnss needs a toolchain w/ largefile, threads +# + +# +# libsecret needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +# BR2_PACKAGE_POLARSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_MYSQL is not set + +# +# postgresql needs a toolchain w/ glibc +# + +# +# redis needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# Filesystem +# + +# +# gamin needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set + +# +# libfuse needs a toolchain w/ largefile, threads, dynamic library +# +# BR2_PACKAGE_LIBLOCKFILE is not set + +# +# libnfs needs a toolchain w/ RPC and LARGEFILE +# +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# Graphics +# + +# +# atk needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set + +# +# gdk-pixbuf needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set + +# +# libdrm needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set + +# +# librsvg needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBUNGIF is not set + +# +# libva needs a toolchain w/ largefile, threads, dynamic library +# + +# +# opencv needs a toolchain w/ C++, NPTL, wchar +# + +# +# pango needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZXING is not set + +# +# Hardware handling +# +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBHID is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libqmi needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set + +# +# libv4l needs a toolchain w/ largefile, threads and C++ +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set + +# +# neardal needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set + +# +# Javascript +# +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JQUERY_KEYBOARD is not set +# BR2_PACKAGE_JQUERY_MOBILE is not set +# BR2_PACKAGE_JQUERY_SPARKLINE is not set +# BR2_PACKAGE_JQUERY_UI is not set +# BR2_PACKAGE_JQUERY_VALIDATION is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-glib needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_TINYXML is not set + +# +# xerces-c++ needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_YAJL is not set + +# +# Logging +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LOG4CXX is not set + +# +# zlog needs a toolchain w/ threads, largefile, dynamic library +# + +# +# Multimedia +# +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBLURAY is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# + +# +# libdvdnav needs a toolchain w/ dynamic library, largefile, threads +# + +# +# libdvdread needs a toolchain w/ dynamic library, largefile +# +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBMATROSKA is not set + +# +# libmms needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set + +# +# libplayer needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_C_ARES is not set + +# +# cppzmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# czmq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# filemq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_GEOIP is not set + +# +# glib-networking needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set + +# +# libmnl needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNDP is not set + +# +# libnetfilter_acct needs a toolchain w/ largefile +# + +# +# libnetfilter_conntrack needs a toolchain w/ largefile +# + +# +# libnetfilter_cthelper needs a toolchain w/ largefile +# + +# +# libnetfilter_cttimout needs a toolchain w/ largefile +# +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNFNETLINK is not set + +# +# libnftnl needs a toolchain w/ threads, IPv6, largefile +# +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set + +# +# libsoup needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set + +# +# libupnp needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_OMNIORB is not set + +# +# openpgm needs a toolchain w/ wchar, threads, IPv6 +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set + +# +# thrift needs a toolchain w/ C++, largefile, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wvstreams needs a toolchain w/ C++, largefile +# + +# +# zeromq needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# zyre needs a toolchain w/ C++, IPv6, largefile, wchar, threads +# + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARGP_STANDALONE is not set + +# +# boost needs a toolchain w/ C++, largefile, threads +# + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EIGEN is not set + +# +# elfutils needs a toolchain w/ largefile, wchar +# +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set + +# +# glibmm needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs an (e)glibc toolchain w/ C++ +# +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGC is not set + +# +# libglib2 needs a toolchain w/ wchar, threads +# + +# +# libical needs a toolchain w/ wchar +# +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y + +# +# libnspr needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBSIGC is not set +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set + +# +# linux-pam needs a toolchain w/ wchar, locale, dynamic library +# + +# +# lttng-libust needs a toolchain w/ wchar, largefile, threads +# +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set + +# +# poco needs a toolchain w/ wchar, threads, C++ +# +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_SCHIFRA is not set + +# +# Security +# +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# + +# +# icu needs a toolchain w/ C++, wchar, threads +# + +# +# libedit needs a toolchain w/ wchar +# +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBICONV is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set + +# +# newt needs a toolchain w/ wchar +# +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set + +# +# shared-mime-info needs a toolchain w/ wchar, threads +# + +# +# snowball-init needs a toolchain w/ wchar, threads, dynamic library +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Mail +# +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set + +# +# mutt needs a toolchain w/ wchar +# + +# +# Networking applications +# + +# +# aiccu needs a toolchain w/ IPv6, wchar, threads +# + +# +# aircrack-ng needs a toolchain w/ largefile, threads +# +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BCUSDK is not set + +# +# bluez-utils needs a toolchain w/ wchar, threads, dynamic library +# + +# +# bluez5-utils needs a toolchain w/ wchar, threads, IPv6, headers >= 3.4 +# +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set + +# +# connman needs a toolchain w/ IPv6, wchar, threads, resolver +# + +# +# conntrack-tools needs a toolchain w/ IPv6, largefile, threads +# +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FPING is not set + +# +# gesftpserver needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set + +# +# httping needs a toolchain w/ wchar +# +# BR2_PACKAGE_IFTOP is not set + +# +# igh-ethercat needs a Linux kernel to be built +# + +# +# igmpproxy needs a toolchain w/ wchar +# +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# ipset needs a toolchain w/ largefile +# +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set + +# +# minidlna needs a toolchain w/ largefile, IPv6, threads, wchar +# + +# +# modemmanager needs udev /dev management and a toolchain w/ largefile, wchar, threads, IPv6 +# + +# +# mongoose needs a toolchain w/ threads, largefile +# +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set + +# +# nbd needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7 +# + +# +# nfacct needs a toolchain w/ largefile +# + +# +# nftables needs a toolchain w/ IPv6, largefile, threads, wchar, headers >= 3.4 +# +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set + +# +# portmap needs a toolchain w/ RPC +# +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PROFTPD is not set +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_SAMBA is not set + +# +# samba4 needs a toolchain w/ IPv6, wchar, largfile, threads +# +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SPAWN_FCGI is not set + +# +# spice server needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TRANSMISSION is not set + +# +# tvheadend needs a toolchain w/ largefile, IPv6, NPTL, headers >= 3.2 +# + +# +# udpcast needs a toolchain w/ largefile, threads +# + +# +# ulogd needs a toolchain w/ IPv6, largefile, dynamic library +# + +# +# ushare needs a toolchain w/ largefile, threads +# + +# +# ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library +# +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set + +# +# wvdial needs a toolchain w/ C++, largefile +# +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# +# BR2_PACKAGE_IPKG is not set +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Shell and utilities +# + +# +# Shells +# + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set + +# +# inotify-tools needs a toolchain w/ largefile +# +# BR2_PACKAGE_LOCKFILE_PROGS is not set + +# +# logrotate needs a toolchain w/ wchar +# +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set + +# +# System tools +# + +# +# acl needs a toolchain w/ largefile +# + +# +# attr needs a toolchain w/ largefile +# +# BR2_PACKAGE_CPULOAD is not set + +# +# ftop needs a toolchain w/ largefile +# +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set + +# +# lxc needs a toolchain w/ IPv6, threads, largefile +# +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set + +# +# numactl needs a toolchain w/ largefile +# +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POWERPC_UTILS is not set + +# +# polkit needs a toolchain w/ wchar, threads +# +# BR2_PACKAGE_PWGEN is not set + +# +# quota needs a toolchain w/ largefile, wchar, threads +# +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y + +# +# util-linux needs a toolchain w/ largefile, wchar +# + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set + +# +# nano needs a toolchain w/ wchar +# +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set + +# +# gummiboot needs a toolchain w/ largefile, wchar +# +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_PARTED is not set +# BR2_PACKAGE_HOST_PATCHELF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2014.11 +# +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/config.h b/config.h new file mode 100644 index 00000000..221e97d1 --- /dev/null +++ b/config.h @@ -0,0 +1,583 @@ +#ifndef CONFIG_H_ +#define CONFIG_H_ + +/* Don't change anything ABOVE this line */ + +/* + * As a best practice do not change the original config.h as distributed with vlmcsd. + * Instead make a copy, e.g. myconfig.h, customize it and type 'make CONFIG=myconfig.h' + * to build vlmcsd. This prevents your copy being overwritten when you upgrade to a + * new version. + */ + + + +/* + * ---------------------------------------------------------------------------------------- + * Useful customizations. These options are mandatory. You cannot comment them out. + * Feel free to change them to fit your needs. + * ---------------------------------------------------------------------------------------- + */ + +#ifndef VERSION +/* + * Define your own version identifier here, e.g. '#define VERSION "my vlmcsd based on svn560"' + */ + +#define VERSION "private build" + +#endif // VERSION + + + + +/* + * Define default ePIDs and HWID here. Preferrably grab ePIDs and HWID + * from a real KMS server. + */ + +#ifndef EPID_WINDOWS +#define EPID_WINDOWS "06401-00206-271-298329-03-1033-9600.0000-0452015" +#endif + +#ifndef EPID_OFFICE2010 +#define EPID_OFFICE2010 "06401-00096-199-198322-03-1033-9600.0000-0452015" +#endif + +#ifndef EPID_OFFICE2013 +#define EPID_OFFICE2013 "06401-00206-234-398213-03-1033-9600.0000-0452015" +#endif + +#ifndef HWID // HwId from the Ratiborus VM +#define HWID 0x36, 0x4F, 0x46, 0x3A, 0x88, 0x63, 0xD3, 0x5F +#endif + + + + + +/* + * Anything below this line is optional. If you want to use any of these options + * uncomment one or more lines starting with "//#define" + */ + + + +/* + * ------------------------------- + * Defaults + * ------------------------------- + */ + + +#ifndef INI_FILE +/* + * Uncomment and customize the following line if you want vlmcsd to look for an ini file + * at a default location + */ + +//#define INI_FILE "/etc/vlmcsd.ini" + +#endif // INI_FILE + + + + +/* + * ---------------------------------------------------------------------------------------- + * Troubleshooting options. Please note that disabling features may also help troubleshooting. + * If you have an old OS that does not support features like pthreads, shared memory or + * semaphores, uncomment "#define NO_LIMIT" and "#define NO_SIGHUP" and leave "#define USE_THREADS" + * commented out. + * ---------------------------------------------------------------------------------------- + */ + + +#ifndef CHILD_HANDLER +/* + * Uncomment the following #define if you are compiling for a platform that does + * not correctly handle the SA_NOCLDWAIT flag when ignoring SIGCHLD, i.e. forked + * processes remain as "zombies" after dying. This option will add a SIGCHLD handler that + * "waits" for a child that has terminated. This is only required for a few + * unixoid OSses. + */ + +//#define CHILD_HANDLER + +#endif // CHILD_HANDLER + + +#ifndef NO_TIMEOUT +/* + * Uncomment the following #define if you are compiling for a platform that does + * not support custom socket send or receive timeouts. + */ + +//#define NO_TIMEOUT + +#endif // NO_TIMEOUT + + +#ifndef NO_DNS +/* + * Uncomment the following #define if you have trouble with accessing routines + * from libresolv. If enabled, vlmcs will be compiled without support for + * detecting KMS servers via DNS. + */ + +//#define NO_DNS + +#endif // NO_DNS + + +#ifndef TERMINAL_FIXED_WIDTH +/* + * Uncomment the following #define and optionally change its value if you are compiling for + * a platform that cannot properly determine the width of a terminal/command prompt. + * This affects the output of "vlmcsd -x" only. It should be rarely necessary to use this. + */ + +//#define TERMINAL_FIXED_WIDTH 80 + +#endif // TERMINAL_FIXED_WIDTH + + + + +#ifndef _PEDANTIC +/* + * Uncomment the following #define if you want to do vlmcs and vlmcsd more checks on the data + * it receives over the network. They are normally not necessary but may provide useful if + * you are testing any KMS server or client emulator that may send malformed KMS packets. + */ + +//#define _PEDANTIC + +#endif // _PEDANTIC + + + + +#ifndef NO_PROCFS +/* + * Cygwin, Linux, Android, NetBSD, DragonflyBSD: + * Do not rely on a properly mounted proc filesystem and use the less reliable + * argv[0] to determine the program's executable name when restarting vlmcsd + * by sending a SIGHUP signal. Use only if absolutely necessary (very old versions + * of these OSses). + * + * FreeBSD: + * Do not use sysctl and but the less reliable + * argv[0] to determine the program's executable name when restarting vlmcsd + * by sending a SIGHUP signal. Use only if absolutely necessary (very old FreeBSD). + * + * OpenBSD: + * This option has no effect since OpenBSD always must use the less reliable argv[0]. + * + * Mac OS X, Solaris: + * This option is not neccessary (and has no effect) since these OSses provide + * a reliable way to determine the executable name. + * + * Windows: + * This option is not used because Windows doesn't support signals. + */ + +//#define NO_PROCFS + +#endif // NO_PROCFS + + + + +#ifndef USE_AUXV +/* + * Linux only: + * Use the process' ELF aux vector to determine the executable name when restarting + * vlmcsd by sending a SIGHUP signal. This is actually the best method but is supported + * only with + * * the musl library + * * the glbic library 2.16 or newer + * + * It does NOT work with uclibc (most routers and other small devices) and glibc < 2.16. + * Use it only if your system supports it and you do not plan to use the binary on older systems. + * It won't work on debian 7 or Red Hat 6.x. + * + * It it safe to try this by yourself. vlmcsd won't compile if your system doesn't support it. + */ + +//#define USE_AUXV + +#endif // USE_AUXV + + + + +#ifndef _OPENSSL_NO_HMAC +/* + * If you configured vlmcsd to use OpenSSL (which you shouldn't) you may use this option + * to calculate the KMSv6 HMAC with internal code instead of using OpenSSL. + * + * This may be necessary for some embedded devices that have OpenSSL without HMAC support. + */ + +//#define _OPENSSL_NO_HMAC + +#endif // _OPENSSL_NO_HMAC + + + + +/* + * ---------------------------------------------------------------------------------------- + * Modes of operation + * ---------------------------------------------------------------------------------------- + */ + + +#ifndef USE_THREADS +/* + * Do not use fork() but threads to serve your clients. + * + * Unix-like operarting systems: + * You may use this or not. Entirely your choice. Threads do not require explicitly allocating + * a shared memory segment which might be a problem on some systems. Using fork() is more robust + * although the threaded version of vlmcsd is rock solid too. + * + * Some older unixoid OSses may not have pthreads. Do NOT use USE_THREADS and define NO_SIGHUP + * and NO_LIMIT instead to disable use of the pthreads, shared memory and semaphores. + * + * Cygwin: + * It is recommended to use threads since fork() is extremely slow (no copy on write) and somewhat + * unstable. + * + * Windows: + * This option has no effect since fork() is not supported. + */ + +//#define USE_THREADS + +#endif // USE_THREADS + + + + +#ifndef _CRYPTO_POLARSSL +/* + * Not available on native Windows. Can be used with Cygwin. + * + * Use PolarSSL for crypto routines if possible and if it is safe. There is not much benefit by using this + * options since it can be used for SHA256 and HMAC_SHA256 only. It cannot be used for AES calculations because + * KMSv6 uses a modified algorithm that PolarSSL does not support. KMSv4 CMAC is also unsupported since it uses + * a Rijndael keysize (160 bits) that is not part of the AES standard. + * + * It is strongly recommended not to use an external crypto library. + * + * Do not define both _CRYPTO_OPENSSL and _CRYPTO_POLARSSL + */ + +//#define _CRYPTO_POLARSSL + +#endif // _CRYPTO_POLARSSL + + + + +#ifndef _CRYPTO_OPENSSL +/* + * Not available on native Windows. Can be used with Cygwin. + * + * Use OpenSSL for crypto routines if possible and if it is safe. There is not much benefit by using this + * options since it can be used for SHA256 and HMAC_SHA256 only. It cannot be used for AES calculations because + * KMSv6 uses a modified algorithm that OpenSSL does not support. KMSv4 CMAC is also unsupported since it uses + * a Rijndael keysize (160 bits) that is not part of the AES standard. + * + * It is strongly recommended not to use an external crypto library. + * + * Do not define both _CRYPTO_OPENSSL and _CRYPTO_POLARSSL + */ + +//#define _CRYPTO_OPENSSL + +#endif // _CRYPTO_OPENSSL + + + + +#ifndef _USE_AES_FROM_OPENSSL +/* + * DANGEROUS: Tweak OpenSSL to perform KMSv4 CMAC and KMSv6 modified AES. This option creates the expanded + * AES key by itself and then applies modifications to it. OpenSSL will then perfom modified AES operations. + * + * This options tampers with internal structures of OpenSSL that are subject to change or may have a platform + * specific implementation. In this case your resulting binary can only perform KMSv5 operations. + * + * This option has no effect if _CRYPTO_OPENSSL is not defined. + * + * Don't use this except for your own research on the internals of OpenSSL. + */ + +//#define _USE_AES_FROM_OPENSSL + +#endif // _USE_AES_FROM_OPENSSL + + + + + +#ifndef _OPENSSL_SOFTWARE +/* + * Use this only if you have defined _CRYPTO_OPENSSL and _USE_AES_FROM_OPENSSL. It has no effect otherwise. + * + * This options assumes a different internal AES expanded key in OpenSSL which is used mostly if OpenSSL is + * compiled without support for hardware accelerated AES. It's worth a try if _USE_AES_FROM_OPENSSL doesn't work. + */ + +//#define _OPENSSL_SOFTWARE + +#endif // _OPENSSL_SOFTWARE + + + + +/* + * ------------------------------------------------------------------------------------------ + * Extra features not compiled by default because they are rarely needed + * ------------------------------------------------------------------------------------------ + */ + + +#ifndef INCLUDE_BETAS +/* + * Uncomment the following #define if you want obsolete beta/preview SKUs + * to be included in the extended product list. + */ + +//#define INCLUDE_BETAS +#endif + + + + +/* + * ---------------------------------------------------------------------------------------- + * Removal of features. Allows you to remove features of vlmcsd you do not need or want. + * Use it to get smaller binaries. This is especially useful on very small embedded devices. + * ---------------------------------------------------------------------------------------- + */ + + +#ifndef NO_EXTENDED_PRODUCT_LIST +/* + * Do not compile the extended product list. Removes the list of Activation GUIDs (aka + * Client SKU Id, License Id) and their respective product names (e.g. Windows 8.1 Enterprise). + * + * This affects logging only and does not have an effect on activation itself. As long as you + * do not also define NO_BASIC_PRODUCT_LIST more generic names like Windows 8.1 or Office 2013 + * will still be logged. Saves a lot of space without loosing much functionality. + * + */ + +//#define NO_EXTENDED_PRODUCT_LIST + +#endif // NO_EXTENDED_PRODUCT_LIST + + + + +#ifndef NO_BASIC_PRODUCT_LIST +/* + * Do not compile the basic product list. Removes the list KMS GUIDs (aka Server SKU Id) and their + * respective product names. Only affects logging not activation. This has a negative impact only + * if you activate a product that is not (yet) in the extended product list. On the other hand you + * do not save much space by not compiling this list. + */ + +//#define NO_BASIC_PRODUCT_LIST + +#endif // NO_BASIC_PRODUCT_LIST + + + + +#ifndef NO_VERBOSE_LOG +/* + * Removes the ability to do verbose logging and disables -v and -q in vlmcsd. It does not remove the -v + * option in the vlmcs client. Disables ini file directive LogVerbose. + */ + +//#define NO_VERBOSE_LOG + +#endif // NO_VERBOSE_LOG + + + + +#ifndef NO_LOG +/* + * Disables logging completely. You can neither log to a file nor to the console. -D and -f will + * start vlmcsd in foreground. -e will not be available. Disables ini file directive LogFile. + * Implies NO_VERBOSE_LOG, NO_EXTENDED_PRODUCT_LIST and NO_BASIC_PRODUCT_LIST. + */ + +//#define NO_LOG + +#endif // NO_LOG + + + + +#ifndef NO_RANDOM_EPID +/* + * Disables the ability to generate random ePIDs. Useful if you managed to grab ePID/HWID from a + * real KMS server and want to use these. Removes -r from the vlmcsd command line and the ini + * file directive RandomizationLevel (The randomization level will be harcoded to 0). + */ + +//#define NO_RANDOM_EPID + +#endif // NO_RANDOM_EPID + + + + +#ifndef NO_INI_FILE +/* + * Disables the ability to use a configuration file (aka ini file). Removes -i from the command line. + */ + +//#define NO_INI_FILE + +#endif // NO_INI_FILE + + + + +#ifndef NO_PID_FILE +/* + * Disables the abilty to write a pid file containing the process id of vlmcsd. If your init system + * does not need this feature, you can safely disables this but it won't save much space. Disables + * the use of -p from the command line and PidFile from the ini file. + */ + +//#define NO_PID_FILE + +#endif // NO_PID_FILE + + + + +#ifndef NO_USER_SWITCH +/* + * Disables switching to another uid and/or gid after starting the program and setting up the sockets. + * You cannot use -u anf -g on the command line as well as User and Group in the ini file. If your init system + * supports starting daemons as another uid/gid (user/group) you can disable this feature in vlmcsd as long as you + * do not need to run vlmcsd on a privileged port ( < 1024 on most systems). + * + * This setting has no effect on native Windows since -u and -g is not available anyway. It may be used with + * Cygwin. + */ + +//#define NO_USER_SWITCH + +#endif // NO_USER_SWITCH + + + + +#ifndef NO_HELP +/* + * Disables display of help in both vlmcsd and vlmcs. Saves some bytes but only makes sense if you have + * access to the man files vlmcsd.8 and vlmcs.1 + */ + +//#define NO_HELP + +#endif // NO_HELP + + + + +#ifndef NO_CUSTOM_INTERVALS +/* + * Disables the ability to specify custom interval for renewing and retrying activation. Newer versions of the Microsoft's + * KMS activation client (as in Win 8.1) do not honor these parameters anyway. Disable them to save some bytes. Removes + * -A and -R from the command line as well as ActivationInterval and RenewalInterval in the ini file. + */ + +//#define NO_CUSTOM_INTERVALS + +#endif // NO_CUSTOM_INTERVALS + + + + +#ifndef NO_SOCKETS +/* + * Disables standalone startup of vlmcsd. If you use this config directive, you must start vlmcsd from an internet + * superserver like inetd, xinetd, systemd or launchd. Disables -m, -t, -4, -6, -e, -f, -P and -L in the vlmcsd + * command line. Socket setup is the job of your superserver. + */ + +//#define NO_SOCKETS + +#endif // NO_SOCKETS + + + + +#ifndef NO_CL_PIDS +/* + * Disables the ability to specify ePIDs and HWID at the command line. You still may use them in the ini file. + * Removes -0, -3, -w and -H from the vlmcsd command line. + */ + +//#define NO_CL_PIDS + +#endif // NO_CL_PIDS + + + + +#ifndef NO_LIMIT +/* + * Disables the ability to limit the number of worker threads or processes that vlmcsd uses. While you should set a + * limit whenever possible, you may save some bytes by enabling that setting. If you do not use a limit, use vlmcsd + * in a "friendly" environment only, i.e. do not run it without a reasonable limit on the internet. + * + * Removes the ability to use -m in the vlmcsd command line and MaxWorkers in the ini file. + * + * Some older unixoid OSses may not have pthreads. Do NOT use USE_THREADS and define NO_SIGHUP + * and NO_LIMIT instead to disable use of the pthreads, shared memory and semaphores. + */ + +//#define NO_LIMIT + +#endif // NO_LIMIT + + + + +#ifndef NO_SIGHUP +/* + * Disables the ability to signal hangup (SIGHUP) to vlmcsd to restart it (rereading the ini file). The SIGHUP + * handler makes heavy use of OS specific code. It should not cause any trouble on Solaris, Mac OS X and iOS. On Linux + * use "#define USE_AUXV" (see troubleshooting options) if this is supported by your C runtime library. + * + * You may save some bytes by enabling this option. Use it also if the SIGHUP handler causes any trouble on your + * platform. Please note that with no SIGHUP handler at all. vlmcsd will simply terminate (uncleanly) if it receives + * the SIGHUP signal. This is the same behavior as with most other signals. + * + * This option has no effect on native Windows since Posix signaling is not supported. It can be used with Cygwin. + */ + +//#define NO_SIGHUP + +#endif // NO_SIGHUP + + + + +/* Don't change anything BELOW this line */ + + +#endif /* CONFIG_H_ */ diff --git a/crypto.c b/crypto.c new file mode 100644 index 00000000..042bfd80 --- /dev/null +++ b/crypto.c @@ -0,0 +1,328 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "crypto.h" +#include "endian.h" +#include + +const BYTE AesKeyV4[] = { + 0x05, 0x3D, 0x83, 0x07, 0xF9, 0xE5, 0xF0, 0x88, 0xEB, 0x5E, 0xA6, 0x68, 0x6C, 0xF0, 0x37, 0xC7, 0xE4, 0xEF, 0xD2, 0xD6}; + +const BYTE AesKeyV5[] = { + 0xCD, 0x7E, 0x79, 0x6F, 0x2A, 0xB2, 0x5D, 0xCB, 0x55, 0xFF, 0xC8, 0xEF, 0x83, 0x64, 0xC4, 0x70 }; + +const BYTE AesKeyV6[] = { + 0xA9, 0x4A, 0x41, 0x95, 0xE2, 0x01, 0x43, 0x2D, 0x9B, 0xCB, 0x46, 0x04, 0x05, 0xD8, 0x4A, 0x21 }; + +static const BYTE SBox[] = { + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16 +}; + + +void XorBlock(const BYTE *const in, const BYTE *out) // Ensure that this is always 32 bit aligned +{ + /*UAA64( out, 0 ) ^= UAA64( in, 0 ); + UAA64( out, 1 ) ^= UAA64( in, 1 );*/ + + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_WORDS; i++) + { + ((DWORD*)out)[i] ^= ((DWORD*)in)[i]; + } +} + +#define AddRoundKey(d, rk) XorBlock((const BYTE *)rk, (const BYTE *)d) + +#define Mul2(word) (((word & 0x7f7f7f7f) << 1) ^ (((word & 0x80808080) >> 7) * 0x1b)) +#define Mul3(word) (Mul2(word) ^ word) +#define Mul4(word) (Mul2(Mul2(word))) +#define Mul8(word) (Mul2(Mul2(Mul2(word)))) +#define Mul9(word) (Mul8(word) ^ word) +#define MulB(word) (Mul8(word) ^ Mul3(word)) +#define MulD(word) (Mul8(word) ^ Mul4(word) ^ word) +#define MulE(word) (Mul8(word) ^ Mul4(word) ^ Mul2(word)) + +//32 bit Galois Multiplication (generates bigger code than Macros) +/*static DWORD Mul(DWORD x, DWORD y) +{ + DWORD result = x, yTemp = y, log2; + + if (!y) return 0; + + for (log2 = 0; yTemp >>= 1; log2++ ) + { + result = Mul2(result); + } + + return result ^ Mul(x, y - (1 << log2)); +}*/ + + +void MixColumnsR(BYTE *restrict state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + #if defined(_CRYPTO_OPENSSL) && defined(_OPENSSL_SOFTWARE) && defined(_USE_AES_FROM_OPENSSL) //Always byte swap regardless of endianess + DWORD word = BS32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = BS32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #else + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #endif + } +} + + +static DWORD SubDword(DWORD v) +{ + BYTE *b = (BYTE *)&v; + uint_fast8_t i = 0; + + for (; i < sizeof(DWORD); i++) b[i] = SBox[b[i]]; + + return v; +} + + +void AesInitKey(AesCtx *Ctx, const BYTE *Key, int_fast8_t IsV6, int RijndaelKeyBytes) +{ + int RijndaelKeyDwords = RijndaelKeyBytes / sizeof(DWORD); + Ctx->rounds = (uint_fast8_t)(RijndaelKeyDwords + 6); + + static const DWORD RCon[] = { + 0x00000000, 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000 }; + + uint_fast8_t i; + DWORD temp; + + memcpy(Ctx->Key, Key, RijndaelKeyBytes); + + for ( i = RijndaelKeyDwords; i < ( Ctx->rounds + 1 ) << 2; i++ ) + { + temp = Ctx->Key[ i - 1 ]; + + if ( ( i % RijndaelKeyDwords ) == 0 ) + temp = BE32( SubDword( ROR32( BE32(temp), 24) ) ^ RCon[ i / RijndaelKeyDwords ] ); + + Ctx->Key[ i ] = Ctx->Key[ i - RijndaelKeyDwords ] ^ temp; + } + + if ( IsV6 ) + { + BYTE *_p = (BYTE *)Ctx->Key; + + _p[ 4 * 16 ] ^= 0x73; + _p[ 6 * 16 ] ^= 0x09; + _p[ 8 * 16 ] ^= 0xE4; + } +} + + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) || defined(_OPENSSL_SOFTWARE) +static void SubBytes(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBox[ block[i] ]; +} + + +static void ShiftRows(BYTE *state) +{ + BYTE bIn[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(bIn, state, AES_BLOCK_BYTES); + for (i = 0; i < AES_BLOCK_BYTES; i++) + { + state[i] = bIn[(i + ((i & 3) << 2)) & 0xf]; + } +}; + + +static void MixColumns(BYTE *state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(Mul2(word) ^ ROR32(Mul3(word), 8) ^ ROR32(word, 16) ^ ROR32(word, 24)); + } +} + + +void AesEncryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + for ( i = 0 ;; i += 4 ) + { + AddRoundKey(block, &Ctx->Key[ i ]); + SubBytes(block); + ShiftRows(block); + + if ( i >= ( Ctx->rounds - 1 ) << 2 ) break; + + MixColumns(block); + } + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); +} + + +void AesCmacV4(BYTE *Message, size_t MessageSize, BYTE *MacOut) +{ + size_t i; + BYTE mac[AES_BLOCK_BYTES]; + AesCtx Ctx; + + AesInitKey(&Ctx, AesKeyV4, FALSE, V4_KEY_BYTES); + + memset(mac, 0, sizeof(mac)); + memset(Message + MessageSize, 0, AES_BLOCK_BYTES); + Message[MessageSize] = 0x80; + + for (i = 0; i <= MessageSize; i += AES_BLOCK_BYTES) + { + XorBlock(Message + i, mac); + AesEncryptBlock(&Ctx, mac); + } + + memcpy(MacOut, mac, AES_BLOCK_BYTES); +} +#endif + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) + +static const BYTE SBoxR[] = { + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D +}; + + +static void ShiftRowsR(BYTE *state) +{ + BYTE b[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(b, state, AES_BLOCK_BYTES); + + for (i = 0; i < AES_BLOCK_BYTES; i++) + state[i] = b[(i - ((i & 0x3) << 2)) & 0xf]; +} + + +static void SubBytesR(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBoxR[ block[i] ]; +} + + +void AesEncryptCbc(const AesCtx *const Ctx, BYTE *restrict iv, BYTE *restrict data, size_t *restrict len) +{ + // Pad up to blocksize inclusive + size_t i; + uint_fast8_t pad = (~*len & (AES_BLOCK_BYTES - 1)) + 1; + + #if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 8) // gcc 4.8 memset bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56977 + for (i = 0; i < pad; i++) data[*len + i] = pad; + #else + memset(data + *len, pad, pad); + #endif + *len += pad; + + if ( iv ) XorBlock(iv, data); + AesEncryptBlock(Ctx, data); + + for (i = *len - AES_BLOCK_BYTES; i; i -= AES_BLOCK_BYTES) + { + XorBlock(data, data + AES_BLOCK_BYTES); + data += AES_BLOCK_BYTES; + AesEncryptBlock(Ctx, data); + } +} + + +void AesDecryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); + + for ( i = ( Ctx->rounds - 1 ) << 2 ;; i -= 4 ) + { + ShiftRowsR(block); + SubBytesR(block); + AddRoundKey(block, &Ctx->Key[ i ]); + + if ( i == 0 ) break; + + MixColumnsR(block); + } +} + + +void AesDecryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t len) +{ + BYTE *cc; + + for (cc = data + len - AES_BLOCK_BYTES; cc > data; cc -= AES_BLOCK_BYTES) + { + AesDecryptBlock(Ctx, cc); + XorBlock(cc - AES_BLOCK_BYTES, cc); + } + + AesDecryptBlock(Ctx, cc); + if ( iv ) XorBlock(iv, cc); +} +#endif // _CRYPTO_OPENSSL || OPENSSL_VERSION_NUMBER < 0x10000000L diff --git a/crypto.h b/crypto.h new file mode 100644 index 00000000..54cbde19 --- /dev/null +++ b/crypto.h @@ -0,0 +1,59 @@ +#ifndef __crypto_h +#define __crypto_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "types.h" +#include +#include +#include +#include +#include "endian.h" +#include + +//#define AES_ROUNDS (10) +#define AES_KEY_BYTES (16) // 128 Bits +#define AES_BLOCK_BYTES (16) +#define AES_BLOCK_WORDS (AES_BLOCK_BYTES / sizeof(DWORD)) +#define AES_KEY_DWORDS (AES_KEY_BYTES / sizeof(DWORD)) +//#define V4_ROUNDS (11) +#define V4_KEY_BYTES (20) // 160 Bits + +#define ROR32(v, n) ( (v) << (32 - n) | (v) >> n ) + +void XorBlock(const BYTE *const in, const BYTE *out); + +void AesCmacV4(BYTE *data, size_t len, BYTE *hash); + +extern const BYTE AesKeyV5[]; +extern const BYTE AesKeyV6[]; + +typedef struct { + DWORD Key[48]; // Supports a maximum of 160 key bits! + uint_fast8_t rounds; +} AesCtx; + +void AesInitKey(AesCtx *Ctx, const BYTE *Key, int_fast8_t IsV6, int AesKeyBytes); +void AesEncryptBlock(const AesCtx *const Ctx, BYTE *block); +void AesDecryptBlock(const AesCtx *const Ctx, BYTE *block); +void AesEncryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t *len); +void AesDecryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t len); +void MixColumnsR(BYTE *restrict state); + +#if defined(_CRYPTO_OPENSSL) +#include "crypto_openssl.h" + +#elif defined(_CRYPTO_POLARSSL) +#include "crypto_polarssl.h" + +#elif defined(_CRYPTO_WINDOWS) +#include "crypto_windows.h" + +#else +#include "crypto_internal.h" + +#endif +#endif // __crypto_h diff --git a/crypto_internal.c b/crypto_internal.c new file mode 100644 index 00000000..c0cf761b --- /dev/null +++ b/crypto_internal.c @@ -0,0 +1,212 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if !defined(_CRYPTO_OPENSSL) && !defined(_CRYPTO_POLARSSL) && !defined(_CRYPTO_WINDOWS) +#include "crypto_internal.h" +#include "endian.h" + +#define F0(x, y, z) ( ((x) & (y)) | (~(x) & (z)) ) +#define F1(x, y, z) ( ((x) & (y)) | ((x) & (z)) | ((y) & (z)) ) + +#define SI1(x) ( ROR32(x, 2 ) ^ ROR32(x, 13) ^ ROR32(x, 22) ) +#define SI2(x) ( ROR32(x, 6 ) ^ ROR32(x, 11) ^ ROR32(x, 25) ) +#define SI3(x) ( ROR32(x, 7 ) ^ ROR32(x, 18) ^ ((x) >> 3 ) ) +#define SI4(x) ( ROR32(x, 17) ^ ROR32(x, 19) ^ ((x) >> 10) ) + +static const DWORD k[] = { + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, + 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, + 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, + 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, + 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, + 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +}; + + +static void Sha256Init(Sha256Ctx *Ctx) +{ + Ctx->State[0] = 0x6A09E667; + Ctx->State[1] = 0xBB67AE85; + Ctx->State[2] = 0x3C6EF372; + Ctx->State[3] = 0xA54FF53A; + Ctx->State[4] = 0x510E527F; + Ctx->State[5] = 0x9B05688C; + Ctx->State[6] = 0x1F83D9AB; + Ctx->State[7] = 0x5BE0CD19; + Ctx->Len = 0; +} + + +static void Sha256ProcessBlock(Sha256Ctx *Ctx, BYTE *block) +{ + unsigned int i; + DWORD w[64], temp1, temp2; + DWORD a = Ctx->State[0]; + DWORD b = Ctx->State[1]; + DWORD c = Ctx->State[2]; + DWORD d = Ctx->State[3]; + DWORD e = Ctx->State[4]; + DWORD f = Ctx->State[5]; + DWORD g = Ctx->State[6]; + DWORD h = Ctx->State[7]; + + for (i = 0; i < 16; i++) + //w[ i ] = GET_UAA32BE(block, i); + w[i] = BE32(((DWORD*)block)[i]); + + for (i = 16; i < 64; i++) + w[ i ] = SI4(w[ i - 2 ]) + w[ i - 7 ] + SI3(w[ i - 15 ]) + w[ i - 16 ]; + + for (i = 0; i < 64; i++) + { + temp1 = h + SI2(e) + F0(e, f, g) + k[ i ] + w[ i ]; + temp2 = SI1(a) + F1(a, b, c); + + h = g; + g = f; + f = e; + e = d + temp1; + d = c; + c = b; + b = a; + a = temp1 + temp2; + } + + Ctx->State[0] += a; + Ctx->State[1] += b; + Ctx->State[2] += c; + Ctx->State[3] += d; + Ctx->State[4] += e; + Ctx->State[5] += f; + Ctx->State[6] += g; + Ctx->State[7] += h; +} + + +static void Sha256Update(Sha256Ctx *Ctx, BYTE *data, size_t len) +{ + unsigned int b_len = Ctx->Len & 63, + r_len = (b_len ^ 63) + 1; + + Ctx->Len += len; + + if ( len < r_len ) + { + memcpy(Ctx->Buffer + b_len, data, len); + return; + } + + if ( r_len < 64 ) + { + memcpy(Ctx->Buffer + b_len, data, r_len); + len -= r_len; + data += r_len; + Sha256ProcessBlock(Ctx, Ctx->Buffer); + } + + for (; len >= 64; len -= 64, data += 64) + Sha256ProcessBlock(Ctx, data); + + if ( len ) memcpy(Ctx->Buffer, data, len); +} + + +static void Sha256Finish(Sha256Ctx *Ctx, BYTE *hash) +{ + unsigned int i, b_len = Ctx->Len & 63; + + Ctx->Buffer[ b_len ] = 0x80; + if ( b_len ^ 63 ) memset(Ctx->Buffer + b_len + 1, 0, b_len ^ 63); + + if ( b_len >= 56 ) + { + Sha256ProcessBlock(Ctx, Ctx->Buffer); + memset(Ctx->Buffer, 0, 56); + } + + //PUT_UAA64BE(Ctx->Buffer, (unsigned long long)(Ctx->Len * 8), 7); + ((uint64_t*)Ctx->Buffer)[7] = BE64((uint64_t)Ctx->Len << 3); + Sha256ProcessBlock(Ctx, Ctx->Buffer); + + for (i = 0; i < 8; i++) + //PUT_UAA32BE(hash, Ctx->State[i], i); + ((DWORD*)hash)[i] = BE32(Ctx->State[i]); + +} + + +void Sha256(BYTE *data, size_t len, BYTE *hash) +{ + Sha256Ctx Ctx; + + Sha256Init(&Ctx); + Sha256Update(&Ctx, data, len); + Sha256Finish(&Ctx, hash); +} + + +static void _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen) +{ + BYTE IPad[64]; + unsigned int i; + + memset(IPad, 0x36, sizeof(IPad)); + memset(Ctx->OPad, 0x5C, sizeof(Ctx->OPad)); + + if ( klen > 64 ) + { + BYTE *temp = (BYTE*)alloca(32); + Sha256(key, klen, temp); + klen = 32; + key = temp; + } + + for (i = 0; i < klen; i++) + { + IPad[ i ] ^= key[ i ]; + Ctx->OPad[ i ] ^= key[ i ]; + } + + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, IPad, sizeof(IPad)); +} + + +static void _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len) +{ + Sha256Update(&Ctx->ShaCtx, data, len); +} + + +static void _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac) +{ + BYTE temp[32]; + + Sha256Finish(&Ctx->ShaCtx, temp); + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, Ctx->OPad, sizeof(Ctx->OPad)); + Sha256Update(&Ctx->ShaCtx, temp, sizeof(temp)); + Sha256Finish(&Ctx->ShaCtx, hmac); +} + + + +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ + Sha256HmacCtx Ctx; + _Sha256HmacInit(&Ctx, key, 16); + _Sha256HmacUpdate(&Ctx, data, len); + _Sha256HmacFinish(&Ctx, hmac); + return TRUE; +} + + +#endif // No external Crypto + diff --git a/crypto_internal.h b/crypto_internal.h new file mode 100644 index 00000000..f99ca0a8 --- /dev/null +++ b/crypto_internal.h @@ -0,0 +1,38 @@ +#ifndef __crypto_internal_h +#define __crypto_internal_h + +#if !defined(_CRYPTO_OPENSSL) && !defined(_CRYPTO_POLARSSL) && !defined(_CRYPTO_WINDOWS) + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "crypto.h" + +typedef struct { + DWORD State[8]; + BYTE Buffer[64]; + unsigned int Len; +} Sha256Ctx; + +typedef struct { + Sha256Ctx ShaCtx; + BYTE OPad[64]; +} Sha256HmacCtx; + +void Sha256(BYTE *data, size_t len, BYTE *hash); +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac); + +//void _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen); +//void _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len); +//void _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac); + +//#define Sha256HmacInit(c, k, l) ( _Sha256HmacInit(c, k, l), !0 ) +//#define Sha256HmacUpdate(c, d, l) ( _Sha256HmacUpdate(c, d, l), !0 ) +//#define Sha256HmacFinish(c, h) ( _Sha256HmacFinish(c, h), !0 ) + + +#endif // !defined(_CRYPTO_OPENSSL) && !defined(_CRYPTO_POLARSSL) && !defined(_CRYPTO_WINDOWS) + +#endif // __crypto_internal_h diff --git a/crypto_openssl.c b/crypto_openssl.c new file mode 100644 index 00000000..f8550c7b --- /dev/null +++ b/crypto_openssl.c @@ -0,0 +1,269 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if defined(_CRYPTO_OPENSSL) + +#include "crypto.h" +#include "crypto_openssl.h" // Required for Eclipse only +#include +#include "endian.h" + + +#ifndef _OPENSSL_NO_HMAC + +int Sha256HmacInit_OpenSSL(HMAC_CTX *c, const void *k, int l) +{ + HMAC_CTX_init(c); + #if OPENSSL_VERSION_NUMBER >= 0x10000000L + int result = + #else + int result = TRUE; + #endif + HMAC_Init_ex(c, k, l, EVP_sha256(), NULL); + return result; +} + +int Sha256HmacFinish_OpenSSL(HMAC_CTX *c, unsigned char *h, unsigned int *l) +{ + #if OPENSSL_VERSION_NUMBER >= 0x10000000L + int result = + #else + int result = !0; + #endif + HMAC_Final(c, h, l); + HMAC_CTX_cleanup(c); + return result; +} + +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ + HMAC_CTX Ctx; + +# if OPENSSL_VERSION_NUMBER >= 0x10000000L + + return + Sha256HmacInit_OpenSSL(&Ctx, key, 16) && + HMAC_Update(&Ctx, data, len) && + Sha256HmacFinish_OpenSSL(&Ctx, hmac, NULL); + +# else // OpenSSL 0.9.x + + Sha256HmacInit_OpenSSL(&Ctx, key, 16); + HMAC_Update(&Ctx, data, len); + Sha256HmacFinish_OpenSSL(&Ctx, hmac, NULL); + return TRUE; + +# endif +} + +#else // _OPENSSL_NO_HMAC (some routers have OpenSSL without support for HMAC) + +int _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen) +{ + BYTE IPad[64]; + unsigned int i; + + memset(IPad, 0x36, sizeof(IPad)); + memset(Ctx->OPad, 0x5C, sizeof(Ctx->OPad)); + + if ( klen > 64 ) + { + BYTE *temp = (BYTE*)alloca(32); + SHA256(key, klen, temp); + klen = 32; + key = temp; + } + + for (i = 0; i < klen; i++) + { + IPad[ i ] ^= key[ i ]; + Ctx->OPad[ i ] ^= key[ i ]; + } + + SHA256_Init(&Ctx->ShaCtx); + return SHA256_Update(&Ctx->ShaCtx, IPad, sizeof(IPad)); +} + +int _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len) +{ + int rc = SHA256_Update(&Ctx->ShaCtx, data, len); + return rc; +} + +int _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac, void* dummy) +{ + BYTE temp[32]; + + SHA256_Final(temp, &Ctx->ShaCtx); + SHA256_Init(&Ctx->ShaCtx); + SHA256_Update(&Ctx->ShaCtx, Ctx->OPad, sizeof(Ctx->OPad)); + SHA256_Update(&Ctx->ShaCtx, temp, sizeof(temp)); + return SHA256_Final(hmac, &Ctx->ShaCtx); +} + +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ + Sha256HmacCtx Ctx; + _Sha256HmacInit(&Ctx, key, 16); + _Sha256HmacUpdate(&Ctx, data, len); + _Sha256HmacFinish(&Ctx, hmac, NULL); + return TRUE; +} +#endif + +#if defined(_USE_AES_FROM_OPENSSL) +void TransformOpenSslEncryptKey(AES_KEY *k, const AesCtx *const Ctx) +{ + uint32_t *rk_OpenSSL = k->rd_key, *rk_vlmcsd = (uint32_t*)Ctx->Key; + k->rounds = Ctx->rounds; + + for (; rk_OpenSSL < k->rd_key + ((k->rounds + 1) << 2); rk_OpenSSL++, rk_vlmcsd++) + { + #ifdef _OPENSSL_SOFTWARE + *rk_OpenSSL = BE32(*rk_vlmcsd); + #else + *rk_OpenSSL = LE32(*rk_vlmcsd); + #endif + } +} + +void TransformOpenSslDecryptKey(AES_KEY *k, const AesCtx *const Ctx) +{ + uint_fast8_t i; + + #ifdef _DEBUG_OPENSSL + AES_set_decrypt_key((BYTE*)Ctx->Key, 128, k); + errorout("Correct V5 round key:"); + + for (i = 0; i < (Ctx->rounds + 1) << 4; i++) + { + if (!(i % 16)) errorout("\n"); + if (!(i % 4)) errorout(" "); + errorout("%02X", ((BYTE*)(k->rd_key))[i]); + } + + errorout("\n"); + #endif + + k->rounds = Ctx->rounds; + + /* invert the order of the round keys blockwise (1 Block = AES_BLOCK_SIZE = 16): */ + + for (i = 0; i < (Ctx->rounds + 1) << 2; i++) + { + #ifdef _OPENSSL_SOFTWARE + k->rd_key[((Ctx->rounds-(i >> 2)) << 2) + (i & 3)] = BE32(Ctx->Key[i]); + #else + k->rd_key[((Ctx->rounds-(i >> 2)) << 2) + (i & 3)] = LE32(Ctx->Key[i]); + #endif + } + + /* apply the inverse MixColumn transform to all round keys but the first and the last: */ + + uint32_t *rk = k->rd_key + 4; + + for (i = 0; i < (Ctx->rounds - 1); i++) + { + MixColumnsR((BYTE*)(rk + (i << 2))); + } + + #ifdef _DEBUG_OPENSSL + errorout("Real round key:"); + + for (i = 0; i < (Ctx->rounds + 1) << 4; i++) + { + if (!(i % 16)) errorout("\n"); + if (!(i % 4)) errorout(" "); + errorout("%02X", ((BYTE*)(k->rd_key))[i]); + } + + errorout("\n"); + #endif +} + +static BYTE NullIV[AES_BLOCK_SIZE + 8]; // OpenSSL may overwrite bytes behind IV + +void AesEncryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t *len) +{ + AES_KEY k; + + // OpenSSL overwrites IV plus 4 bytes + BYTE localIV[24]; // 4 spare bytes for safety + if (iv) memcpy(localIV, iv, AES_BLOCK_SIZE); + + // OpenSSL Low-Level APIs do not pad. Could use EVP API instead but needs more code to access the expanded key + uint_fast8_t pad = (~*len & (AES_BLOCK_SIZE - 1)) + 1; + + #if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 8) // gcc 4.8 memset bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56977 + size_t i; + for (i = 0; i < pad; i++) data[*len + i] = pad; + #else + memset(data + *len, pad, pad); + #endif + *len += pad; + + memset(NullIV, 0, sizeof(NullIV)); + + TransformOpenSslEncryptKey(&k, Ctx); + + AES_cbc_encrypt(data, data, *len, &k, iv ? localIV : NullIV, AES_ENCRYPT); +} + +void AesDecryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + AES_KEY k; + + TransformOpenSslDecryptKey(&k, Ctx); + AES_decrypt(block, block, &k); +} + +#if defined(_CRYPTO_OPENSSL) && defined(_USE_AES_FROM_OPENSSL) && !defined(_OPENSSL_SOFTWARE) +void AesEncryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + AES_KEY k; + + TransformOpenSslEncryptKey(&k, Ctx); + AES_encrypt(block, block, &k); +} +#endif + +void AesDecryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t len) +{ + AES_KEY k; + + memset(NullIV, 0, sizeof(NullIV)); + + TransformOpenSslDecryptKey(&k, Ctx); + AES_cbc_encrypt(data, data, len, &k, iv ? iv : NullIV, AES_DECRYPT); +} + +#ifndef _OPENSSL_SOFTWARE +void AesCmacV4(BYTE *Message, size_t MessageSize, BYTE *HashOut) +{ + size_t i; + BYTE hash[AES_BLOCK_BYTES]; + AesCtx Ctx; + AES_KEY k; + + AesInitKey(&Ctx, AesKeyV4, FALSE, V4_KEY_BYTES); + TransformOpenSslEncryptKey(&k, &Ctx); + + memset(hash, 0, sizeof(hash)); + memset(Message + MessageSize, 0, AES_BLOCK_BYTES); + Message[MessageSize] = 0x80; + + for (i = 0; i <= MessageSize; i += AES_BLOCK_BYTES) + { + XorBlock(Message + i, hash); + AES_encrypt(hash, hash, &k); + } + + memcpy(HashOut, hash, AES_BLOCK_BYTES); +} +#endif // !_OPENSSL_SOFTWARE + +#endif // defined(_USE_AES_FROM_OPENSSL) + +#endif // _CRYPTO_OPENSSL diff --git a/crypto_openssl.h b/crypto_openssl.h new file mode 100644 index 00000000..d7931f77 --- /dev/null +++ b/crypto_openssl.h @@ -0,0 +1,53 @@ +#ifndef __crypto_openssl_h +#define __crypto_openssl_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include +#include +#include "crypto.h" + +#define Sha256(d, l, h) SHA256(d, l, h) +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac); + +#ifndef _OPENSSL_NO_HMAC +#define Sha256HmacCtx HMAC_CTX +#else +typedef struct { + SHA256_CTX ShaCtx; + BYTE OPad[64]; +} Sha256HmacCtx; +#endif + +#ifndef _OPENSSL_NO_HMAC + +#define Sha256HmacInit(c, k, l) Sha256HmacInit_OpenSSL(c, k, l) +#define Sha256HmacFinish(c, h) Sha256HmacFinish_OpenSSL(c, h, NULL) + +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +#define Sha256HmacUpdate(c, d, l) HMAC_Update(c, d, l) +#else // OPENSSL_VERSION_NUMBER < 0x10000000L +#define Sha256HmacUpdate(c, d, l) (HMAC_Update(c, d, l), !0) +#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L + +int Sha256HmacInit_OpenSSL(HMAC_CTX *c, const void *k, int l); +int Sha256HmacFinish_OpenSSL(HMAC_CTX *c, unsigned char *h, unsigned int *l); + +#else // _OPENSSL_NO_HMAC + +int _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen); +int _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len); +int _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac, void* dummy); +#define Sha256HmacInit(c, k, l) _Sha256HmacInit(c, k, l) +#define Sha256HmacFinish(c, h) _Sha256HmacFinish(c, h, NULL) +#define Sha256HmacUpdate(c, d, l) _Sha256HmacUpdate(c, d, l) + +#endif // _OPENSSL_NO_HMAC + +extern const BYTE AesKeyV4[]; +#endif // __crypto_openssl_h diff --git a/crypto_polarssl.h b/crypto_polarssl.h new file mode 100644 index 00000000..04748878 --- /dev/null +++ b/crypto_polarssl.h @@ -0,0 +1,39 @@ +#ifndef __crypto_polarssl_h +#define __crypto_polarssl_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include "crypto.h" + +#if POLARSSL_VERSION_NUMBER >= 0x01030000 + +#include + +#define Sha256(d, l, h) sha256(d, l, h, 0) + +#define Sha256HmacCtx sha256_context +#define Sha256HmacInit(c, k, l) ( sha256_hmac_starts(c, k, l, 0), !0 ) +#define Sha256HmacUpdate(c, d, l) ( sha256_hmac_update(c, d, l), !0 ) +#define Sha256HmacFinish(c, h) ( sha256_hmac_finish(c, h), !0 ) +#define Sha256Hmac(k, d, l, h) ( sha256_hmac(k, 16, d, l, h, FALSE), !0 ) + +#else // POLARSSL_VERSION_NUMBER + +#include + +#define Sha256(d, l, h) sha2(d, l, h, 0) + +#define Sha256HmacCtx sha2_context +#define Sha256HmacInit(c, k, l) ( sha2_hmac_starts(c, k, l, 0), !0 ) +#define Sha256HmacUpdate(c, d, l) ( sha2_hmac_update(c, d, l), !0 ) +#define Sha256HmacFinish(c, h) ( sha2_hmac_finish(c, h), !0 ) +#define Sha256Hmac(k, d, l, h) ( sha2_hmac(k, 16, d, l, h, FALSE), !0 ) + +#endif // POLARSSL_VERSION_NUMBER +#endif // __crypto_polarssl_h + + diff --git a/crypto_windows.c b/crypto_windows.c new file mode 100644 index 00000000..d8443969 --- /dev/null +++ b/crypto_windows.c @@ -0,0 +1,170 @@ +/* + * crypto_windows.c + */ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef _CRYPTO_WINDOWS + +#if !_WIN32 && !__CYGWIN__ +#error You cannot use Windows CryptoAPI on non-Windows platforms +#else // _WIN32 || __CYGWIN__ + +#include "crypto_windows.h" + + +typedef struct _HMAC_KEYBLOB +{ + BLOBHEADER hdr; + DWORD dwKeySize; + BYTE KeyData[16]; +} HMAC_KEYBLOB; + + +/* + * MingW and Cygwin define NULL as ((void*)0) (Posix standard) which you can't assign to + * non-pointer types without compiler warning. Thus we use the following + */ +#define NULLHANDLE 0 +#define NULLFLAGS 0 + + +static HCRYPTPROV hRsaAesProvider = 0; // Needs to be initialized just once per process + + + +static int_fast8_t AcquireCryptContext() +{ + if (!hRsaAesProvider) + { + return CryptAcquireContextW + ( + &hRsaAesProvider, // Provider handle + NULL, // No key container name + NULL, // Default provider + PROV_RSA_AES, // Provides SHA and AES + CRYPT_VERIFYCONTEXT // We don't need access to persistent keys + ); + } + + return TRUE; +} + + +int_fast8_t Sha256(BYTE* restrict data, DWORD DataSize, BYTE* restrict hash) +{ + HCRYPTHASH hHash = 0; + DWORD HashSize = 32; + + int_fast8_t success = + AcquireCryptContext() && + + CryptCreateHash + ( + hRsaAesProvider,// Provider handle + CALG_SHA_256, // Algorithm + NULLHANDLE, // SHA256 requires no key + NULLFLAGS, // Use default flags + &hHash // Handle for hashing + ) && + + CryptHashData + ( + hHash, // Handle + data, // data to hash + DataSize, // size of data + NULLFLAGS // Use default flags + ) && + + CryptGetHashParam + ( + hHash, // Handle + HP_HASHVAL, // what you actually want to get (the resulting hash) + hash, // data to retrieve + &HashSize, // size of data + NULLFLAGS // currently reserved (as of this writing) + ); + + if (hHash) CryptDestroyHash(hHash); + + return success; +} + + +int_fast8_t Sha256Hmac(const BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ +# ifndef USE_THREADS // In fork() mode thread-safety is not required + static +# endif + HMAC_KEYBLOB hmackeyblob = { + // Type, Version, Algorithm + { PLAINTEXTKEYBLOB, CUR_BLOB_VERSION, 0, CALG_RC2 }, + // Key length + 16 + }; + + HCRYPTKEY hKey = NULLHANDLE; + HCRYPTHASH hHmacHash = NULLHANDLE; + HMAC_INFO HmacInfo = { 0 }; + DWORD dwHmacSize = 32; + + HmacInfo.HashAlgid = CALG_SHA_256; + memcpy(hmackeyblob.KeyData, key, sizeof(hmackeyblob.KeyData)); + + BOOL success = + AcquireCryptContext() && + + CryptImportKey + ( + hRsaAesProvider, // provider handle + (PBYTE)&hmackeyblob, // the actual key MS blob format + sizeof(HMAC_KEYBLOB), // size of the entire blob + NULLHANDLE, // password/key for the key store (none required here) + NULLFLAGS, // default flags + &hKey // key handle to retrieve (must be kept until you finish hashing) + ) && + + CryptCreateHash + ( + hRsaAesProvider, // provider handle + CALG_HMAC, // the actual key MS blob format + hKey, // size of the entire blob + NULLFLAGS, // password/key for the key store (none required here) + &hHmacHash // default flags + ) && // key handle to retrieve (must be kept until you finish hashing) + + CryptSetHashParam + ( + hHmacHash, // hash handle + HP_HMAC_INFO, // parameter you want to set + (PBYTE)&HmacInfo, // the HMAC parameters (SHA256 with default ipad and opad) + NULLFLAGS // flags are reserved up to Windows 8.1 + ) && + + CryptHashData + ( + hHmacHash, // hash handle + data, // Pointer to data you want to hash + len, // data length + NULLFLAGS // default flags + ) && + + CryptGetHashParam + ( + hHmacHash, // hash handle + HP_HASHVAL, // what you actually want to get (the resulting HMAC) + hmac, // data to retrieve + &dwHmacSize, // size of data + NULLFLAGS // currently reserved (as of this writing) + ); + + if (hKey) CryptDestroyKey(hKey); + if (hHmacHash) CryptDestroyHash(hHmacHash); + + return success; +} + +#endif // _WIN32 || __CYGWIN__ +#endif // _CRYPTO_WINDOWS diff --git a/crypto_windows.h b/crypto_windows.h new file mode 100644 index 00000000..6ab8c98e --- /dev/null +++ b/crypto_windows.h @@ -0,0 +1,31 @@ +/* + * crypto_windows.h + */ + +#ifdef _CRYPTO_WINDOWS +#ifndef CRYPTO_WINDOWS_H_ +#define CRYPTO_WINDOWS_H_ + +#if !_WIN32 && !__CYGWIN__ +#error You cannot use Windows CryptoAPI on non-Windows platforms +#else // _WIN32 || __CYGWIN__ + +#include "types.h" + +typedef struct _Sha2356HmacCtx +{ + HCRYPTHASH hHmac; + HCRYPTKEY hKey; +} Sha256HmacCtx; + +int_fast8_t Sha256(BYTE *data, DWORD len, BYTE *hash); +int_fast8_t Sha256Hmac(const BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac); + +/*int_fast8_t Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, uint8_t keySize); +int_fast8_t Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, DWORD len); +int_fast8_t Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac);*/ + + +#endif // _WIN32 || __CYGWIN__ +#endif /* CRYPTO_WINDOWS_H_ */ +#endif // _CRYPTO_WINDOWS diff --git a/dns_srv.c b/dns_srv.c new file mode 100644 index 00000000..6d31e35a --- /dev/null +++ b/dns_srv.c @@ -0,0 +1,330 @@ +/* + * dns_srv.c + * + * This file contains the code for KMS SRV record lookup in DNS (_vlmcs._tcp.example.com IN SRV 0 0 1688 mykms.example.com) + * + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef NO_DNS + +#include "dns_srv.h" + +#include +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +//#ifndef DNS_PARSER_INTERNAL +#if __ANDROID__ +#include +#include "nameser.h" +#include "resolv.h" +#else // other Unix non-Android +#include +#include +#include +#endif // other Unix non-Android +//#endif // DNS_PARSER_INTERNAL +#else // WIN32 +#include +#endif // WIN32 + +#include "helpers.h" +#include "output.h" +#include "endian.h" + +#if defined(DNS_PARSER_INTERNAL) && !defined(_WIN32) + +#include "ns_name.h" +#include "ns_parse.h" + +// Define macros to redirect DNS parser functions to internal versions + +#undef ns_msg +#undef ns_initparse +#undef ns_parserr +#undef ns_rr +#undef ns_name_uncompress +#undef ns_msg_base +#undef ns_msg_end +#undef ns_rr_rdata +#undef ns_rr_type +#undef ns_msg_count +#undef ns_rr_class +#undef ns_s_an +#define ns_msg ns_msg_vlmcsd +#define ns_initparse ns_initparse_vlmcsd +#define ns_parserr ns_parserr_vlmcsd +#define ns_rr ns_rr_vlmcsd +#define ns_name_uncompress ns_name_uncompress_vlmcsd +#define ns_msg_base ns_msg_base_vlmcsd +#define ns_msg_end ns_msg_end_vlmcsd +#define ns_rr_rdata ns_rr_rdata_vlmcsd +#define ns_rr_type ns_rr_type_vlmcsd +#define ns_msg_count ns_msg_count_vlmcsd +#define ns_rr_class ns_rr_class_vlmcsd +#define ns_s_an ns_s_an_vlmcsd + +#ifndef NS_MAXLABEL +#define NS_MAXLABEL 63 +#endif + +#endif // defined(DNS_PARSER_INTERNAL) && !defined(_WIN32) + + +//TODO: maybe move to helpers.c +static unsigned int isqrt(unsigned int n) +{ + unsigned int c = 0x8000; + unsigned int g = 0x8000; + + for(;;) + { + if(g*g > n) + g ^= c; + + c >>= 1; + + if(c == 0) return g; + + g |= c; + } +} + + +/* + * Compare function for qsort to sort SRV records by priority and weight + * random_weight must be product of weight from SRV record and square root of a random number + */ +static int kmsServerListCompareFunc1(const void* a, const void* b) +{ + if ( !a && !b) return 0; + if ( a && !b) return -1; + if ( !a && b) return 1; + + int priority_order = (int)((*(kms_server_dns_ptr*)a)->priority) - ((int)(*(kms_server_dns_ptr*)b)->priority); + + if (priority_order) return priority_order; + + return (int)((*(kms_server_dns_ptr*)b)->random_weight) - ((int)(*(kms_server_dns_ptr*)a)->random_weight); +} + +/* Sort resulting SRV records */ +void sortSrvRecords(kms_server_dns_ptr* serverlist, const int answers) +{ + int i; + + for (i = 0; i < answers; i++) + { + serverlist[i]->random_weight = (rand32() % 256) * isqrt(serverlist[i]->weight * 1000); + } + + qsort(serverlist, answers, sizeof(kms_server_dns_ptr), kmsServerListCompareFunc1); +} + + +#define RECEIVE_BUFFER_SIZE 2048 +#ifndef _WIN32 // UNIX resolver + +/* + * Retrieves a raw DNS answer (a buffer of what came over the net) + * Result must be parsed + */ +static int getDnsRawAnswer(const char *restrict query, unsigned char** receive_buffer) +{ + if (res_init() < 0) + { + errorout("Cannot initialize resolver: %s", strerror(errno)); + return 0; + } + + //if(!(*receive_buffer = (unsigned char*)malloc(RECEIVE_BUFFER_SIZE))) OutOfMemory(); + *receive_buffer = (unsigned char*)vlmcsd_malloc(RECEIVE_BUFFER_SIZE); + + int bytes_received; + + if (*query == '.') + { +# if __ANDROID__ || __GLIBC__ /* including __UCLIBC__*/ || __APPLE__ || __CYGWIN__ || __FreeBSD__ || __NetBSD__ || __DragonFly__ || __OpenBSD__ || __sun__ + bytes_received = res_querydomain("_vlmcs._tcp", query + 1, ns_c_in, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); +# else + char* querystring = (char*)alloca(strlen(query) + 12); + strcpy(querystring, "_vlmcs._tcp"); + strcat(querystring, query); + bytes_received = res_query(querystring, C_IN, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); +# endif + } + else + { + bytes_received = res_search("_vlmcs._tcp", ns_c_in, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); + } + + if (bytes_received < 0) + { + errorout("Fatal: DNS query to %s%s failed: %s\n", "_vlmcs._tcp", *query == '.' ? query : "", hstrerror(h_errno)); + return 0; + } + + return bytes_received; +} + +/* + * Retrieves an unsorted array of SRV records (Unix / Posix) + */ +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *restrict query) +{ + unsigned char* receive_buffer; + *serverlist = NULL; + + int bytes_received = getDnsRawAnswer(query, &receive_buffer); + + if (bytes_received == 0) return 0; + + ns_msg msg; + + if (ns_initparse(receive_buffer, bytes_received, &msg) < 0) + { + errorout("Fatal: Incorrect DNS response: %s\n", strerror(errno)); + free(receive_buffer); + return 0; + } + + uint16_t i, answers = ns_msg_count(msg, ns_s_an); + //if(!(*serverlist = (kms_server_dns_ptr*)malloc(answers * sizeof(kms_server_dns_ptr)))) OutOfMemory(); + *serverlist = (kms_server_dns_ptr*)malloc(answers * sizeof(kms_server_dns_ptr)); + + memset(*serverlist, 0, answers * sizeof(kms_server_dns_ptr)); + + for (i = 0; i < answers; i++) + { + ns_rr rr; + + if (ns_parserr(&msg, ns_s_an, i, &rr) < 0) + { + errorout("Warning: Error in DNS resource record: %s\n", strerror(errno)); + continue; + } + + if (ns_rr_type(rr) != ns_t_srv) + { + errorout("Warning: DNS server returned non-SRV record\n"); + continue; + } + + if (ns_rr_class(rr) != ns_c_in) + { + errorout("Warning: DNS server returned non-IN class record\n"); + continue; + } + + dns_srv_record_ptr srvrecord = (dns_srv_record_ptr)ns_rr_rdata(rr); + kms_server_dns_ptr kms_server = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + (*serverlist)[i] = kms_server; + + if (ns_name_uncompress(ns_msg_base(msg), ns_msg_end(msg), srvrecord->name, kms_server->serverName, sizeof(kms_server->serverName)) < 0) + { + errorout("Warning: No valid DNS name returned in SRV record: %s\n", strerror(errno)); + continue; + } + + sprintf(kms_server->serverName + strlen(kms_server->serverName), ":%hu", GET_UA16BE(&srvrecord->port)); + kms_server->priority = GET_UA16BE(&srvrecord->priority); + kms_server->weight = GET_UA16BE(&srvrecord->weight); + + } + + free(receive_buffer); + return answers; +} + +#else // WIN32 (Windows Resolver) + +/* + * Retrieves an unsorted array of SRV records (Windows) + */ +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *const restrict query) +{ +# define MAX_DNS_NAME_SIZE 254 + *serverlist = NULL; + PDNS_RECORD receive_buffer; + char dnsDomain[MAX_DNS_NAME_SIZE]; + char FqdnQuery[MAX_DNS_NAME_SIZE]; + DWORD size = MAX_DNS_NAME_SIZE; + DNS_STATUS result; + int answers = 0; + PDNS_RECORD dns_iterator; + + if (*query == '-') + { + if (!GetComputerNameExA(ComputerNamePhysicalDnsDomain, dnsDomain, &size)) + { + errorout("Fatal: Could not determine computer's DNS name: %s\n", vlmcsd_strerror(GetLastError())); + return 0; + } + + strcpy(FqdnQuery, "_vlmcs._tcp."); + strncat(FqdnQuery, dnsDomain, MAX_DNS_NAME_SIZE - 12); + } + else + { + strcpy(FqdnQuery, "_vlmcs._tcp"); + strncat(FqdnQuery, query, MAX_DNS_NAME_SIZE - 11); + } + + if ((result = DnsQuery_UTF8(FqdnQuery, DNS_TYPE_SRV, 0, NULL, &receive_buffer, NULL)) != 0) + { + errorout("Fatal: DNS query to %s failed: %s\n", FqdnQuery, vlmcsd_strerror(result)); + return 0; + } + + for (dns_iterator = receive_buffer; dns_iterator; dns_iterator = dns_iterator->pNext) + { + if (dns_iterator->Flags.S.Section != 1) continue; + + if (dns_iterator->wType != DNS_TYPE_SRV) + { + errorout("Warning: DNS server returned non-SRV record\n"); + continue; + } + + answers++; + } + + *serverlist = (kms_server_dns_ptr*)vlmcsd_malloc(answers * sizeof(kms_server_dns_ptr)); + + for (answers = 0, dns_iterator = receive_buffer; dns_iterator; dns_iterator = dns_iterator->pNext) + { + if (dns_iterator->wType != DNS_TYPE_SRV) continue; + + kms_server_dns_ptr kms_server = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + memset(kms_server, 0, sizeof(kms_server_dns_t)); + + snprintf(kms_server->serverName, sizeof(kms_server->serverName), "%s:%hu", dns_iterator->Data.SRV.pNameTarget, dns_iterator->Data.SRV.wPort); + kms_server->priority = dns_iterator->Data.SRV.wPriority; + kms_server->weight = dns_iterator->Data.SRV.wWeight; + + (*serverlist)[answers++] = kms_server; + } + + //sortSrvRecords(*serverlist, answers, NoSrvRecordPriority); + + DnsRecordListFree(receive_buffer, DnsFreeRecordList); + + return answers; +# undef MAX_DNS_NAME_SIZE +} +#endif // _WIN32 +#undef RECEIVE_BUFFER_SIZE +#endif // NO_DNS + + diff --git a/dns_srv.h b/dns_srv.h new file mode 100644 index 00000000..d24173d1 --- /dev/null +++ b/dns_srv.h @@ -0,0 +1,103 @@ +/* + * dns_srv.h + * + */ + +#ifndef DNS_SRV_H_ +#define DNS_SRV_H_ +#ifndef NO_DNS + + +#include "types.h" + +typedef struct +{ + uint32_t random_weight; + uint16_t priority; + uint16_t weight; + char serverName[260]; +} kms_server_dns_t, *kms_server_dns_ptr; + +typedef struct +{ + uint16_t priority; + uint16_t weight; + uint16_t port; + unsigned char name[1]; +} dns_srv_record_t, *dns_srv_record_ptr; + +#if __OpenBSD__ +typedef enum __ns_type { + ns_t_invalid = 0, /*%< Cookie. */ + ns_t_a = 1, /*%< Host address. */ + ns_t_ns = 2, /*%< Authoritative server. */ + ns_t_md = 3, /*%< Mail destination. */ + ns_t_mf = 4, /*%< Mail forwarder. */ + ns_t_cname = 5, /*%< Canonical name. */ + ns_t_soa = 6, /*%< Start of authority zone. */ + ns_t_mb = 7, /*%< Mailbox domain name. */ + ns_t_mg = 8, /*%< Mail group member. */ + ns_t_mr = 9, /*%< Mail rename name. */ + ns_t_null = 10, /*%< Null resource record. */ + ns_t_wks = 11, /*%< Well known service. */ + ns_t_ptr = 12, /*%< Domain name pointer. */ + ns_t_hinfo = 13, /*%< Host information. */ + ns_t_minfo = 14, /*%< Mailbox information. */ + ns_t_mx = 15, /*%< Mail routing information. */ + ns_t_txt = 16, /*%< Text strings. */ + ns_t_rp = 17, /*%< Responsible person. */ + ns_t_afsdb = 18, /*%< AFS cell database. */ + ns_t_x25 = 19, /*%< X_25 calling address. */ + ns_t_isdn = 20, /*%< ISDN calling address. */ + ns_t_rt = 21, /*%< Router. */ + ns_t_nsap = 22, /*%< NSAP address. */ + ns_t_nsap_ptr = 23, /*%< Reverse NSAP lookup (deprecated). */ + ns_t_sig = 24, /*%< Security signature. */ + ns_t_key = 25, /*%< Security key. */ + ns_t_px = 26, /*%< X.400 mail mapping. */ + ns_t_gpos = 27, /*%< Geographical position (withdrawn). */ + ns_t_aaaa = 28, /*%< Ip6 Address. */ + ns_t_loc = 29, /*%< Location Information. */ + ns_t_nxt = 30, /*%< Next domain (security). */ + ns_t_eid = 31, /*%< Endpoint identifier. */ + ns_t_nimloc = 32, /*%< Nimrod Locator. */ + ns_t_srv = 33, /*%< Server Selection. */ + ns_t_atma = 34, /*%< ATM Address */ + ns_t_naptr = 35, /*%< Naming Authority PoinTeR */ + ns_t_kx = 36, /*%< Key Exchange */ + ns_t_cert = 37, /*%< Certification record */ + ns_t_a6 = 38, /*%< IPv6 address (deprecated, use ns_t_aaaa) */ + ns_t_dname = 39, /*%< Non-terminal DNAME (for IPv6) */ + ns_t_sink = 40, /*%< Kitchen sink (experimentatl) */ + ns_t_opt = 41, /*%< EDNS0 option (meta-RR) */ + ns_t_apl = 42, /*%< Address prefix list (RFC3123) */ + ns_t_tkey = 249, /*%< Transaction key */ + ns_t_tsig = 250, /*%< Transaction signature. */ + ns_t_ixfr = 251, /*%< Incremental zone transfer. */ + ns_t_axfr = 252, /*%< Transfer zone of authority. */ + ns_t_mailb = 253, /*%< Transfer mailbox records. */ + ns_t_maila = 254, /*%< Transfer mail agent records. */ + ns_t_any = 255, /*%< Wildcard match. */ + ns_t_zxfr = 256, /*%< BIND-specific, nonstandard. */ + ns_t_max = 65536 +} ns_type; + +typedef enum __ns_class { + ns_c_invalid = 0, /*%< Cookie. */ + ns_c_in = 1, /*%< Internet. */ + ns_c_2 = 2, /*%< unallocated/unsupported. */ + ns_c_chaos = 3, /*%< MIT Chaos-net. */ + ns_c_hs = 4, /*%< MIT Hesiod. */ + /* Query class values which do not appear in resource records */ + ns_c_none = 254, /*%< for prereq. sections in update requests */ + ns_c_any = 255, /*%< Wildcard match. */ + ns_c_max = 65536 +} ns_class; + +#endif + +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *restrict query); +void sortSrvRecords(kms_server_dns_ptr* serverlist, const int answers); + +#endif // NO_DNS +#endif /* DNS_SRV_H_ */ diff --git a/endian.c b/endian.c new file mode 100644 index 00000000..e2bb76c5 --- /dev/null +++ b/endian.c @@ -0,0 +1,171 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "endian.h" + +#if defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN) \ + && defined(BS16) && defined(BS32) && defined(BS64) + +#else // ! defined(__BYTE_ORDER) + +void PUT_UAA64BE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v >> 56; + _p[ 1 ] = v >> 48; + _p[ 2 ] = v >> 40; + _p[ 3 ] = v >> 32; + _p[ 4 ] = v >> 24; + _p[ 5 ] = v >> 16; + _p[ 6 ] = v >> 8; + _p[ 7 ] = v; +} + +void PUT_UAA32BE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v >> 24; + _p[ 1 ] = v >> 16; + _p[ 2 ] = v >> 8; + _p[ 3 ] = v; +} + +void PUT_UAA16BE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v >> 8; + _p[ 1 ] = v; +} + + +void PUT_UAA64LE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; + _p[ 4 ] = v >> 32; + _p[ 5 ] = v >> 40; + _p[ 6 ] = v >> 48; + _p[ 7 ] = v >> 56; +} + +void PUT_UAA32LE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; +} + +void PUT_UAA16LE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; +} + + +unsigned long long GET_UAA64BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] << 56 | + (unsigned long long)_p[ 1 ] << 48 | + (unsigned long long)_p[ 2 ] << 40 | + (unsigned long long)_p[ 3 ] << 32 | + (unsigned long long)_p[ 4 ] << 24 | + (unsigned long long)_p[ 5 ] << 16 | + (unsigned long long)_p[ 6 ] << 8 | + (unsigned long long)_p[ 7 ]; + +} + +unsigned int GET_UAA32BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] << 24 | + (unsigned int)_p[ 1 ] << 16 | + (unsigned int)_p[ 2 ] << 8 | + (unsigned int)_p[ 3 ]; +} + +unsigned short GET_UAA16BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] << 8 | + (unsigned short)_p[ 1 ]; +} + + +unsigned long long GET_UAA64LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] | + (unsigned long long)_p[ 1 ] << 8 | + (unsigned long long)_p[ 2 ] << 16 | + (unsigned long long)_p[ 3 ] << 24 | + (unsigned long long)_p[ 4 ] << 32 | + (unsigned long long)_p[ 5 ] << 40 | + (unsigned long long)_p[ 6 ] << 48 | + (unsigned long long)_p[ 7 ] << 56; + +} + +unsigned int GET_UAA32LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] | + (unsigned int)_p[ 1 ] << 8 | + (unsigned int)_p[ 2 ] << 16 | + (unsigned int)_p[ 3 ] << 24; +} + +unsigned short GET_UAA16LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] | + (unsigned short)_p[ 1 ] << 8; +} + + +unsigned short BE16(unsigned short x) +{ + return GET_UAA16BE(&x, 0); +} + +unsigned short LE16(unsigned short x) +{ + return GET_UAA16LE(&x, 0); +} + +unsigned int BE32(unsigned int x) +{ + return GET_UAA32BE(&x, 0); +} + +unsigned int LE32(unsigned int x) +{ + return GET_UAA32LE(&x, 0); +} + +unsigned long long BE64(unsigned long long x) +{ + return GET_UAA64BE(&x, 0); +} + +inline unsigned long long LE64(unsigned long long x) +{ + return GET_UAA64LE(&x, 0); +} + +#endif // defined(__BYTE_ORDER) diff --git a/endian.h b/endian.h new file mode 100644 index 00000000..8439ff85 --- /dev/null +++ b/endian.h @@ -0,0 +1,296 @@ +#ifndef __endian_h +#define __endian_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +// +// Unaligned access +// +#define UAA16(p, i) (((PACKED16*)p)->val[i]) +#define UAA32(p, i) (((PACKED32*)p)->val[i]) +#define UAA64(p, i) (((PACKED64*)p)->val[i]) + +#define UA64(p) UAA64(p, 0) +#define UA32(p) UAA32(p, 0) +#define UA16(p) UAA16(p, 0) + +// +//Byteswap: Use compiler support if available +// +#ifdef __has_builtin // Clang supports this + +#if __has_builtin(__builtin_bswap16) +#define BS16(x) __builtin_bswap16(x) +#endif + +#if __has_builtin(__builtin_bswap32) +#define BS32(x) __builtin_bswap32(x) +#endif + +#if __has_builtin(__builtin_bswap64) +#define BS64(x) __builtin_bswap64(x) +#endif + +#endif // has_builtin + +#ifdef __GNUC__ // GNU C >= 4.3 has bswap32 and bswap64. GNU C >= 4.8 also has bswap16 +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) + +#ifndef BS32 +#define BS32(x) __builtin_bswap32(x) +#endif + +#ifndef BS64 +#define BS64(x) __builtin_bswap64(x) +#endif + +#if (__GNUC__ > 4) || (__GNUC_MINOR__ > 7) + +#ifndef BS16 +#define BS16(x) __builtin_bswap16(x) +#endif + +#endif // GNU C > 4.7 +#endif // __GNUC__ > 4 +#endif // __GNUC__ + +// +// Byteorder +// +#if defined(__linux__) || defined(__GLIBC__) || defined(__CYGWIN__) + +#include +#include + +#ifndef BS16 +#define BS16(x) bswap_16(x) +#endif + +#ifndef BS32 +#define BS32(x) bswap_32(x) +#endif + +#ifndef BS64 +#define BS64(x) bswap_64(x) +#endif + +#elif defined(__sun__) + +#include + +#ifndef BS16 +#define BS16(x) BSWAP_16(x) +#endif + +#ifndef BS32 +#define BS32(x) BSWAP_32(x) +#endif + +#ifndef BS64 +#define BS64(x) BSWAP_64(x) +#endif + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 + +#ifdef _LITTLE_ENDIAN +#define __BYTE_ORDER __LITTLE_ENDIAN +#else +#define __BYTE_ORDER __BIG_ENDIAN +#endif + +#elif __minix__ || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) + +#include +#include + +#define __BYTE_ORDER _BYTE_ORDER +#define __LITTLE_ENDIAN _LITTLE_ENDIAN +#define __BIG_ENDIAN _BIG_ENDIAN + +#ifdef __OpenBSD__ + +#ifndef BS16 +#define BS16 swap16 +#endif + +#ifndef BS32 +#define BS32 swap32 +#endif + +#ifndef BS64 +#define BS64 swap64 +#endif + +#else // !__OpenBSD__ + +#ifndef BS16 +#define BS16 bswap16 +#endif + +#ifndef BS32 +#define BS32 bswap32 +#endif + +#ifndef BS64 +#define BS64 bswap64 +#endif + +#endif // !__OpenBSD__ + +#elif defined(__APPLE__) + +#include +#include +#include + +#define __BYTE_ORDER _BYTE_ORDER +#define __LITTLE_ENDIAN _LITTLE_ENDIAN +#define __BIG_ENDIAN _BIG_ENDIAN + +#ifndef BS16 +#define BS16 OSSwapInt16 +#endif + +#ifndef BS32 +#define BS32 OSSwapInt32 +#endif + +#ifndef BS64 +#define BS64 OSSwapInt64 +#endif + +#elif defined(_WIN32) + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN + +#include + +#ifndef BS16 +#define BS16 _byteswap_ushort +#endif + +#ifndef BS32 +#define BS32 _byteswap_ulong +#endif + +#ifndef BS64 +#define BS64 _byteswap_uint64 +#endif + +#endif // Byteorder in different OS + + +#if defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN) \ + && defined(BS16) && defined(BS32) && defined(BS64) + +#if __BYTE_ORDER == __LITTLE_ENDIAN + +#define __BE16(x) BS16(x) +#define __LE16(x) (x) +#define __BE32(x) BS32(x) +#define __LE32(x) (x) +#define __BE64(x) BS64(x) +#define __LE64(x) (x) + +#else // __BYTE_ORDER == __BIG_ENDIAN + +#define __BE16(x) (x) +#define __LE16(x) BS16(x) +#define __BE32(x) (x) +#define __LE32(x) BS32(x) +#define __BE64(x) (x) +#define __LE64(x) BS64(x) + +#endif // __BYTE_ORDER + +#define PUT_UAA64BE(p, v, i) ( UAA64(p, i) = __BE64(v) ) +#define PUT_UAA32BE(p, v, i) ( UAA32(p, i) = __BE32(v) ) +#define PUT_UAA16BE(p, v, i) ( UAA16(p, i) = __BE16(v) ) + +#define PUT_UAA64LE(p, v, i) ( UAA64(p, i) = __LE64(v) ) +#define PUT_UAA32LE(p, v, i) ( UAA32(p, i) = __LE32(v) ) +#define PUT_UAA16LE(p, v, i) ( UAA16(p, i) = __LE16(v) ) + +#define GET_UAA64BE(p, i) __BE64(UAA64(p, i)) +#define GET_UAA32BE(p, i) __BE32(UAA32(p, i)) +#define GET_UAA16BE(p, i) __BE16(UAA16(p, i)) + +#define GET_UAA64LE(p, i) __LE64(UAA64(p, i)) +#define GET_UAA32LE(p, i) __LE32(UAA32(p, i)) +#define GET_UAA16LE(p, i) __LE16(UAA16(p, i)) + +#define BE16(x) __BE16(x) +#define LE16(x) __LE16(x) +#define BE32(x) __BE32(x) +#define LE32(x) __LE32(x) +#define BE64(x) __BE64(x) +#define LE64(x) __LE64(x) + +#else // ! defined(__BYTE_ORDER) + +extern void PUT_UAA64BE(void *p, unsigned long long v, unsigned int i); + +extern void PUT_UAA32BE(void *p, unsigned int v, unsigned int i); + +extern void PUT_UAA16BE(void *p, unsigned short v, unsigned int i); + + +extern void PUT_UAA64LE(void *p, unsigned long long v, unsigned int i); + +extern void PUT_UAA32LE(void *p, unsigned int v, unsigned int i); + +extern void PUT_UAA16LE(void *p, unsigned short v, unsigned int i); + + +extern unsigned long long GET_UAA64BE(void *p, unsigned int i); + +extern unsigned int GET_UAA32BE(void *p, unsigned int i); + +extern unsigned short GET_UAA16BE(void *p, unsigned int i); + + +extern unsigned long long GET_UAA64LE(void *p, unsigned int i); + +extern unsigned int GET_UAA32LE(void *p, unsigned int i); + +extern unsigned short GET_UAA16LE(void *p, unsigned int i); + + +extern unsigned short BE16(unsigned short x); + +extern unsigned short LE16(unsigned short x); + +extern unsigned int BE32(unsigned int x); + +extern unsigned int LE32(unsigned int x); + +extern unsigned long long BE64(unsigned long long x); + +extern unsigned long long LE64(unsigned long long x); + +#endif // defined(__BYTE_ORDER) + + +#define PUT_UA64BE(p, v) PUT_UAA64BE(p, v, 0) +#define PUT_UA32BE(p, v) PUT_UAA32BE(p, v, 0) +#define PUT_UA16BE(p, v) PUT_UAA16BE(p, v, 0) + +#define PUT_UA64LE(p, v) PUT_UAA64LE(p, v, 0) +#define PUT_UA32LE(p, v) PUT_UAA32LE(p, v, 0) +#define PUT_UA16LE(p, v) PUT_UAA16LE(p, v, 0) + +#define GET_UA64BE(p) GET_UAA64BE(p, 0) +#define GET_UA32BE(p) GET_UAA32BE(p, 0) +#define GET_UA16BE(p) GET_UAA16BE(p, 0) + +#define GET_UA64LE(p) GET_UAA64LE(p, 0) +#define GET_UA32LE(p) GET_UAA32LE(p, 0) +#define GET_UA16LE(p) GET_UAA16LE(p, 0) + +#endif // __endian_h diff --git a/floppy144.vfd b/floppy144.vfd new file mode 100644 index 00000000..0e6bc423 Binary files /dev/null and b/floppy144.vfd differ diff --git a/helpers.c b/helpers.c new file mode 100644 index 00000000..7765d344 --- /dev/null +++ b/helpers.c @@ -0,0 +1,369 @@ +/* + * Helper functions used by other modules + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _WIN32 +#include +#endif // _WIN32 +#include +#include +#include +#include +#include "helpers.h" +#include "output.h" +#include "endian.h" +#include "shared_globals.h" + + +/* + * UCS2 <-> UTF-8 functions + * All functions use little endian UCS2 since we only need it to communicate with Windows via RPC + */ + +// Convert one character from UTF-8 to UCS2 +// Returns 0xffff, if utf-8 evaluates to > 0xfffe (outside basic multilingual pane) +WCHAR utf8_to_ucs2_char (const unsigned char *input, const unsigned char **end_ptr) +{ + *end_ptr = input; + if (input[0] == 0) + return ~0; + + if (input[0] < 0x80) { + *end_ptr = input + 1; + return LE16(input[0]); + } + + if ((input[0] & 0xE0) == 0xE0) { + + if (input[1] == 0 || input[2] == 0) + return ~0; + + *end_ptr = input + 3; + + return + LE16((input[0] & 0x0F)<<12 | + (input[1] & 0x3F)<<6 | + (input[2] & 0x3F)); + } + + if ((input[0] & 0xC0) == 0xC0) { + if (input[1] == 0) + return ~0; + + *end_ptr = input + 2; + + return + LE16((input[0] & 0x1F)<<6 | + (input[1] & 0x3F)); + } + return ~0; +} + +// Convert one character from UCS2 to UTF-8 +// Returns length of UTF-8 char (1, 2 or 3) or -1 on error (UTF-16 outside UCS2) +// char *utf8 must be large enough to hold 3 bytes +int ucs2_to_utf8_char (const WCHAR ucs2_le, char *utf8) +{ + const WCHAR ucs2 = LE16(ucs2_le); + + if (ucs2 < 0x80) { + utf8[0] = ucs2; + utf8[1] = '\0'; + return 1; + } + + if (ucs2 >= 0x80 && ucs2 < 0x800) { + utf8[0] = (ucs2 >> 6) | 0xC0; + utf8[1] = (ucs2 & 0x3F) | 0x80; + utf8[2] = '\0'; + return 2; + } + + if (ucs2 >= 0x800 && ucs2 < 0xFFFF) { + + if (ucs2 >= 0xD800 && ucs2 <= 0xDFFF) { + /* Ill-formed (UTF-16 ouside of BMP) */ + return -1; + } + + utf8[0] = ((ucs2 >> 12) ) | 0xE0; + utf8[1] = ((ucs2 >> 6 ) & 0x3F) | 0x80; + utf8[2] = ((ucs2 ) & 0x3F) | 0x80; + utf8[3] = '\0'; + return 3; + } + + return -1; +} + + +// Converts UTF8 to UCS2. Returns size in bytes of the converted string or -1 on error +size_t utf8_to_ucs2(WCHAR* const ucs2_le, const char* const utf8, const size_t maxucs2, const size_t maxutf8) +{ + const unsigned char* current_utf8 = (unsigned char*)utf8; + WCHAR* current_ucs2_le = ucs2_le; + + for (; *current_utf8; current_ucs2_le++) + { + size_t size = (char*)current_utf8 - utf8; + + if (size >= maxutf8) return (size_t)-1; + if (((*current_utf8 & 0xc0) == 0xc0) && (size >= maxutf8 - 1)) return (size_t)-1; + if (((*current_utf8 & 0xe0) == 0xe0) && (size >= maxutf8 - 2)) return (size_t)-1; + if (current_ucs2_le - ucs2_le >= (intptr_t)maxucs2 - 1) return (size_t)-1; + + *current_ucs2_le = utf8_to_ucs2_char(current_utf8, ¤t_utf8); + current_ucs2_le[1] = 0; + + if (*current_ucs2_le == (WCHAR)-1) return (size_t)-1; + } + return current_ucs2_le - ucs2_le; +} + +// Converts UCS2 to UTF-8. Return TRUE or FALSE +BOOL ucs2_to_utf8(const WCHAR* const ucs2_le, char* utf8, size_t maxucs2, size_t maxutf8) +{ + char utf8_char[4]; + const WCHAR* current_ucs2 = ucs2_le; + unsigned int index_utf8 = 0; + + for(*utf8 = 0; *current_ucs2; current_ucs2++) + { + if (current_ucs2 - ucs2_le > (intptr_t)maxucs2) return FALSE; + int len = ucs2_to_utf8_char(*current_ucs2, utf8_char); + if (index_utf8 + len > maxutf8) return FALSE; + strncat(utf8, utf8_char, len); + index_utf8+=len; + } + + return TRUE; +} + +/* End of UTF-8 <-> UCS2 conversion */ + + +// Checks, whether a string is a valid integer number between min and max. Returns TRUE or FALSE. Puts int value in *value +BOOL stringToInt(const char *const szValue, const unsigned int min, const unsigned int max, unsigned int *const value) +{ + char *nextchar; + + errno = 0; + long long result = strtoll(szValue, &nextchar, 10); + + if (errno || result < (long long)min || result > (long long)max || *nextchar) + { + return FALSE; + } + + *value = (unsigned int)result; + return TRUE; +} + + +//Converts a String Guid to a host binary guid in host endianess +int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict guid) +{ + int i; + + if (strlen(input) < GUID_STRING_LENGTH) return FALSE; + if (input[8] != '-' || input[13] != '-' || input[18] != '-' || input[23] != '-') return FALSE; + + for (i = 0; i < GUID_STRING_LENGTH; i++) + { + if (i == 8 || i == 13 || i == 18 || i == 23) continue; + + const char c = toupper((int)input[i]); + + if (c < '0' || c > 'F' || (c > '9' && c < 'A')) return FALSE; + } + + char inputCopy[GUID_STRING_LENGTH + 1]; + strncpy(inputCopy, input, GUID_STRING_LENGTH + 1); + inputCopy[8] = inputCopy[13] = inputCopy[18] = 0; + + hex2bin((BYTE*)&guid->Data1, inputCopy, 8); + hex2bin((BYTE*)&guid->Data2, inputCopy + 9, 4); + hex2bin((BYTE*)&guid->Data3, inputCopy + 14, 4); + hex2bin(guid->Data4, input + 19, 16); + + guid->Data1 = BE32(guid->Data1); + guid->Data2 = BE16(guid->Data2); + guid->Data3 = BE16(guid->Data3); + return TRUE; +} + + +// convert GUID to little-endian +void LEGUID(GUID *const restrict out, const GUID* const restrict in) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + out->Data1 = LE32(in->Data1); + out->Data2 = LE16(in->Data2); + out->Data3 = LE16(in->Data3); + memcpy(out->Data4, in->Data4, sizeof(out->Data4)); + #else + memcpy(out, in, sizeof(GUID)); + #endif +} + + +//Checks a command line argument if it is numeric and between min and max. Returns the numeric value or exits on error +__pure unsigned int getOptionArgumentInt(const char o, const unsigned int min, const unsigned int max) +{ + unsigned int result; + + if (!stringToInt(optarg, min, max, &result)) + { + printerrorf("Fatal: Option \"-%c\" must be numeric between %u and %u.\n", o, min, max); + exit(!0); + } + + return result; +} + + +// Resets getopt() to start parsing from the beginning +void optReset(void) +{ + #if __minix__ || defined(__BSD__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) + optind = 1; + optreset = 1; // Makes newer BSD getopt happy + #elif defined(__UCLIBC__) // uClibc headers also define __GLIBC__ so be careful here + optind = 0; // uClibc seeks compatibility with GLIBC + #elif defined(__GLIBC__) + optind = 0; // Makes GLIBC getopt happy + #else // Standard for most systems + optind = 1; + #endif +} + + +#if defined(_WIN32) || defined(USE_MSRPC) + +// Returns a static message buffer containing text for a given Win32 error. Not thread safe (same as strerror) +char* win_strerror(const int message) +{ + #define STRERROR_BUFFER_SIZE 256 + static char buffer[STRERROR_BUFFER_SIZE]; + + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, message, 0, buffer, STRERROR_BUFFER_SIZE, NULL); + return buffer; +} + +#endif // defined(_WIN32) || defined(USE_MSRPC) + + +/* + * parses an address in the form host:[port] in addr + * returns host and port in seperate strings + */ +void parseAddress(char *const addr, char** szHost, char** szPort) +{ + *szHost = addr; + +# ifndef NO_SOCKETS + *szPort = (char*)defaultport; +# else // NO_SOCKETS + *szPort = "1688"; +# endif // NO_SOCKETS + + char *lastcolon = strrchr(addr, ':'); + char *firstcolon = strchr(addr, ':'); + char *closingbracket = strrchr(addr, ']'); + + if (*addr == '[' && closingbracket) //Address in brackets + { + *closingbracket = 0; + (*szHost)++; + + if (closingbracket[1] == ':') + *szPort = closingbracket + 2; + } + else if (firstcolon && firstcolon == lastcolon) //IPv4 address or hostname with port + { + *firstcolon = 0; + *szPort = firstcolon + 1; + } +} + + +// Initialize random generator (needs to be done in each thread) +void randomNumberInit() +{ + struct timeval tv; + gettimeofday(&tv, NULL); + srand((unsigned int)(tv.tv_sec ^ tv.tv_usec)); +} + + +// We always exit immediately if any OOM condition occurs +__noreturn void OutOfMemory(void) +{ + errorout("Fatal: Out of memory"); + exit(!0); +} + + +void* vlmcsd_malloc(size_t len) +{ + void* buf = malloc(len); + if (!buf) OutOfMemory(); + return buf; +} + + +/* + * Converts hex digits to bytes in big-endian order. + * Ignores any non-hex characters + */ +void hex2bin(BYTE *const bin, const char *hex, const size_t maxbin) +{ + static const char *const hexdigits = "0123456789ABCDEF"; + char* nextchar; + size_t i; + + for (i = 0; (i < 16) && utf8_to_ucs2_char((const unsigned char*)hex, (const unsigned char**)&nextchar) != (WCHAR)-1; hex = nextchar) + { + const char* pos = strchr(hexdigits, toupper((int)*hex)); + if (!pos) continue; + + if (!(i & 1)) bin[i >> 1] = 0; + bin[i >> 1] |= (char)(pos - hexdigits); + if (!(i & 1)) bin[i >> 1] <<= 4; + i++; + if (i >> 1 > maxbin) break; + } +} + + +__pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument) +{ + if ( + !strncasecmp(argument, "true", 4) || + !strncasecmp(argument, "on", 4) || + !strncasecmp(argument, "yes", 3) || + !strncasecmp(argument, "1", 1) + ) + { + *result = TRUE; + return TRUE; + } + else if ( + !strncasecmp(argument, "false", 5) || + !strncasecmp(argument, "off", 3) || + !strncasecmp(argument, "no", 2) || + !strncasecmp(argument, "0", 1) + ) + { + *result = FALSE; + return TRUE; + } + + return FALSE; +} + diff --git a/helpers.h b/helpers.h new file mode 100644 index 00000000..2a7460ed --- /dev/null +++ b/helpers.h @@ -0,0 +1,34 @@ +#ifndef HELPERS_H +#define HELPERS_H + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include "types.h" + +#define GUID_LE 0 +#define GUID_BE 1 +#define GUID_SWAP 2 + +BOOL stringToInt(const char *const szValue, const unsigned int min, const unsigned int max, unsigned int *const value); +unsigned int getOptionArgumentInt(const char o, const unsigned int min, const unsigned int max); +void optReset(void); +char* win_strerror(const int message); +int ucs2_to_utf8_char (const WCHAR ucs2_le, char *utf8); +size_t utf8_to_ucs2(WCHAR* const ucs2_le, const char* const utf8, const size_t maxucs2, const size_t maxutf8); +WCHAR utf8_to_ucs2_char (const unsigned char * input, const unsigned char ** end_ptr); +BOOL ucs2_to_utf8(const WCHAR* const ucs2_le, char* utf8, size_t maxucs2, size_t maxutf8); +int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict guid); +void randomNumberInit(); +void LEGUID(GUID *const restrict result, const GUID* const restrict guid); +void parseAddress(char *const addr, char** szHost, char** szPort); +__noreturn void OutOfMemory(void); +void* vlmcsd_malloc(size_t len); +void hex2bin(BYTE *const bin, const char *hex, const size_t maxbin); +__pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument); + + +#endif // HELPERS_H diff --git a/kms.c b/kms.c new file mode 100644 index 00000000..840aaccf --- /dev/null +++ b/kms.c @@ -0,0 +1,1118 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif + +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "kms.h" +#include "shared_globals.h" +#include "helpers.h" + +#define FRIENDLY_NAME_WINDOWS "Windows" +#define FRIENDLY_NAME_OFFICE2010 "Office 2010" +#define FRIENDLY_NAME_OFFICE2013 "Office" + +#ifndef NO_BASIC_PRODUCT_LIST +// Do not change the order of this list. Append items as necessary +const KmsIdList ProductList[] = { + /* 000 */ { { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } /*"212a64dc-43b1-4d3d-a30c-2fc69d2095c6"*/, "Vista", EPID_WINDOWS, 4, 25 }, + /* 001 */ { { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } /*"7fde5219-fbfa-484a-82c9-34d1ad53e856"*/, "Windows 7", EPID_WINDOWS, 4, 25 }, + /* 002 */ { { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } /*"3c40b358-5948-45af-923b-53d21fcc7e79"*/, "Windows 8 VL", EPID_WINDOWS, 5, 25 }, + /* 003 */ { { 0x5f94a0bb, 0xd5a0, 0x4081, { 0xa6, 0x85, 0x58, 0x19, 0x41, 0x8b, 0x2f, 0xe0 } } /*"5f94a0bb-d5a0-4081-a685-5819418b2fe0"*/, "Windows Preview", EPID_WINDOWS, 6, 25 }, + /* 004 */ { { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } /*"bbb97b3b-8ca4-4a28-9717-89fabd42c4ac"*/, "Windows 8 Retail", EPID_WINDOWS, 5, 25 }, + /* 005 */ { { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } /*"cb8fc780-2c05-495a-9710-85afffc904d7"*/, "Windows 8.1 VL", EPID_WINDOWS, 6, 25 }, + /* 006 */ { { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } /*"6d646890-3606-461a-86ab-598bb84ace82"*/, "Windows 8.1 Retail", EPID_WINDOWS, 6, 25 }, + /* 007 */ { { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } /*"33e156e4-b76f-4a52-9f91-f641dd95ac48"*/, "Windows 2008 A", EPID_WINDOWS, 4, 5 }, + /* 008 */ { { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } /*"8fe53387-3087-4447-8985-f75132215ac9"*/, "Windows 2008 B", EPID_WINDOWS, 4, 5 }, + /* 009 */ { { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } /*"8a21fdf3-cbc5-44eb-83f3-fe284e6680a7"*/, "Windows 2008 C", EPID_WINDOWS, 4, 5 }, + /* 010 */ { { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } /*"0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed"*/, "Windows 2008 R2 A", EPID_WINDOWS, 4, 5 }, + /* 011 */ { { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } /*"ca87f5b6-cd46-40c0-b06d-8ecd57a4373f"*/, "Windows 2008 R2 B", EPID_WINDOWS, 4, 5 }, + /* 012 */ { { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } /*"b2ca2689-a9a8-42d7-938d-cf8e9f201958"*/, "Windows 2008 R2 C", EPID_WINDOWS, 4, 5 }, + /* 013 */ { { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } /*"8665cb71-468c-4aa3-a337-cb9bc9d5eaac"*/, "Windows 2012", EPID_WINDOWS, 5, 5 }, + /* 014 */ { { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } /*"8456EFD3-0C04-4089-8740-5B7238535A65"*/, "Windows 2012 R2", EPID_WINDOWS, 6, 5 }, + /* 015 */ { { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } /*"e85af946-2e25-47b7-83e1-bebcebeac611"*/, "Office 2010", EPID_OFFICE2010, 4, 5 }, + /* 016 */ { { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } /*"e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0"*/, "Office 2013", EPID_OFFICE2013, 6, 5 }, + /* 017 */ { { 0x6d5f5270, 0x31ac, 0x433e, { 0xb9, 0x0a, 0x39, 0x89, 0x29, 0x23, 0xc6, 0x57 } } /*"6d5f5270-31ac-433e-b90a-39892923c657"*/, "Windows Server Preview", EPID_WINDOWS, 6, 5 }, + /* 018 */ { { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } /*"85b5f61b-320b-4be3-814a-b76b2bfafc82"*/, "Office 2016", EPID_OFFICE2013, 6, 5 }, + /* 019 */ { { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } /*"58e2134f-8e11-4d17-9cb2-91069c151148"*/, "Windows 10 VL", EPID_WINDOWS, 6, 25 }, + /* 020 */ { { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } /*"e1c51358-fe3e-4203-a4a2-3b6b20c9734e"*/, "Windows 10 Retail", EPID_WINDOWS, 6, 25 }, + /* 021 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; +#endif + +// Application ID is used by KMS server to count KeyManagementServiceCurrentCount +// Do not change the order of this list. Append items as necessary +const KmsIdList AppList[] = { + /* 000 */ { { 0x55c92734, 0xd682, 0x4d71, { 0x98, 0x3e, 0xd6, 0xec, 0x3f, 0x16, 0x05, 0x9f } } /*"55C92734-D682-4D71-983E-D6EC3F16059F"*/, FRIENDLY_NAME_WINDOWS, EPID_WINDOWS, 0, 0}, + /* 001 */ { { 0x59A52881, 0xa989, 0x479d, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"59A52881-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2010, EPID_OFFICE2010, 0, 0}, + /* 002 */ { { 0x0FF1CE15, 0xA989, 0x479D, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"0FF1CE15-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2013, EPID_OFFICE2013, 0, 0}, + /* 003 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + +#ifndef NO_EXTENDED_PRODUCT_LIST +const KmsIdList ExtendedProductList [] = { + + // Windows Server + + { { 0xad2542d4, 0x9154, 0x4c6d, { 0x8a, 0x44, 0x30, 0xf1, 0x1e, 0xe9, 0x69, 0x89, } } /*ad2542d4-9154-4c6d-8a44-30f11ee96989*/, "Windows Server 2008 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x2401e3d0, 0xc50a, 0x4b58, { 0x87, 0xb2, 0x7e, 0x79, 0x4b, 0x7d, 0x26, 0x07, } } /*2401e3d0-c50a-4b58-87b2-7e794b7d2607*/, "Windows Server 2008 Standard V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } } /*68b6e220-cf09-466b-92d3-45cd964b9509*/, "Windows Server 2008 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xfd09ef77, 0x5647, 0x4eff, { 0x80, 0x9c, 0xaf, 0x2b, 0x64, 0x65, 0x9a, 0x45, } } /*fd09ef77-5647-4eff-809c-af2b64659a45*/, "Windows Server 2008 Datacenter V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } } /*c1af4d90-d1bc-44ca-85d4-003ba33db3b9*/, "Windows Server 2008 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0x8198490a, 0xadd0, 0x47b2, { 0xb3, 0xba, 0x31, 0x6b, 0x12, 0xd6, 0x47, 0xb4, } } /*8198490a-add0-47b2-b3ba-316b12d647b4*/, "Windows Server 2008 Enterprise V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } } /*ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b*/, "Windows Server 2008 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x7afb1156, 0x2c1d, 0x40fc, { 0xb2, 0x60, 0xaa, 0xb7, 0x44, 0x2b, 0x62, 0xfe, } } /*7afb1156-2c1d-40fc-b260-aab7442b62fe*/, "Windows Server 2008 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0x68531fb9, 0x5511, 0x4989, { 0x97, 0xbe, 0xd1, 0x1a, 0x0f, 0x55, 0x63, 0x3f, } } /*68531fb9-5511-4989-97be-d11a0f55633f*/, "Windows Server 2008 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } } /*7482e61b-c589-4b7f-8ecc-46d455ac3b87*/, "Windows Server 2008 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } } /*620e2b3d-09e7-42fd-802a-17a13652fe7a*/, "Windows Server 2008 R2 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B }, + { { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } } /*a78b8bd9-8017-4df5-b86a-09f756affa7c*/, "Windows Server 2008 R2 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0xcda18cf3, 0xc196, 0x46ad, { 0xb2, 0x89, 0x60, 0xc0, 0x72, 0x86, 0x99, 0x94, } } /*cda18cf3-c196-46ad-b289-60c072869994*/, "Windows Server 2008 R2 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0xd3643d60, 0x0c42, 0x412d, { 0xa7, 0xd6, 0x52, 0xe6, 0x63, 0x53, 0x27, 0xf6, } } /*d3643d60-0c42-412d-a7d6-52e6635327f6*/, "Windows Server 2012 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } } /*f0f5ec41-0d55-4732-af02-440a44a3cf0f*/, "Windows Server 2012 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x95fd1c83, 0x7df5, 0x494a, { 0xbe, 0x8b, 0x13, 0x00, 0xe1, 0xc9, 0xd1, 0xcd, } } /*95fd1c83-7df5-494a-be8b-1300e1c9d1cd*/, "Windows Server 2012 MultiPoint Premium", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x7d5486c7, 0xe120, 0x4771, { 0xb7, 0xf1, 0x7b, 0x56, 0xc6, 0xd3, 0x17, 0x0c, } } /*7d5486c7-e120-4771-b7f1-7b56c6d3170c*/, "Windows Server 2012 MultiPoint Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } } /*00091344-1ea4-4f37-b789-01750ba6988c*/, "Windows Server 2012 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb3ca044e, 0xa358, 0x4d68, { 0x98, 0x83, 0xaa, 0xa2, 0x94, 0x1a, 0xca, 0x99, } } /*b3ca044e-a358-4d68-9883-aaa2941aca99*/, "Windows Server 2012 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb743a2be, 0x68d4, 0x4dd3, { 0xaf, 0x32, 0x92, 0x42, 0x5b, 0x7b, 0xb6, 0x23, } } /*b743a2be-68d4-4dd3-af32-92425b7bb623*/, "Windows Server 2012 R2 Cloud Storage", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0x21db6ba4, 0x9a7b, 0x4a14, { 0x9e, 0x29, 0x64, 0xa6, 0x0c, 0x59, 0x30, 0x1d, } } /*21db6ba4-9a7b-4a14-9e29-64a60c59301d*/, "Windows Server 2012 R2 Essentials", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xba947c44, 0xd19d, 0x4786, { 0xb6, 0xae, 0x22, 0x77, 0x0b, 0xc9, 0x4c, 0x54, } } /*ba947c44-d19d-4786-b6ae-22770bc94c54*/, "Windows Server 2016 Datacenter Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_SRV_BETA }, + + + // Windows 10 Preview +# ifdef INCLUDE_BETAS + { { 0x6496e59d, 0x89dc, 0x49eb, { 0xa3, 0x53, 0x09, 0xce, 0xb9, 0x40, 0x48, 0x45, } } /*6496e59d-89dc-49eb-a353-09ceb9404845*/, "Windows 10 Core Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xa4383e6b, 0xdada, 0x423d, { 0xa4, 0x3d, 0xf2, 0x56, 0x78, 0x42, 0x96, 0x76, } } /*a4383e6b-dada-423d-a43d-f25678429676*/, "Windows 10 Professional Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcf59a07b, 0x1a2a, 0x4be0, { 0xbf, 0xe0, 0x42, 0x3b, 0x58, 0x23, 0xe6, 0x63, } } /*cf59a07b-1a2a-4be0-bfe0-423b5823e663*/, "Windows 10 Professional WMC Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcde952c7, 0x2f96, 0x4d9d, { 0x8f, 0x2b, 0x2d, 0x34, 0x9f, 0x64, 0xfc, 0x51, } } /*cde952c7-2f96-4d9d-8f2b-2d349f64fc51*/, "Windows 10 Enterprise Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + + + // Windows 10 + + { { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } } /*73111121-5638-40f6-bc11-f1d7b0d64300*/, "Windows 10 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xe272e3e2, 0x732f, 0x4c65, { 0xa8, 0xf0, 0x48, 0x47, 0x47, 0xd0, 0xd9, 0x47, } } /*e272e3e2-732f-4c65-a8f0-484747d0d947*/, "Windows 10 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x7b51a46c, 0x0c04, 0x4e8f, { 0x9a, 0xf4, 0x84, 0x96, 0xcc, 0xa9, 0x0d, 0x5e, } } /*7b51a46c-0c04-4e8f-9af4-8496cca90d5e*/, "Windows 10 Enterprise LTSB", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x87b838b7, 0x41b6, 0x4590, { 0x83, 0x18, 0x57, 0x97, 0x95, 0x1d, 0x85, 0x29, } } /*87b838b7-41b6-4590-8318-5797951d8529*/, "Windows 10 Enterprise LTSB N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0xe0c42288, 0x980c, 0x4788, { 0xa0, 0x14, 0xc0, 0x80, 0xd2, 0xe1, 0x92, 0x6e, } } /*e0c42288-980c-4788-a014-c080d2e1926e*/, "Windows 10 Education", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x3c102355, 0xd027, 0x42c6, { 0xad, 0x23, 0x2e, 0x7e, 0xf8, 0xa0, 0x25, 0x85, } } /*3c102355-d027-42c6-ad23-2e7ef8a02585*/, "Windows 10 Education N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x2de67392, 0xb7a7, 0x462a, { 0xb1, 0xca, 0x10, 0x8d, 0xd1, 0x89, 0xf5, 0x88, } } /*2de67392-b7a7-462a-b1ca-108dd189f588*/, "Windows 10 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xa80b5abf, 0x75ad, 0x428b, { 0xb0, 0x5d, 0xa4, 0x7d, 0x2d, 0xff, 0xee, 0xbf, } } /*a80b5abf-76ad-428b-b05d-a47d2dffeebf*/, "Windows 10 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } } /*58e97c99-f377-4ef1-81d5-4ad5522b5fd8*/, "Windows 10 Home", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0x7b9e1751, 0xa8da, 0x4f75, { 0x95, 0x60, 0x5f, 0xad, 0xfe, 0x3d, 0x8e, 0x38, } } /*7b9e1751-a8da-4f75-9560-5fadfe3d8e38*/, "Windows 10 Home N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xcd918a57, 0xa41b, 0x4c82, { 0x8d, 0xce, 0x1a, 0x53, 0x8e, 0x22, 0x1a, 0x83, } } /*cd918a57-a41b-4c82-8dce-1a538e221a83*/, "Windows 10 Home Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xa9107544, 0xf4a0, 0x4053, { 0xa9, 0x6a, 0x14, 0x79, 0xab, 0xde, 0xf9, 0x12, } } /*a9107544-f4a0-4053-a96a-1479abdef912*/, "Windows 10 Home Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + + + // Windows 8.x + +# ifdef INCLUDE_BETAS + { { 0x2B9C337F, 0x7A1D, 0x4271, { 0x90, 0xA3, 0xC6, 0x85, 0x5A, 0x2B, 0x8A, 0x1C, } } /*2B9C337F-7A1D-4271-90A3-C6855A2B8A1C*/, "Windows 8.x Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0x631EAD72, 0xA8AB, 0x4DF8, { 0xBB, 0xDF, 0x37, 0x20, 0x29, 0x98, 0x9B, 0xDD, } } /*631EAD72-A8AB-4DF8-BBDF-372029989BDD*/, "Windows 8.x Preview ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + { { 0x81671aaf, 0x79d1, 0x4eb1, { 0xb0, 0x04, 0x8c, 0xbb, 0xe1, 0x73, 0xaf, 0xea, } } /*81671aaf-79d1-4eb1-b004-8cbbe173afea*/, "Windows 8.1 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x113e705c, 0xfa49, 0x48a4, { 0xbe, 0xea, 0x7d, 0xd8, 0x79, 0xb4, 0x6b, 0x14, } } /*113e705c-fa49-48a4-beea-7dd879b46b14*/, "Windows 8.1 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x096ce63d, 0x4fac, 0x48a9, { 0x82, 0xa9, 0x61, 0xae, 0x9e, 0x80, 0x0e, 0x5f, } } /*096ce63d-4fac-48a9-82a9-61ae9e800e5f*/, "Windows 8.1 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } } /*c06b6981-d7fd-4a35-b7b4-054742b7af67*/, "Windows 8.1 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x7476d79f, 0x8e48, 0x49b4, { 0xab, 0x63, 0x4d, 0x0b, 0x81, 0x3a, 0x16, 0xe4, } } /*7476d79f-8e48-49b4-ab63-4d0b813a16e4*/, "Windows 8.1 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } } /*fe1c3238-432a-43a1-8e25-97e7d1ef10f3*/, "Windows 8.1 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0x78558a64, 0xdc19, 0x43fe, { 0xa0, 0xd0, 0x80, 0x75, 0xb2, 0xa3, 0x70, 0xa3, } } /*78558a64-dc19-43fe-a0d0-8075b2a370a3*/, "Windows 8.1 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xffee456a, 0xcd87, 0x4390, { 0x8e, 0x07, 0x16, 0x14, 0x6c, 0x67, 0x2f, 0xd0, } } /*ffee456a-cd87-4390-8e07-16146c672fd0*/, "Windows 8.1 Core ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc72c6a1d, 0xf252, 0x4e7e, { 0xbd, 0xd1, 0x3f, 0xca, 0x34, 0x2a, 0xcb, 0x35, } } /*c72c6a1d-f252-4e7e-bdd1-3fca342acb35*/, "Windows 8.1 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xdb78b74f, 0xef1c, 0x4892, { 0xab, 0xfe, 0x1e, 0x66, 0xb8, 0x23, 0x1d, 0xf6, } } /*db78b74f-ef1c-4892-abfe-1e66b8231df6*/, "Windows 8.1 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xe9942b32, 0x2e55, 0x4197, { 0xb0, 0xbd, 0x5f, 0xf5, 0x8c, 0xba, 0x88, 0x60, } } /*e9942b32-2e55-4197-b0bd-5ff58cba8860*/, "Windows 8.1 Core Connected", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xc6ddecd6, 0x2354, 0x4c19, { 0x90, 0x9b, 0x30, 0x6a, 0x30, 0x58, 0x48, 0x4e, } } /*c6ddecd6-2354-4c19-909b-306a3058484e*/, "Windows 8.1 Core Connected N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xb8f5e3a3, 0xed33, 0x4608, { 0x81, 0xe1, 0x37, 0xd6, 0xc9, 0xdc, 0xfd, 0x9c, } } /*b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c*/, "Windows 8.1 Core Connected Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xba998212, 0x460a, 0x44db, { 0xbf, 0xb5, 0x71, 0xbf, 0x09, 0xd1, 0xc6, 0x8b, } } /*ba998212-460a-44db-bfb5-71bf09d1c68b*/, "Windows 8.1 Core Connected Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xe58d87b5, 0x8126, 0x4580, { 0x80, 0xfb, 0x86, 0x1b, 0x22, 0xf7, 0x92, 0x96, } } /*e58d87b5-8126-4580-80fb-861b22f79296*/, "Windows 8.1 Professional Student", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xcab491c7, 0xa918, 0x4f60, { 0xb5, 0x02, 0xda, 0xb7, 0x5e, 0x33, 0x4f, 0x40, } } /*cab491c7-a918-4f60-b502-dab75e334f40*/, "Windows 8.1 Professional Student N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xa00018a3, 0xf20f, 0x4632, { 0xbf, 0x7c, 0x8d, 0xaa, 0x53, 0x51, 0xc9, 0x14, } } /*a00018a3-f20f-4632-bf7c-8daa5351c914*/, "Windows 8 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } } /*a98bcd6d-5343-4603-8afe-5908e4611112*/, "Windows 8 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xebf245c1, 0x29a8, 0x4daf, { 0x9c, 0xb1, 0x38, 0xdf, 0xc6, 0x08, 0xa8, 0xc8, } } /*ebf245c1-29a8-4daf-9cb1-38dfc608a8c8*/, "Windows 8 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0x458e1bec, 0x837a, 0x45f6, { 0xb9, 0xd5, 0x92, 0x5e, 0xd5, 0xd2, 0x99, 0xde, } } /*458e1bec-837a-45f6-b9d5-925ed5d299de*/, "Windows 8 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xe14997e7, 0x800a, 0x4cf7, { 0xad, 0x10, 0xde, 0x4b, 0x45, 0xb5, 0x78, 0xdb, } } /*e14997e7-800a-4cf7-ad10-de4b45b578db*/, "Windows 8 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } } /*c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60*/, "Windows 8 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x197390a0, 0x65f6, 0x4a95, { 0xbd, 0xc4, 0x55, 0xd5, 0x8a, 0x3b, 0x02, 0x53, } } /*197390a0-65f6-4a95-bdc4-55d58a3b0253*/, "Windows 8 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x9d5584a2, 0x2d85, 0x419a, { 0x98, 0x2c, 0xa0, 0x08, 0x88, 0xbb, 0x9d, 0xdf, } } /*9d5584a2-2d85-419a-982c-a00888bb9ddf*/, "Windows 8 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x8860fcd4, 0xa77b, 0x4a20, { 0x90, 0x45, 0xa1, 0x50, 0xff, 0x11, 0xd6, 0x09, } } /*8860fcd4-a77b-4a20-9045-a150ff11d609*/, "Windows 8 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + + + // Windows 7 + + { { 0xae2ee509, 0x1b34, 0x41c0, { 0xac, 0xb7, 0x6d, 0x46, 0x50, 0x16, 0x89, 0x15, } } /*ae2ee509-1b34-41c0-acb7-6d4650168915*/, "Windows 7 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x1cb6d605, 0x11b3, 0x4e14, { 0xbb, 0x30, 0xda, 0x91, 0xc8, 0xe3, 0x98, 0x3a, } } /*1cb6d605-11b3-4e14-bb30-da91c8e3983a*/, "Windows 7 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } } /*b92e9980-b9d5-4821-9c94-140f632f6312*/, "Windows 7 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x54a09a0d, 0xd57b, 0x4c10, { 0x8b, 0x69, 0xa8, 0x42, 0xd6, 0x59, 0x0a, 0xd5, } } /*54a09a0d-d57b-4c10-8b69-a842d6590ad5*/, "Windows 7 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + + + // Windows Vista + + { { 0xcfd8ff08, 0xc0d7, 0x452b, { 0x9f, 0x60, 0xef, 0x5c, 0x70, 0xc3, 0x20, 0x94, } } /*cfd8ff08-c0d7-452b-9f60-ef5c70c32094*/, "Windows Vista Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0xd4f54950, 0x26f2, 0x4fb4, { 0xba, 0x21, 0xff, 0xab, 0x16, 0xaf, 0xca, 0xde, } } /*d4f54950-26f2-4fb4-ba21-ffab16afcade*/, "Windows Vista Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } } /*4f3d1606-3fea-4c01-be3c-8d671c401e3b*/, "Windows Vista Business", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x2c682dc2, 0x8b68, 0x4f63, { 0xa1, 0x65, 0xae, 0x29, 0x1d, 0x4c, 0xf1, 0x38, } } /*2c682dc2-8b68-4f63-a165-ae291d4cf138*/, "Windows Vista Business N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + + + // Windows Embedded + + { { 0xaa6dd3aa, 0xc2b4, 0x40e2, { 0xa5, 0x44, 0xa6, 0xbb, 0xb3, 0xf5, 0xc3, 0x95, } } /*aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395*/, "Windows ThinPC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xdb537896, 0x376f, 0x48ae, { 0xa4, 0x92, 0x53, 0xd0, 0x54, 0x77, 0x73, 0xd0, } } /*db537896-376f-48ae-a492-53d0547773d0*/, "Windows Embedded POSReady 7", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x0ab82d54, 0x47f4, 0x4acb, { 0x81, 0x8c, 0xcc, 0x5b, 0xf0, 0xec, 0xb6, 0x49, } } /*0ab82d54-47f4-4acb-818c-cc5bf0ecb649*/, "Windows Embedded Industry 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xcd4e2d9f, 0x5059, 0x4a50, { 0xa9, 0x2d, 0x05, 0xd5, 0xbb, 0x12, 0x67, 0xc7, } } /*cd4e2d9f-5059-4a50-a92d-05d5bb1267c7*/, "Windows Embedded Industry E 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xf7e88590, 0xdfc7, 0x4c78, { 0xbc, 0xcb, 0x6f, 0x38, 0x65, 0xb9, 0x9d, 0x1a, } } /*f7e88590-dfc7-4c78-bccb-6f3865b99d1a*/, "Windows Embedded Industry A 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + + // Office 2010 + + { { 0x8ce7e872, 0x188c, 0x4b98, { 0x9d, 0x90, 0xf8, 0xf9, 0x0b, 0x7a, 0xad, 0x02, } } /*8ce7e872-188c-4b98-9d90-f8f90b7aad02*/, "Office Access 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xcee5d470, 0x6e3b, 0x4fcc, { 0x8c, 0x2b, 0xd1, 0x74, 0x28, 0x56, 0x8a, 0x9f, } } /*cee5d470-6e3b-4fcc-8c2b-d17428568a9f*/, "Office Excel 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x8947d0b8, 0xc33b, 0x43e1, { 0x8c, 0x56, 0x9b, 0x67, 0x4c, 0x05, 0x28, 0x32, } } /*8947d0b8-c33b-43e1-8c56-9b674c052832*/, "Office Groove 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xca6b6639, 0x4ad6, 0x40ae, { 0xa5, 0x75, 0x14, 0xde, 0xe0, 0x7f, 0x64, 0x30, } } /*ca6b6639-4ad6-40ae-a575-14dee07f6430*/, "Office InfoPath 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x09ed9640, 0xf020, 0x400a, { 0xac, 0xd8, 0xd7, 0xd8, 0x67, 0xdf, 0xd9, 0xc2, } } /*09ed9640-f020-400a-acd8-d7d867dfd9c2*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xef3d4e49, 0xa53d, 0x4d81, { 0xa2, 0xb1, 0x2c, 0xa6, 0xc2, 0x55, 0x6b, 0x2c, } } /*ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xab586f5c, 0x5256, 0x4632, { 0x96, 0x2f, 0xfe, 0xfd, 0x8b, 0x49, 0xe6, 0xf4, } } /*ab586f5c-5256-4632-962f-fefd8b49e6f4*/, "Office OneNote 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xecb7c192, 0x73ab, 0x4ded, { 0xac, 0xf4, 0x23, 0x99, 0xb0, 0x95, 0xd0, 0xcc, } } /*ecb7c192-73ab-4ded-acf4-2399b095d0cc*/, "Office OutLook 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x45593b1d, 0xdfb1, 0x4e91, { 0xbb, 0xfb, 0x2d, 0x5d, 0x0c, 0xe2, 0x22, 0x7a, } } /*45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a*/, "Office PowerPoint 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xdf133ff7, 0xbf14, 0x4f95, { 0xaf, 0xe3, 0x7b, 0x48, 0xe7, 0xe3, 0x31, 0xef, } } /*df133ff7-bf14-4f95-afe3-7b48e7e331ef*/, "Office Project Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x5dc7bf61, 0x5ec9, 0x4996, { 0x9c, 0xcb, 0xdf, 0x80, 0x6a, 0x2d, 0x0e, 0xfe, } } /*5dc7bf61-5ec9-4996-9ccb-df806a2d0efe*/, "Office Project Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xb50c4f75, 0x599b, 0x43e8, { 0x8d, 0xcd, 0x10, 0x81, 0xa7, 0x96, 0x72, 0x41, } } /*b50c4f75-599b-43e8-8dcd-1081a7967241*/, "Office Publisher 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x92236105, 0xbb67, 0x494f, { 0x94, 0xc7, 0x7f, 0x7a, 0x60, 0x79, 0x29, 0xbd, } } /*92236105-bb67-494f-94c7-7f7a607929bd*/, "Office Visio Premium 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xe558389c, 0x83c3, 0x4b29, { 0xad, 0xfe, 0x5e, 0x4d, 0x7f, 0x46, 0xc3, 0x58, } } /*e558389c-83c3-4b29-adfe-5e4d7f46c358*/, "Office Visio Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9ed833ff, 0x4f92, 0x4f36, { 0xb3, 0x70, 0x86, 0x83, 0xa4, 0xf1, 0x32, 0x75, } } /*9ed833ff-4f92-4f36-b370-8683a4f13275*/, "Office Visio Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x2d0882e7, 0xa4e7, 0x423b, { 0x8c, 0xcc, 0x70, 0xd9, 0x1e, 0x01, 0x58, 0xb1, } } /*2d0882e7-a4e7-423b-8ccc-70d91e0158b1*/, "Office Word 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } } /*6f327760-8c5c-417c-9b61-836a98287e0c*/, "Office Professional Plus 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9da2a678, 0xfb6b, 0x4e67, { 0xab, 0x84, 0x60, 0xdd, 0x6a, 0x9c, 0x81, 0x9a, } } /*9da2a678-fb6b-4e67-ab84-60dd6a9c819a*/, "Office Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xea509e87, 0x07a1, 0x4a45, { 0x9e, 0xdc, 0xeb, 0xa5, 0xa3, 0x9f, 0x36, 0xaf, } } /*ea509e87-07a1-4a45-9edc-eba5a39f36af*/, "Office Small Business Basics 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + + // Office 2013 + + { { 0x6ee7622c, 0x18d8, 0x4005, { 0x9f, 0xb7, 0x92, 0xdb, 0x64, 0x4a, 0x27, 0x9b, } } /*6ee7622c-18d8-4005-9fb7-92db644a279b*/, "Office Access 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xf7461d52, 0x7c2b, 0x43b2, { 0x87, 0x44, 0xea, 0x95, 0x8e, 0x0b, 0xd0, 0x9a, } } /*f7461d52-7c2b-43b2-8744-ea958e0bd09a*/, "Office Excel 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xa30b8040, 0xd68a, 0x423f, { 0xb0, 0xb5, 0x9c, 0xe2, 0x92, 0xea, 0x5a, 0x8f, } } /*a30b8040-d68a-423f-b0b5-9ce292ea5a8f*/, "Office InfoPath 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x1b9f11e3, 0xc85c, 0x4e1b, { 0xbb, 0x29, 0x87, 0x9a, 0xd2, 0xc9, 0x09, 0xe3, } } /*1b9f11e3-c85c-4e1b-bb29-879ad2c909e3*/, "Office Lync 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xdc981c6b, 0xfc8e, 0x420f, { 0xaa, 0x43, 0xf8, 0xf3, 0x3e, 0x5c, 0x09, 0x23, } } /*dc981c6b-fc8e-420f-aa43-f8f33e5c0923*/, "Office Mondo 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xefe1f3e6, 0xaea2, 0x4144, { 0xa2, 0x08, 0x32, 0xaa, 0x87, 0x2b, 0x65, 0x45, } } /*efe1f3e6-aea2-4144-a208-32aa872b6545*/, "Office OneNote 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x771c3afa, 0x50c5, 0x443f, { 0xb1, 0x51, 0xff, 0x25, 0x46, 0xd8, 0x63, 0xa0, } } /*771c3afa-50c5-443f-b151-ff2546d863a0*/, "Office OutLook 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x8c762649, 0x97d1, 0x4953, { 0xad, 0x27, 0xb7, 0xe2, 0xc2, 0x5b, 0x97, 0x2e, } } /*8c762649-97d1-4953-ad27-b7e2c25b972e*/, "Office PowerPoint 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x4a5d124a, 0xe620, 0x44ba, { 0xb6, 0xff, 0x65, 0x89, 0x61, 0xb3, 0x3b, 0x9a, } } /*4a5d124a-e620-44ba-b6ff-658961b33b9a*/, "Office Project Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x427a28d1, 0xd17c, 0x4abf, { 0xb7, 0x17, 0x32, 0xc7, 0x80, 0xba, 0x6f, 0x07, } } /*427a28d1-d17c-4abf-b717-32c780ba6f07*/, "Office Project Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x00c79ff1, 0x6850, 0x443d, { 0xbf, 0x61, 0x71, 0xcd, 0xe0, 0xde, 0x30, 0x5f, } } /*00c79ff1-6850-443d-bf61-71cde0de305f*/, "Office Publisher 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xac4efaf0, 0xf81f, 0x4f61, { 0xbd, 0xf7, 0xea, 0x32, 0xb0, 0x2a, 0xb1, 0x17, } } /*ac4efaf0-f81f-4f61-bdf7-ea32b02ab117*/, "Office Visio Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xe13ac10e, 0x75d0, 0x4aff, { 0xa0, 0xcd, 0x76, 0x49, 0x82, 0xcf, 0x54, 0x1c, } } /*e13ac10e-75d0-4aff-a0cd-764982cf541c*/, "Office Visio Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xd9f5b1c6, 0x5386, 0x495a, { 0x88, 0xf9, 0x9a, 0xd6, 0xb4, 0x1a, 0xc9, 0xb3, } } /*d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3*/, "Office Word 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } } /*b322da9c-a2e2-4058-9e4e-f59a6970bd69*/, "Office Professional Plus 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb13afb38, 0xcd79, 0x4ae5, { 0x9f, 0x7f, 0xee, 0xd0, 0x58, 0xd7, 0x50, 0xca, } } /*b13afb38-cd79-4ae5-9f7f-eed058d750ca*/, "Office Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + + // Office 2016 + + { { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } } /*d450596f-894d-49e0-966a-fd39ed4c4c64*/, "Office Professional Plus 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x4f414197, 0x0fc2, 0x4c01, { 0xb6, 0x8a, 0x86, 0xcb, 0xb9, 0xac, 0x25, 0x4c, } } /*4f414197-0fc2-4c01-b68a-86cbb9ac254c*/, "Office Project Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x6bf301c1, 0xb94a, 0x43e9, { 0xba, 0x31, 0xd4, 0x94, 0x59, 0x8c, 0x47, 0xfb, } } /*6bf301c1-b94a-43e9-ba31-d494598c47fb*/, "Office Visio Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x041a06cb, 0xc5b8, 0x4772, { 0x80, 0x9f, 0x41, 0x6d, 0x03, 0xd1, 0x66, 0x54, } } /*041a06cb-c5b8-4772-809f-416d03d16654*/, "Office Publisher 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x67c0fc0c, 0xdeba, 0x401b, { 0xbf, 0x8b, 0x9c, 0x8a, 0xd8, 0x39, 0x58, 0x04, } } /*67c0fc0c-deba-401b-bf8b-9c8ad8395804*/, "Office Access 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x83e04ee1, 0xfa8d, 0x436d, { 0x89, 0x94, 0xd3, 0x1a, 0x86, 0x2c, 0xab, 0x77, } } /*83e04ee1-fa8d-436d-8994-d31a862cab77*/, "Office Skype for Business 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x9caabccb, 0x61b1, 0x4b4b, { 0x8b, 0xec, 0xd1, 0x0a, 0x3c, 0x3a, 0xc2, 0xce, } } /*9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce*/, "Office Mondo 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xaa2a7821, 0x1827, 0x4c2c, { 0x8f, 0x1d, 0x45, 0x13, 0xa3, 0x4d, 0xda, 0x97, } } /*aa2a7821-1827-4c2c-8f1d-4513a34dda97*/, "Office Visio Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xbb11badf, 0xd8aa, 0x470e, { 0x93, 0x11, 0x20, 0xea, 0xf8, 0x0f, 0xe5, 0xcc, } } /*bb11badf-d8aa-470e-9311-20eaf80fe5cc*/, "Office Word 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xc3e65d36, 0x141f, 0x4d2f, { 0xa3, 0x03, 0xa8, 0x42, 0xee, 0x75, 0x6a, 0x29, } } /*c3e65d36-141f-4d2f-a303-a842ee756a29*/, "Office Excel 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd70b1bba, 0xb893, 0x4544, { 0x96, 0xe2, 0xb7, 0xa3, 0x18, 0x09, 0x1c, 0x33, } } /*d70b1bba-b893-4544-96e2-b7a318091c33*/, "Office Powerpoint 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd8cace59, 0x33d2, 0x4ac7, { 0x9b, 0x1b, 0x9b, 0x72, 0x33, 0x9c, 0x51, 0xc8, } } /*d8cace59-33d2-4ac7-9b1b-9b72339c51c8*/, "Office OneNote 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xda7ddabc, 0x3fbe, 0x4447, { 0x9e, 0x01, 0x6a, 0xb7, 0x44, 0x0b, 0x4c, 0xd4, } } /*da7ddabc-3fbe-4447-9e01-6ab7440b4cd4*/, "Office Project Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xdedfa23d, 0x6ed1, 0x45a6, { 0x85, 0xdc, 0x63, 0xca, 0xe0, 0x54, 0x6d, 0xe6, } } /*dedfa23d-6ed1-45a6-85dc-63cae0546de6*/, "Office Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xe914ea6e, 0xa5fa, 0x4439, { 0xa3, 0x94, 0xa9, 0xbb, 0x32, 0x93, 0xca, 0x09, } } /*e914ea6e-a5fa-4439-a394-a9bb3293ca09*/, "Office Mondo R 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xec9d9265, 0x9d1e, 0x4ed0, { 0x83, 0x8a, 0xcd, 0xc2, 0x0f, 0x25, 0x51, 0xa1, } } /*ec9d9265-9d1e-4ed0-838a-cdc20f2551a1*/, "Office Outlook 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + + // End marker (necessity should be removed when time permits) + + { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + + +// necessary because other .c files cannot access _countof() +__pure ProdListIndex_t getExtendedProductListSize(void) +{ + return _countof(ExtendedProductList) - 1; +} + +__pure ProdListIndex_t getAppListSize(void) +{ + return _countof(AppList); +} + +#endif + +#ifndef NO_RANDOM_EPID +// HostType and OSBuild +static const struct KMSHostOS { uint16_t Type; uint16_t Build; } HostOS[] = +{ + { 55041, 6002 }, // Windows Server 2008 SP2 + { 55041, 7601 }, // Windows Server 2008 R2 SP1 + { 5426, 9200 }, // Windows Server 2012 + { 6401, 9600 }, // Windows Server 2012 R2 + { 3612, 10240}, // Windows Server 2016 +}; + +// GroupID and PIDRange +static const struct PKEYCONFIG { uint16_t GroupID; uint32_t RangeMin; uint32_t RangeMax; } pkeyconfig[] = { + { 206, 152000000, 191999999 }, // Windows Server 2012 KMS Host pkeyconfig + { 206, 271000000, 310999999 }, // Windows Server 2012 R2 KMS Host pkeyconfig + { 96, 199000000, 217999999 }, // Office2010 KMS Host pkeyconfig + { 206, 234000000, 255999999 }, // Office2013 KMS Host pkeyconfig +}; + +// Valid language identifiers to be used in the ePID +static const uint16_t LcidList[] = { + 1078, 1052, 1025, 2049, 3073, 4097, 5121, 6145, 7169, 8193, 9217, 10241, 11265, 12289, 13313, 14337, 15361, 16385, + 1067, 1068, 2092, 1069, 1059, 1093, 5146, 1026, 1027, 1028, 2052, 3076, 4100, 5124, 1050, 4122, 1029, 1030, 1125, 1043, 2067, + 1033, 2057, 3081, 4105, 5129, 6153, 7177, 8201, 9225, 10249, 11273, 12297, 13321, 1061, 1080, 1065, 1035, 1036, 2060, + 3084, 4108, 5132, 6156, 1079, 1110, 1031, 2055, 3079, 4103, 5127, 1032, 1095, 1037, 1081, 1038, 1039, 1057, 1040, 2064, 1041, 1099, + 1087, 1111, 1042, 1088, 1062, 1063, 1071, 1086, 2110, 1100, 1082, 1153, 1102, 1104, 1044, 2068, 1045, 1046, 2070, + 1094, 1131, 2155, 3179, 1048, 1049, 9275, 4155, 5179, 3131, 1083, 2107, 8251, 6203, 7227, 1103, 2074, 6170, 3098, + 7194, 1051, 1060, 1034, 2058, 3082, 4106, 5130, 6154, 7178, 8202, 9226, 10250, 11274, 12298, 13322, 14346, 15370, 16394, + 17418, 18442, 19466, 20490, 1089, 1053, 2077, 1114, 1097, 1092, 1098, 1054, 1074, 1058, 1056, 1091, 2115, 1066, 1106, 1076, 1077 +}; + + +#ifdef _PEDANTIC +uint16_t IsValidLcid(const uint16_t Lcid) +{ + uint16_t i; + + for (i = 0; i < _countof(LcidList); i++) + { + if (Lcid == LcidList[i]) return Lcid; + } + + return 0; +} +#endif // _PEDANTIC +#endif // NO_RANDOM_EPID + + +// Unix time is seconds from 1970-01-01. Should be 64 bits to avoid Year 2035 overflow bug. +// FILETIME is 100 nanoseconds from 1601-01-01. Must be 64 bits. +void getUnixTimeAsFileTime(FILETIME *const ts) +{ + int64_t unixtime = (int64_t)time(NULL); + int64_t *filetime = (int64_t*)ts; + + *filetime = LE64( (unixtime + 11644473600LL) * 10000000LL ); +} + +__pure int64_t fileTimeToUnixTime(const FILETIME *const ts) +{ + return LE64( *((const int64_t *const)ts) ) / 10000000LL - 11644473600LL; +} + + +/* + * Get's a product name with a GUID in host-endian order. + * List can be any list defined above. + */ +const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + for (*i = 0; List[*i].name != NULL; (*i)++) + { + if (IsEqualGUID(guid, &List[*i].guid)) + return List[*i].name; + } + + return "Unknown"; +} + + +/* + * same as getProductnameHE except GUID is in little-endian (network) order + */ +const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + GUID HeGUID; + LEGUID(&HeGUID, guid); + return getProductNameHE(&HeGUID, List, i); + #else + return getProductNameHE(guid, List, i); + #endif +} + + +#ifndef NO_RANDOM_EPID +// formats an int with a fixed number of digits with leading zeros (helper for ePID generation) +static char* itoc(char *const c, const int i, uint_fast8_t digits) +{ + char formatString[8]; + if (digits > 9) digits = 0; + strcpy(formatString,"%"); + + if (digits) + { + formatString[1] = '0'; + formatString[2] = digits | 0x30; + formatString[3] = 0; + } + + strcat(formatString, "u"); + sprintf(c, formatString, i); + return c; +} + +static int getRandomServerType() +{ +# ifndef USE_MSRPC + if (!UseRpcBTFN) +# endif // USE_MSRPC + { + // This isn't possible at all, e.g. KMS host on XP + return rand() % (int)_countof(HostOS); + } +# ifndef USE_MSRPC + else + { + // return 9200/9600/10240 if NDR64 is in use, otherwise 6002/7601 + if (UseRpcNDR64) return (rand() % 3) + 2; + return (rand() % 2); + } +# endif // USE_MSRPC +} + + +/* + * Generates a random ePID + */ +static void generateRandomPid(const int index, char *const szPid, int serverType, int16_t lang) +{ + int clientApp; + char numberBuffer[12]; + + if (serverType < 0 || serverType >= (int)_countof(HostOS)) + { + serverType = getRandomServerType(); + } + + strcpy(szPid, itoc(numberBuffer, HostOS[serverType].Type, 5)); + strcat(szPid, "-"); + + if (index == 2) + clientApp = 3; + else if (index == 1) + clientApp = 2; + else + clientApp = serverType == 3 /*change if HostOS changes*/ ? 1 : 0; + + strcat(szPid, itoc(numberBuffer, pkeyconfig[clientApp].GroupID, 5)); + strcat(szPid, "-"); + + int keyId = (rand32() % (pkeyconfig[clientApp].RangeMax - pkeyconfig[clientApp].RangeMin)) + pkeyconfig[clientApp].RangeMin; + strcat(szPid, itoc(numberBuffer, keyId / 1000000, 3)); + strcat(szPid, "-"); + strcat(szPid, itoc(numberBuffer, keyId % 1000000, 6)); + strcat(szPid, "-03-"); + + if (lang < 0) lang = LcidList[rand() % _countof(LcidList)]; + strcat(szPid, itoc(numberBuffer, lang, 0)); + strcat(szPid, "-"); + + strcat(szPid, itoc(numberBuffer, HostOS[serverType].Build, 0)); + strcat(szPid, ".0000-"); + +# define minTime ((time_t)1436958000) // Release Date Windows 10 RTM Escrow + + time_t maxTime, kmsTime; + time(&maxTime); + + if (maxTime < minTime) // Just in case the system time is < 07/15/2015 1:00 pm + maxTime = (time_t)BUILD_TIME; + + kmsTime = (rand32() % (maxTime - minTime)) + minTime; +# undef minTime + + struct tm *pidTime; + pidTime = gmtime(&kmsTime); + + strcat(szPid, itoc(numberBuffer, pidTime->tm_yday, 3)); + strcat(szPid, itoc(numberBuffer, pidTime->tm_year + 1900, 4)); +} + + +/* + * Generates random ePIDs and stores them if not already read from ini file. + * For use with randomization level 1 + */ +void randomPidInit() +{ + ProdListIndex_t i; + + int serverType = getRandomServerType(); + int16_t lang = Lcid ? Lcid : LcidList[rand() % _countof(LcidList)]; + + for (i = 0; i < _countof(AppList) - 1; i++) + { + if (KmsResponseParameters[i].Epid) continue; + + char Epid[PID_BUFFER_SIZE]; + + generateRandomPid(i, Epid, serverType, lang); + KmsResponseParameters[i].Epid = (const char*)vlmcsd_malloc(strlen(Epid) + 1); + + strcpy((char*)KmsResponseParameters[i].Epid, Epid); + + #ifndef NO_LOG + KmsResponseParameters[i].EpidSource = "randomized at program start"; + #endif // NO_LOG + } +} + +#endif // NO_RANDOM_EPID + + +#ifndef NO_LOG +/* + * Logs a Request + */ +static void logRequest(const REQUEST *const baseRequest) +{ + const char *productName; + char clientname[64]; + ProdListIndex_t index; + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->ActID, ExtendedProductList, &index); + if (++index >= (int)_countof(ExtendedProductList)) + #endif // NO_EXTENDED_PRODUCT_LIST + { + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->KMSID, ProductList, &index); + if (++index >= (int)_countof(ProductList)) + #endif // NO_BASIC_PRODUCT_LIST + { + productName = getProductNameLE(&baseRequest->AppID, AppList, &index); + } + } + + #ifndef NO_VERBOSE_LOG + if (logverbose) + { + logger("<<< Incoming KMS request\n"); + logRequestVerbose(baseRequest, &logger); + } + else + { + #endif // NO_VERBOSE_LOG + ucs2_to_utf8(baseRequest->WorkstationName, clientname, 64, 64); + logger("KMS v%i.%i request from %s for %s\n", LE16(baseRequest->MajorVer), LE16(baseRequest->MinorVer), clientname, productName); + #ifndef NO_VERBOSE_LOG + } + #endif // NO_VERBOSE_LOG +} +#endif // NO_LOG + + +/* + * Converts a utf-8 ePID string to UCS-2 and writes it to a RESPONSE struct + */ +static void getEpidFromString(RESPONSE *const Response, const char *const pid) +{ + size_t length = utf8_to_ucs2(Response->KmsPID, pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + Response->PIDSize = LE32(((unsigned int )length + 1) << 1); +} + + +/* + * get ePID from appropriate source + */ +static void getEpid(RESPONSE *const baseResponse, const char** EpidSource, const ProdListIndex_t index, BYTE *const HwId) +{ + const char* pid; + if (KmsResponseParameters[index].Epid == NULL) + { + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 2) + { + char szPid[PID_BUFFER_SIZE]; + generateRandomPid(index, szPid, -1, Lcid ? Lcid : -1); + pid = szPid; + + #ifndef NO_LOG + *EpidSource = "randomized on every request"; + #endif // NO_LOG + } + else + #endif // NO_RANDOM_EPID + { + pid = AppList[index].pid; + #ifndef NO_LOG + *EpidSource = "vlmcsd default"; + #endif // NO_LOG + } + } + else + { + pid = KmsResponseParameters[index].Epid; + + if (HwId && KmsResponseParameters[index].HwId != NULL) + memcpy(HwId, KmsResponseParameters[index].HwId, sizeof(((RESPONSE_V6 *)0)->HwId)); + + #ifndef NO_LOG + *EpidSource = KmsResponseParameters[index].EpidSource; + #endif // NO_LOG + } + getEpidFromString(baseResponse, pid); +} + + +#if !defined(NO_LOG) && defined(_PEDANTIC) +static BOOL CheckVersion4Uuid(const GUID *const guid, const char *const szGuidName) +{ + if (LE16(guid->Data3) >> 12 != 4 || guid->Data4[0] >> 6 != 2) + { + logger("Warning: %s does not conform to version 4 UUID according to RFC 4122\n", szGuidName); + return FALSE; + } + return TRUE; +} + + +static void CheckRequest(const REQUEST *const Request) +{ + CheckVersion4Uuid(&Request->CMID, "Client machine ID"); + CheckVersion4Uuid(&Request->AppID, "Application ID"); + CheckVersion4Uuid(&Request->KMSID, "Server SKU ID"); + CheckVersion4Uuid(&Request->ActID, "Client SKU ID"); + + if (LE32(Request->IsClientVM) > 1) + logger("Warning: Virtual Machine field in request must be 0 or 1 but is %u\n", LE32(Request->IsClientVM)); + + if (LE32(Request->LicenseStatus) > 6 ) + logger("Warning: License status must be between 0 and 6 but is %u\n", LE32(Request->LicenseStatus)); +} +#endif // !defined(NO_LOG) && defined(_PEDANTIC) + + +#ifndef NO_LOG +/* + * Logs the Response + */ +static void logResponse(const RESPONSE *const baseResponse, const BYTE *const hwId, const char *const EpidSource) +{ + char utf8pid[PID_BUFFER_SIZE * 3]; + ucs2_to_utf8(baseResponse->KmsPID, utf8pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + + #ifndef NO_VERBOSE_LOG + if (!logverbose) + { + #endif // NO_VERBOSE_LOG + logger("Sending ePID (%s): %s\n", EpidSource, utf8pid); + #ifndef NO_VERBOSE_LOG + } + else + { + logger(">>> Sending response, ePID source = %s\n", EpidSource); + logResponseVerbose(utf8pid, hwId, baseResponse, &logger); + } + #endif // NO_VERBOSE_LOG + +} +#endif + + +/* + * Creates the unencrypted base response + */ +static BOOL __stdcall CreateResponseBaseCallback(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr) +{ + const char* EpidSource; + #ifndef NO_LOG + logRequest(baseRequest); + #ifdef _PEDANTIC + CheckRequest(baseRequest); + #endif // _PEDANTIC + #endif // NO_LOG + + ProdListIndex_t index; + + getProductNameLE(&baseRequest->AppID, AppList, &index); + + if (index >= _countof(AppList) - 1) index = 0; //default to Windows + + getEpid(baseResponse, &EpidSource, index, hwId); + + baseResponse->Version = baseRequest->Version; + + memcpy(&baseResponse->CMID, &baseRequest->CMID, sizeof(GUID)); + memcpy(&baseResponse->ClientTime, &baseRequest->ClientTime, sizeof(FILETIME)); + + baseResponse->Count = LE32(LE32(baseRequest->N_Policy) << 1); + baseResponse->VLActivationInterval = LE32(VLActivationInterval); + baseResponse->VLRenewalInterval = LE32(VLRenewalInterval); + + #ifndef NO_LOG + logResponse(baseResponse, hwId, EpidSource); + #endif // NO_LOG + + return !0; +} + +RequestCallback_t CreateResponseBase = &CreateResponseBaseCallback; + +////TODO: Move to helpers.c +void get16RandomBytes(void* ptr) +{ + int i; + for (i = 0; i < 4; i++) ((DWORD*)ptr)[i] = rand32(); +} + + +/* + * Creates v4 response + */ +size_t CreateResponseV4(REQUEST_V4 *const request_v4, BYTE *const responseBuffer, const char* const ipstr) +{ + RESPONSE_V4* Response = (RESPONSE_V4*)responseBuffer; + + if ( !CreateResponseBase(&request_v4->RequestBase, &Response->ResponseBase, NULL, ipstr) ) return 0; + + DWORD pidSize = LE32(Response->ResponseBase.PIDSize); + BYTE* postEpidPtr = responseBuffer + V4_PRE_EPID_SIZE + pidSize; + memmove(postEpidPtr, &Response->ResponseBase.CMID, V4_POST_EPID_SIZE); + + size_t encryptSize = V4_PRE_EPID_SIZE + V4_POST_EPID_SIZE + pidSize; + AesCmacV4(responseBuffer, encryptSize, responseBuffer + encryptSize); + + return encryptSize + sizeof(Response->MAC); +} + +/* +// Workaround for buggy GCC 4.2/4.3 +#if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +__attribute__((noinline)) +#endif +__pure static uint64_t TimestampInterval(void *ts) +{ + return ( GET_UA64LE(ts) / TIME_C1 ) * TIME_C2 + TIME_C3; +}*/ + + +/* + * Creates the HMAC for v6 + */ +static int_fast8_t CreateV6Hmac(BYTE *const encrypt_start, const size_t encryptSize, int_fast8_t tolerance) +{ + BYTE hash[32]; +# define halfHashSize (sizeof(hash) >> 1) + uint64_t timeSlot; + BYTE *responseEnd = encrypt_start + encryptSize; + + // This is the time from the response + FILETIME* ft = (FILETIME*)(responseEnd - V6_POST_EPID_SIZE + sizeof(((RESPONSE*)0)->CMID)); + + // Generate a time slot that changes every 4.11 hours. + // Request and repsonse time must match +/- 1 slot. + // When generating a response tolerance must be 0. + // If verifying the hash, try tolerance -1, 0 and +1. One of them must match. + + timeSlot = LE64( (GET_UA64LE(ft) / TIME_C1 * TIME_C2 + TIME_C3) + (tolerance * TIME_C1) ); + + // The time slot is hashed with SHA256 so it is not so obvious that it is time + Sha256((BYTE*) &timeSlot, sizeof(timeSlot), hash); + + // The last 16 bytes of the hashed time slot are the actual HMAC key + if (!Sha256Hmac + ( + hash + halfHashSize, // Use last 16 bytes of SHA256 as HMAC key + encrypt_start, // hash only the encrypted part of the v6 response + encryptSize - sizeof(((RESPONSE_V6*)0)->HMAC), // encryptSize minus the HMAC itself + hash // use same buffer for resulting hash where the key came from + )) + { + return FALSE; + } + + memcpy(responseEnd - sizeof(((RESPONSE_V6*)0)->HMAC), hash + halfHashSize, halfHashSize); + return TRUE; +# undef halfHashSize +} + + +/* + * Creates v5 or v6 response + */ +size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuffer, const char* const ipstr) +{ + // The response will be created in a fixed sized struct to + // avoid unaligned access macros and packed structs on RISC systems + // which largely increase code size. + // + // The fixed sized struct with 64 WCHARs for the ePID will be converted + // to a variable sized struct later and requires unaligned access macros. + + RESPONSE_V6* Response = (RESPONSE_V6*)responseBuffer; + RESPONSE* baseResponse = &Response->ResponseBase; + + #ifdef _DEBUG + RESPONSE_V6_DEBUG* xxx = (RESPONSE_V6_DEBUG*)responseBuffer; + #endif + + static const BYTE DefaultHwid[8] = { HWID }; + int_fast8_t v6 = LE16(request_v6->MajorVer) > 5; + AesCtx aesCtx; + + AesInitKey(&aesCtx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&aesCtx, NULL, request_v6->IV, V6_DECRYPT_SIZE); + + // get random salt and SHA256 it + get16RandomBytes(Response->RandomXoredIVs); + Sha256(Response->RandomXoredIVs, sizeof(Response->RandomXoredIVs), Response->Hash); + + if (v6) // V6 specific stuff + { + // In v6 a random IV is generated + Response->Version = request_v6->Version; + get16RandomBytes(Response->IV); + + // pre-fill with default HwId (not required for v5) + memcpy(Response->HwId, DefaultHwid, sizeof(Response->HwId)); + + // Just copy decrypted request IV (using Null IV) here. Note this is identical + // to XORing non-decrypted request and reponse IVs + memcpy(Response->XoredIVs, request_v6->IV, sizeof(Response->XoredIVs)); + } + else // V5 specific stuff + { + // In v5 IVs of request and response must be identical (MS client checks this) + // The following memcpy copies Version and IVs at once + memcpy(Response, request_v6, V6_UNENCRYPTED_SIZE); + } + + // Xor Random bytes with decrypted request IV + XorBlock(request_v6->IV, Response->RandomXoredIVs); + + // Get the base response + if ( !CreateResponseBase(&request_v6->RequestBase, baseResponse, Response->HwId, ipstr) ) return 0; + + // Convert the fixed sized struct into variable sized + DWORD pidSize = LE32(baseResponse->PIDSize); + BYTE* postEpidPtr = responseBuffer + V6_PRE_EPID_SIZE + pidSize; + size_t post_epid_size = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + + memmove(postEpidPtr, &baseResponse->CMID, post_epid_size); + + // number of bytes to encrypt + size_t encryptSize = + V6_PRE_EPID_SIZE + - sizeof(Response->Version) + + pidSize + + post_epid_size; + + //AesDecryptBlock(&aesCtx, Response->IV); + if (v6 && !CreateV6Hmac(Response->IV, encryptSize, 0)) return 0; + + // Padding auto handled by encryption func + AesEncryptCbc(&aesCtx, NULL, Response->IV, &encryptSize); + + return encryptSize + sizeof(Response->Version); +} + + +// Create Hashed KMS Client Request Data for KMS Protocol Version 4 +BYTE *CreateRequestV4(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V4); + + // Build a proper KMS client request data + BYTE *request = (BYTE *)vlmcsd_malloc(sizeof(REQUEST_V4)); + + // Temporary Pointer for access to REQUEST_V4 structure + REQUEST_V4 *request_v4 = (REQUEST_V4 *)request; + + // Set KMS Client Request Base + memcpy(&request_v4->RequestBase, requestBase, sizeof(REQUEST)); + + // Generate Hash Signature + AesCmacV4(request, sizeof(REQUEST), request_v4->MAC); + + // Return Request Data + return request; +} + + +// Create Encrypted KMS Client Request Data for KMS Protocol Version 6 +BYTE* CreateRequestV6(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V6); + + // Temporary Pointer for access to REQUEST_V5 structure + REQUEST_V6 *request = (REQUEST_V6 *)vlmcsd_malloc(sizeof(REQUEST_V6)); + + // KMS Protocol Version + request->Version = requestBase->Version; + + // Initialize the IV + get16RandomBytes(request->IV); + + // Set KMS Client Request Base + memcpy(&request->RequestBase, requestBase, sizeof(REQUEST)); + + // Encrypt KMS Client Request + size_t encryptSize = sizeof(request->RequestBase); + AesCtx Ctx; + int_fast8_t v6 = LE16(request->MajorVer) > 5; + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, 16); + AesEncryptCbc(&Ctx, request->IV, (BYTE*)(&request->RequestBase), &encryptSize); + + // Return Proper Request Data + return (BYTE*)request; +} + + +/* + * Checks whether Length of ePID is valid + */ +static uint8_t checkPidLength(const RESPONSE *const responseBase) +{ + unsigned int i; + + if (LE32(responseBase->PIDSize) > (PID_BUFFER_SIZE << 1)) return FALSE; + if (responseBase->KmsPID[(LE32(responseBase->PIDSize) >> 1) - 1]) return FALSE; + + for (i = 0; i < (LE32(responseBase->PIDSize) >> 1) - 2; i++) + { + if (!responseBase->KmsPID[i]) return FALSE; + } + + return TRUE; +} + + +/* + * "Decrypts" a KMS v4 response. Actually just copies to a fixed size buffer + */ +RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSize, BYTE* const rawResponse, const BYTE* const rawRequest) +{ + int copySize = + V4_PRE_EPID_SIZE + + (LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) <= PID_BUFFER_SIZE << 1 ? + LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) : + PID_BUFFER_SIZE << 1); + + int messageSize = copySize + V4_POST_EPID_SIZE; + + memcpy(response_v4, rawResponse, copySize); + memcpy(&response_v4->ResponseBase.CMID, rawResponse + copySize, responseSize - copySize); + + // ensure PID is null terminated + response_v4->ResponseBase.KmsPID[PID_BUFFER_SIZE-1] = 0; + + uint8_t* mac = rawResponse + messageSize; + AesCmacV4(rawResponse, messageSize, mac); + + REQUEST_V4* request_v4 = (REQUEST_V4*)rawRequest; + RESPONSE_RESULT result; + + result.mask = (DWORD)~0; + result.PidLengthOK = checkPidLength((RESPONSE*)rawResponse); + result.VersionOK = response_v4->ResponseBase.Version == request_v4->RequestBase.Version; + result.HashOK = !memcmp(&response_v4->MAC, mac, sizeof(response_v4->MAC)); + result.TimeStampOK = !memcmp(&response_v4->ResponseBase.ClientTime, &request_v4->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = !memcmp(&response_v4->ResponseBase.CMID, &request_v4->RequestBase.CMID, sizeof(GUID)); + result.effectiveResponseSize = responseSize; + result.correctResponseSize = sizeof(RESPONSE_V4) - sizeof(response_v4->ResponseBase.KmsPID) + LE32(response_v4->ResponseBase.PIDSize); + + return result; +} + + +static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ctx, RESPONSE_V6* response_v6, REQUEST_V6* request_v6, BYTE* const rawResponse) +{ + // Check IVs + result.IVsOK = !memcmp // In V6 the XoredIV is actually the request IV + ( + response_v6->XoredIVs, + request_v6->IV, + sizeof(response_v6->XoredIVs) + ); + + result.IVnotSuspicious = !!memcmp // If IVs are identical, it is obviously an emulator + ( + request_v6->IV, + response_v6->IV, + sizeof(request_v6->IV) + ); + + // Check Hmac + int_fast8_t tolerance; + BYTE OldHmac[sizeof(response_v6->HMAC)]; + + result.HmacSha256OK = FALSE; + + memcpy // Save received HMAC to compare with calculated HMAC later + ( + OldHmac, + response_v6->HMAC, + sizeof(response_v6->HMAC) + ); + + //AesEncryptBlock(Ctx, Response_v6->IV); // CreateV6Hmac needs original IV as received over the network + + for (tolerance = -1; tolerance < 2; tolerance++) + { + CreateV6Hmac + ( + rawResponse + sizeof(response_v6->Version), // Pointer to start of the encrypted part of the response + (size_t)result.correctResponseSize - V6_UNENCRYPTED_SIZE, // size of the encrypted part + tolerance // tolerance -1, 0, or +1 + ); + + if + (( + result.HmacSha256OK = !memcmp // Compare both HMACs + ( + OldHmac, + rawResponse + (size_t)result.correctResponseSize - sizeof(response_v6->HMAC), + sizeof(OldHmac) + ) + )) + { + break; + } + } + return result; +} + + +static RESPONSE_RESULT VerifyResponseV5(RESPONSE_RESULT result, REQUEST_V5* request_v5, RESPONSE_V5* response_v5) +{ + // Check IVs: in V5 (and only v5) request and response IVs must match + result.IVsOK = !memcmp(request_v5->IV, response_v5->IV, sizeof(request_v5->IV)); + + // V5 has no Hmac, always set to TRUE + result.HmacSha256OK = TRUE; + + return result; +} + + +/* + * Decrypts a KMS v5 or v6 response received from a server. + * hwid must supply a valid 16 byte buffer for v6. hwid is ignored in v5 + */ +RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BYTE* const response, const BYTE* const rawRequest, BYTE* hwid) +{ + RESPONSE_RESULT result; + result.mask = ~0; // Set all bits in the results mask to 1. Assume success first. + result.effectiveResponseSize = responseSize; + + int copySize1 = + sizeof(response_v6->Version); + + // Decrypt KMS Server Response (encrypted part starts after RequestIV) + responseSize -= copySize1; + + AesCtx Ctx; + int_fast8_t v6 = LE16(((RESPONSE_V6*)response)->MajorVer) > 5; + + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&Ctx, NULL, response + copySize1, responseSize); + + // Check padding + BYTE* lastPadByte = response + (size_t)result.effectiveResponseSize - 1; + + // Must be from 1 to 16 + if (!*lastPadByte || *lastPadByte > AES_BLOCK_BYTES) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Check if pad bytes are all the same + BYTE* padByte; + for (padByte = lastPadByte - *lastPadByte + 1; padByte < lastPadByte; padByte++) + if (*padByte != *lastPadByte) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Add size of Version, KmsPIDLen and variable size PID + DWORD pidSize = LE32(((RESPONSE_V6*) response)->ResponseBase.PIDSize); + + copySize1 += + V6_UNENCRYPTED_SIZE + + sizeof(response_v6->ResponseBase.PIDSize) + + (pidSize <= PID_BUFFER_SIZE << 1 ? pidSize : PID_BUFFER_SIZE << 1); + + // Copy part 1 of response up to variable sized PID + memcpy(response_v6, response, copySize1); + + // ensure PID is null terminated + response_v6->ResponseBase.KmsPID[PID_BUFFER_SIZE - 1] = 0; + + // Copy part 2 + size_t copySize2 = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + memcpy(&response_v6->ResponseBase.CMID, response + copySize1, copySize2); + + // Decrypting the response is finished here. Now we check the results for validity + // A basic client doesn't need the stuff below this comment but we want to use vlmcs + // as a debug tool for KMS emulators. + + REQUEST_V6* request_v6 = (REQUEST_V6*) rawRequest; + DWORD decryptSize = sizeof(request_v6->IV) + sizeof(request_v6->RequestBase) + sizeof(request_v6->Pad); + + AesDecryptCbc(&Ctx, NULL, request_v6->IV, decryptSize); + + // Check that all version informations are the same + result.VersionOK = + request_v6->Version == response_v6->ResponseBase.Version && + request_v6->Version == response_v6->Version && + request_v6->Version == request_v6->RequestBase.Version; + + // Check Base Request + result.PidLengthOK = checkPidLength(&((RESPONSE_V6*) response)->ResponseBase); + result.TimeStampOK = !memcmp(&response_v6->ResponseBase.ClientTime, &request_v6->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = IsEqualGUID(&response_v6->ResponseBase.CMID, &request_v6->RequestBase.CMID); + + // Rebuild Random Key and Sha256 Hash + BYTE HashVerify[sizeof(response_v6->Hash)]; + BYTE RandomKey[sizeof(response_v6->RandomXoredIVs)]; + + memcpy(RandomKey, request_v6->IV, sizeof(RandomKey)); + XorBlock(response_v6->RandomXoredIVs, RandomKey); + Sha256(RandomKey, sizeof(RandomKey), HashVerify); + + result.HashOK = !memcmp(response_v6->Hash, HashVerify, sizeof(HashVerify)); + + // size before encryption (padding not included) + result.correctResponseSize = + (v6 ? sizeof(RESPONSE_V6) : sizeof(RESPONSE_V5)) + - sizeof(response_v6->ResponseBase.KmsPID) + + LE32(response_v6->ResponseBase.PIDSize); + + // Version specific stuff + if (v6) + { + // Copy the HwId + memcpy(hwid, response_v6->HwId, sizeof(response_v6->HwId)); + + // Verify the V6 specific part of the response + result = VerifyResponseV6(result, &Ctx, response_v6, request_v6, response); + } + else // V5 + { + // Verify the V5 specific part of the response + result = VerifyResponseV5(result, request_v6, (RESPONSE_V5*)response_v6); + } + + // padded size after encryption + result.correctResponseSize += (~(result.correctResponseSize - sizeof(response_v6->ResponseBase.Version)) & 0xf) + 1; + + return result; +} + diff --git a/kms.h b/kms.h new file mode 100644 index 00000000..c4542e9d --- /dev/null +++ b/kms.h @@ -0,0 +1,287 @@ +#ifndef __kms_h +#define __kms_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include "types.h" +// +// REQUEST... types are actually fixed size +// RESPONSE... size may vary, defined here is max possible size +// + +#define MAX_RESPONSE_SIZE 384 +#define PID_BUFFER_SIZE 64 +#define MAX_REQUEST_SIZE sizeof(REQUEST_V6) +#define WORKSTATION_NAME_BUFFER 64 + +// Constants for V6 time stamp interval +#define TIME_C1 0x00000022816889BDULL +#define TIME_C2 0x000000208CBAB5EDULL +#define TIME_C3 0x3156CD5AC628477AULL + +#define VERSION_INFO union \ +{ \ + DWORD Version;\ + struct { \ + WORD MinorVer; \ + WORD MajorVer; \ + } /*__packed*/; \ +} /*__packed*/ + +// Aliases for various KMS struct members +#define IsClientVM VMInfo +#define GraceTime BindingExpiration +#define MinutesRemaingInCurrentStatus BindingExpiration +#define ID ActID +#define ApplicationID AppID +#define SkuId ActID +#define KmsId KMSID +#define ClientMachineId CMID +#define MinimumClients N_Policy +#define TimeStamp ClientTime +#define PreviousCLientMachineId CMID_prev +#define Salt IV +#define XorSalt XoredIVs +#define ActivationInterval VLActivationInterval +#define RenewalInterval VLRenewalInterval + + +typedef struct { + VERSION_INFO; + DWORD VMInfo; // 0 = client is bare metal / 1 = client is VM + DWORD LicenseStatus; // 0 = Unlicensed, 1 = Licensed (Activated), 2 = OOB grace, 3 = OOT grace, 4 = NonGenuineGrace, 5 = Notification, 6 = extended grace + DWORD BindingExpiration; // Expiration of the current status in minutes (e.g. when KMS activation or OOB grace expires). + GUID AppID; // Can currently be Windows, Office2010 or Office2013 (see kms.c, table AppList). + GUID ActID; // Most detailed product list. One product key per ActID (see kms.c, table ExtendedProductList). Is ignored by KMS server. + GUID KMSID; // This is actually what the KMS server uses to grant or refuse activation (see kms.c, table BasicProductList). + GUID CMID; // Client machine id. Used by the KMS server for counting minimum clients. + DWORD N_Policy; // Minimum clients required for activation. + FILETIME ClientTime; // Current client time. + GUID CMID_prev; // previous client machine id. All zeros, if it never changed. + WCHAR WorkstationName[64]; // Workstation name. FQDN if available, NetBIOS otherwise. +} /*__packed*/ REQUEST; + +typedef struct { + VERSION_INFO; + DWORD PIDSize; // Size of PIDData in bytes. + WCHAR KmsPID[PID_BUFFER_SIZE]; // ePID (must include terminating zero) + GUID CMID; // Client machine id. Must be the same as in request. + FILETIME ClientTime; // Current client time. Must be the same as in request. + DWORD Count; // Current activated machines. KMS server counts up to N_Policy << 1 then stops + DWORD VLActivationInterval; // Time in minutes when clients should retry activation if it was unsuccessful (default 2 hours) + DWORD VLRenewalInterval; // Time in minutes when clients should renew KMS activation (default 7 days) +} /*__packed*/ RESPONSE; + +#ifdef _DEBUG +typedef struct { + VERSION_INFO; + DWORD PIDSize; + WCHAR KmsPID[49]; // Set this to the ePID length you want to debug + GUID CMID; + FILETIME ClientTime; + DWORD Count; + DWORD VLActivationInterval; + DWORD VLRenewalInterval; +} __packed RESPONSE_DEBUG; +#endif + + +typedef struct { + REQUEST RequestBase; // Base request + BYTE MAC[16]; // Aes 160 bit CMAC +} /*__packed*/ REQUEST_V4; + +typedef struct { + RESPONSE ResponseBase; // Base response + BYTE MAC[16]; // Aes 160 bit CMAC +} /*__packed*/ RESPONSE_V4; + + +typedef struct { + VERSION_INFO; // unencrypted version info + BYTE IV[16]; // IV + REQUEST RequestBase; // Base Request + BYTE Pad[4]; // since this struct is fixed, we use fixed PKCS pad bytes +} /*__packed*/ REQUEST_V5; + +typedef REQUEST_V5 REQUEST_V6; // v5 and v6 requests are identical + +typedef struct { + VERSION_INFO; + BYTE IV[16]; + RESPONSE ResponseBase; + BYTE RandomXoredIVs[16]; // If RequestIV was used for decryption: Random ^ decrypted Request IV ^ ResponseIV. If NULL IV was used for decryption: Random ^ decrypted Request IV + BYTE Hash[32]; // SHA256 of Random used in RandomXoredIVs + BYTE HwId[8]; // HwId from the KMS server + BYTE XoredIVs[16]; // If RequestIV was used for decryption: decrypted Request IV ^ ResponseIV. If NULL IV was used for decryption: decrypted Request IV. + BYTE HMAC[16]; // V6 Hmac (low 16 bytes only), see kms.c CreateV6Hmac + //BYTE Pad[10]; // Pad is variable sized. So do not include in struct +} /*__packed*/ RESPONSE_V6; + +typedef struct { // not used except for sizeof(). Fields are the same as RESPONSE_V6 + VERSION_INFO; + BYTE IV[16]; + RESPONSE ResponseBase; + BYTE RandomXoredIVs[16]; + BYTE Hash[32]; +} /*__packed*/ RESPONSE_V5; + +#ifdef _DEBUG +typedef struct { // Debug structure for direct casting of RPC data in debugger + VERSION_INFO; + BYTE IV[16]; + RESPONSE_DEBUG ResponseBase; + BYTE RandomXoredIVs[16]; + BYTE MAC[32]; + BYTE Unknown[8]; + BYTE XorSalts[16]; + BYTE HMAC[16]; + BYTE Pad[16]; +} __packed RESPONSE_V6_DEBUG; +#endif + +#define V4_PRE_EPID_SIZE ( \ + sizeof(((RESPONSE*)0)->Version) + \ + sizeof(((RESPONSE*)0)->PIDSize) \ + ) + +#define V4_POST_EPID_SIZE ( \ + sizeof(((RESPONSE*)0)->CMID) + \ + sizeof(((RESPONSE*)0)->ClientTime) + \ + sizeof(((RESPONSE*)0)->Count) + \ + sizeof(((RESPONSE*)0)->VLActivationInterval) + \ + sizeof(((RESPONSE*)0)->VLRenewalInterval) \ + ) + +#define V6_DECRYPT_SIZE ( \ + sizeof(((REQUEST_V6*)0)->IV) + \ + sizeof(((REQUEST_V6*)0)->RequestBase) + \ + sizeof(((REQUEST_V6*)0)->Pad) \ + ) + +#define V6_UNENCRYPTED_SIZE ( \ + sizeof(((RESPONSE_V6*)0)->Version) + \ + sizeof(((RESPONSE_V6*)0)->IV) \ + ) + +#define V6_PRE_EPID_SIZE ( \ + V6_UNENCRYPTED_SIZE + \ + sizeof(((RESPONSE*)0)->Version) + \ + sizeof(((RESPONSE*)0)->PIDSize) \ + ) + +#define V5_POST_EPID_SIZE ( \ + V4_POST_EPID_SIZE + \ + sizeof(((RESPONSE_V6*)0)->RandomXoredIVs) + \ + sizeof(((RESPONSE_V6*)0)->Hash) \ + ) + +#define V6_POST_EPID_SIZE ( \ + V5_POST_EPID_SIZE + \ + sizeof(((RESPONSE_V6*)0)->HwId) + \ + sizeof(((RESPONSE_V6*)0)->XoredIVs) + \ + sizeof(((RESPONSE_V6*)0)->HMAC) \ + ) + +#define RESPONSE_RESULT_OK ((1 << 10) - 1) //(9 bits) +typedef union +{ + DWORD mask; + struct + { + BOOL HashOK : 1; + BOOL TimeStampOK : 1; + BOOL ClientMachineIDOK : 1; + BOOL VersionOK : 1; + BOOL IVsOK : 1; + BOOL DecryptSuccess : 1; + BOOL HmacSha256OK : 1; + BOOL PidLengthOK : 1; + BOOL RpcOK : 1; + BOOL IVnotSuspicious : 1; + BOOL reserved3 : 1; + BOOL reserved4 : 1; + BOOL reserved5 : 1; + BOOL reserved6 : 1; + uint32_t effectiveResponseSize : 9; + uint32_t correctResponseSize : 9; + }; +} RESPONSE_RESULT; + +typedef BYTE hwid_t[8]; + +typedef struct +{ + GUID guid; + const char* name; + const char* pid; + uint8_t AppIndex; + uint8_t KmsIndex; +} KmsIdList; + +#define KMS_PARAM_MAJOR AppIndex +#define KMS_PARAM_REQUIREDCOUNT KmsIndex + +#define APP_ID_WINDOWS 0 +#define APP_ID_OFFICE2010 1 +#define APP_ID_OFFICE2013 2 + +#define KMS_ID_VISTA 0 +#define KMS_ID_WIN7 1 +#define KMS_ID_WIN8_VL 2 +#define KMS_ID_WIN_BETA 3 +#define KMS_ID_WIN8_RETAIL 4 +#define KMS_ID_WIN81_VL 5 +#define KMS_ID_WIN81_RETAIL 6 +#define KMS_ID_WIN2008A 7 +#define KMS_ID_WIN2008B 8 +#define KMS_ID_WIN2008C 9 +#define KMS_ID_WIN2008R2A 10 +#define KMS_ID_WIN2008R2B 11 +#define KMS_ID_WIN2008R2C 12 +#define KMS_ID_WIN2012 13 +#define KMS_ID_WIN2012R2 14 +#define KMS_ID_OFFICE2010 15 +#define KMS_ID_OFFICE2013 16 +#define KMS_ID_WIN_SRV_BETA 17 +#define KMS_ID_OFFICE2016 18 +#define KMS_ID_WIN10_VL 19 +#define KMS_ID_WIN10_RETAIL 20 + +#define PWINGUID &AppList[APP_ID_WINDOWS].guid +#define POFFICE2010GUID &AppList[APP_ID_OFFICE2010].guid +#define POFFICE2013GUID &AppList[APP_ID_OFFICE2013].guid + +typedef BOOL(__stdcall *RequestCallback_t)(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr); + +size_t CreateResponseV4(REQUEST_V4 *const Request, BYTE *const response_data, const char* const ipstr); +size_t CreateResponseV6(REQUEST_V6 *restrict Request, BYTE *const response_data, const char* const ipstr); +BYTE *CreateRequestV4(size_t *size, const REQUEST* requestBase); +BYTE *CreateRequestV6(size_t *size, const REQUEST* requestBase); +void randomPidInit(); +void get16RandomBytes(void* ptr); +RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* Response_v6, int responseSize, BYTE* const response, const BYTE* const request, BYTE* hwid); +RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* Response_v4, const int responseSize, BYTE* const response, const BYTE* const request); +void getUnixTimeAsFileTime(FILETIME *const ts); +__pure int64_t fileTimeToUnixTime(const FILETIME *const ts); +const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i); +const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i); +__pure ProdListIndex_t getExtendedProductListSize(); +__pure ProdListIndex_t getAppListSize(void); + +extern const KmsIdList ProductList[]; +extern const KmsIdList AppList[]; +extern const KmsIdList ExtendedProductList[]; + +extern RequestCallback_t CreateResponseBase; + +#ifdef _PEDANTIC +uint16_t IsValidLcid(const uint16_t Lcid); +#endif // _PEDANTIC + +#endif // __kms_h diff --git a/libkms-test.c b/libkms-test.c new file mode 100644 index 00000000..a808f038 --- /dev/null +++ b/libkms-test.c @@ -0,0 +1,35 @@ +#include +#include +#include + +#include "libkms.h" +#include "kms.h" +#include "endian.h" + +static const char ePID[] = { 'T', 0, 'E', 0, 'S', 0, 'T', 0, 0, 0 }; + +__stdcall BOOL KmsCallBack(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr) +{ + printf("libvlmcs-test.c: Entered KmsCallBack for client %s\n", ipstr); + + memcpy(&baseResponse->CMID, &baseRequest->CMID, sizeof(GUID)); + memcpy(&baseResponse->ClientTime, &baseRequest->ClientTime, sizeof(FILETIME)); + memcpy(&baseResponse->KmsPID, ePID, sizeof(ePID)); + + baseResponse->Version = baseRequest->Version; + baseResponse->Count = LE32(LE32(baseRequest->N_Policy) << 1); + baseResponse->PIDSize = sizeof(ePID); + baseResponse->VLActivationInterval = LE32(120); + baseResponse->VLRenewalInterval = LE32(10080); + + if (hwId && baseResponse->MajorVer > 5) memcpy(hwId, "\x01\x02\x03\x04\x05\x06\x07\x08", 8); + + return TRUE; +} + +int main(int argc, char** argv) +{ + printf("libvlmcs-test.c: Program start\n"); + StartKmsServer(1688, KmsCallBack); + return 0; +} diff --git a/libkms.c b/libkms.c new file mode 100644 index 00000000..58501311 --- /dev/null +++ b/libkms.c @@ -0,0 +1,117 @@ +/* + * libkms.c + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#define EXTERNAL dllexport + +#define DLLVERSION 0x30000 + +#include "libkms.h" +#include "shared_globals.h" +#include "network.h" +#include "helpers.h" + +#ifndef _WIN32 +#include +#include +#include +#include +#include +#endif // WIN32 + +static int_fast8_t IsServerStarted = FALSE; + + +EXTERNC __declspec(EXTERNAL) DWORD __cdecl SendActivationRequest +( + const char* const hostname, + const int port, + RESPONSE* baseResponse, + const REQUEST* const baseRequest, + RESPONSE_RESULT* result, BYTE *hwid +) +{ + return !0; // not yet implemented +} + + +EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, RequestCallback_t requestCallback) +{ + char listenAddress[64]; + + if (IsServerStarted) return !0; + +# ifdef _WIN32 +# ifndef USE_MSRPC + // Windows Sockets must be initialized + WSADATA wsadata; + int error; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + return error; + } +# endif // USE_MSRPC +# endif // _WIN32 + + CreateResponseBase = requestCallback; + + int maxsockets = 0; + int_fast8_t haveIPv4 = FALSE; + int_fast8_t haveIPv6 = FALSE; + + if (checkProtocolStack(AF_INET)) { haveIPv4 = TRUE; maxsockets++; } + if (checkProtocolStack(AF_INET6)) { haveIPv6 = TRUE; maxsockets++; } + + if(!maxsockets) return !0; + + SocketList = (SOCKET*)vlmcsd_malloc(sizeof(SOCKET) * (size_t)maxsockets); + numsockets = 0; + + if (haveIPv4) + { + snprintf(listenAddress, 64, "0.0.0.0:%u", (unsigned int)port); + addListeningSocket(listenAddress); + } + + if (haveIPv6) + { + snprintf(listenAddress, 64, "[::]:%u", (unsigned int)port); + addListeningSocket(listenAddress); + } + + if (!numsockets) + { + free(SocketList); + return !0; + } + + IsServerStarted = TRUE; + + runServer(); + + IsServerStarted = FALSE; + return 0; +} + + +EXTERNC __declspec(EXTERNAL) DWORD __cdecl StopKmsServer() +{ + if (!IsServerStarted) return !0; + + closeAllListeningSockets(); + if (SocketList) free(SocketList); + return 0; +} + + +EXTERNC __declspec(EXTERNAL) int __cdecl GetLibKmsVersion() +{ + return DLLVERSION; +} + diff --git a/libkms.h b/libkms.h new file mode 100644 index 00000000..2c23cabc --- /dev/null +++ b/libkms.h @@ -0,0 +1,33 @@ +/* + * libkms.h + */ + +#ifndef LIBKMS_H_ +#define LIBKMS_H_ + +#include "types.h" +#include "kms.h" +#include "rpc.h" + +#ifdef __cplusplus +#define EXTERNC extern "C" +#else +#define EXTERNC +#endif + +#if !defined(_WIN32) && !__CYGWIN__ +#define __declspec(x) __attribute__((__visibility__("default"))) +#endif + +#if !defined(EXTERNAL) +#define EXTERNAL dllimport +#endif + +EXTERNC __declspec(EXTERNAL) DWORD __cdecl SendActivationRequest(const char* const hostname, const int port, RESPONSE* baseResponse, const REQUEST* const baseRequest, RESPONSE_RESULT* result, BYTE *hwid); +EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, RequestCallback_t requestCallback); +EXTERNC __declspec(EXTERNAL) DWORD __cdecl StopKmsServer(); +EXTERNC __declspec(EXTERNAL) int __cdecl GetLibKmsVersion(); +//EXTERN_C __declspec(EXTERNAL) unsigned int __cdecl GetRandom32(); + + +#endif /* LIBKMS_H_ */ diff --git a/make_dragonfly b/make_dragonfly new file mode 100644 index 00000000..2af096db --- /dev/null +++ b/make_dragonfly @@ -0,0 +1,31 @@ +#!/usr/local/bin/bash + +export VERBOSE=3 +export DNS_PARSER=OS + +rm -f vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* 2>/dev/null +rm -f vlmcsdmulti vlmcsd vlmcs 2>/dev/null + +MAKEFLAGS="-B -j12" +REUSEOBJFLAGS="-j12" + +CF="-flto=12 -static-libgcc -pipe -fwhole-program -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CF45="-static-libgcc -pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CFCLANG="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +LF="-Wl,-z,norelro -Wl,--hash-style=sysv -Wl,--build-id=none" +LFCLANG="-Wl,-z,norelro -Wl,--hash-style=sysv" + +gmake $MAKEFLAGS PROGRAM_NAME=vlmcsd-DragonFly-x64 CLIENT_NAME=vlmcs-DragonFly-x64 CFLAGS="$CF" LDFLAGS="$LF" +rm vlmcsd.o vlmcs.o +gmake vlmcsdmulti-DragonFly-x64 $REUSEOBJFLAGS CFLAGS="$CF" LDFLAGS="$LF" MULTI_NAME=vlmcsdmulti-DragonFly-x64 + +rm *.o + +strip -s --strip-unneeded --remove-section=.eh_frame_hdr --remove-section=.eh_frame --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag vlmcs-* vlmcsd-* vlmcsdmulti-* +sstrip -z vlmcs-* vlmcsd-* vlmcsdmulti-* + +cp -af vlmcsd-DragonFly-x64 /usr/local/sbin/vlmcsd +cp -af vlmcs-DragonFly-x64 /usr/local/bin/vlmcs + +# Copy everything to distribution server +scp -p vlmcsdmulti-* vlmcsd-* vlmcs-* root@ubuntu64:x/binaries/DragonFly/intel/ diff --git a/make_freebsd b/make_freebsd new file mode 100644 index 00000000..bd4dada3 --- /dev/null +++ b/make_freebsd @@ -0,0 +1,46 @@ +#!/usr/local/bin/bash + +export VERBOSE=3 +export DNS_PARSER=OS + +rm -f vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* 2>/dev/null +rm -f vlmcsdmulti vlmcsd vlmcs 2>/dev/null + +MAKEFLAGS="-B -j12" +REUSEOBJFLAGS="-j12" + +CF="-flto=12 -static-libgcc -pipe -fwhole-program -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CFCLANG="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +LF="-Wl,-z,norelro -Wl,--hash-style=gnu -Wl,--build-id=none" +LFCLANG="-Wl,-z,norelro -Wl,--hash-style=gnu" + +gmake $MAKEFLAGS allmulti CAT=2 MULTI_NAME=vlmcsdmulti-FreeBSD-10.2-x64-gcc CLIENT_NAME=vlmcs-FreeBSD-10.2-x64-gcc PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x64-gcc CC=gcc5 CFLAGS="$CF" LDFLAGS="$LF" + +gmake $MAKEFLAGS CLIENT_NAME=vlmcs-FreeBSD-10.2-x64 PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x64 CC=clang36 CFLAGS="$CFCLANG" LDFLAGS="$LF" +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* +gmake $REUSEOBJFLAGS vlmcsdmulti-FreeBSD-10.2-x64 MULTI_NAME=vlmcsdmulti-FreeBSD-10.2-x64 CC=clang36 CFLAGS="$CFCLANG" LDFLAGS="$LF" + +gmake $MAKEFLAGS CLIENT_NAME=vlmcs-FreeBSD-10.2-x86 PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x86 CC=clang36 CFLAGS="$CFCLANG -m32" LDFLAGS="$LF" +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* +gmake $REUSEOBJFLAGS vlmcsdmulti-FreeBSD-10.2-x86 MULTI_NAME=vlmcsdmulti-FreeBSD-10.2-x86 CC=clang36 CFLAGS="$CFCLANG -m32" LDFLAGS="$LF" + +gmake $MAKEFLAGS allmulti CAT=2 MULTI_NAME=vlmcsdmulti-FreeBSD-10.2-x86-gcc CLIENT_NAME=vlmcs-FreeBSD-10.2-x86-gcc PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x86-gcc CC=gcc5 CFLAGS="$CF -m32 -DCOMPAT_32BIT" LDFLAGS="-L/usr/lib32 -B/usr/lib32 $LF" + +gmake $MAKEFLAGS CAT=2 vlmcsd-FreeBSD-10.2-x64-threads-gcc PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x64-threads-gcc THREADS=1 CC=gcc5 CFLAGS="$CF" LDFLAGS="-lpthread $LF" +gmake $MAKEFLAGS vlmcsd-FreeBSD-10.2-x64-threads PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x64-threads THREADS=1 CC=clang36 CFLAGS="$CFCLANG" LDFLAGS="-lpthread $LF" +gmake $MAKEFLAGS vlmcsd-FreeBSD-10.2-x86-threads PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x86-threads THREADS=1 CC=clang36 CFLAGS="$CFCLANG -m32" LDFLAGS="-lpthread $LF" +gmake $MAKEFLAGS CAT=2 vlmcsd-FreeBSD-10.2-x86-threads-gcc PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x86-threads-gcc THREADS=1 CC=gcc5 CFLAGS="$CF -m32 -DCOMPAT_32BIT" LDFLAGS="-lpthread -L/usr/lib32 -B/usr/lib32 $LF" + +gmake $MAKEFLAGS CRYPTO=openssl_with_aes CLIENT_NAME=vlmcs-FreeBSD-10.2-x64-openssl1.0.1-EXPERIMENTAL PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x64-openssl1.0.1-EXPERIMENTAL CC=clang36 CFLAGS="$CFCLANG" LDFLAGS="$LF" +gmake $MAKEFLAGS CRYPTO=openssl_with_aes CLIENT_NAME=vlmcs-FreeBSD-10.2-x86-openssl1.0.1-EXPERIMENTAL PROGRAM_NAME=vlmcsd-FreeBSD-10.2-x86-openssl1.0.1-EXPERIMENTAL CC=clang36 CFLAGS="$CFCLANG -m32" LDFLAGS="$LF" + +rm *.o + +strip -s --strip-unneeded --remove-section=.eh_frame_hdr --remove-section=.eh_frame --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag vlmcs-* vlmcsd-* vlmcsdmulti-* +sstrip -z vlmcs-* vlmcsd-* vlmcsdmulti-* + +sudo cp -af vlmcsd-FreeBSD-10.2-x86-gcc /usr/local/sbin/vlmcsd +sudo cp -af vlmcs-FreeBSD-10.2-x86-gcc /usr/local/bin/vlmcs + +# Copy everything to distribution server +scp -p vlmcsdmulti-* vlmcsd-* vlmcs-* root@ubuntu64:x/binaries/FreeBSD/intel/ diff --git a/make_linux b/make_linux new file mode 100644 index 00000000..6fa2fa40 --- /dev/null +++ b/make_linux @@ -0,0 +1,3511 @@ +#!/bin/bash + +#export VLMCSD_VERSION="svn`svnversion | sed -e 's/:.*//; s/[^0-9]*$//; s/^$/0/'`" + +export VERBOSE=3 +export DNS_PARSER=internal + +MAKEFLAGS="-j`nproc` -B" +REUSEOBJFLAGS="-j" +SMALLCC="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +SMALLLD="-pipe -Wl,--hash-style=sysv -Wl,-z,norelro -Wl,--build-id=none" +SMALL="$SMALLCC $SMALLLD" + + +rm -f vlmcs vlmcsdmulti vlmcsd 2>/dev/null +rm -fr binaries + +mkdir -p binaries/Linux/intel/glibc +mkdir -p binaries/Linux/intel/uclibc +mkdir -p binaries/Linux/intel/static +mkdir -p binaries/Linux/intel/musl + +mkdir -p binaries/Linux/sparc32/glibc + +mkdir -p binaries/Android/arm/bionic +mkdir -p binaries/Android/arm/static +mkdir -p binaries/Android/intel/bionic +mkdir -p binaries/Android/intel/static +mkdir -p binaries/Android/mips/bionic +mkdir -p binaries/Android/mips/static + +mkdir -p binaries/Linux/arm/little-endian/glibc +mkdir -p binaries/Linux/arm/little-endian/musl +mkdir -p binaries/Linux/arm/little-endian/uclibc +mkdir -p binaries/Linux/arm/little-endian/static +mkdir -p binaries/Linux/arm/big-endian/uclibc +mkdir -p binaries/Linux/arm/big-endian/static + +mkdir -p binaries/Linux/mips/little-endian/glibc +mkdir -p binaries/Linux/mips/little-endian/uclibc +mkdir -p binaries/Linux/mips/little-endian/static +mkdir -p binaries/Linux/mips/little-endian/musl +mkdir -p binaries/Linux/mips/big-endian/uclibc +mkdir -p binaries/Linux/mips/big-endian/static +mkdir -p binaries/Linux/mips/big-endian/glibc +mkdir -p binaries/Linux/mips/big-endian/musl + +mkdir -p binaries/Linux/ppc/little-endian/glibc +mkdir -p binaries/Linux/ppc/big-endian/glibc +mkdir -p binaries/Linux/ppc/big-endian/uclibc +mkdir -p binaries/Linux/ppc/big-endian/static + +mkdir -p binaries/MacOSX/intel +mkdir -p binaries/MacOSX/ppc +mkdir -p binaries/iOS/arm + +mkdir -p binaries/FreeBSD/intel +mkdir -p binaries/NetBSD/intel +mkdir -p binaries/OpenBSD/intel +mkdir -p binaries/DragonFly/intel +mkdir -p binaries/Solaris/intel +mkdir -p binaries/Windows/intel +mkdir -p binaries/Minix/intel + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +export STAGING_DIR=. + +# Windows 32-bit using MingW32-w64 toolchain on Ubuntu Linux +export CLIENT_NAME=binaries/Windows/intel/vlmcs-Windows-x86.exe +export PROGRAM_NAME=binaries/Windows/intel/vlmcsd-Windows-x86.exe +export MULTI_NAME=binaries/Windows/intel/vlmcsdmulti-Windows-x86.exe +export DLL_NAME=binaries/Windows/intel/libkms32.dll +export THREADS=1 +export CFLAGS="$SMALLCC" +export CC=i686-w64-mingw32-gcc +export PLATFORMFLAGS="-march=i686 -mtune=generic -fwhole-program -pipe" +export LDFLAGS="-lws2_32 -Wl,--gc-sections,--force-exe-suffix,--large-address-aware,--nxcompat,--dynamicbase,--tsaware" +export FEATURES=full + +make $MAKEFLAGS CAT=2 all $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CFLAGS="$CFLAGS -flto=jobserver -fvisibility=hidden" +export LDFLAGS="$LDFLAGS -static-libgcc" + +make $MAKEFLAGS FEATURES=minimum $DLL_NAME + +if [ $? != 0 ]; then + echo Error creating $DLL_NAME + exit $? +fi + + + +# Windows 32-bit using MingW32-w64 toolchain on Ubuntu Linux using MS RPC +export CLIENT_NAME=binaries/Windows/intel/vlmcs-Windows-msrpc-x86.exe +export PROGRAM_NAME=binaries/Windows/intel/vlmcsd-Windows-msrpc-x86.exe +export MULTI_NAME=binaries/Windows/intel/vlmcsdmulti-Windows-msrpc-x86.exe +export THREADS=1 +export CFLAGS="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fmerge-all-constants -Wno-unused-variable -Wno-missing-braces" +export CC=i686-w64-mingw32-gcc +export PLATFORMFLAGS="-march=i686 -mtune=generic -pipe" +export LDFLAGS="-Wl,--gc-sections,--force-exe-suffix,--large-address-aware,--nxcompat,--dynamicbase,--tsaware -fwhole-program" +export FEATURES=full + +make $MAKEFLAGS CAT=2 MSRPC=1 all + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +make $MAKEFLAGS MSRPC=1 $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + +# Windows 64-bit using MingW32-w64 toolchain on Ubuntu Linux +export CLIENT_NAME=binaries/Windows/intel/vlmcs-Windows-x64.exe +export PROGRAM_NAME=binaries/Windows/intel/vlmcsd-Windows-x64.exe +export MULTI_NAME=binaries/Windows/intel/vlmcsdmulti-Windows-x64.exe +export DLL_NAME=binaries/Windows/intel/libkms64.dll +export THREADS=1 +export CFLAGS="$SMALLCC" +export CC=x86_64-w64-mingw32-gcc +export PLATFORMFLAGS="-march=nocona -mtune=generic -fwhole-program -pipe" +export LDFLAGS="-lws2_32 -Wl,--gc-sections,--force-exe-suffix,--nxcompat,--dynamicbase,--tsaware" + +make $MAKEFLAGS CAT=2 all $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CFLAGS="$CFLAGS -flto=jobserver -fvisibility=hidden" +export LDFLAGS="$LDFLAGS -static-libgcc" + +make $MAKEFLAGS FEATURES=minimum $DLL_NAME + +if [ $? != 0 ]; then + echo Error creating $DLL_NAME + exit $? +fi + + + + +# Windows 64-bit using MingW32-w64 toolchain on Ubuntu Linux using MS RPC +export CLIENT_NAME=binaries/Windows/intel/vlmcs-Windows-msrpc-x64.exe +export PROGRAM_NAME=binaries/Windows/intel/vlmcsd-Windows-msrpc-x64.exe +export MULTI_NAME=binaries/Windows/intel/vlmcsdmulti-Windows-msrpc-x64.exe +export THREADS=1 +export CFLAGS="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fmerge-all-constants -Wno-unused-variable -Wno-missing-braces" +export CC=x86_64-w64-mingw32-gcc +export PLATFORMFLAGS="-march=nocona -mtune=generic -pipe" +export LDFLAGS="-Wl,--gc-sections,--force-exe-suffix,--nxcompat,--dynamicbase,--tsaware -fwhole-program" + +make $MAKEFLAGS CAT=2 MSRPC=1 all + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +make $MAKEFLAGS MSRPC=1 $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips32el with uClibc 0.9.33.2 using gcc 4.9 from OpenWRT toolchain +export CLIENT_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcs-mips32el-openwrt-uclib +export PROGRAM_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsd-mips32el-openwrt-uclibc +export CC=/opt/toolchains/mipsel-openwrt-linux-uclibc/toolchain-mipsel_mips32_gcc-4.9-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-gcc +export CFLAGS="$SMALLCC -DNO_LIMIT" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Linux/mips/little-endian/static/vlmcs-mips32el-openwrt-uclib-static +export PROGRAM_NAME=binaries/Linux/mips/little-endian/static/vlmcsd-mips32el-openwrt-uclibc-static +export MULTI_NAME=binaries/Linux/mips/little-endian/static/vlmcsdmulti-mips32el-openwrt-uclibc-static +export LDFLAGS="$LDFLAGS -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsdmulti-mips32el-openwrt-uclibc +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips16el with uClibc 0.9.33.2 using gcc 4.9 from OpenWRT toolchain with statically linked libgcc for Asus routers, e.g. Asus RT-N66U +export CLIENT_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcs-mips16el-asus-rt-n66u-uclibc +export PROGRAM_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsd-mips16el-asus-rt-n66u-uclibc +export CC=/opt/toolchains/mipsel-openwrt-linux-uclibc/toolchain-mipsel_mips32_gcc-4.9-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-gcc +export CFLAGS="$SMALLCC -static-libgcc -DNO_LIMIT" +export PLATFORMFLAGS="-mips32 -mips16 -flto=jobserver -fwhole-program" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Linux/mips/little-endian/static/vlmcs-mips16el-asus-rt-n66u-uclibc-static +export PROGRAM_NAME=binaries/Linux/mips/little-endian/static/vlmcsd-mips16el-asus-rt-n66u-uclibc-static +export MULTI_NAME=binaries/Linux/mips/little-endian/static/vlmcsdmulti-mips16el-asus-rt-n66u-uclibc-static +export LDFLAGS="$LDFLAGS -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsdmulti-mips16el-asus-rt-n66u-uclibc +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + + +# Linux mips16el with uClibc 0.9.33.2 using gcc 4.8 from OpenWRT toolchain +export CLIENT_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcs-mips16el-openwrt-uclibc +export PROGRAM_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsd-mips16el-openwrt-uclibc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +export LDFLAGS="$SMALLLD" + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Linux/mips/little-endian/static/vlmcs-mips16el-openwrt-uclib-static +export PROGRAM_NAME=binaries/Linux/mips/little-endian/static/vlmcsd-mips16el-openwrt-uclibc-static +export MULTI_NAME=binaries/Linux/mips/little-endian/static/vlmcsdmulti-mips16el-openwrt-uclibc-static +export LDFLAGS="$LDFLAGS -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsdmulti-mips16el-openwrt-uclibc +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips16el eglibc 2.19 using gcc 4.8 from OpenWRT toolchain +export CLIENT_NAME=binaries/Linux/mips/little-endian/glibc/vlmcs-mips16el-openwrt-glibc +export PROGRAM_NAME=binaries/Linux/mips/little-endian/glibc/vlmcsd-mips16el-openwrt-glibc +export MULTI_NAME=binaries/Linux/mips/little-endian/glibc/vlmcsdmulti-mips16el-openwrt-glibc +export CC=/opt/toolchains/mipsel_74kc+dsp2_gcc-4.9-linaro_eglibc-2.19-mips16/bin/mipsel-openwrt-linux-gnu-gcc-4.9.2 +#export CC=~/openwrt/staging_dir/toolchain-mipsel_mips32_gcc-4.8-linaro_eglibc-2.19/bin/mipsel-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=mips32 -mips16" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# PowerPC 64-bit big-endian glibc. +export CLIENT_NAME=binaries/Linux/ppc/big-endian/glibc/vlmcs-ppc64-glibc +export PROGRAM_NAME=binaries/Linux/ppc/big-endian/glibc/vlmcsd-ppc64-glibc +export MULTI_NAME=binaries/Linux/ppc/big-endian/glibc/vlmcsdmulti-ppc64-glibc +export CC=/opt/toolchains/ppc64-glibc2.19-gcc-4.9.1/bin/powerpc64-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# PowerPC 64-bit little-endian glibc. +export CLIENT_NAME=binaries/Linux/ppc/little-endian/glibc/vlmcs-ppc64el-glibc +export PROGRAM_NAME=binaries/Linux/ppc/little-endian/glibc/vlmcsd-ppc64el-glibc +export MULTI_NAME=binaries/Linux/ppc/little-endian/glibc/vlmcsdmulti-ppc64el-glibc +export CC=/opt/toolchains/ppc64el-glibc2.20-gcc-4.9.1/bin/powerpc64le-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# PowerPC glibc. Compiles with gcc 4.8 from OpenWRT toolchain but uses libs from an old DM500 toolchain to be compatible with glibc 2.3 +export CLIENT_NAME=binaries/Linux/ppc/big-endian/glibc/vlmcs-ppc-glibc +export PROGRAM_NAME=binaries/Linux/ppc/big-endian/glibc/vlmcsd-ppc-glibc +export MULTI_NAME=binaries/Linux/ppc/big-endian/glibc/vlmcsdmulti-ppc-glibc +export CC=~/openwrt/staging_dir/toolchain-powerpc_405_gcc-4.8-linaro_eglibc-2.19/bin/powerpc-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program --sysroot=/opt/simplebuild/toolchains/powerpc -L/opt/simplebuild/toolchains/powerpc/lib -L/opt/simplebuild/toolchains/powerpc/usr/lib" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Mips 32 glibc compiled with gcc 4.9.2 from OpenWRT toolchain +export CLIENT_NAME=binaries/Linux/mips/big-endian/glibc/vlmcs-mips32-openwrt-glibc +export PROGRAM_NAME=binaries/Linux/mips/big-endian/glibc/vlmcsd-mips32-openwrt-glibc +export MULTI_NAME=binaries/Linux/mips/big-endian/glibc/vlmcsdmulti-mips32-openwrt-glibc +export CC=/opt/toolchains/mips_34kc_gcc-4.9-linaro_eglibc-2.19-mips16/bin/mips-openwrt-linux-gcc +#export CC=~/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_eglibc-2.19/bin/mips-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +# Mips 32 glibc compiled with gcc 4.9.2 from OpenWRT toolchain +export CLIENT_NAME=binaries/Linux/mips/big-endian/glibc/vlmcs-mips16-openwrt-glibc +export PROGRAM_NAME=binaries/Linux/mips/big-endian/glibc/vlmcsd-mips16-openwrt-glibc +export MULTI_NAME=binaries/Linux/mips/big-endian/glibc/vlmcsdmulti-mips16-openwrt-glibc +export CC=/opt/toolchains/mips_34kc_gcc-4.9-linaro_eglibc-2.19-mips16/bin/mips-openwrt-linux-gcc +#export CC=~/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_eglibc-2.19/bin/mips-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32 -mips16" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +# mips32el glibc 2.19 compiled with gcc 4.8 from OpenWRT toolchain +export CLIENT_NAME=binaries/Linux/mips/little-endian/glibc/vlmcs-mips32el-openwrt-glibc +export PROGRAM_NAME=binaries/Linux/mips/little-endian/glibc/vlmcsd-mips32el-openwrt-glibc +export MULTI_NAME=binaries/Linux/mips/little-endian/glibc/vlmcsdmulti-mips32el-openwrt-glibc +export CC=/opt/toolchains/mipsel_74kc+dsp2_gcc-4.9-linaro_eglibc-2.19-mips16/bin/mipsel-openwrt-linux-gnu-gcc-4.9.2 +#export CC=~/openwrt/staging_dir/toolchain-mipsel_mips32_gcc-4.8-linaro_eglibc-2.19/bin/mipsel-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32" +export LDFLAGS="$SMALLLD" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# mips1el uclibc with old tomato toolchain gcc 3.2.3 with Broadcom extensions uClibc 0.9.19 +export CLIENT_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcs-mips1el-tomato-uclibc +export PROGRAM_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsd-mips1el-tomato-uclibc +export MULTI_NAME=binaries/Linux/mips/little-endian/uclibc/vlmcsdmulti-mips1el-tomato-uclibc +export CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc +export CFLAGS="-DNO_BUILTIN -pipe -fno-common -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +export PLATFORMFLAGS="" +export LDFLAGS="-pipe -Wl,-z,norelro" +export THREADS=0 +#export TERMINAL_WIDTH=80 + +make NO_DNS=1 CAT=2 $MAKEFLAGS $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Linux/mips/little-endian/static/vlmcs-mips1el-tomato-uclibc-static +export PROGRAM_NAME=binaries/Linux/mips/little-endian/static/vlmcsd-mips1el-tomato-uclibc-static +export MULTI_NAME=binaries/Linux/mips/little-endian/static/vlmcsdmulti-mips1el-tomato-uclibc-static +export LDFLAGS="$LDFLAGS -static" + +make NO_DNS=1 $REUSEOBJFLAGS $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME CAT=2 + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +#Android gcc 4.8 with API Level 3 (Android 1.5 cupcake) armv7 + +export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android15-armv7 +export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android15-armv7 +export CC=/opt/toolchains/armelv7-android-3/bin/arm-linux-androideabi-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb" +export THREADS=0 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android15-armv7-static +export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android15-armv7-static +export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android15-armv7-static +export LDFLAGS="$LDFLAGS -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export LDFLAGS="$SMALLLD" +export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android15-armv7 + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.8 with API Level 3 (Android 1.5 cupcake) armv5 + +export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android15-armv5 +export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android15-armv5 +export CC=/opt/toolchains/armelv7-android-3/bin/arm-linux-androideabi-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv5te -mthumb" +export THREADS=0 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android15-armv5-static +export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android15-armv5-static +export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android15-armv5-static +export LDFLAGS="$LDFLAGS -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export LDFLAGS="$SMALLLD" +export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android15-armv5 + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.8 with API Level 16 (Android 4.1 Jelly Bean) armv7 + +export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android41-armv7 +export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android41-armv7 +export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android41-armv7 +export CC=/opt/toolchains/armelv7-android-16/bin/arm-linux-androideabi-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb -fPIE -pie" +export THREADS=0 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +##Android gcc 4.8 with API Level 21 (Android 5.0 Lollipop) armv7 +# +#export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android50-armv7 +#export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android50-armv7 +#export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android50-armv7 +#export CC=/opt/toolchains/armelv7-android-21/bin/arm-linux-androideabi-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb -fPIE -pie" +#export THREADS=0 +#export LDFLAGS="$SMALLLD" +# +#make NOLPTHREAD=1 $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +# +# +# +# +#Android gcc 4.9 with API Level 21 (Android 5.0 Lollipop) arm64el + +export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android50-arm64v8 +export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android50-arm64v8 +export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android50-arm64v8 +export CC=/opt/toolchains/arm64el-android-21/bin/aarch64-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mtune=generic -mfix-cortex-a53-835769 -march=armv8-a -fPIE -pie" +export THREADS=0 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 NO_DNS=0 $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 NO_DNS=0 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.9 with API Level 21 (Android 5.0 Lollipop) arm64el STATIC + +export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android50-arm64v8-static +export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android50-arm64v8-static +export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android50-arm64v8-static +export CC=/opt/toolchains/arm64el-android-21/bin/aarch64-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mtune=generic -mfix-cortex-a53-835769 -march=armv8-a" +export THREADS=0 +export LDFLAGS="$SMALLLD -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.8 with API Level 9 (Android 2.3 Gingerbread) x86 + +export CLIENT_NAME=binaries/Android/intel/bionic/vlmcs-android23-x86 +export PROGRAM_NAME=binaries/Android/intel/bionic/vlmcsd-android23-x86 +export CC=/opt/toolchains/x86-android-9/bin/i686-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=atom -m32" +export THREADS=1 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Android/intel/static/vlmcs-android23-x86-static +export PROGRAM_NAME=binaries/Android/intel/static/vlmcsd-android23-x86-static +export MULTI_NAME=binaries/Android/intel/static/vlmcsdmulti-android23-x86-static +export LDFLAGS="$LDFLAGS -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export LDFLAGS="$SMALLLD" +export MULTI_NAME=binaries/Android/intel/bionic/vlmcsdmulti-android23-x86 + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.8 with API Level 16 (Android 4.1 Jelly Bean) x86 + +export CLIENT_NAME=binaries/Android/intel/bionic/vlmcs-android41-x86 +export PROGRAM_NAME=binaries/Android/intel/bionic/vlmcsd-android41-x86 +export MULTI_NAME=binaries/Android/intel/bionic/vlmcsdmulti-android41-x86 +export CC=/opt/toolchains/x86-android-16/bin/i686-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=atom -m32 -fPIE -pie" +export THREADS=1 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +##Android gcc 4.8 with API Level 21 (Android 5.0 Lollipop) x86 +# +#export CLIENT_NAME=binaries/Android/intel/bionic/vlmcs-android50-x86 +#export PROGRAM_NAME=binaries/Android/intel/bionic/vlmcsd-android50-x86 +#export MULTI_NAME=binaries/Android/intel/bionic/vlmcsdmulti-android50-x86 +#export CC=/opt/toolchains/x86-android-21/bin/i686-linux-android-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=atom -m32 -fPIE -pie" +#export THREADS=1 +#export LDFLAGS="$SMALLLD" +# +#make NOLPTHREAD=1 $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi + + + + +#Android gcc 4.9 with API Level 21 (Android 5.0 Lollipop) x64 + +export CLIENT_NAME=binaries/Android/intel/bionic/vlmcs-android50-x64 +export PROGRAM_NAME=binaries/Android/intel/bionic/vlmcsd-android50-x64 +export MULTI_NAME=binaries/Android/intel/bionic/vlmcsdmulti-android50-x64 +export CC=/opt/toolchains/x86_64-android-21/bin/x86_64-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=atom -m64 -fPIE -pie" +export THREADS=0 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 NO_DNS=0 $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 NO_DNS=0 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.9 with API Level 21 (Android 5.0 Lollipop) x64 STATIC + +export CLIENT_NAME=binaries/Android/intel/static/vlmcs-android50-x64-static +export PROGRAM_NAME=binaries/Android/intel/static/vlmcsd-android50-x64-static +export MULTI_NAME=binaries/Android/intel/static/vlmcsdmulti-android50-x64-static +export CC=/opt/toolchains/x86_64-android-21/bin/x86_64-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=nocona -m64" +export THREADS=0 +export LDFLAGS="$SMALLLD -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +#Android gcc 4.8 with API Level 9 (Android 2.3 Gingerbread) mips32el + +export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android23-mips32el +export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android23-mips32el +export CC=/opt/toolchains/mipsel-android-9/bin/mipsel-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export THREADS=1 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Android/mips/static/vlmcs-android23-mips32el-static +export PROGRAM_NAME=binaries/Android/mips/static/vlmcsd-android23-mips32el-static +export MULTI_NAME=binaries/Android/mips/static/vlmcsdmulti-android23-mips32el-static +export LDFLAGS="$LDFLAGS -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export LDFLAGS="$SMALLLD" +export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android23-mips32el + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +#Android gcc 4.8 with API Level 16 (Android 4.1 Jelly Bean) mips32el + +export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android41-mips32el +export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android41-mips32el +export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android41-mips32el +export CC=/opt/toolchains/mipsel-android-16/bin/mipsel-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -fPIE -pie" +export THREADS=1 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +##Android gcc 4.8 with API Level 21 (Android 5.0 Lollipop) mips32el +# +#export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android50-mips32el +#export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android50-mips32el +#export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android50-mips32el +#export CC=/opt/toolchains/mipsel-android-21/bin/mipsel-linux-android-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -fPIE -pie" +#export THREADS=1 +#export LDFLAGS="$SMALLLD" +# +#make NOLPTHREAD=1 $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi + + + + +##Android gcc 4.8 with API Level 9 (Android 2.3 Gingerbread) mips16el +# +#export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android23-mips16el +#export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android23-mips16el +#export CC=/opt/toolchains/mipsel-android-9/bin/mipsel-linux-android-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +#export THREADS=1 +#export LDFLAGS="$SMALLLD" +# +#make NOLPTHREAD=1 $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#export CLIENT_NAME=binaries/Android/mips/static/vlmcs-android23-mips16el-static +#export PROGRAM_NAME=binaries/Android/mips/static/vlmcsd-android23-mips16el-static +#export MULTI_NAME=binaries/Android/mips/static/vlmcsdmulti-android23-mips16el-static +#export LDFLAGS="$LDFLAGS -static" +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +#export LDFLAGS="$SMALLLD" +#export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android23-mips16el +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +# +# +# +# +##Android gcc 4.8 with API Level 16 (Android 4.1 Jelly Bean) mips16el +# +#export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android41-mips16el +#export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android41-mips16el +#export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android41-mips16el +#export CC=/opt/toolchains/mipsel-android-16/bin/mipsel-linux-android-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -fPIE -pie -mips16" +#export THREADS=1 +#export LDFLAGS="$SMALLLD" +# +#make NOLPTHREAD=1 $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +# +# +# +# +#Android gcc 4.8 with API Level 21 (Android 5.0 Lollipop) mips16el +# +#export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android50-mips16el +#export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android50-mips16el +#export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android50-mips16el +#export CC=/opt/toolchains/mipsel-android-21/bin/mipsel-linux-android-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -fPIE -pie -mips16" +#export THREADS=1 +#export LDFLAGS="$SMALLLD" +# +#make NOLPTHREAD=1 $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make NOLPTHREAD=1 $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi + + +#Android gcc 4.9 with API Level 21 (Android 5.0 Lollipop) mips64el + +export CLIENT_NAME=binaries/Android/mips/bionic/vlmcs-android50-mips64el +export PROGRAM_NAME=binaries/Android/mips/bionic/vlmcsd-android50-mips64el +export MULTI_NAME=binaries/Android/mips/bionic/vlmcsdmulti-android50-mips64el +export CC=/opt/toolchains/mips64el-android-21/bin/mips64el-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -fPIE -pie" +export THREADS=0 +export LDFLAGS="$SMALLLD" + +make NOLPTHREAD=1 NOLRESOLV=1 NO_DNS=0 $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 NO_DNS=0 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Android gcc 4.9 with API Level 21 (Android 5.0 Lollipop) mips64el STATIC + +export CLIENT_NAME=binaries/Android/mips/static/vlmcs-android50-mips64el-static +export PROGRAM_NAME=binaries/Android/mips/static/vlmcsd-android50-mips64el-static +export MULTI_NAME=binaries/Android/mips/static/vlmcsdmulti-android50-mips64el-static +export CC=/opt/toolchains/mips64el-android-21/bin/mips64el-linux-android-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export THREADS=0 +export LDFLAGS="$SMALLLD -static" + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLPTHREAD=1 NOLRESOLV=1 DNS_PARSER=OS $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +## Android 5.0+ with Ubuntu toolchain +#export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android5 +#export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android5 +#export CC=arm-linux-androideabi-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +#export LDFLAGS="$SMALLLD -pie -fpie" +#export THREADS=0 +# +#make $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +# +# Android 5.0+ with Ubuntu toolchain STATIC +#export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android5-static +#export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android5-static +#export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android5-static +#export LDFLAGS="$LDFLAGS -static" +# +#make $REUSEOBJFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +#export LDFLAGS="$SMALLLD -pie -fpie" +#export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android5 +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +# +# +# +## Android 5.0+ with Ubuntu toolchain for ARMv7 CPU with thumb2 instruction set +#export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android5-armv7 +#export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android5-armv7 +#export CC=arm-linux-androideabi-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mthumb -march=armv7 -mtune=cortex-a9" +#export LDFLAGS="$SMALLLD -pie -fpie" +#export THREADS=0 +# +#make $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android5-armv7-static +#export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android5-armv7-static +#export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android5-armv7-static +#export LDFLAGS="$LDFLAGS -static" +# +#make $REUSEOBJFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +#export LDFLAGS="$SMALLLD -pie -fpie" +#export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android5-armv7 +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +##unset TERMINAL_WIDTH +# +# +# +# +# +## Android with Ubuntu toolchain +#export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android +#export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android +#export CC=arm-linux-androideabi-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +#export LDFLAGS="$SMALLLD" +#export THREADS=0 +# +#make $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +# +## Android with Ubuntu toolchain STATIC +#export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android-static +#export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android-static +#export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android-static +#export LDFLAGS="$LDFLAGS -static" +# +#make $REUSEOBJFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +#export LDFLAGS="$SMALLLD" +#export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi + + + + +# Android with Ubuntu toolchain for ARMv7 CPU with thumb2 instruction set +#export CLIENT_NAME=binaries/Android/arm/bionic/vlmcs-android-armv7 +#export PROGRAM_NAME=binaries/Android/arm/bionic/vlmcsd-android-armv7 +#export CC=arm-linux-androideabi-gcc +#export CFLAGS="$SMALLCC" +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mthumb -march=armv7 -mtune=cortex-a9" +#export LDFLAGS="$SMALLLD" +#export THREADS=0 +# +#make $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#export CLIENT_NAME=binaries/Android/arm/static/vlmcs-android-armv7-static +#export PROGRAM_NAME=binaries/Android/arm/static/vlmcsd-android-armv7-static +#export MULTI_NAME=binaries/Android/arm/static/vlmcsdmulti-android-armv7-static +#export LDFLAGS="$LDFLAGS -static" +# +#make $REUSEOBJFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi +# +#export LDFLAGS="$SMALLLD" +#export MULTI_NAME=binaries/Android/arm/bionic/vlmcsdmulti-android-armv7 +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi + + + + +# Linux x86 glibc +export MULTI_NAME=binaries/Linux/intel/glibc/vlmcsdmulti-x86-glibc +export CLIENT_NAME=binaries/Linux/intel/glibc/vlmcs-x86-glibc +export PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x86-glibc +export CC=~/openwrt/staging_dir/toolchain-i386_i486_gcc-4.8-linaro_eglibc-2.19/bin/i486-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m32 -march=i686 -mtune=generic" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS binaries/Linux/intel/glibc/vlmcsdmulti-x86-glibc + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +# Linux x86 glibc minimum standalone version +export PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x86-glibc-minimum +export CC=~/openwrt/staging_dir/toolchain-i386_i486_gcc-4.8-linaro_eglibc-2.19/bin/i486-openwrt-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m32 -march=i686 -mtune=generic" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export FEATURES=minimum + +make NO_DNS=1 $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + +# Linux x86 glibc minimum inetd version +export PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x86-glibc-minimum-inetd +export CFLAGS="$CFLAGS -DNO_SOCKETS" + +make NO_DNS=1 $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + +# Linux x86 glibc threads +export FEATURES=full +export THREADS=1 +export PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x86-glibc-threads +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -lpthread" +export CFLAGS="$SMALLCC" + +make $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + + + + +# Linux x86 musl +export FEATURES=full +export MULTI_NAME=binaries/Linux/intel/static/vlmcsdmulti-x86-musl-static +export CLIENT_NAME=binaries/Linux/intel/static/vlmcs-x86-musl-static +export PROGRAM_NAME=binaries/Linux/intel/static/vlmcsd-x86-musl-static +export CC=/opt/toolchains/i386_i486_gcc-4.9-linaro_musl-1.1.6/bin/i486-openwrt-linux-musl-gcc-4.9.2 +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m32 -march=i686 -mtune=generic" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -static" +export THREADS=0 +export NOPROCFS=0 +export AUXV=1 + +make $MAKEFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export MULTI_NAME=binaries/Linux/intel/musl/vlmcsdmulti-x86-musl + +make $MAKEFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +export LDFLAGS="$LDFLAGS -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export CLIENT_NAME=binaries/Linux/intel/musl/vlmcs-x86-musl +export PROGRAM_NAME=binaries/Linux/intel/musl/vlmcsd-x86-musl +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +# Linux x86 musl static threads +export FEATURES=full +export PROGRAM_NAME=binaries/Linux/intel/static/vlmcsd-x86-musl-static-threads +export CC=/opt/toolchains/i386_i486_gcc-4.9-linaro_musl-1.1.6/bin/i486-openwrt-linux-musl-gcc-4.9.2 +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m32 -march=i686 -mtune=generic" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -static" +export THREADS=1 +export NOPROCFS=0 +export AUXV=1 + +make $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + + + + + +# Linux x32 glibc +export FEATURES=full +export MULTI_NAME=binaries/Linux/intel/glibc/vlmcsdmulti-x32-glibc +export CLIENT_NAME=binaries/Linux/intel/glibc/vlmcs-x32-glibc +export PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x32-glibc +export CC=gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mx32 -march=nocona -mtune=generic" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export NOPROCFS=0 +export AUXV=1 + +make DNS_PARSER=OS $MAKEFLAGS binaries/Linux/intel/glibc/vlmcsdmulti-x32-glibc + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make DNS_PARSER=OS $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +# Linux x32 glibc threads +export FEATURES=full +export PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x32-glibc-threads +export CC=gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mx32 -march=nocona -mtune=generic" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -lpthread" +export THREADS=1 +export NOPROCFS=0 +export AUXV=1 + +make DNS_PARSER=OS $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + + + + +# Linux armv4 little-endian glibc +export FEATURES=full +export MULTI_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv4el-glibc +export CLIENT_NAME=binaries/Linux/arm/little-endian/glibc/vlmcs-armv4el-glibc +export PROGRAM_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsd-armv4el-glibc +export CC=/opt/toolchains/armelv5t-glibc-2.20/bin/arm-linux-gcc +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv4 -marm" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export NOPROCFS=0 +export AUXV=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv4 little-endian glibc thumb instruction set + +export MULTI_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv4el-glibc-thumb +export CLIENT_NAME=binaries/Linux/arm/little-endian/glibc/vlmcs-armv4el-glibc-thumb +export PROGRAM_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsd-armv4el-glibc-thumb +export CC=/opt/toolchains/armelv5t-glibc-2.20/bin/arm-linux-gcc +export FEATURES=full +export CFLAGS="$SMALLCC" +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv4t -mthumb" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv5 little-endian glibc thumb instruction set +export PROGRAM_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsd-armv5el-glibc-thumb +export CLIENT_NAME=binaries/Linux/arm/little-endian/glibc/vlmcs-armv5el-glibc-thumb +export MULTI_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv5el-glibc-thumb +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv5t -mthumb" + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + +# Linux armv5 little-endian glibc +export PROGRAM_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsd-armv5el-glibc +export CLIENT_NAME=binaries/Linux/arm/little-endian/glibc/vlmcs-armv5el-glibc +export MULTI_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv5el-glibc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv5 -marm" + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv7 little-endian glibc thumb2 instruction set +export PROGRAM_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsd-armv7el-glibc +export CLIENT_NAME=binaries/Linux/arm/little-endian/glibc/vlmcs-armv7el-glibc +export MULTI_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv7el-glibc +export CC=/opt/toolchains/armelv7-cortex-a8-glibc-2.18/usr/bin/arm-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv4 little-endian openwrt toolchain +export PROGRAM_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsd-armv4el-openwrt-glibc +export CLIENT_NAME=binaries/Linux/arm/little-endian/glibc/vlmcs-armv4el-openwrt-glibc +export MULTI_NAME=binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv4el-openwrt-glibc +export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_eglibc-2.19_eabi/bin/arm-openwrt-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv4" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +# Linux armv7 little-endian openwrt toolchain thumb 2 instruction set +INSTALLDIR=binaries/Linux/arm/little-endian/glibc/ +SUFFIX=-armv7el-openwrt-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_eglibc-2.19_eabi/bin/arm-openwrt-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + +# Linux armv5 little endian thumb instruction set +INSTALLDIR=binaries/Linux/arm/little-endian/static/ +SUFFIX=-armv5el-musl-thumb +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX}-static +export CC=/opt/toolchains/armelv5t-musl/usr/bin/arm-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -static" +export THREADS=0 +export NOPROCFS=0 +export AUXV=1 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +INSTALLDIR=binaries/Linux/arm/little-endian/musl/ +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +INSTALLDIR=binaries/Linux/arm/little-endian/static/ +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -static" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv5 little-endian uclibc thumb instruction set +INSTALLDIR=binaries/Linux/arm/little-endian/uclibc/ +SUFFIX=-armv5el-uclibc-thumb +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/armelv5t-uclibc-0.9.33/usr/bin/arm-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv5t -mthumb" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export NOPROCFS=0 +export AUXV=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv7 little-endian uclibc thumb 2 instruction set +INSTALLDIR=binaries/Linux/arm/little-endian/ +SUFFIX=-armv7el-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/armelv7-cortex-a8-uclibc-0.9.33/usr/bin/arm-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux armv4 little-endian uclibc openwrt toolchain +INSTALLDIR=binaries/Linux/arm/little-endian/uclibc/ +SUFFIX=-armv4el-openwrt-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv4 -marm" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +## Linux armv4 little-endian uclibc openwrt toolchain thumb instruction set +#INSTALLDIR=binaries/Linux/arm/little-endian/uclibc/ +#SUFFIX=-armv4el-openwrt-uclibc-thumb +#export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +#export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +#export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +#export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc +#export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv4t -mthumb" +#export FEATURES=full +#export CFLAGS="$SMALLCC" +#export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +#export THREADS=0 +# +#make $MAKEFLAGS +# +#if [ $? != 0 ]; then +# echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME +# exit $? +#fi +# +#rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null +# +#make $REUSEOBJFLAGS $MULTI_NAME +# +#if [ $? != 0 ]; then +# echo Error creating $MULTI_NAME +# exit $? +#fi + + + + +# Linux armv7 little-endian uclibc openwrt toolchain thumb 2 instruction set +INSTALLDIR=binaries/Linux/arm/little-endian/uclibc/ +SUFFIX=-armv7el-openwrt-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv7 -mthumb" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Linux armv4 little-endian uclibc +INSTALLDIR=binaries/Linux/arm/little-endian/ +SUFFIX=-armv4el-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/root/cross-compiler-armv4l/bin/armv4l-gcc +export PLATFORMFLAGS="-pipe" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="-Wl,-z,norelro -fwhole-program" +export THREADS=0 +export NOPROCFS=1 + +make $MAKEFLAGS $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME CAT=2 + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="-Wl,-z,norelro -fwhole-program -static" + +make $REUSEOBJFLAGS $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME CAT=2 + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + + +# mips1 little-endian with openssl 0.9.8 support dreambox toolchain +INSTALLDIR=binaries/Linux/mips/little-endian/glibc/ +SUFFIX=-mips1el-glibc-openssl0.9.8-soft-EXPERIMENTAL +export CRYPTO=openssl_with_aes_soft +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/mipsoe20/bin/mipsel-unknown-linux-gnu-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export NOPROCFS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# mips1 little-endian dreambox toolchain +INSTALLDIR=binaries/Linux/mips/little-endian/glibc/ +SUFFIX=-mips1el-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/mipsoe20/bin/mipsel-unknown-linux-gnu-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips1 little-endian uclibc +INSTALLDIR=binaries/Linux/mips/little-endian/ +SUFFIX=-mips1el-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/root/cross-compiler-mipsel/bin/mipsel-gcc +export PLATFORMFLAGS="-pipe" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="-Wl,-z,norelro -fwhole-program" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=1 + +make $MAKEFLAGS CAT=2 $CLIENT_NAME $MULTI_NAME $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="-Wl,-z,norelro -fwhole-program -static" + +make $REUSEOBJFLAGS CAT=2 $CLIENT_NAME $MULTI_NAME $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +# Linux mips16 little endian glibc +INSTALLDIR=binaries/Linux/mips/little-endian/glibc/ +SUFFIX=-mips16el-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32el-mips16-glibc-2.18/usr/bin/mipsel-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32 -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips16 little-endian uclibc +INSTALLDIR=binaries/Linux/mips/little-endian/uclibc/ +SUFFIX=-mips16el-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32el-mips16-uclibc-0.9.33/bin/mipsel-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32 -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux PowerPC glibc with SSL support and Dreambox 500 toolchain +INSTALLDIR=binaries/Linux/ppc/big-endian/glibc/ +SUFFIX=-ppc-glibc-openssl0.9.8-soft-EXPERIMENTAL +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/powerpc/bin/powerpc-linux-gcc +export PLATFORMFLAGS="-pipe" +export FEATURES=full +export CFLAGS="-fno-common -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +export LDFLAGS="-Wl,--no-gc-sections -Wl,-z,norelro" +export THREADS=0 +export CRYPTO=internal + +make NO_DNS=1 $MAKEFLAGS CAT=2 $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + + + +#Linux PowerPC uclibc OpenWRT toolchain +INSTALLDIR=binaries/Linux/ppc/big-endian/ +SUFFIX=-ppc-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +#export CC=~/openwrt/staging_dir/toolchain-powerpc_405_gcc-4.8-linaro_uClibc-0.9.33.2/bin/powerpc-openwrt-linux-gcc +export CC=/opt/toolchains/ppc-uclibc0.9.33.2-gcc-4.9.1-binutils2.24/bin/powerpc-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -L/root/cross-compiler-powerpc/lib -L/root/cross-compiler-powerpc/usr/lib" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Fritzbox 7170 (mips32r2 little-endian) device specific, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/little-endian/ +SUFFIX=-mips32r2el-Fritzbox-71xx-72xx-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/fritz71xx/bin/mipsel-linux-uclibc-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=4kec -mtune=4kec" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make NOLRESOLV=1 $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make NOLRESOLV=1 $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLRESOLV=1 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make NOLRESOLV=1 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Fritzbox 7370 (mips32r2 big-endian) device specific, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/ +SUFFIX=-mips16-Fritzbox-33xx-73xx-74xx-63xx-64xx-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/fritz73xxOS62/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mtune=24kc -mips16 -mdsp" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make NOLRESOLV=1 $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make NOLRESOLV=1 $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLRESOLV=1 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make NOLRESOLV=1 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Fritzbox 7370 (mips32r2 big-endian) device specific with _PEDANTIC, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips16-Fritzbox-33xx-73xx-74xx-63xx-64xx-uclibc-pedantic +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/fritz73xxOS62/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mtune=24kc -mips16 -mdsp" +export FEATURES=full +export CFLAGS="$SMALLCC -D_PEDANTIC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make NOLRESOLV=1 $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + + + + +#Fritzbox 7370 (mips32r2 big-endian) device specific inetd start only, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips16-Fritzbox-33xx-73xx-74xx-63xx-64xx-uclibc-inetd +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/fritz73xxOS62/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mtune=24kc -mips16 -mdsp" +export FEATURES=inetd +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make NOLRESOLV=1 $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + + + + +#Fritzbox 7370 (mips32r2 big-endian) device specific with pthreads, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips16-Fritzbox-33xx-73xx-74xx-63xx-64xx-uclibc-threads +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/fritz73xxOS62/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mtune=24kc -mips16 -mdsp" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -lpthread" +export THREADS=1 + +make NOLRESOLV=1 $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME + exit $? +fi + + + + +#Fritzbox 7370 (mips32r2 big-endian) device specific with OpenSSL support, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips16-Fritzbox-33xx-73xx-74xx-63xx-64xx-uclibc-openssl0.9.8-soft-EXPERIMENTAL +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/fritz73xxOS62/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mtune=24kc -mips16 -mdsp" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=openssl_with_aes_soft +export OPENSSL_HMAC=0 + +make NOLRESOLV=1 $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make NOLRESOLV=1 $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +unset OPENSSL_HMAC + + + +#make $MAKEFLAGS CLIENT_NAME=binaries/Linux/mips/big-endian/uclibc/vlmcs-mips32-uclibc CFLAGS="$SMALL -pipe -flto=jobserver -fwhole-program" PROGRAM_NAME=binaries/Linux/mips/big-endian/uclibc/vlmcsd-mips32-uclibc CC=/opt/toolchains/mips32eb-uclibc-0.9.33/usr/bin/mips-linux-cc && \ +# Linux mips32 big-endian uclibc +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips32-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32eb-uclibc-0.9.33/usr/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips16 big-endian uclibc +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips16-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32eb-uclibc-0.9.33/usr/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Atheros ar7xxx/ar9xxx chips with OpenWRT toolchain (mips16 big-endian) device specific, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/ +SUFFIX=-mips16-openwrt-atheros-ar7xxx-ar9xxx-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips-openwrt-linux-uclibc/bin/mips-openwrt-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC -DNO_LIMIT" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + + +#Atheros ar7xxx/ar9xxx chips with OpenWRT toolchain (mips16 big-endian) device specific, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/ +SUFFIX=-mips16-openwrt-atheros-ar7xxx-ar9xxx-musl +export PROGRAM_NAME=${INSTALLDIR}musl/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}musl/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips_34kc_gcc-4.9-linaro_musl-1.1.6-mips16/bin/mips-openwrt-linux-musl-gcc-4.9.2 +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$LDFLAGS -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Atheros ar7xxx/ar9xxx chips with OpenWRT toolchain (mips32r2 big-endian) device specific, May or may not run on other devices +INSTALLDIR=binaries/Linux/mips/big-endian/ +SUFFIX=-mips32r2-openwrt-atheros-ar7xxx-ar9xxx-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips-openwrt-linux-uclibc/bin/mips-openwrt-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=24kc" +export FEATURES=full +export CFLAGS="$SMALLCC -DNO_LIMIT" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips16 big-endian uclibc threads +INSTALLDIR=binaries/Linux/mips/big-endian/uclibc/ +SUFFIX=-mips16-uclibc-threads +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32eb-uclibc-0.9.33/usr/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -lpthread" +export THREADS=1 +export CRYPTO=internal + +make $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +# Linux mips32 big-endian glibc +INSTALLDIR=binaries/Linux/mips/big-endian/glibc/ +SUFFIX=-mips32-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32eb-glibc-2.19/usr/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux mips16 big-endian glibc +INSTALLDIR=binaries/Linux/mips/big-endian/glibc/ +SUFFIX=-mips16-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32eb-glibc-2.19/usr/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Linux mips32 big-endian musl +INSTALLDIR=binaries/Linux/mips/big-endian/ +SUFFIX=-mips32-musl +export PROGRAM_NAME=${INSTALLDIR}musl/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}musl/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32eb-musl/usr/bin/mips-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 +export AUXV=1 + + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Linux mips16 little-endian musl soft-float +INSTALLDIR=binaries/Linux/mips/little-endian/ +SUFFIX=-mips16el-musl +export PROGRAM_NAME=${INSTALLDIR}musl/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}musl/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32el-mips16-musl/usr/bin/mipsel-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 +export AUXV=1 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Linux mips16 little-endian musl fpu +INSTALLDIR=binaries/Linux/mips/little-endian/ +SUFFIX=-mips16el-musl-fpu +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export CC=/opt/toolchains/mips32el-mips16-musl-fpu/usr/bin/mipsel-linux-cc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips16" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -static" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 +export AUXV=1 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + +# Linux x86 uclibc +INSTALLDIR=binaries/Linux/intel/uclibc/ +SUFFIX=-x86-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/i486-uclibc-0.9.33/bin/i486-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m32 -march=i486 -mtune=generic" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 +export AUXV=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + +#make $MAKEFLAGS CLIENT_NAME=binaries/Linux/intel/glibc/vlmcs-x64-glibc LDFLAGS="-Wl,--hash-style=gnu" CFLAGS="$SMALL -pipe -flto=jobserver -fwhole-program" PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x64-glibc CC=/opt/toolchains/x86_64-glibc-2.19/usr/bin/x86_64-linux-gcc PLATFORMFLAGS="-m64 -mtune=generic"&& \ +# Linux x64 glibc +INSTALLDIR=binaries/Linux/intel/glibc/ +SUFFIX=-x64-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/x86_64-glibc-2.19/usr/bin/x86_64-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m64 -mtune=generic" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Linux Sparc32v7 glibc +INSTALLDIR=binaries/Linux/sparc32/glibc/ +SUFFIX=-sparc32v7-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/sparc32-glibc-gcc-4.7.4/bin/sparc-buildroot-linux-gnu-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mcpu=v7" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -lpthread" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#make $MAKEFLAGS binaries/Linux/intel/glibc/vlmcsd-x64-glibc-threads CLIENT_NAME=binaries/Linux/intel/glibc/vlmcs-x64-glibc-threads THREADS=1 LDFLAGS="-Wl,--hash-style=gnu -lpthread" CFLAGS="-pipe -flto=jobserver -fwhole-program" PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x64-glibc-threads CC=/opt/toolchains/x86_64-glibc-2.19/usr/bin/x86_64-linux-gcc PLATFORMFLAGS="-m64 -mtune=generic"&& \ +# Linux x64 glibc with threads +INSTALLDIR=binaries/Linux/intel/glibc/ +SUFFIX=-x64-glibc-threads +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/x86_64-glibc-2.19/usr/bin/x86_64-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m64 -mtune=generic" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -lpthread" +export THREADS=1 +export CRYPTO=internal + +make $MAKEFLAGS $PROGRAM_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + + + + +#make $MAKEFLAGS LDFLAGS="-Wl,--hash-style=gnu" CLIENT_NAME=binaries/Linux/intel/glibc/vlmcs-x64-glibc-openssl1.0.0-hard-EXPERIMENTAL CRYPTO=openssl_with_aes CFLAGS="$SMALL -pipe -flto=jobserver -fwhole-program" PROGRAM_NAME=binaries/Linux/intel/glibc/vlmcsd-x64-glibc-openssl1.0.0-hard-EXPERIMENTAL CC=/opt/toolchains/x86_64-glibc-2.19/usr/bin/x86_64-linux-gcc PLATFORMFLAGS="-m64 -mtune=generic" && \ +# Linux x64 glibc with OpenSSL 1.0.x support +INSTALLDIR=binaries/Linux/intel/glibc/ +SUFFIX=-x64-glibc-openssl1.0.0-hard-EXPERIMENTAL +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/x86_64-glibc-2.19/usr/bin/x86_64-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m64 -mtune=generic" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export CRYPTO=openssl_with_aes + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux x64 musl +INSTALLDIR=binaries/Linux/intel/ +SUFFIX=-x64-musl +export PROGRAM_NAME=${INSTALLDIR}musl/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}musl/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/x86_64_gcc-4.9-linaro_musl-1.1.6/bin/x86_64-openwrt-linux-musl-gcc-4.9.2 +#export CC=/opt/toolchains/x86_64-musl/usr/bin/x86_64-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m64 -mtune=generic" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 +export AUXV=1 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}musl/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#make $MAKEFLAGS CC=/opt/toolchains/x86_64-uclibc-0.9.33/bin/x86_64-linux-gcc LDFLAGS="-Wl,--hash-style=gnu" CLIENT_NAME=binaries/Linux/intel/uclibc/vlmcs-x64-uclibc PROGRAM_NAME=binaries/Linux/intel/uclibc/vlmcsd-x64-uclibc CFLAGS="$SMALL -flto=jobserver -fwhole-program -pipe -fno-stack-protector" && \ +# Linux x64 uclibc +INSTALLDIR=binaries/Linux/intel/uclibc/ +SUFFIX=-x64-uclibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/x86_64-uclibc-0.9.33/bin/x86_64-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -m64 -mtune=generic" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export CRYPTO=internal +export NOPROCFS=0 +export AUXV=0 + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + +# mips32 little-endian DD-WRT toolchain with gcc 4.1.0 +export CC=/opt/simplebuild/toolchains/ddwrt410/bin/mipsel-linux-gcc +INSTALLDIR=binaries/Linux/mips/little-endian/ +SUFFIX=-mips32el-ddwrt-gcc$($CC -dumpversion)-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export PLATFORMFLAGS="-pipe -mips32" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="-fwhole-program" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS CAT=2 $PROGRAM_NAME $MULTI_NAME $CLIENT_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME, $MULTI_NAME and/or $CLIENT_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="-fwhole-program -static" + +make $REUSEOBJFLAGS CAT=2 $PROGRAM_NAME $MULTI_NAME $CLIENT_NAME + +if [ $? != 0 ]; then + echo Error creating $PROGRAM_NAME, $MULTI_NAME and/or $CLIENT_NAME + exit $? +fi + + + + + +#Linux mips32 little-endian uclibc +INSTALLDIR=binaries/Linux/mips/little-endian/ +SUFFIX=-mips32el-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/mips32el-uclibc-0.9.33/bin/mipsel-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -mips32" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="$SMALLLD -static" + +make $REUSEOBJFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export LDFLAGS="$SMALLLD" + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +#Linux armv6 hard-float little-endian. Used on Raspberry Pi with Raspbian. +#The hard-float ABI cannot be combined with thumb. +#You may wish to use armv5el-thumb instead because the binary is smaller +INSTALLDIR=binaries/Linux/arm/little-endian/glibc/ +SUFFIX=-armv6hf-Raspberry-glibc +export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX} +export CC=/opt/toolchains/armhfv6-glibc-2.19/bin/arm-linux-gcc +export PLATFORMFLAGS="-flto=jobserver -fwhole-program -march=armv6zk -mfpu=vfp -mfloat-abi=hard -mtune=arm1176jzf-s" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu" +export THREADS=0 +export CRYPTO=internal + +make $MAKEFLAGS + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME and/or $PROGRAM_NAME + exit $? +fi + +rm -f *_all.c vlmcsd.o vlmcs.o vlmcsdmulti.o 2> /dev/null + +make $REUSEOBJFLAGS $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $MULTI_NAME + exit $? +fi + + + + +# Linux arm big-endian uclibc +INSTALLDIR=binaries/Linux/arm/big-endian/ +SUFFIX=-armeb-nslu2-uclibc +export PROGRAM_NAME=${INSTALLDIR}uclibc/vlmcsd${SUFFIX} +export CLIENT_NAME=${INSTALLDIR}uclibc/vlmcs${SUFFIX} +export MULTI_NAME=${INSTALLDIR}uclibc/vlmcsdmulti${SUFFIX} +export CC=/opt/simplebuild/toolchains/nslu2open/bin/armeb-linux-uclibc-gcc +export PLATFORMFLAGS="-pipe" +export FEATURES=full +export CFLAGS="$SMALLCC" +export LDFLAGS="-Wl,-z,norelo" +export THREADS=0 + +make $MAKEFLAGS CAT=2 $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + +export PROGRAM_NAME=${INSTALLDIR}static/vlmcsd${SUFFIX}-static +export CLIENT_NAME=${INSTALLDIR}static/vlmcs${SUFFIX}-static +export MULTI_NAME=${INSTALLDIR}static/vlmcsdmulti${SUFFIX}-static +export LDFLAGS="-Wl,-z,norelo -static" + +make $REUSEOBJFLAGS CAT=2 $CLIENT_NAME $PROGRAM_NAME $MULTI_NAME + +if [ $? != 0 ]; then + echo Error creating $CLIENT_NAME, $MULTI_NAME and/or $PROGRAM_NAME + exit $? +fi + + +# Strip off unnecessary stuff from binaries + +find binaries -xdev -name 'vlmcs*' -exec /opt/toolchains/mips32el-mips16-glibc-2.18/usr/bin/mipsel-linux-strip -s --strip-unneeded --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag {} \; 2>/dev/null +find binaries -xdev -name 'vlmcs*' -exec strip -s --strip-unneeded --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag {} \; 2>/dev/null +find binaries -xdev -name 'vlmcs*' -exec sstrip -z {} \; 2>/dev/null + +make alldocs + +rm *.o + +#cp -p binaries/Linux/intel/glibc/vlmcs-x32-glibc /usr/local/bin/vlmcs + +if [ `lsb_release -is` == "Debian" ]; then + cp -pf binaries/Linux/intel/glibc/vlmcsdmulti-x86-glibc /usr/local/sbin/vlmcsdmulti +else + cp -pf binaries/Linux/intel/glibc/vlmcsdmulti-x32-glibc /usr/local/sbin/vlmcsdmulti +fi + +ln -s vlmcsdmulti /usr/local/sbin/vlmcsd 2>/dev/null +ln -s ../sbin/vlmcsdmulti /usr/local/bin/vlmcs 2>/dev/null +mkdir -p /usr/local/man/man1 2>/dev/null +mkdir -p /usr/local/man/man5 2>/dev/null +mkdir -p /usr/local/man/man8 2>/dev/null +mkdir -p /usr/local/man/man7 2>/dev/null +cp -a vlmcs.1 vlmcsdmulti.1 /usr/local/man/man1/ +cp -a vlmcsd.7 /usr/local/man/man7/ +cp -a vlmcsd.8 /usr/local/man/man8/ +cp -a vlmcsd.ini.5 /usr/local/man/man5/ +pbzip2 -f -9 /usr/local/man/man5/vlmcsd.ini.5 /usr/local/man/man1/vlmcs.1 /usr/local/man/man1/vlmcsdmulti.1 /usr/local/man/man7/vlmcsd.7 /usr/local/man/man8/vlmcsd.8 +#pbzip2 -f /usr/local/man/man7/vlmcsd.7 +#pbzip2 -f /usr/local/man/man8/vlmcsd.8 + +mandb >/dev/null 2>&1 + diff --git a/make_minix b/make_minix new file mode 100644 index 00000000..0414001e --- /dev/null +++ b/make_minix @@ -0,0 +1,25 @@ +#!/bin/sh + +export VLMCSD_VERSION=svn$(ssh root@ubuntu64.internal "cd x; svnversion") +scp -p make_minix root@ubuntu64.internal:x +scp -pr root@ubuntu64.internal:x/* . + + +# Compile vlmcsd binaries for Minix 3 + +SUFFIX=-minix-$(uname -r)-x86 +export CC=clang +export CFLAGS="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +export LDFLAGS="-Wl,--hash-style=sysv -Wl,-z,norelro -Wl,--build-id=none" +export PROGRAM_NAME=vlmcsd$SUFFIX +export CLIENT_NAME=vlmcs$SUFFIX +export MULTI_NAME=vlmcsdmulti$SUFFIX + +gmake clean +gmake -B +rm -f vlmcsd.o vlmcs.o vlmcsdmulti.o +gmake $MULTI_NAME + +strip -s --strip-unneeded --remove-section .eh_frame_hdr --remove-section .eh_frame --remove-section .ident --remove-section .note.minix.ident --remove-section .note.netbsd.pax --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag *$SUFFIX + +scp -p *$SUFFIX root@ubuntu64.internal:x/binaries/Minix/intel/ diff --git a/make_netbsd b/make_netbsd new file mode 100644 index 00000000..bae992e2 --- /dev/null +++ b/make_netbsd @@ -0,0 +1,35 @@ +#!/usr/pkg/bin/bash + +export VERBOSE=3 +export DNS_PARSER=OS + +rm -f vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* 2>/dev/null +rm -f vlmcsdmulti vlmcsd vlmcs 2>/dev/null + +MAKEFLAGS="-B -j12" +REUSEOBJFLAGS="-j12" + +CF="-flto=12 -static-libgcc -pipe -fwhole-program -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CF45="-static-libgcc -pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CFCLANG="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +LF="-Wl,-z,norelro -Wl,--hash-style=sysv -Wl,--build-id=none" +LFCLANG="-Wl,-z,norelro -Wl,--hash-style=sysv" + +gmake $MAKEFLAGS CC=/usr/pkg/gcc49/bin/gcc PROGRAM_NAME=vlmcsd-NetBSD-x64 CLIENT_NAME=vlmcs-NetBSD-x64 CFLAGS="$CF" LDFLAGS="$LF" +rm vlmcsd.o vlmcs.o +gmake vlmcsdmulti-NetBSD-x64 $REUSEOBJFLAGS CC=/usr/pkg/gcc49/bin/gcc CFLAGS="$CF" LDFLAGS="$LF" MULTI_NAME=vlmcsdmulti-NetBSD-x64 + +gmake allmulti $MAKEFLAGS CAT=2 MULTI_NAME=vlmcsdmulti-NetBSD-x86 PROGRAM_NAME=vlmcsd-NetBSD-x86 CLIENT_NAME=vlmcs-NetBSD-x86 CFLAGS="$CF45 -m32" LDFLAGS="$LF" + +#gmake $MAKEFLAGS CC=clang PROGRAM_NAME=vlmcsd-NetBSD-x64-clang CLIENT_NAME=vlmcs-NetBSD-x64-clang CFLAGS="$CFCLANG" LDFLAGS="$LFCLANG" + +rm *.o + +strip -s --strip-unneeded --remove-section=.eh_frame_hdr --remove-section=.eh_frame --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag vlmcs-* vlmcsd-* vlmcsdmulti-* +#sstrip -z vlmcs-* vlmcsd-* vlmcsdmulti-* + +cp -af vlmcsd-NetBSD-x86 /usr/local/sbin/vlmcsd +cp -af vlmcs-NetBSD-x86 /usr/local/bin/vlmcs + +# Copy everything to distribution server +scp -p vlmcsdmulti-* vlmcsd-* vlmcs-* root@ubuntu64:x/binaries/NetBSD/intel/ diff --git a/make_openbsd b/make_openbsd new file mode 100644 index 00000000..55438ba8 --- /dev/null +++ b/make_openbsd @@ -0,0 +1,33 @@ +#!/usr/local/bin/bash + +export VERBOSE=3 +export DNS_PARSER=OS + +rm -f vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* 2>/dev/null +rm -f vlmcsdmulti vlmcsd vlmcs 2>/dev/null + +MAKEFLAGS="-B -j12" +REUSEOBJFLAGS="-j12" + +CF="-static-libgcc -pipe -fwhole-program -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CF45="-static-libgcc -pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CFCLANG="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +LF="-Wl,-z,norelro" +LFCLANG="-Wl,-z,norelro" + +gmake allmulti CAT=2 $MAKEFLAGS CC=egcc MULTI_NAME=vlmcsdmulti-OpenBSD-x64 PROGRAM_NAME=vlmcsd-OpenBSD-x64 CLIENT_NAME=vlmcs-OpenBSD-x64 CFLAGS="$CF" LDFLAGS="$LF" + +#gmake allmulti $MAKEFLAGS CAT=2 MULTI_NAME=vlmcsdmulti-OpenBSD-x86 PROGRAM_NAME=vlmcsd-OpenBSD-x86 CLIENT_NAME=vlmcs-OpenBSD-x86 CFLAGS="$CF45 -m32" LDFLAGS="$LF" + +#gmake $MAKEFLAGS CC=clang PROGRAM_NAME=vlmcsd-OpenBSD-x64-clang CLIENT_NAME=vlmcs-OpenBSD-x64-clang CFLAGS="$CFCLANG" LDFLAGS="$LFCLANG" + +rm *.o + +strip -s --strip-unneeded --remove-section=.eh_frame_hdr --remove-section=.eh_frame --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag vlmcs-* vlmcsd-* vlmcsdmulti-* +#sstrip -z vlmcs-* vlmcsd-* vlmcsdmulti-* + +cp -f vlmcsd-OpenBSD-x64 /usr/local/sbin/vlmcsd +cp -f vlmcs-OpenBSD-x64 /usr/local/bin/vlmcs + +# Copy everything to distribution server +scp -p vlmcsdmulti-* vlmcsd-* vlmcs-* root@ubuntu64:x/binaries/OpenBSD/intel/ diff --git a/make_osx b/make_osx new file mode 100644 index 00000000..1fb1615e --- /dev/null +++ b/make_osx @@ -0,0 +1,97 @@ +#!/bin/bash + +export VERBOSE=3 +export DNS_PARSER=OS + +rm vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* 2>/dev/null +rm vlmcsd vlmcs vlmcsdmulti 2>/dev/null + +MAKEFLAGS="-j -B" +REUSEOBJFLAGS="-j" +CFGCC="-static-libgcc -mdynamic-no-pic -Os -flto=jobserver -fwhole-program -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CFCLANG="-mdynamic-no-pic -Os -flto -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" +CFGCC42="-static-libgcc -mdynamic-no-pic -Os -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants" + +make $MAKEFLAGS CLIENT_NAME=vlmcs-MacOSX-x86 PROGRAM_NAME=vlmcsd-MacOSX-x86 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.0" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-MacOSX-x86 MULTI_NAME=vlmcsdmulti-MacOSX-x86 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS vlmcsd-MacOSX-x86-threads THREADS=1 PROGRAM_NAME=vlmcsd-MacOSX-x86-threads CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS CLIENT_NAME=vlmcs-MacOSX-x64 PROGRAM_NAME=vlmcsd-MacOSX-x64 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.0" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-MacOSX-x64 MULTI_NAME=vlmcsdmulti-MacOSX-x64 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS vlmcsd-MacOSX-x64-threads THREADS=1 PROGRAM_NAME=vlmcsd-MacOSX-x64-threads CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS CLIENT_NAME=vlmcs-MacOSX-x86-openssl-EXPERIMENTAL PROGRAM_NAME=vlmcsd-MacOSX-x86-openssl-EXPERIMENTAL CRYPTO=openssl_with_aes_soft CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.4" && \ +make $MAKEFLAGS CLIENT_NAME=vlmcs-MacOSX-x64-openssl-EXPERIMENTAL PROGRAM_NAME=vlmcsd-MacOSX-x64-openssl-EXPERIMENTAL CRYPTO=openssl_with_aes_soft CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.4" && \ + +#make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-7.1-armv7 PROGRAM_NAME=vlmcsd-iOS-7.1-armv7 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +#make $REUSEOBJFLAGS vlmcsdmulti-iOS-7.1-armv7 MULTI_NAME=vlmcsdmulti-iOS-7.1-armv7 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk" && \ + +make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-8.4-armv7 PROGRAM_NAME=vlmcsd-iOS-8.4-armv7 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 -isysroot ~/toolchains/iPhoneOS8.4.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-iOS-8.4-armv7 MULTI_NAME=vlmcsdmulti-iOS-8.4-armv7 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 -isysroot ~/toolchains/iPhoneOS8.4.sdk" && \ +make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-8.4-armv8-aarch64 PROGRAM_NAME=vlmcsd-iOS-8.4-armv8-aarch64 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m64 -arch arm64 -miphoneos-version-min=7.0 -isysroot ~/toolchains/iPhoneOS8.4.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-iOS-8.4-armv8-aarch64 MULTI_NAME=vlmcsdmulti-iOS-8.4-armv8-aarch64 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-m64 -arch arm64 -miphoneos-version-min=7.0 -isysroot ~/toolchains/iPhoneOS8.4.sdk" && \ + +make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-6.1-armv7 PROGRAM_NAME=vlmcsd-iOS-6.1-armv7 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS6.1.sdk -isysroot ~/toolchains/iPhoneOS6.1.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-iOS-6.1-armv7 MULTI_NAME=vlmcsdmulti-iOS-6.1-armv7 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS6.1.sdk -isysroot ~/toolchains/iPhoneOS6.1.sdk" && \ + +make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-5.1-armv7-clang3.4 PROGRAM_NAME=vlmcsd-iOS-5.1-armv7-clang3.4 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS5.1.sdk -isysroot ~/toolchains/iPhoneOS5.1.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-iOS-5.1-armv7-clang3.4 MULTI_NAME=vlmcsdmulti-iOS-5.1-armv7-clang3.4 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-mthumb -m32 -arch armv7 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS5.1.sdk -isysroot ~/toolchains/iPhoneOS5.1.sdk" && \ + +#PATH=~/toolchains/iOS5.1-MacOS-Lion/usr/bin:$PATH clang --version +PATH=~/toolchains/iOS5.1-MacOS-Lion/usr/bin:$PATH make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-5.1-armv6-clang3.1 PROGRAM_NAME=vlmcsd-iOS-5.1-armv6-clang3.1 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-arch armv6 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS5.1.sdk -isysroot ~/toolchains/iPhoneOS5.1.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +PATH=~/toolchains/iOS5.1-MacOS-Lion/usr/bin:$PATH make $REUSEOBJFLAGS vlmcsdmulti-iOS-5.1-armv6-clang3.1 MULTI_NAME=vlmcsdmulti-iOS-5.1-armv6-clang3.1 CC=clang CFLAGS="$CFCLANG" PLATFORMFLAGS="-arch armv6 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS5.1.sdk -isysroot ~/toolchains/iPhoneOS5.1.sdk" && \ + +PATH=~/toolchains/gcc4.2/usr/bin/bin:$PATH make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-4.1-armv6-llvm-gcc4.2 PROGRAM_NAME=vlmcsd-iOS-4.1-armv6-llvm-gcc4.2 CC=llvm-g++-4.2 CFLAGS="$CFGCC42" PLATFORMFLAGS="-arch armv6 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS4.1.sdk -isysroot ~/toolchains/iPhoneOS4.1.sdk" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +PATH=~/toolchains/gcc4.2/usr/bin/bin:$PATH make $REUSEOBJFLAGS vlmcsdmulti-iOS-4.1-armv6-llvm-gcc4.2 MULTI_NAME=vlmcsdmulti-iOS-4.1-armv6-llvm-gcc4.2 CC=llvm-g++-4.2 CFLAGS="$CFGCC42" PLATFORMFLAGS="-arch armv6 -miphoneos-version-min=1.0 --sysroot ~/toolchains/iPhoneOS4.1.sdk -isysroot ~/toolchains/iPhoneOS4.1.sdk" && \ + +#PATH=~/toolchains/gcc4.2/usr/bin:$PATH make $MAKEFLAGS CLIENT_NAME=vlmcs-iOS-4.1-armv7-clang PROGRAM_NAME=vlmcsd-iOS-4.1-armv7-llvm-clang CC=~/toolchains/gcc4.2/usr/bin/bin/clang CFLAGS="$CFGCC42" PLATFORMFLAGS="-mthumb -arch armv7 -miphoneos-version-min=4.1 --sysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk" && \ +#rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o && \ +#PATH=~/toolchains/gcc4.2/usr/bin:$PATH make $REUSEOBJFLAGS vlmcsdmulti-iOS-4.1-armv7-llvm-clang MULTI_NAME=vlmcsdmulti-iOS-4.1-armv7-llvm-clang CC=~/toolchains/gcc4.2/usr/bin/bin/clang CFLAGS="$CFGCC42" PLATFORMFLAGS="-mthumb -arch armv7 -miphoneos-version-min=4.1 --sysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk" && \ + + +PATH=~/toolchains/gcc4.2/usr/bin:$PATH make -Bj PROGRAM_NAME=vlmcsd-MacOSX-ppc CLIENT_NAME=vlmcs-MacOSX-ppc CC=gcc CFLAGS="$CFGCC42 -isysroot ~/toolchains/MacOSX10.5.sdk -arch ppc -mmacosx-version-min=10.0" +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +PATH=~/toolchains/gcc4.2/usr/bin:$PATH make -j vlmcsdmulti-MacOSX-ppc MULTI_NAME=vlmcsdmulti-MacOSX-ppc CC=gcc CFLAGS="$CFGCC42 -isysroot ~/toolchains/MacOSX10.5.sdk -arch ppc -mmacosx-version-min=10.0" + + +make $MAKEFLAGS CLIENT_NAME=vlmcs-MacOSX-x86-gcc PROGRAM_NAME=vlmcsd-MacOSX-x86-gcc CC=gcc-5 CFLAGS="$CFGCC" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.0" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-MacOSX-x86-gcc MULTI_NAME=vlmcsdmulti-MacOSX-x86-gcc CC=gcc-5 CFLAGS="$CFGCC" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS vlmcsd-MacOSX-x86-threads-gcc THREADS=1 PROGRAM_NAME=vlmcsd-MacOSX-x86-threads-gcc CC=gcc-5 CFLAGS="$CFGCC" PLATFORMFLAGS="-m32 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS CLIENT_NAME=vlmcs-MacOSX-x64-gcc PROGRAM_NAME=vlmcsd-MacOSX-x64-gcc CC=gcc-5 CFLAGS="$CFGCC" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.0" && \ +rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* && \ +make $REUSEOBJFLAGS vlmcsdmulti-MacOSX-x64-gcc MULTI_NAME=vlmcsdmulti-MacOSX-x64-gcc CC=gcc-5 CFLAGS="$CFGCC" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.0" && \ +make $MAKEFLAGS vlmcsd-MacOSX-x64-threads-gcc THREADS=1 PROGRAM_NAME=vlmcsd-MacOSX-x64-threads-gcc CC=gcc-5 CFLAGS="$CFGCC" PLATFORMFLAGS="-m64 -march=core2 -mmacosx-version-min=10.0" && \ + +# Sign the iOS binaries +#ldid -S *iOS* + +#strip vlmcs-* vlmcsd-* vlmcsdmulti-* + +rm -f *.o *_all.* +rm -fr *.dSYM + +sudo cp -p vlmcs-MacOSX-x86-gcc /usr/local/bin/vlmcs +sudo cp -p vlmcsd-MacOSX-x86-gcc /usr/local/bin/vlmcsd + +sudo mkdir -p /usr/local/share/man/man8 +sudo mkdir -p /usr/local/share/man/man1 +sudo mkdir -p /usr/local/share/man/man7 +sudo mkdir -p /usr/local/share/man/man5 + +sudo cp -p vlmcsd.8 /usr/local/share/man/man8 +sudo cp -p vlmcs.1 vlmcsdmulti.1 /usr/local/share/man/man1 +sudo cp -p vlmcsd.7 /usr/local/share/man/man7 +sudo cp -p vlmcsd.ini.5 //usr/local/share/man/man5 + +# Copy the stuff to distribution server +scp -p vlmcsd-MacOSX-x* vlmcs-MacOSX-x* vlmcsdmulti-MacOSX-x* root@ubuntu64:x/binaries/MacOSX/intel +scp -p vlmcsd-MacOSX-ppc* vlmcs-MacOSX-ppc* vlmcsdmulti-MacOSX-ppc* root@ubuntu64:x/binaries/MacOSX/ppc +scp -p vlmcsd-iOS* vlmcs-iOS* vlmcsdmulti-iOS* root@ubuntu64:x/binaries/iOS/arm diff --git a/make_solaris b/make_solaris new file mode 100644 index 00000000..5caf7c46 --- /dev/null +++ b/make_solaris @@ -0,0 +1,57 @@ +#!/bin/sh + +export VERBOSE=3 +export CAT=2 + +if [ `uname -s` != "SunOS" ]; then + echo "This is no SunOS operating system." + exit 3 +fi + +SOLARIS_VERSION=`uname -v` + +rm -f vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* 2>/dev/null +rm -f vlmcsdmulti vlmcsd vlmcs 2>/dev/null + +MAKEFLAGS="-B -j`nproc`" +REUSEOBJFLAGS="-j`nproc`" + +CF="-fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants -Wno-char-subscripts" +LF="-fwhole-program -Wl,-z,norelro -Wl,--hash-style=sysv -Wl,--build-id=none" + + +# 32 bit +if [ "$CAT" != "" ]; then + gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld vlmcs-Solaris$SOLARIS_VERSION-x86 vlmcsd-Solaris$SOLARIS_VERSION-x86 vlmcsdmulti-Solaris$SOLARIS_VERSION-x86 CLIENT_NAME=vlmcs-Solaris$SOLARIS_VERSION-x86 PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x86 MULTI_NAME=vlmcsdmulti-Solaris$SOLARIS_VERSION-x86 CC=gcc CFLAGS="$CF" LDFLAGS="$LF" +else + gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld CLIENT_NAME=vlmcs-Solaris$SOLARIS_VERSION-x86 PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x86 CC=gcc CFLAGS="$CF" LDFLAGS="$LF" + rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* + gmake $REUSEOBJFLAGS LD_ALTEXEC=/usr/bin/gld vlmcsdmulti-Solaris$SOLARIS_VERSION-x86 MULTI_NAME=vlmcsdmulti-Solaris$SOLARIS_VERSION-x86 CC=gcc CFLAGS="$CF" LDFLAGS="$LF" +fi + +gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld vlmcsd-Solaris$SOLARIS_VERSION-x86-threads PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x86-threads CC=gcc THREADS=1 CFLAGS="$CF" LDFLAGS="-lpthread $LF" +gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld CLIENT_NAME=vlmcs-Solaris$SOLARIS_VERSION-x86-openssl1.0-EXPERIMENTAL CRYPTO=openssl_with_aes PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x86-openssl1.0-EXPERIMENTAL CC=gcc CFLAGS="$CF" LDFLAGS="$LF" + +# 64 bit + +LF="$LF -Wl,-melf_x86_64_sol2" + +if [ "$CAT" != "" ]; then + gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld vlmcsdmulti-Solaris$SOLARIS_VERSION-x64 vlmcs-Solaris$SOLARIS_VERSION-x64 vlmcsd-Solaris$SOLARIS_VERSION-x64 MULTI_NAME=vlmcsdmulti-Solaris$SOLARIS_VERSION-x64 CLIENT_NAME=vlmcs-Solaris$SOLARIS_VERSION-x64 PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x64 CC=gcc CFLAGS="$CF" LDFLAGS="$LF" PLATFORMFLAGS="-m64" +else + gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld CLIENT_NAME=vlmcs-Solaris$SOLARIS_VERSION-x64 PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x64 CC=gcc CFLAGS="$CF" LDFLAGS="$LF" PLATFORMFLAGS="-m64" + rm -f vlmcs.o vlmcsd.o vlmcsdmulti.o *_all.* + gmake $REUSEOBJFLAGS LD_ALTEXEC=/usr/bin/gld vlmcsdmulti-Solaris$SOLARIS_VERSION-x64 MULTI_NAME=vlmcsdmulti-Solaris$SOLARIS_VERSION-x64 CC=gcc CFLAGS="$CF" LDFLAGS="$LF" PLATFORMFLAGS="-m64" +fi + +gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld vlmcsd-Solaris$SOLARIS_VERSION-x64-threads PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x64-threads CC=gcc THREADS=1 CFLAGS="$CF" LDFLAGS="$LF -lpthread" PLATFORMFLAGS="-m64" +gmake $MAKEFLAGS LD_ALTEXEC=/usr/bin/gld CLIENT_NAME=vlmcs-Solaris$SOLARIS_VERSION-x64-openssl1.0-EXPERIMENTAL CRYPTO=openssl_with_aes PROGRAM_NAME=vlmcsd-Solaris$SOLARIS_VERSION-x64-openssl1.0-EXPERIMENTAL CC=gcc CFLAGS="$CF" LDFLAGS="$LF" PLATFORMFLAGS="-m64" + +rm -f *.o *_all.* + +gstrip -s --strip-unneeded --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag vlmcs-* vlmcsd-* +#gstrip -s --strip-unneeded --remove-section=.eh_frame_hdr --remove-section=.eh_frame --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag vlmcs-* vlmcsd-* +#sstrip -z vlmcs-* vlmcsd-* + +# Copy stuff to distribution server +scp -p vlmcsd-* vlmcs-* vlmcsdmulti-* root@ubuntu64:x/binaries/Solaris/intel diff --git a/make_windows b/make_windows new file mode 100644 index 00000000..8666a20e --- /dev/null +++ b/make_windows @@ -0,0 +1,79 @@ +#!/bin/bash + +rm -f cygkms*.dll libkms*.dll vlmcsd-* vlmcs-* vlmcsdmulti-* *_all.* vlmcsd.exe vlmcs.exe vlmcsdmulti.exe 2> /dev/null + +export CAT=2 +export VERBOSE=3 +NUMCPU=`cat /proc/cpuinfo | grep "processor" | wc -l` + +CF="-Wno-missing-braces -fno-common -fno-exceptions -fno-non-call-exceptions -fno-stack-protector -fmerge-all-constants -fno-unwind-tables -fno-asynchronous-unwind-tables -pipe" +CFMSRPC="-Wno-missing-braces -Wno-unused-variable $CF" # -fno-common -fno-stack-protector -fmerge-all-constants -pipe" +PF32="" +PF64="-mpreferred-stack-boundary=4 -march=nocona -mtune=generic" +LFCYG32="-fwhole-program -Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware" +LFWIN32="-fwhole-program -lws2_32 -Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware" +LFCYG64="-fwhole-program -Wl,--nxcompat,--dynamicbase,--tsaware" +LFWIN64="-fwhole-program -lws2_32 -Wl,--nxcompat,--dynamicbase,--tsaware" + +MAKEFLAGS="-j$NUMCPU -B" +REUSEFLAGS="-j$NUMCPU" + +make $MAKEFLAGS cygkms32.dll FEATURES=minimum THREADS=1 DLL_NAME=cygkms32.dll DNS_PARSER=internal CC=i686-pc-cygwin-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32" +make $MAKEFLAGS cygkms64.dll FEATURES=minimum THREADS=1 DLL_NAME=cygkms64.dll DNS_PARSER=internal CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" +make $MAKEFLAGS all vlmcsdmulti-cygwin-x86 THREADS=1 DNS_PARSER=internal CLIENT_NAME=vlmcs-cygwin-x86 PROGRAM_NAME=vlmcsd-cygwin-x86 MULTI_NAME=vlmcsdmulti-cygwin-x86 CC=i686-pc-cygwin-gcc.exe CFLAGS="$CF" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32" +make $MAKEFLAGS all vlmcsdmulti-cygwin-x64 THREADS=1 DNS_PARSER=internal CLIENT_NAME=vlmcs-cygwin-x64 PROGRAM_NAME=vlmcsd-cygwin-x64 MULTI_NAME=vlmcsdmulti-cygwin-x64 CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CF" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" +make $MAKEFLAGS MSRPC=1 THREADS=1 DNS_PARSER=internal CLIENT_NAME=vlmcs-cygwin-msrpc-x86 PROGRAM_NAME=vlmcsd-cygwin-msrpc-x86 MULTI_NAME=vlmcsdmulti-cygwin-msrpc-x86 CC=i686-pc-cygwin-gcc.exe CFLAGS="$CF -fasynchronous-unwind-tables" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32" +make $MAKEFLAGS MSRPC=1 THREADS=1 DNS_PARSER=internal CLIENT_NAME=vlmcs-cygwin-msrpc-x64 PROGRAM_NAME=vlmcsd-cygwin-msrpc-x64 MULTI_NAME=vlmcsdmulti-cygwin-msrpc-x64 CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" +unset CAT +make $MAKEFLAGS vlmcsdmulti-cygwin-msrpc-x64 MSRPC=1 THREADS=1 DNS_PARSER=internal MULTI_NAME=vlmcsdmulti-cygwin-msrpc-x64 CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC -flto=jobserver" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" +make $MAKEFLAGS vlmcsdmulti-cygwin-msrpc-x86 MSRPC=1 THREADS=1 DNS_PARSER=internal MULTI_NAME=vlmcsdmulti-cygwin-msrpc-x86 CC=i686-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC -flto=jobserver" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32" +export CAT=2 + +make $MAKEFLAGS THREADS=1 MSRPC=1 DNS_PARSER=internal CLIENT_NAME=vlmcs-cygwin-msrpc-x86-openssl-EXPERIMENTAL CRYPTO=openssl_with_aes PROGRAM_NAME=vlmcsd-cygwin-x86-openssl-EXPERIMENTAL CC=i686-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32" +make $MAKEFLAGS THREADS=1 MSRPC=1 DNS_PARSER=internal CLIENT_NAME=vlmcs-cygwin-msrpc-x64-openssl-EXPERIMENTAL CRYPTO=openssl_with_aes PROGRAM_NAME=vlmcsd-cygwin-x64-openssl-EXPERIMENTAL CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" + +export CAT=2 + +make $MAKEFLAGS libkms32.dll CRYPTO=windows FEATURES=minimum THREADS=1 DLL_NAME=libkms32.dll CC=i686-w64-MingW32-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF32" LDFLAGS="-static-libgcc $LFWIN32" +make $MAKEFLAGS libkms64.dll CRYPTO=windows FEATURES=minimum THREADS=1 DLL_NAME=libkms64.dll CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF64" LDFLAGS="-static-libgcc $LFWIN64" +make $MAKEFLAGS all vlmcsdmulti-Windows-x86 THREADS=1 CRYPTO=windows CLIENT_NAME=vlmcs-Windows-x86 PROGRAM_NAME=vlmcsd-Windows-x86 MULTI_NAME=vlmcsdmulti-Windows-x86 CC=i686-w64-MingW32-gcc.exe CFLAGS="$CF" PLATFORMFLAGS="$PF32" LDFLAGS="$LFWIN32" +make $MAKEFLAGS all vlmcsdmulti-Windows-x64 THREADS=1 CRYPTO=windows CLIENT_NAME=vlmcs-Windows-x64 PROGRAM_NAME=vlmcsd-Windows-x64 MULTI_NAME=vlmcsdmulti-Windows-x64 CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CF" PLATFORMFLAGS="$PF64" LDFLAGS="$LFWIN64" +make -Bj MSRPC=1 CRYPTO=windows CLIENT_NAME=vlmcs-Windows-msrpc-x86 PROGRAM_NAME=vlmcsd-Windows-msrpc-x86 MULTI_NAME=vlmcsdmulti-Windows-msrpc-x86 CC=i686-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF32" LDFLAGS="-Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware" +make $MAKEFLAGS THREADS=1 MSRPC=1 CRYPTO=windows CLIENT_NAME=vlmcs-Windows-msrpc-x64 PROGRAM_NAME=vlmcsd-Windows-msrpc-x64 MULTI_NAME=vlmcsdmulti-Windows-msrpc-x64 CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" +unset CAT +make $MAKEFLAGS vlmcsdmulti-Windows-msrpc-x86 THREADS=1 MSRPC=1 CRYPTO=windows MULTI_NAME=vlmcsdmulti-Windows-msrpc-x86 CC=i686-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF32" LDFLAGS="-Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware" +make $MAKEFLAGS vlmcsdmulti-Windows-msrpc-x64 THREADS=1 MSRPC=1 CRYPTO=windows MULTI_NAME=vlmcsdmulti-Windows-msrpc-x64 CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64" +export CAT=2 + +rm -f *_all.* *.o 2> /dev/null & + +echo "" +echo "Installing binaries" + +cp -p vlmcs-cygwin-x64.exe /usr/local/bin/vlmcs & +cp -p vlmcsd-cygwin-x64.exe /usr/local/bin/vlmcsd & +cp -p cygkms64.dll /usr/local/bin/cygkms.dll & + +cp -p libkms32.dll /cygdrive/c/nttools/x86 & +cp -p libkms64.dll /cygdrive/c/nttools/x64 & +cp -p vlmcsdmulti-Windows-x86.exe /cygdrive/c/nttools/x86/vlmcsdmulti.exe + +cmd /C mklink c:\\nttools\\x86\\vlmcsd.exe vlmcsdmulti.exe 2> /dev/null & +cmd /C mklink c:\\nttools\\x86\\vlmcs.exe vlmcsdmulti.exe 2> /dev/null & + +echo "Installing man pages" + +mkdir -p /usr/share/man/man8 +mkdir -p /usr/share/man/man1 +mkdir -p /usr/share/man/man7 +mkdir -p /usr/share/man/man5 + +cp -p vlmcsd.7 /usr/share/man/man7 +cp -p vlmcsd.8 /usr/share/man/man8 +cp -p vlmcsd.ini.5 /usr/share/man/man5 +cp -p vlmcs.1 vlmcsdmulti.1 /usr/share/man/man1 + +bzip2 -f /usr/share/man/man5/vlmcsd.ini.5 /usr/share/man/man7/vlmcsd.7 /usr/share/man/man8/vlmcsd.8 /usr/share/man/man1/vlmcs.1 /usr/share/man/man1/vlmcsdmulti.1 & + +# Copy stuff to distribution server +scp -p vlmcsd-* vlmcs-* vlmcsdmulti-* *.dll root@ubuntu64:x/binaries/Windows/intel diff --git a/make_windows_native b/make_windows_native new file mode 100644 index 00000000..8c07db77 --- /dev/null +++ b/make_windows_native @@ -0,0 +1,17 @@ +#!/bin/bash + +# +# To use on x64 hosted native multilib compiler toolchain +# + +rm vlmcsd-* +rm vlmcsd + +MAKEFLAGS="-j -B" + +make $MAKEFLAGS PROGRAM_NAME=vlmcsd-mingw64-x86 CC=x86_64-w64-mingw32-gcc.exe CFLAGS="-flto -m32" "PLATFORMFLAGS=-march=i686 -mtune=generic" "LDFLAGS=-lcrypto -lz -lkernel32 -ladvapi32 -lws2_32 -lgdi32" +make $MAKEFLAGS PROGRAM_NAME=vlmcsd-mingw64-x64 CC=x86_64-w64-mingw32-gcc.exe CFLAGS="-flto" "PLATFORMFLAGS=-mtune=generic" "LDFLAGS=-lcrypto -lz -lkernel32 -ladvapi32 -lws2_32 -lgdi32" +make $MAKEFLAGS CRYPTO=openssl_with_aes PROGRAM_NAME=vlmcsd-mingw64-x86-openssl CC=x86_64-w64-mingw32-gcc.exe CFLAGS="-flto -m32" "PLATFORMFLAGS=-march=i686 -mtune=generic" "LDFLAGS=-lcrypto -lz -lkernel32 -ladvapi32 -lws2_32 -lgdi32" +make $MAKEFLAGS CRYPTO=openssl_with_aes PROGRAM_NAME=vlmcsd-mingw64-x64-openssl CC=x86_64-w64-mingw32-gcc.exe CFLAGS="-flto" "PLATFORMFLAGS=-mtune=generic" "LDFLAGS=-lcrypto -lz -lkernel32 -ladvapi32 -lws2_32 -lgdi32" + +rm *.o diff --git a/msrpc-client.c b/msrpc-client.c new file mode 100644 index 00000000..aee5695f --- /dev/null +++ b/msrpc-client.c @@ -0,0 +1,191 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef USE_MSRPC + +#if !defined(_WIN32) && !defined(__CYGWIN__) +#error MSRPC is only available with native Windows or Cygwin +#endif + +#include "msrpc-client.h" +#include +#include "output.h" +#include "helpers.h" + +#if __amd64 || defined(_M_AMD64) // 64-bit + +#ifndef _M_AMD64 +#define _M_AMD64 +#endif // _M_AMD64 + +#include "KMSServer_c_x64_mingw_gcc.c" + +#else // 32-bit + +#include "KMSServer_c_mingw_gcc.c" + +#endif // 32-bit + +static RPC_CSTR stringBinding; +jmp_buf jmp; +RPC_STATUS PreviousRpcCallFailed = RPC_S_OK; + + +/* + * Creates an RPC string binding that is used to connect to the server. + * Input is host:port, e.g. "[::1]:1688" or "127.0.0.1:1688" + * Output is for example "ncacn_ip_tcp:127.0.0.1[endpoint=1688]" + */ +#if !__amd64 +#pragma GCC optimize("O0") ////TODO: Find out why gcc needs -O0 for RPC handling +#endif + +static RPC_STATUS createStringBinding(char *const addr, RPC_CSTR* stringBinding) +{ + char *szHost, *szPort; + + parseAddress(addr, &szHost, &szPort); + + return RpcStringBindingComposeA + ( + NULL, /* UUID */ + (RPC_CSTR)"ncacn_ip_tcp", /* use TCP */ + (RPC_CSTR)szHost, /* host name or IP address */ + (RPC_CSTR)szPort, /* endpoint (TCP port here) */ + NULL, /* options */ + stringBinding /* resulting string binding */ + ); +} + + +/* + * This does not actually connect to a TCP port because MS RPC doesn't connect + * before the actual RPC call is made. So this a stub + */ +RpcCtx connectToAddress(char *const addr, const int AddressFamily_unused, int_fast8_t showHostName_unused) +{ + RPC_STATUS status; + + printf("Connecting to %s ... ", addr); + + if ((status = createStringBinding(addr, &stringBinding)) != RPC_S_OK) + { + errorout("%s\n", win_strerror(status)); + return !0; + } + + if (PreviousRpcCallFailed) + { + errorout("%s\n", win_strerror(PreviousRpcCallFailed)); + return !0; + } + + printf("successful\n"); + return 0; +} + + +/* + * Does not do RPC binding on the wire. Just initializes the interface + */ +RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose) +{ + RPC_STATUS status; + + if ((status = RpcBindingFromStringBindingA(stringBinding, &KMSServer_v1_0_c_ifspec)) != RPC_S_OK) + { + errorout("\n%s\n", win_strerror(status)); + } + + return status; +} + + +/* + * You never know if you have a TCP connection or not + * This returns true if the previous RPC call failed + */ +int_fast8_t isDisconnected(const RpcCtx handle) +{ + return PreviousRpcCallFailed; +} + + +/* + * This is the exception handler because the RPC call may + * throw an SEH exception and gcc does not support + * __try / __except as MSVC does. + */ +static LONG WINAPI rpcException (LPEXCEPTION_POINTERS exception_pointers) +{ + DWORD exception = exception_pointers->ExceptionRecord->ExceptionCode; + if (!exception) exception = (DWORD)~0; + longjmp(jmp, exception_pointers->ExceptionRecord->ExceptionCode); + return EXCEPTION_EXECUTE_HANDLER; +} + +/* + * This actually calls the RPC server + */ +#define try SetUnhandledExceptionFilter(rpcException); RPC_STATUS exception = setjmp(jmp); if (!exception) +#define catch else +RpcStatus rpcSendRequest(const RpcCtx handle, BYTE* KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t* responseSize) +{ + *KmsResponse = NULL; // Let midl_user_allocate do the job + + try + { + exception = RequestActivation(KMSServer_v1_0_c_ifspec, (int)requestSize, KmsRequest, (int*)responseSize, KmsResponse); + } + catch + { + errorout("\n%s", win_strerror(exception)); + } + + PreviousRpcCallFailed = exception; + SetUnhandledExceptionFilter(NULL); + + return exception; + +} +#undef catch +#undef try + + +/* + * Only frees local handles. Cannot close the TCP connection + */ +RpcStatus closeRpc(const RpcCtx handle) +{ + RPC_STATUS status; + + if ((status = RpcBindingFree(&KMSServer_v1_0_c_ifspec)) != RPC_S_OK) return status; + status = RpcStringFreeA(&stringBinding); + //Ctx = INVALID_RPCCTX; + return status; +} + + +#if !MULTI_CALL_BINARY +// Memory allocation function for RPC. +void *__RPC_USER midl_user_allocate(SIZE_T len) +{ + return vlmcsd_malloc(len); +} + + +// Memory deallocation function for RPC. +void __RPC_USER midl_user_free(void __RPC_FAR *ptr) +{ + if (ptr) free(ptr); + ptr = NULL; +} + +#endif // !MULTI_CALL_BINARY + + +#endif // USE_MSRPC + + diff --git a/msrpc-client.h b/msrpc-client.h new file mode 100644 index 00000000..bfb6dba7 --- /dev/null +++ b/msrpc-client.h @@ -0,0 +1,22 @@ +/* + * msrpc-client.h + */ + +#ifndef MSRPC_CLIENT_H_ +#define MSRPC_CLIENT_H_ + +#include "types.h" +#include + +typedef int_fast8_t RpcCtx; +typedef RPC_STATUS RpcStatus; + +RpcCtx connectToAddress(char *const addr, const int AddressFamily_unused, int_fast8_t showHostName); +int_fast8_t isDisconnected(const RpcCtx handle); +RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose); +RpcStatus rpcSendRequest(const RpcCtx handle, BYTE* KmsRequest, size_t requestSize, BYTE **KmsResponse, size_t *responseSize); +RpcStatus closeRpc(RpcCtx s); + +#define INVALID_RPCCTX ((RpcCtx)~0) + +#endif /* MSRPC_CLIENT_H_ */ diff --git a/msrpc-server.c b/msrpc-server.c new file mode 100644 index 00000000..610eb581 --- /dev/null +++ b/msrpc-server.c @@ -0,0 +1,219 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef USE_MSRPC + +#if !defined(_WIN32) && !defined(__CYGWIN__) +#error MSRPC is only available with native Windows or Cygwin +#endif + +#include "msrpc-server.h" +#include "output.h" +#include "kms.h" +#include "helpers.h" +#include "shared_globals.h" +#include "ntservice.h" +#include "endian.h" +#include "types.h" + +#if __amd64 || defined(_M_AMD64) // 64-bit + +#ifndef _M_AMD64 +#define _M_AMD64 +#endif // _M_AMD64 + +#include "KMSServer_s2_x64_mingw_gcc.c" + +#else // 32-bit + +#include "KMSServer_s2_mingw_gcc.c" + +#endif // 32-bit + + +#if !defined(NO_LIMIT) +#define MAXCALLS MaxTasks +#else // defined(NO_LIMIT) +#define MAXCALLS RPC_C_LISTEN_MAX_CALLS_DEFAULT +#endif + + + + +/* + * This is the main run loop for the KMS server + * We actually just setup things (must be after Cygwin fork) and then sleep + */ +int runServer() +{ +# if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + + // The RPC setup survives a Cygwin exec without problems but no daemonizing + // SIGHUP is currently disabled for Cygwin. So this code should never compile + + if (IsRestarted) + { +# ifndef NO_LOG + logger("vlmcsd %s started successfully\n", Version); +# endif // NO_LOG + } + else +# endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + { + RPC_STATUS status; + + // Endpoint is actually a TCP port for "ncacn_ip_tcp" + status = RpcServerUseProtseqEpA + ( + (RPC_CSTR)"ncacn_ip_tcp", + RPC_C_PROTSEQ_MAX_REQS_DEFAULT, + (RPC_CSTR)defaultport, + NULL + ); + + if (status) + { + printerrorf("Fatal: Cannot bind to port %s: %s\n", defaultport, win_strerror(status)); + return status; + } + +# ifndef NO_LOG + logger("Listening on port %s\n", defaultport); +# endif // NO_LOG + + // Registers the KMSServer interface. + status = RpcServerRegisterIf2 + ( + KMSServer_v1_0_s_ifspec, + NULL, + NULL, + RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH | RPC_IF_AUTOLISTEN, + MAXCALLS, + MAX_RESPONSE_SIZE, // currently set to sizeof(RESPONSE_V6) + NULL + ); + + if (status) + { + printerrorf("Fatal: Cannot register RPC interface: %s\n", win_strerror(status)); + return status; + } + +# ifndef NO_LOG + logger("vlmcsd %s started successfully\n", Version); +# endif // NO_LOG + + if (IsNTService) ReportServiceStatus(SERVICE_RUNNING, NO_ERROR, 200); + } + + // We could run RpcServerListen here but we need something + // that can be signaled from Cygwin. So we just sleep 24h (POSIX sleep, no Windows Sleep), + // wake up for some nanoseconds and sleep again. + + while(TRUE) sleep(86400); // Sleep one day +} + + + +/* + * Get's the IP address from an RPC_BINDING_HANDLE. Caller must call RpcStringFreeA to + * release memory allocated in *ipAddress + */ +#ifndef NO_LOG +RPC_STATUS getClientIp(const RPC_BINDING_HANDLE clientBinding, RPC_CSTR *ipAddress) +{ + RPC_STATUS result; + RPC_CSTR stringBinding; + RPC_BINDING_HANDLE serverBinding; + + // Fix for wine (disabled by default, because vlmcsd runs natively on all platforms where wine runs) + // Feel free to #define SUPPORT_WINE if you really want to run the Windows version with MS RPC (Wine RPC in this case) + #ifdef SUPPORT_WINE + HMODULE h = GetModuleHandleA("kernel32.dll"); + + if (h) + { + // Since wine simply terminates the thread when RpcBindingServerFromClient is called, we exit with an error + if (GetProcAddress(h, "wine_get_unix_file_name")) return RPC_S_CANNOT_SUPPORT; + } + #endif // SUPPORT_WINE + + if ((result = RpcBindingServerFromClient(clientBinding, &serverBinding)) != RPC_S_OK) return result; + + if ((result = RpcBindingToStringBindingA(serverBinding, &stringBinding)) != RPC_S_OK) + { + RpcBindingFree(&serverBinding); + return result; + } + + result = RpcStringBindingParseA(stringBinding, NULL, NULL, ipAddress, NULL, NULL); + RpcStringFreeA(&stringBinding); + RpcBindingFree(&serverBinding); + + return result; +} +#endif // NO_LOG + + + +/* + * This is the callback function for the RPC request as defined in KMSServer.idl + * Output from the MIDL compiler has been modified manually to support gcc (and compatible compilers) + * as well as Cygwin and MingW-w64 toolchains. + */ +int ProcessActivationRequest(handle_t IDL_handle, int requestSize, unsigned char *request, int *responseSize, unsigned char **response) +{ + RPC_CSTR clientIpAddress; + RPC_STATUS result; + int status = RPC_S_OK; + + result = getClientIp(IDL_handle, &clientIpAddress); + +# ifndef NO_LOG + + logger("RPC connection accepted: %s\n", !result ? (const char*)clientIpAddress : "Unknown IP"); + +# endif // NO_LOG + + // Discard any packet smaller than a v4 request + if (requestSize < (int)sizeof(REQUEST_V4)) return RPC_S_CANNOT_SUPPORT; + + *response = (uint8_t *)midl_user_allocate(MAX_RESPONSE_SIZE); + + switch(LE16(((REQUEST*)(request))->MajorVer)) + { + case 4: + *responseSize = CreateResponseV4((REQUEST_V4 *)request, *response, (char*)clientIpAddress); + break; + case 5: + case 6: + *responseSize = CreateResponseV6((REQUEST_V6 *) request, *response, (char*)clientIpAddress); + break; + default: + status = RPC_S_INVALID_ARG; + break; + } + + if (!result) RpcStringFreeA(&clientIpAddress); + return status; +} + + +// Memory allocation function for RPC. +void *__RPC_USER midl_user_allocate(SIZE_T len) +{ + return vlmcsd_malloc(len); +} + + +// Memory deallocation function for RPC. +void __RPC_USER midl_user_free(void __RPC_FAR *ptr) +{ + if (ptr) free(ptr); + ptr = NULL; +} + + +#endif // USE_MSRPC diff --git a/msrpc-server.h b/msrpc-server.h new file mode 100644 index 00000000..cae9c4d7 --- /dev/null +++ b/msrpc-server.h @@ -0,0 +1,10 @@ +/* + * msrpc-server.h + */ + +#ifndef MSRPC_SERVER_H_ +#define MSRPC_SERVER_H_ + +int runServer(); + +#endif /* MSRPC_SERVER_H_ */ diff --git a/nameser.h b/nameser.h new file mode 100644 index 00000000..a7747981 --- /dev/null +++ b/nameser.h @@ -0,0 +1,569 @@ +/* $NetBSD: nameser.h,v 1.19 2005/12/26 19:01:47 perry Exp $ */ + +/* + * Copyright (c) 1983, 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1996-1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * Id: nameser.h,v 1.2.2.4.4.1 2004/03/09 08:33:30 marka Exp + */ + +#ifndef _ARPA_NAMESER_H_ +#define _ARPA_NAMESER_H_ + +#define BIND_4_COMPAT + +#include +#include + +/* + * Revision information. This is the release date in YYYYMMDD format. + * It can change every day so the right thing to do with it is use it + * in preprocessor commands such as "#if (__NAMESER > 19931104)". Do not + * compare for equality; rather, use it to determine whether your libbind.a + * contains a new enough lib/nameser/ to support the feature you need. + */ + +#define __NAMESER 19991006 /* New interface version stamp. */ + +/* + * Define constants based on RFC 883, RFC 1034, RFC 1035 + */ +#define NS_PACKETSZ 512 /* default UDP packet size */ +#define NS_MAXDNAME 1025 /* maximum domain name */ +#define NS_MAXMSG 65535 /* maximum message size */ +#define NS_MAXCDNAME 255 /* maximum compressed domain name */ +#define NS_MAXLABEL 63 /* maximum length of domain label */ +#define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ +#define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ +#define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ +#define NS_INT32SZ 4 /* #/bytes of data in a uint32_t */ +#define NS_INT16SZ 2 /* #/bytes of data in a uint16_t */ +#define NS_INT8SZ 1 /* #/bytes of data in a uint8_t */ +#define NS_INADDRSZ 4 /* IPv4 T_A */ +#define NS_IN6ADDRSZ 16 /* IPv6 T_AAAA */ +#define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */ +#define NS_DEFAULTPORT 53 /* For both TCP and UDP. */ + +/* + * These can be expanded with synonyms, just keep ns_parse.c:ns_parserecord() + * in synch with it. + */ +typedef enum __ns_sect { + ns_s_qd = 0, /* Query: Question. */ + ns_s_zn = 0, /* Update: Zone. */ + ns_s_an = 1, /* Query: Answer. */ + ns_s_pr = 1, /* Update: Prerequisites. */ + ns_s_ns = 2, /* Query: Name servers. */ + ns_s_ud = 2, /* Update: Update. */ + ns_s_ar = 3, /* Query|Update: Additional records. */ + ns_s_max = 4 +} ns_sect; + +/* + * This is a message handle. It is caller allocated and has no dynamic data. + * This structure is intended to be opaque to all but ns_parse.c, thus the + * leading _'s on the member names. Use the accessor functions, not the _'s. + */ +typedef struct __ns_msg { + const u_char *_msg, *_eom; + uint16_t _id, _flags, _counts[ns_s_max]; + const u_char *_sections[ns_s_max]; + ns_sect _sect; + int _rrnum; + const u_char *_msg_ptr; +} ns_msg; + +/* Private data structure - do not use from outside library. */ +struct _ns_flagdata { int mask, shift; }; +extern const struct _ns_flagdata _ns_flagdata[]; + +/* Accessor macros - this is part of the public interface. */ + +#define ns_msg_id(handle) ((handle)._id + 0) +#define ns_msg_base(handle) ((handle)._msg + 0) +#define ns_msg_end(handle) ((handle)._eom + 0) +#define ns_msg_size(handle) ((size_t)((handle)._eom - (handle)._msg)) +#define ns_msg_count(handle, section) ((handle)._counts[section] + 0) + +/* + * This is a parsed record. It is caller allocated and has no dynamic data. + */ +typedef struct __ns_rr { + char name[NS_MAXDNAME]; + uint16_t type; + uint16_t rr_class; + uint32_t ttl; + uint16_t rdlength; + const u_char * rdata; +} ns_rr; + +/* Accessor macros - this is part of the public interface. */ +#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_type(rr) ((ns_type)((rr).type + 0)) +#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) +#define ns_rr_ttl(rr) ((u_long)(rr).ttl + 0) +#define ns_rr_rdlen(rr) ((size_t)(rr).rdlength + 0) +#define ns_rr_rdata(rr) ((rr).rdata + 0) + +/* + * These don't have to be in the same order as in the packet flags word, + * and they can even overlap in some cases, but they will need to be kept + * in synch with ns_parse.c:ns_flagdata[]. + */ +typedef enum __ns_flag { + ns_f_qr, /* Question/Response. */ + ns_f_opcode, /* Operation code. */ + ns_f_aa, /* Authoritative Answer. */ + ns_f_tc, /* Truncation occurred. */ + ns_f_rd, /* Recursion Desired. */ + ns_f_ra, /* Recursion Available. */ + ns_f_z, /* MBZ. */ + ns_f_ad, /* Authentic Data (DNSSEC). */ + ns_f_cd, /* Checking Disabled (DNSSEC). */ + ns_f_rcode, /* Response code. */ + ns_f_max +} ns_flag; + +/* + * Currently defined opcodes. + */ +typedef enum __ns_opcode { + ns_o_query = 0, /* Standard query. */ + ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */ + ns_o_status = 2, /* Name server status query (unsupported). */ + /* Opcode 3 is undefined/reserved. */ + ns_o_notify = 4, /* Zone change notification. */ + ns_o_update = 5, /* Zone update message. */ + ns_o_max = 6 +} ns_opcode; + +/* + * Currently defined response codes. + */ +typedef enum __ns_rcode { + ns_r_noerror = 0, /* No error occurred. */ + ns_r_formerr = 1, /* Format error. */ + ns_r_servfail = 2, /* Server failure. */ + ns_r_nxdomain = 3, /* Name error. */ + ns_r_notimpl = 4, /* Unimplemented. */ + ns_r_refused = 5, /* Operation refused. */ + /* these are for BIND_UPDATE */ + ns_r_yxdomain = 6, /* Name exists */ + ns_r_yxrrset = 7, /* RRset exists */ + ns_r_nxrrset = 8, /* RRset does not exist */ + ns_r_notauth = 9, /* Not authoritative for zone */ + ns_r_notzone = 10, /* Zone of record different from zone section */ + ns_r_max = 11, + /* The following are EDNS extended rcodes */ + ns_r_badvers = 16, + /* The following are TSIG errors */ + ns_r_badsig = 16, + ns_r_badkey = 17, + ns_r_badtime = 18 +} ns_rcode; + +/* BIND_UPDATE */ +typedef enum __ns_update_operation { + ns_uop_delete = 0, + ns_uop_add = 1, + ns_uop_max = 2 +} ns_update_operation; + +/* + * This structure is used for TSIG authenticated messages + */ +struct ns_tsig_key { + char name[NS_MAXDNAME], alg[NS_MAXDNAME]; + unsigned char *data; + int len; +}; +typedef struct ns_tsig_key ns_tsig_key; + +/* + * This structure is used for TSIG authenticated TCP messages + */ +struct ns_tcp_tsig_state { + int counter; + struct dst_key *key; + void *ctx; + unsigned char sig[NS_PACKETSZ]; + int siglen; +}; +typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; + +#define NS_TSIG_FUDGE 300 +#define NS_TSIG_TCP_COUNT 100 +#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" + +#define NS_TSIG_ERROR_NO_TSIG -10 +#define NS_TSIG_ERROR_NO_SPACE -11 +#define NS_TSIG_ERROR_FORMERR -12 + +/* + * Currently defined type values for resources and queries. + */ +typedef enum __ns_type { + ns_t_invalid = 0, /* Cookie. */ + ns_t_a = 1, /* Host address. */ + ns_t_ns = 2, /* Authoritative server. */ + ns_t_md = 3, /* Mail destination. */ + ns_t_mf = 4, /* Mail forwarder. */ + ns_t_cname = 5, /* Canonical name. */ + ns_t_soa = 6, /* Start of authority zone. */ + ns_t_mb = 7, /* Mailbox domain name. */ + ns_t_mg = 8, /* Mail group member. */ + ns_t_mr = 9, /* Mail rename name. */ + ns_t_null = 10, /* Null resource record. */ + ns_t_wks = 11, /* Well known service. */ + ns_t_ptr = 12, /* Domain name pointer. */ + ns_t_hinfo = 13, /* Host information. */ + ns_t_minfo = 14, /* Mailbox information. */ + ns_t_mx = 15, /* Mail routing information. */ + ns_t_txt = 16, /* Text strings. */ + ns_t_rp = 17, /* Responsible person. */ + ns_t_afsdb = 18, /* AFS cell database. */ + ns_t_x25 = 19, /* X_25 calling address. */ + ns_t_isdn = 20, /* ISDN calling address. */ + ns_t_rt = 21, /* Router. */ + ns_t_nsap = 22, /* NSAP address. */ + ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */ + ns_t_sig = 24, /* Security signature. */ + ns_t_key = 25, /* Security key. */ + ns_t_px = 26, /* X.400 mail mapping. */ + ns_t_gpos = 27, /* Geographical position (withdrawn). */ + ns_t_aaaa = 28, /* Ip6 Address. */ + ns_t_loc = 29, /* Location Information. */ + ns_t_nxt = 30, /* Next domain (security). */ + ns_t_eid = 31, /* Endpoint identifier. */ + ns_t_nimloc = 32, /* Nimrod Locator. */ + ns_t_srv = 33, /* Server Selection. */ + ns_t_atma = 34, /* ATM Address */ + ns_t_naptr = 35, /* Naming Authority PoinTeR */ + ns_t_kx = 36, /* Key Exchange */ + ns_t_cert = 37, /* Certification record */ + ns_t_a6 = 38, /* IPv6 address (deprecates AAAA) */ + ns_t_dname = 39, /* Non-terminal DNAME (for IPv6) */ + ns_t_sink = 40, /* Kitchen sink (experimentatl) */ + ns_t_opt = 41, /* EDNS0 option (meta-RR) */ + ns_t_apl = 42, /* Address prefix list (RFC 3123) */ + ns_t_tkey = 249, /* Transaction key */ + ns_t_tsig = 250, /* Transaction signature. */ + ns_t_ixfr = 251, /* Incremental zone transfer. */ + ns_t_axfr = 252, /* Transfer zone of authority. */ + ns_t_mailb = 253, /* Transfer mailbox records. */ + ns_t_maila = 254, /* Transfer mail agent records. */ + ns_t_any = 255, /* Wildcard match. */ + ns_t_zxfr = 256, /* BIND-specific, nonstandard. */ + ns_t_max = 65536 +} ns_type; + +/* Exclusively a QTYPE? (not also an RTYPE) */ +#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ + (t) == ns_t_mailb || (t) == ns_t_maila) +/* Some kind of meta-RR? (not a QTYPE, but also not an RTYPE) */ +#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) +/* Exclusively an RTYPE? (not also a QTYPE or a meta-RR) */ +#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) +#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) +#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ + (t) == ns_t_zxfr) + +/* + * Values for class field + */ +typedef enum __ns_class { + ns_c_invalid = 0, /* Cookie. */ + ns_c_in = 1, /* Internet. */ + ns_c_2 = 2, /* unallocated/unsupported. */ + ns_c_chaos = 3, /* MIT Chaos-net. */ + ns_c_hs = 4, /* MIT Hesiod. */ + /* Query class values which do not appear in resource records */ + ns_c_none = 254, /* for prereq. sections in update requests */ + ns_c_any = 255, /* Wildcard match. */ + ns_c_max = 65536 +} ns_class; + +/* DNSSEC constants. */ + +typedef enum __ns_key_types { + ns_kt_rsa = 1, /* key type RSA/MD5 */ + ns_kt_dh = 2, /* Diffie Hellman */ + ns_kt_dsa = 3, /* Digital Signature Standard (MANDATORY) */ + ns_kt_private = 254 /* Private key type starts with OID */ +} ns_key_types; + +typedef enum __ns_cert_types { + cert_t_pkix = 1, /* PKIX (X.509v3) */ + cert_t_spki = 2, /* SPKI */ + cert_t_pgp = 3, /* PGP */ + cert_t_url = 253, /* URL private type */ + cert_t_oid = 254 /* OID private type */ +} ns_cert_types; + +/* Flags field of the KEY RR rdata. */ +#define NS_KEY_TYPEMASK 0xC000 /* Mask for "type" bits */ +#define NS_KEY_TYPE_AUTH_CONF 0x0000 /* Key usable for both */ +#define NS_KEY_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */ +#define NS_KEY_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */ +#define NS_KEY_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */ +/* The type bits can also be interpreted independently, as single bits: */ +#define NS_KEY_NO_AUTH 0x8000 /* Key unusable for authentication */ +#define NS_KEY_NO_CONF 0x4000 /* Key unusable for confidentiality */ +#define NS_KEY_RESERVED2 0x2000 /* Security is *mandatory* if bit=0 */ +#define NS_KEY_EXTENDED_FLAGS 0x1000 /* reserved - must be zero */ +#define NS_KEY_RESERVED4 0x0800 /* reserved - must be zero */ +#define NS_KEY_RESERVED5 0x0400 /* reserved - must be zero */ +#define NS_KEY_NAME_TYPE 0x0300 /* these bits determine the type */ +#define NS_KEY_NAME_USER 0x0000 /* key is assoc. with user */ +#define NS_KEY_NAME_ENTITY 0x0200 /* key is assoc. with entity eg host */ +#define NS_KEY_NAME_ZONE 0x0100 /* key is zone key */ +#define NS_KEY_NAME_RESERVED 0x0300 /* reserved meaning */ +#define NS_KEY_RESERVED8 0x0080 /* reserved - must be zero */ +#define NS_KEY_RESERVED9 0x0040 /* reserved - must be zero */ +#define NS_KEY_RESERVED10 0x0020 /* reserved - must be zero */ +#define NS_KEY_RESERVED11 0x0010 /* reserved - must be zero */ +#define NS_KEY_SIGNATORYMASK 0x000F /* key can sign RR's of same name */ +#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ + NS_KEY_RESERVED4 | \ + NS_KEY_RESERVED5 | \ + NS_KEY_RESERVED8 | \ + NS_KEY_RESERVED9 | \ + NS_KEY_RESERVED10 | \ + NS_KEY_RESERVED11 ) +#define NS_KEY_RESERVED_BITMASK2 0xFFFF /* no bits defined here */ + +/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */ +#define NS_ALG_MD5RSA 1 /* MD5 with RSA */ +#define NS_ALG_DH 2 /* Diffie Hellman KEY */ +#define NS_ALG_DSA 3 /* DSA KEY */ +#define NS_ALG_DSS NS_ALG_DSA +#define NS_ALG_EXPIRE_ONLY 253 /* No alg, no security */ +#define NS_ALG_PRIVATE_OID 254 /* Key begins with OID giving alg */ + +/* Protocol values */ +/* value 0 is reserved */ +#define NS_KEY_PROT_TLS 1 +#define NS_KEY_PROT_EMAIL 2 +#define NS_KEY_PROT_DNSSEC 3 +#define NS_KEY_PROT_IPSEC 4 +#define NS_KEY_PROT_ANY 255 + +/* Signatures */ +#define NS_MD5RSA_MIN_BITS 512 /* Size of a mod or exp in bits */ +#define NS_MD5RSA_MAX_BITS 4096 + /* Total of binary mod and exp */ +#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3) + /* Max length of text sig block */ +#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4) +#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8) +#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8) + +#define NS_DSA_SIG_SIZE 41 +#define NS_DSA_MIN_SIZE 213 +#define NS_DSA_MAX_BYTES 405 + +/* Offsets into SIG record rdata to find various values */ +#define NS_SIG_TYPE 0 /* Type flags */ +#define NS_SIG_ALG 2 /* Algorithm */ +#define NS_SIG_LABELS 3 /* How many labels in name */ +#define NS_SIG_OTTL 4 /* Original TTL */ +#define NS_SIG_EXPIR 8 /* Expiration time */ +#define NS_SIG_SIGNED 12 /* Signature time */ +#define NS_SIG_FOOT 16 /* Key footprint */ +#define NS_SIG_SIGNER 18 /* Domain name of who signed it */ + +/* How RR types are represented as bit-flags in NXT records */ +#define NS_NXT_BITS 8 +#define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_MAX 127 + +/* + * EDNS0 extended flags, host order. + */ +#define NS_OPT_DNSSEC_OK 0x8000U + +/* + * Inline versions of get/put short/long. Pointer is advanced. + */ +#define NS_GET16(s, cp) do { \ + const u_char *t_cp = (const u_char *)(cp); \ + (s) = ((uint16_t)t_cp[0] << 8) \ + | ((uint16_t)t_cp[1]) \ + ; \ + (cp) += NS_INT16SZ; \ +} while (/*CONSTCOND*/0) + +#define NS_GET32(l, cp) do { \ + const u_char *t_cp = (const u_char *)(cp); \ + (l) = ((uint32_t)t_cp[0] << 24) \ + | ((uint32_t)t_cp[1] << 16) \ + | ((uint32_t)t_cp[2] << 8) \ + | ((uint32_t)t_cp[3]) \ + ; \ + (cp) += NS_INT32SZ; \ +} while (/*CONSTCOND*/0) + +#define NS_PUT16(s, cp) do { \ + uint32_t t_s = (uint32_t)(s); \ + u_char *t_cp = (u_char *)(cp); \ + *t_cp++ = t_s >> 8; \ + *t_cp = t_s; \ + (cp) += NS_INT16SZ; \ +} while (/*CONSTCOND*/0) + +#define NS_PUT32(l, cp) do { \ + uint32_t t_l = (uint32_t)(l); \ + u_char *t_cp = (u_char *)(cp); \ + *t_cp++ = t_l >> 24; \ + *t_cp++ = t_l >> 16; \ + *t_cp++ = t_l >> 8; \ + *t_cp = t_l; \ + (cp) += NS_INT32SZ; \ +} while (/*CONSTCOND*/0) + +/* + * ANSI C identifier hiding for bind's lib/nameser. + */ +#define ns_msg_getflag __ns_msg_getflag +#define ns_get16 __ns_get16 +#define ns_get32 __ns_get32 +#define ns_put16 __ns_put16 +#define ns_put32 __ns_put32 +#define ns_initparse __ns_initparse +#define ns_skiprr __ns_skiprr +#define ns_parserr __ns_parserr +#define ns_sprintrr __ns_sprintrr +#define ns_sprintrrf __ns_sprintrrf +#define ns_format_ttl __ns_format_ttl +#define ns_parse_ttl __ns_parse_ttl +#define ns_datetosecs __ns_datetosecs +#define ns_name_ntol __ns_name_ntol +#define ns_name_ntop __ns_name_ntop +#define ns_name_pton __ns_name_pton +#define ns_name_unpack __ns_name_unpack +#define ns_name_pack __ns_name_pack +#define ns_name_compress __ns_name_compress +#define ns_name_uncompress __ns_name_uncompress +#define ns_name_skip __ns_name_skip +#define ns_name_rollback __ns_name_rollback +#define ns_sign __ns_sign +#define ns_sign2 __ns_sign2 +#define ns_sign_tcp __ns_sign_tcp +#define ns_sign_tcp2 __ns_sign_tcp2 +#define ns_sign_tcp_init __ns_sign_tcp_init +#define ns_find_tsig __ns_find_tsig +#define ns_verify __ns_verify +#define ns_verify_tcp __ns_verify_tcp +#define ns_verify_tcp_init __ns_verify_tcp_init +#define ns_samedomain __ns_samedomain +#define ns_subdomain __ns_subdomain +#define ns_makecanon __ns_makecanon +#define ns_samename __ns_samename + +__BEGIN_DECLS +int ns_msg_getflag(ns_msg, int); +uint16_t ns_get16(const u_char *); +uint32_t ns_get32(const u_char *); +void ns_put16(uint16_t, u_char *); +void ns_put32(uint32_t, u_char *); +int ns_initparse(const u_char *, int, ns_msg *); +int ns_skiprr(const u_char *, const u_char *, ns_sect, int); +int ns_parserr(ns_msg *, ns_sect, int, ns_rr *); +int ns_sprintrr(const ns_msg *, const ns_rr *, + const char *, const char *, char *, size_t); +int ns_sprintrrf(const u_char *, size_t, const char *, + ns_class, ns_type, u_long, const u_char *, + size_t, const char *, const char *, + char *, size_t); +int ns_format_ttl(u_long, char *, size_t); +int ns_parse_ttl(const char *, u_long *); +uint32_t ns_datetosecs(const char *cp, int *errp); +int ns_name_ntol(const u_char *, u_char *, size_t); +int ns_name_ntop(const u_char *, char *, size_t); +int ns_name_pton(const char *, u_char *, size_t); +int ns_name_unpack(const u_char *, const u_char *, + const u_char *, u_char *, size_t); +int ns_name_pack(const u_char *, u_char *, int, + const u_char **, const u_char **); +int ns_name_uncompress(const u_char *, const u_char *, + const u_char *, char *, size_t); +int ns_name_compress(const char *, u_char *, size_t, + const u_char **, const u_char **); +int ns_name_skip(const u_char **, const u_char *); +void ns_name_rollback(const u_char *, const u_char **, + const u_char **); +int ns_sign(u_char *, int *, int, int, void *, + const u_char *, int, u_char *, int *, time_t); +int ns_sign2(u_char *, int *, int, int, void *, + const u_char *, int, u_char *, int *, time_t, + u_char **, u_char **); +int ns_sign_tcp(u_char *, int *, int, int, + ns_tcp_tsig_state *, int); +int ns_sign_tcp2(u_char *, int *, int, int, + ns_tcp_tsig_state *, int, + u_char **, u_char **); +int ns_sign_tcp_init(void *, const u_char *, int, + ns_tcp_tsig_state *); +u_char *ns_find_tsig(u_char *, u_char *); +int ns_verify(u_char *, int *, void *, + const u_char *, int, u_char *, int *, + time_t *, int); +int ns_verify_tcp(u_char *, int *, ns_tcp_tsig_state *, int); +int ns_verify_tcp_init(void *, const u_char *, int, + ns_tcp_tsig_state *); +int ns_samedomain(const char *, const char *); +int ns_subdomain(const char *, const char *); +int ns_makecanon(const char *, char *, size_t); +int ns_samename(const char *, const char *); +__END_DECLS + +#ifdef BIND_4_COMPAT +#include "nameser_compat.h" +#endif + +#endif /* !_ARPA_NAMESER_H_ */ diff --git a/nameser_compat.h b/nameser_compat.h new file mode 100644 index 00000000..f2bdefdd --- /dev/null +++ b/nameser_compat.h @@ -0,0 +1,236 @@ +/* $NetBSD: nameser_compat.h,v 1.1.1.2 2004/11/07 01:28:27 christos Exp $ */ + +/* Copyright (c) 1983, 1989 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * from nameser.h 8.1 (Berkeley) 6/2/93 + * Id: nameser_compat.h,v 1.1.2.3.4.2 2004/07/01 04:43:41 marka Exp + */ + +#ifndef _ARPA_NAMESER_COMPAT_ +#define _ARPA_NAMESER_COMPAT_ + +#define __BIND 19950621 /* (DEAD) interface version stamp. */ + +#include + +#ifndef BYTE_ORDER +#if (BSD >= 199103) +# include +#else +#ifdef __linux +# include +#else +#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */ +#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */ +#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/ + +#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \ + defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \ + defined(__alpha__) || defined(__alpha) || \ + (defined(__Lynx__) && defined(__x86__)) +#define BYTE_ORDER LITTLE_ENDIAN +#endif + +#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \ + defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \ + defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\ + defined(apollo) || defined(__convex__) || defined(_CRAY) || \ + defined(__hppa) || defined(__hp9000) || \ + defined(__hp9000s300) || defined(__hp9000s700) || \ + defined(__hp3000s900) || defined(__hpux) || defined(MPE) || \ + defined (BIT_ZERO_ON_LEFT) || defined(m68k) || defined(__sparc) || \ + (defined(__Lynx__) && \ + (defined(__68k__) || defined(__sparc__) || defined(__powerpc__))) +#define BYTE_ORDER BIG_ENDIAN +#endif +#endif /* __linux */ +#endif /* BSD */ +#endif /* BYTE_ORDER */ + +#if !defined(BYTE_ORDER) || \ + (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \ + BYTE_ORDER != PDP_ENDIAN) + /* you must determine what the correct bit order is for + * your compiler - the next line is an intentional error + * which will force your compiles to bomb until you fix + * the above macros. + */ + #error "Undefined or invalid BYTE_ORDER"; +#endif + +/* + * Structure for query header. The order of the fields is machine- and + * compiler-dependent, depending on the byte/bit order and the layout + * of bit fields. We use bit fields only in int variables, as this + * is all ANSI requires. This requires a somewhat confusing rearrangement. + */ + +typedef struct { + unsigned id :16; /* query identification number */ +#if BYTE_ORDER == BIG_ENDIAN + /* fields in third byte */ + unsigned qr: 1; /* response flag */ + unsigned opcode: 4; /* purpose of message */ + unsigned aa: 1; /* authoritive answer */ + unsigned tc: 1; /* truncated message */ + unsigned rd: 1; /* recursion desired */ + /* fields in fourth byte */ + unsigned ra: 1; /* recursion available */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ad: 1; /* authentic data from named */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned rcode :4; /* response code */ +#endif +#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN + /* fields in third byte */ + unsigned rd :1; /* recursion desired */ + unsigned tc :1; /* truncated message */ + unsigned aa :1; /* authoritive answer */ + unsigned opcode :4; /* purpose of message */ + unsigned qr :1; /* response flag */ + /* fields in fourth byte */ + unsigned rcode :4; /* response code */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned ad: 1; /* authentic data from named */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ra :1; /* recursion available */ +#endif + /* remaining bytes */ + unsigned qdcount :16; /* number of question entries */ + unsigned ancount :16; /* number of answer entries */ + unsigned nscount :16; /* number of authority entries */ + unsigned arcount :16; /* number of resource entries */ +} HEADER; + +#define PACKETSZ NS_PACKETSZ +#define MAXDNAME NS_MAXDNAME +#define MAXCDNAME NS_MAXCDNAME +#define MAXLABEL NS_MAXLABEL +#define HFIXEDSZ NS_HFIXEDSZ +#define QFIXEDSZ NS_QFIXEDSZ +#define RRFIXEDSZ NS_RRFIXEDSZ +#define INT32SZ NS_INT32SZ +#define INT16SZ NS_INT16SZ +#define INT8SZ NS_INT8SZ +#define INADDRSZ NS_INADDRSZ +#define IN6ADDRSZ NS_IN6ADDRSZ +#define INDIR_MASK NS_CMPRSFLGS +#define NAMESERVER_PORT NS_DEFAULTPORT + +#define S_ZONE ns_s_zn +#define S_PREREQ ns_s_pr +#define S_UPDATE ns_s_ud +#define S_ADDT ns_s_ar + +#define QUERY ns_o_query +#define IQUERY ns_o_iquery +#define STATUS ns_o_status +#define NS_NOTIFY_OP ns_o_notify +#define NS_UPDATE_OP ns_o_update + +#define NOERROR ns_r_noerror +#define FORMERR ns_r_formerr +#define SERVFAIL ns_r_servfail +#define NXDOMAIN ns_r_nxdomain +#define NOTIMP ns_r_notimpl +#define REFUSED ns_r_refused +#define YXDOMAIN ns_r_yxdomain +#define YXRRSET ns_r_yxrrset +#define NXRRSET ns_r_nxrrset +#define NOTAUTH ns_r_notauth +#define NOTZONE ns_r_notzone +/*#define BADSIG ns_r_badsig*/ +/*#define BADKEY ns_r_badkey*/ +/*#define BADTIME ns_r_badtime*/ + + +#define DELETE ns_uop_delete +#define ADD ns_uop_add + +#define T_A ns_t_a +#define T_NS ns_t_ns +#define T_MD ns_t_md +#define T_MF ns_t_mf +#define T_CNAME ns_t_cname +#define T_SOA ns_t_soa +#define T_MB ns_t_mb +#define T_MG ns_t_mg +#define T_MR ns_t_mr +#define T_NULL ns_t_null +#define T_WKS ns_t_wks +#define T_PTR ns_t_ptr +#define T_HINFO ns_t_hinfo +#define T_MINFO ns_t_minfo +#define T_MX ns_t_mx +#define T_TXT ns_t_txt +#define T_RP ns_t_rp +#define T_AFSDB ns_t_afsdb +#define T_X25 ns_t_x25 +#define T_ISDN ns_t_isdn +#define T_RT ns_t_rt +#define T_NSAP ns_t_nsap +#define T_NSAP_PTR ns_t_nsap_ptr +#define T_SIG ns_t_sig +#define T_KEY ns_t_key +#define T_PX ns_t_px +#define T_GPOS ns_t_gpos +#define T_AAAA ns_t_aaaa +#define T_LOC ns_t_loc +#define T_NXT ns_t_nxt +#define T_EID ns_t_eid +#define T_NIMLOC ns_t_nimloc +#define T_SRV ns_t_srv +#define T_ATMA ns_t_atma +#define T_NAPTR ns_t_naptr +#define T_A6 ns_t_a6 +#define T_TSIG ns_t_tsig +#define T_IXFR ns_t_ixfr +#define T_AXFR ns_t_axfr +#define T_MAILB ns_t_mailb +#define T_MAILA ns_t_maila +#define T_ANY ns_t_any + +#define C_IN ns_c_in +#define C_CHAOS ns_c_chaos +#define C_HS ns_c_hs +/* BIND_UPDATE */ +#define C_NONE ns_c_none +#define C_ANY ns_c_any + +#define GETSHORT NS_GET16 +#define GETLONG NS_GET32 +#define PUTSHORT NS_PUT16 +#define PUTLONG NS_PUT32 + +#endif /* _ARPA_NAMESER_COMPAT_ */ diff --git a/network.c b/network.c new file mode 100644 index 00000000..69cdcbec --- /dev/null +++ b/network.c @@ -0,0 +1,675 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +#endif // WIN32 + +#include "network.h" +#include "endian.h" +#include "output.h" +#include "helpers.h" +#include "shared_globals.h" +#include "rpc.h" + + +#ifndef _WIN32 +typedef ssize_t (*sendrecv_t)(int, void*, size_t, int); +#else +typedef int (WINAPI *sendrecv_t)(SOCKET, void*, int, int); +#endif + + +// Send or receive a fixed number of bytes regardless if received in one or more chunks +int_fast8_t sendrecv(SOCKET sock, BYTE *data, int len, int_fast8_t do_send) +{ + int n; + sendrecv_t f = do_send + ? (sendrecv_t) send + : (sendrecv_t) recv; + + do + { + n = f(sock, data, len, 0); + } + while ( + ( n < 0 && socket_errno == VLMCSD_EINTR ) || ( n > 0 && ( data += n, (len -= n) > 0 ) )); + + return ! len; +} + + +static int_fast8_t ip2str(char *restrict result, const size_t resultLength, const struct sockaddr *const restrict socketAddress, const socklen_t socketLength) +{ + static const char *const fIPv4 = "%s:%s"; + static const char *const fIPv6 = "[%s]:%s"; + char ipAddress[64], portNumber[8]; + + if (getnameinfo + ( + socketAddress, + socketLength, + ipAddress, + sizeof(ipAddress), + portNumber, + sizeof(portNumber), + NI_NUMERICHOST | NI_NUMERICSERV + )) + { + return FALSE; + } + + if ((unsigned int)snprintf(result, resultLength, socketAddress->sa_family == AF_INET6 ? fIPv6 : fIPv4, ipAddress, portNumber) > resultLength) return FALSE; + return TRUE; +} + + +static int_fast8_t getSocketList(struct addrinfo **saList, const char *const addr, const int flags, const int AddressFamily) +{ + int status; + char *szHost, *szPort; + size_t len = strlen(addr) + 1; + + // Don't alloca too much + if (len > 264) return FALSE; + + char *addrcopy = (char*)alloca(len); + memcpy(addrcopy, addr, len); + + parseAddress(addrcopy, &szHost, &szPort); + + struct addrinfo hints; + + memset(&hints, 0, sizeof(struct addrinfo)); + + hints.ai_family = AddressFamily; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + hints.ai_flags = flags; + + if ((status = getaddrinfo(szHost, szPort, &hints, saList))) + { + printerrorf("Warning: %s: %s\n", addr, gai_strerror(status)); + return FALSE; + } + + return TRUE; +} + + +static int_fast8_t setBlockingEnabled(SOCKET fd, int_fast8_t blocking) +{ + if (fd == INVALID_SOCKET) return FALSE; + + #ifdef _WIN32 + + unsigned long mode = blocking ? 0 : 1; + return (ioctlsocket(fd, FIONBIO, &mode) == 0) ? TRUE : FALSE; + + #else // POSIX + + int flags = fcntl(fd, F_GETFL, 0); + + if (flags < 0) return FALSE; + + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + return (fcntl(fd, F_SETFL, flags) == 0) ? TRUE : FALSE; + + #endif // POSIX +} + + +int_fast8_t isDisconnected(const SOCKET s) +{ + char buffer[1]; + + if (!setBlockingEnabled(s, FALSE)) return TRUE; + + int n = recv(s, buffer, 1, MSG_PEEK); + + if (!setBlockingEnabled(s, TRUE)) return TRUE; + if (n == 0) return TRUE; + + return FALSE; +} + + +// Connect to TCP address addr (e.g. "kms.example.com:1688") and return an +// open socket for the connection if successful or INVALID_SOCKET otherwise +SOCKET connectToAddress(const char *const addr, const int AddressFamily, int_fast8_t showHostName) +{ + struct addrinfo *saList, *sa; + SOCKET s = INVALID_SOCKET; + char szAddr[128]; + + if (!getSocketList(&saList, addr, 0, AddressFamily)) return INVALID_SOCKET; + + for (sa = saList; sa; sa = sa->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (ip2str(szAddr, sizeof(szAddr), sa->ai_addr, sa->ai_addrlen)) + { + if (showHostName) + printf("Connecting to %s (%s) ... ", addr, szAddr); + else + printf("Connecting to %s ... ", szAddr); + + fflush(stdout); + } + + s = socket(sa->ai_family, SOCK_STREAM, IPPROTO_TCP); + +# if !defined(NO_TIMEOUT) && !__minix__ +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = 10; + to.tv_usec = 0; + +# else // Windows requires a DWORD with milliseconds + + DWORD to = 10000; + +# endif // _WIN32 + + setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); +# endif // !defined(NO_TIMEOUT) && !__minix__ + + if (!connect(s, sa->ai_addr, sa->ai_addrlen)) + { + printf("successful\n"); + break; + } + + errorout("%s\n", socket_errno == VLMCSD_EINPROGRESS ? "Timed out" : vlmcsd_strerror(socket_errno)); + + socketclose(s); + s = INVALID_SOCKET; + } + + freeaddrinfo(saList); + return s; +} + + +#ifndef NO_SOCKETS + +// Create a Listening socket for addrinfo sa and return socket s +// szHost and szPort are for logging only +static int listenOnAddress(const struct addrinfo *const ai, SOCKET *s) +{ + int error; + char ipstr[64]; + + ip2str(ipstr, sizeof(ipstr), ai->ai_addr, ai->ai_addrlen); + + //*s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + *s = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); + + if (*s == INVALID_SOCKET) + { + error = socket_errno; + printerrorf("Warning: %s error. %s\n", ai->ai_family == AF_INET6 ? cIPv6 : cIPv4, vlmcsd_strerror(error)); + return error; + } + +# if !defined(_WIN32) && !defined(NO_SIGHUP) + + int flags = fcntl(*s, F_GETFD, 0); + + if (flags != -1) + { + flags |= FD_CLOEXEC; + fcntl(*s, F_SETFD, flags); + } +# ifdef _PEDANTIC + else + { + printerrorf("Warning: Could not set FD_CLOEXEC flag on %s: %s\n", ipstr, vlmcsd_strerror(errno)); + } +# endif // _PEDANTIC + +# endif // !defined(_WIN32) && !defined(NO_SIGHUP) + + BOOL socketOption = TRUE; + + // fix for lame tomato toolchain +# ifndef IPV6_V6ONLY +# ifdef __linux__ +# define IPV6_V6ONLY (26) +# endif // __linux__ +# endif // IPV6_V6ONLY + +# ifdef IPV6_V6ONLY + if (ai->ai_family == AF_INET6) setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + +# ifndef _WIN32 + setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + + if (bind(*s, ai->ai_addr, ai->ai_addrlen) || listen(*s, SOMAXCONN)) + { + error = socket_errno; + printerrorf("Warning: %s: %s\n", ipstr, vlmcsd_strerror(error)); + socketclose(*s); + return error; + } + +# ifndef NO_LOG + logger("Listening on %s\n", ipstr); +# endif + + return 0; +} + + +// Adds a listening socket for an address string, +// e.g. 127.0.0.1:1688 or [2001:db8:dead:beef::1]:1688 +BOOL addListeningSocket(const char *const addr) +{ + struct addrinfo *aiList, *ai; + int result = FALSE; + SOCKET *s = SocketList + numsockets; + + if (getSocketList(&aiList, addr, AI_PASSIVE | AI_NUMERICHOST, AF_UNSPEC)) + { + for (ai = aiList; ai; ai = ai->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (numsockets >= FD_SETSIZE) + { + #ifdef _PEDANTIC // Do not report this error in normal builds to keep file size low + printerrorf("Warning: Cannot listen on %s. Your OS only supports %u listening sockets in an FD_SET.\n", addr, FD_SETSIZE); + #endif + break; + } + + if (!listenOnAddress(ai, s)) + { + numsockets++; + result = TRUE; + } + } + + freeaddrinfo(aiList); + } + return result; +} + + +// Just create some dummy sockets to see if we have a specific protocol (IPv4 or IPv6) +__pure int_fast8_t checkProtocolStack(const int addressfamily) +{ + SOCKET s; // = INVALID_SOCKET; + + s = socket(addressfamily, SOCK_STREAM, 0); + int_fast8_t success = (s != INVALID_SOCKET); + + socketclose(s); + return success; +} + + +// Build an fd_set of all listening socket then use select to wait for an incoming connection +static SOCKET network_accept_any() +{ + fd_set ListeningSocketsList; + SOCKET maxSocket, sock; + int i; + int status; + + FD_ZERO(&ListeningSocketsList); + maxSocket = 0; + + for (i = 0; i < numsockets; i++) + { + FD_SET(SocketList[i], &ListeningSocketsList); + if (SocketList[i] > maxSocket) maxSocket = SocketList[i]; + } + + status = select(maxSocket + 1, &ListeningSocketsList, NULL, NULL, NULL); + + if (status < 0) return INVALID_SOCKET; + + sock = INVALID_SOCKET; + + for (i = 0; i < numsockets; i++) + { + if (FD_ISSET(SocketList[i], &ListeningSocketsList)) + { + sock = SocketList[i]; + break; + } + } + + if (sock == INVALID_SOCKET) + return INVALID_SOCKET; + else + return accept(sock, NULL, NULL); +} + + +void closeAllListeningSockets() +{ + int i; + + for (i = 0; i < numsockets; i++) + { + shutdown(SocketList[i], VLMCSD_SHUT_RDWR); + socketclose(SocketList[i]); + } +} +#endif // NO_SOCKETS + + +static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup) +{ +# if !defined(NO_TIMEOUT) && !__minix__ + +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = ServerTimeout; + to.tv_usec = 0; + + #else // Windows requires a DWORD with milliseconds + + DWORD to = ServerTimeout * 1000; + +# endif // _WIN32 + +# if !defined(NO_LOG) && defined(_PEDANTIC) + + int result = + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)) || + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + + if (result) logger("Warning: Set timeout failed: %s\n", vlmcsd_strerror(socket_errno)); + +# else // !(!defined(NO_LOG) && defined(_PEDANTIC)) + + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + +# endif // !(!defined(NO_LOG) && defined(_PEDANTIC)) + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + char ipstr[64]; + socklen_t len; + struct sockaddr_storage addr; + + len = sizeof addr; + + if (getpeername(s_client, (struct sockaddr*)&addr, &len) || + !ip2str(ipstr, sizeof(ipstr), (struct sockaddr*)&addr, len)) + { +# if !defined(NO_LOG) && defined(_PEDANTIC) + logger("Fatal: Cannot determine client's IP address: %s\n", vlmcsd_strerror(errno)); +# endif // !defined(NO_LOG) && defined(_PEDANTIC) + socketclose(s_client); + return; + } + + +# ifndef NO_LOG + const char *const connection_type = addr.ss_family == AF_INET6 ? cIPv6 : cIPv4; + static const char *const cAccepted = "accepted"; + static const char *const cClosed = "closed"; + static const char *const fIP = "%s connection %s: %s.\n"; + + logger(fIP, connection_type, cAccepted, ipstr); + #endif // NO_LOG + + rpcServer(s_client, RpcAssocGroup, ipstr); + +# ifndef NO_LOG + logger(fIP, connection_type, cClosed, ipstr); +# endif // NO_LOG + + socketclose(s_client); +} + + +#ifndef NO_SOCKETS +static void post_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_post(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} + + +static void wait_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_wait(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} +#endif // NO_SOCKETS + +#if defined(USE_THREADS) && !defined(NO_SOCKETS) + +#if defined(_WIN32) || defined(__CYGWIN__) // Win32 Threads +static DWORD WINAPI serveClientThreadProc(PCLDATA clData) +#else // Posix threads +static void *serveClientThreadProc (PCLDATA clData) +#endif // Thread proc is identical in WIN32 and Posix threads +{ + serveClient(clData->socket, clData->RpcAssocGroup); + free(clData); + post_sem(); + + return 0; +} + +#endif // USE_THREADS + + +#ifndef NO_SOCKETS + +#if defined(USE_THREADS) && (defined(_WIN32) || defined(__CYGWIN__)) // Windows Threads +static int serveClientAsyncWinThreads(const PCLDATA thr_CLData) +{ + wait_sem(); + + HANDLE h = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)serveClientThreadProc, thr_CLData, 0, NULL); + + if (h) + CloseHandle(h); + else + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return GetLastError(); + } + + return NO_ERROR; +} +#endif // defined(USE_THREADS) && defined(_WIN32) // Windows Threads + + +#if defined(USE_THREADS) && !defined(_WIN32) && !defined(__CYGWIN__) // Posix Threads +static int ServeClientAsyncPosixThreads(const PCLDATA thr_CLData) +{ + pthread_t p_thr; + pthread_attr_t attr; + + wait_sem(); + + // Must set detached state to avoid memory leak + if (pthread_attr_init(&attr) || + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) || + pthread_create(&p_thr, &attr, (void * (*)(void *))serveClientThreadProc, thr_CLData)) + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return !0; + } + + return 0; +} +#endif // defined(USE_THREADS) && !defined(_WIN32) // Posix Threads + +#ifndef USE_THREADS // fork() implementation +static void ChildSignalHandler(const int signal) +{ + if (signal == SIGHUP) return; + + post_sem(); + + #ifndef NO_LOG + logger("Warning: Child killed/crashed by %s\n", strsignal(signal)); + #endif // NO_LOG + + exit(!0); +} + +static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + int pid; + wait_sem(); + + if ((pid = fork()) < 0) + { + return errno; + } + else if ( pid ) + { + // Parent process + socketclose(s_client); + return 0; + } + else + { + // Child process + + // Setup a Child Handler for most common termination signals + struct sigaction sa; + + sa.sa_flags = 0; + sa.sa_handler = ChildSignalHandler; + + static int signallist[] = { SIGHUP, SIGINT, SIGTERM, SIGSEGV, SIGILL, SIGFPE, SIGBUS }; + + if (!sigemptyset(&sa.sa_mask)) + { + uint_fast8_t i; + + for (i = 0; i < _countof(signallist); i++) + { + sigaction(signallist[i], &sa, NULL); + } + } + + serveClient(s_client, RpcAssocGroup); + post_sem(); + exit(0); + } +} +#endif + + +int serveClientAsync(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + #ifndef USE_THREADS // fork() implementation + + return ServeClientAsyncFork(s_client, RpcAssocGroup); + + #else // threads implementation + + PCLDATA thr_CLData = (PCLDATA)vlmcsd_malloc(sizeof(CLDATA)); + thr_CLData->socket = s_client; + thr_CLData->RpcAssocGroup = RpcAssocGroup; + + #if defined(_WIN32) || defined (__CYGWIN__) // Windows threads + + return serveClientAsyncWinThreads(thr_CLData); + + #else // Posix Threads + + return ServeClientAsyncPosixThreads(thr_CLData); + + #endif // Posix Threads + + #endif // USE_THREADS +} + +#endif // NO_SOCKETS + + +int runServer() +{ + DWORD RpcAssocGroup = rand32(); + + // If compiled for inetd-only mode just serve the stdin socket + #ifdef NO_SOCKETS + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + #else + // In inetd mode just handle the stdin socket + if (InetdMode) + { + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + } + + // Standalone mode + for (;;) + { + int error; + SOCKET s_client; + + if ( (s_client = network_accept_any()) == INVALID_SOCKET ) + { + error = socket_errno; + + if (error == VLMCSD_EINTR || error == VLMCSD_ECONNABORTED) continue; + + #ifdef _NTSERVICE + if (ServiceShutdown) return 0; + #endif + + #ifndef NO_LOG + logger("Fatal: %s\n",vlmcsd_strerror(error)); + #endif + + return error; + } + + RpcAssocGroup++; + serveClientAsync(s_client, RpcAssocGroup); + } + #endif // NO_SOCKETS + + return 0; +} + +#endif // USE_MSRPC diff --git a/network.h b/network.h new file mode 100644 index 00000000..7c56038a --- /dev/null +++ b/network.h @@ -0,0 +1,34 @@ +#ifndef INCLUDED_NETWORK_H +#define INCLUDED_NETWORK_H + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include "types.h" + + + +int_fast8_t sendrecv(SOCKET sock, BYTE *data, int len, int_fast8_t do_send); + +#define _recv(s, d, l) sendrecv(s, (BYTE *)d, l, 0) +#define _send(s, d, l) sendrecv(s, (BYTE *)d, l, !0) + +#ifndef NO_SOCKETS + +void closeAllListeningSockets(); +BOOL addListeningSocket(const char *const addr); +__pure int_fast8_t checkProtocolStack(const int addressfamily); + +#endif // NO_SOCKETS + +int runServer(); +SOCKET connectToAddress(const char *const addr, const int AddressFamily, int_fast8_t showHostName); +int_fast8_t isDisconnected(const SOCKET s); + +#endif // INCLUDED_NETWORK_H diff --git a/ns_name.c b/ns_name.c new file mode 100644 index 00000000..6bdff565 --- /dev/null +++ b/ns_name.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Modified by Hotbird64 for use with vlmcs. + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef DNS_PARSER_INTERNAL +#ifndef NO_DNS + +#include +#include +#include +#include +#include +#include +#include + +#include "types.h" +#include "ns_name.h" + +#ifdef SPRINTF_CHAR +# define SPRINTF(x) strlen(sprintf/**/x) +#else +# define SPRINTF(x) ((size_t)sprintf x) +#endif + +#define NS_TYPE_ELT 0x40 /* EDNS0 extended label type */ +#define DNS_LABELTYPE_BITSTRING 0x41 + +#define NS_MAXCDNAME 255 +#define NS_CMPRSFLGS 0xc0 + +/* Data. */ + +static char digits[] = "0123456789"; + + +/* Forward. */ + +static int special_vlmcsd(int); +static int printable_vlmcsd(int); +static int labellen_vlmcsd(const uint8_t *); +static int decode_bitstring_vlmcsd(const char **, char *, const char *); + +/* + * ns_name_ntop(src, dst, dstsiz) + * Convert an encoded domain name to printable ascii as per RFC1035. + * return: + * Number of bytes written to buffer, or -1 (with errno set) + * notes: + * The root is returned as "." + * All other domains are returned in non absolute form + */ +static int +ns_name_ntop_vlmcsd(const uint8_t *src, char *dst, size_t dstsiz) +{ + const uint8_t *cp; + char *dn, *eom; + uint8_t c; + uint32_t n; + int l; + + cp = src; + dn = dst; + eom = dst + dstsiz; + + while ((n = *cp++) != 0) { + if ((n & NS_CMPRSFLGS) == NS_CMPRSFLGS) { + /* Some kind of compression pointer. */ + errno = EMSGSIZE; + return (-1); + } + if (dn != dst) { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '.'; + } + if ((l = labellen_vlmcsd(cp - 1)) < 0) { + errno = EMSGSIZE; /* XXX */ + return(-1); + } + if (dn + l >= eom) { + errno = EMSGSIZE; + return (-1); + } + if ((n & NS_CMPRSFLGS) == NS_TYPE_ELT) { + int m; + + if (n != DNS_LABELTYPE_BITSTRING) { + /* XXX: labellen should reject this case */ + errno = EINVAL; + return(-1); + } + if ((m = decode_bitstring_vlmcsd((const char **)&cp, dn, eom)) < 0) + { + errno = EMSGSIZE; + return(-1); + } + dn += m; + continue; + } + for ((void)NULL; l > 0; l--) { + c = *cp++; + if (special_vlmcsd(c)) { + if (dn + 1 >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\\'; + *dn++ = (char)c; + } else if (!printable_vlmcsd(c)) { + if (dn + 3 >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\\'; + *dn++ = digits[c / 100]; + *dn++ = digits[(c % 100) / 10]; + *dn++ = digits[c % 10]; + } else { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = (char)c; + } + } + } + if (dn == dst) { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '.'; + } + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\0'; + return (dn - dst); +} + +static int +ns_name_unpack_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + uint8_t *dst, size_t dstsiz) +{ + const uint8_t *srcp, *dstlim; + uint8_t *dstp; + int n, len, checked, l; + + len = -1; + checked = 0; + dstp = dst; + srcp = src; + dstlim = dst + dstsiz; + if (srcp < msg || srcp >= eom) { + errno = EMSGSIZE; + return (-1); + } + /* Fetch next label in domain name. */ + while ((n = *srcp++) != 0) { + /* Check for indirection. */ + switch (n & NS_CMPRSFLGS) { + case 0: + case NS_TYPE_ELT: + /* Limit checks. */ + if ((l = labellen_vlmcsd(srcp - 1)) < 0) { + errno = EMSGSIZE; + return(-1); + } + if (dstp + l + 1 >= dstlim || srcp + l >= eom) { + errno = EMSGSIZE; + return (-1); + } + checked += l + 1; + *dstp++ = n; + memcpy(dstp, srcp, l); + dstp += l; + srcp += l; + break; + + case NS_CMPRSFLGS: + if (srcp >= eom) { + errno = EMSGSIZE; + return (-1); + } + if (len < 0) + len = srcp - src + 1; + srcp = msg + (((n & 0x3f) << 8) | (*srcp & 0xff)); + if (srcp < msg || srcp >= eom) { /* Out of range. */ + errno = EMSGSIZE; + return (-1); + } + checked += 2; + /* + * Check for loops in the compressed name; + * if we've looked at the whole message, + * there must be a loop. + */ + if (checked >= eom - msg) { + errno = EMSGSIZE; + return (-1); + } + break; + + default: + errno = EMSGSIZE; + return (-1); /* flag error */ + } + } + *dstp = '\0'; + if (len < 0) + len = srcp - src; + return (len); +} + + +/* + * ns_name_uncompress_vlmcsd(msg, eom, src, dst, dstsiz) + * Expand compressed domain name to presentation format. + * return: + * Number of bytes read out of `src', or -1 (with errno set). + * note: + * Root domain returns as "." not "". + */ +int +ns_name_uncompress_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + char *dst, size_t dstsiz) +{ + uint8_t tmp[NS_MAXCDNAME]; + int n; + + if ((n = ns_name_unpack_vlmcsd(msg, eom, src, tmp, sizeof tmp)) == -1) + return (-1); + if (ns_name_ntop_vlmcsd(tmp, dst, dstsiz) == -1) + return (-1); + return (n); +} + +/* + * special(ch) + * Thinking in noninternationalized USASCII (per the DNS spec), + * is this characted special ("in need of quoting") ? + * return: + * boolean. + */ +static int +special_vlmcsd(int ch) { + switch (ch) { + case 0x22: /* '"' */ + case 0x2E: /* '.' */ + case 0x3B: /* ';' */ + case 0x5C: /* '\\' */ + case 0x28: /* '(' */ + case 0x29: /* ')' */ + /* Special modifiers in zone files. */ + case 0x40: /* '@' */ + case 0x24: /* '$' */ + return (1); + default: + return (0); + } +} + +/* + * printable(ch) + * Thinking in noninternationalized USASCII (per the DNS spec), + * is this character visible and not a space when printed ? + * return: + * boolean. + */ +static int +printable_vlmcsd(int ch) { + return (ch > 0x20 && ch < 0x7f); +} + +static int +decode_bitstring_vlmcsd(const char **cpp, char *dn, const char *eom) +{ + const char *cp = *cpp; + char *beg = dn, tc; + int b, blen, plen; + + if ((blen = (*cp & 0xff)) == 0) + blen = 256; + plen = (blen + 3) / 4; + plen += sizeof("\\[x/]") + (blen > 99 ? 3 : (blen > 9) ? 2 : 1); + if (dn + plen >= eom) + return(-1); + + cp++; + dn += SPRINTF((dn, "\\[x")); + for (b = blen; b > 7; b -= 8, cp++) + dn += SPRINTF((dn, "%02x", *cp & 0xff)); + if (b > 4) { + tc = *cp++; + dn += SPRINTF((dn, "%02x", tc & (0xff << (8 - b)))); + } else if (b > 0) { + tc = *cp++; + dn += SPRINTF((dn, "%1x", + ((tc >> 4) & 0x0f) & (0x0f << (4 - b)))); + } + dn += SPRINTF((dn, "/%d]", blen)); + + *cpp = cp; + return(dn - beg); +} + +static int +labellen_vlmcsd(const uint8_t *lp) +{ + int bitlen; + uint8_t l = *lp; + + if ((l & NS_CMPRSFLGS) == NS_CMPRSFLGS) { + /* should be avoided by the caller */ + return(-1); + } + + if ((l & NS_CMPRSFLGS) == NS_TYPE_ELT) { + if (l == DNS_LABELTYPE_BITSTRING) { + if ((bitlen = *(lp + 1)) == 0) + bitlen = 256; + return((bitlen + 7 ) / 8 + 1); + } + return(-1); /* unknwon ELT */ + } + return(l); +} + +#endif // !NO_DNS +#endif // DNS_PARSER_INTERNAL diff --git a/ns_name.h b/ns_name.h new file mode 100644 index 00000000..f9a839a8 --- /dev/null +++ b/ns_name.h @@ -0,0 +1,9 @@ + +#ifndef NS_NAME_H_ +#define NS_NAME_H_ + +int +ns_name_uncompress_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + char *dst, size_t dstsiz); + +#endif /* NS_NAME_H_ */ diff --git a/ns_parse.c b/ns_parse.c new file mode 100644 index 00000000..b0874c1d --- /dev/null +++ b/ns_parse.c @@ -0,0 +1,206 @@ +/* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Modified by Hotbird64 for use with vlmcs. + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef DNS_PARSER_INTERNAL +#ifndef NO_DNS + +/* Import. */ + +#include +#include +#include + +#include "types.h" +#include "endian.h" +#include "ns_name.h" +#include "ns_parse.h" + +/* Macros. */ + +#define NS_GET16_VLMCSD(s, cp) do { \ + (s) = GET_UA16BE(cp); \ + (cp) += NS_INT16SZ; \ +} while (0) + +#define NS_GET32_VLMCSD(l, cp) do { \ + (l) = GET_UA32BE(cp); \ + (cp) += NS_INT32SZ; \ +} while (0) + +#define RETERR(err) do { errno = (err); return (-1); } while (0) + +/* Forward. */ + +static void setsection_vlmcsd(ns_msg_vlmcsd *msg, ns_sect_vlmcsd sect); + + +static int dn_skipname_vlmcsd(const unsigned char *s, const unsigned char *end) +{ + const unsigned char *p; + for (p=s; p=192) + {if (p+1 0; count--) { + int b, rdlength; + + b = dn_skipname_vlmcsd(ptr, eom); + if (b < 0) + RETERR(EMSGSIZE); + ptr += b/*Name*/ + NS_INT16SZ/*Type*/ + NS_INT16SZ/*Class*/; + if (section != ns_s_qd_vlmcsd) { + if (ptr + NS_INT32SZ + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + ptr += NS_INT32SZ/*TTL*/; + NS_GET16_VLMCSD(rdlength, ptr); + ptr += rdlength/*RData*/; + } + } + if (ptr > eom) + RETERR(EMSGSIZE); + return (ptr - optr); +} + +int +ns_initparse_vlmcsd(const uint8_t *msg, int msglen, ns_msg_vlmcsd *handle) { + const uint8_t *eom = msg + msglen; + int i; + + memset(handle, 0x5e, sizeof *handle); + handle->_msg = msg; + handle->_eom = eom; + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_id, msg); + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_flags, msg); + for (i = 0; i < ns_s_max_vlmcsd; i++) { + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_counts[i], msg); + } + for (i = 0; i < ns_s_max_vlmcsd; i++) + if (handle->_counts[i] == 0) + handle->_sections[i] = NULL; + else { + int b = ns_skiprr_vlmcsd(msg, eom, (ns_sect_vlmcsd)i, + handle->_counts[i]); + + if (b < 0) + return (-1); + handle->_sections[i] = msg; + msg += b; + } + if (msg > eom) + RETERR(EMSGSIZE); + handle->_eom = msg; + setsection_vlmcsd(handle, ns_s_max_vlmcsd); + return (0); +} + +int +ns_parserr_vlmcsd(ns_msg_vlmcsd *handle, ns_sect_vlmcsd section, int rrnum, ns_rr_vlmcsd *rr) { + int b; + + /* Make section right. */ + if (section >= ns_s_max_vlmcsd) + RETERR(ENODEV); + if (section != handle->_sect) + setsection_vlmcsd(handle, section); + + /* Make rrnum right. */ + if (rrnum == -1) + rrnum = handle->_rrnum; + if (rrnum < 0 || rrnum >= handle->_counts[(int)section]) + RETERR(ENODEV); + if (rrnum < handle->_rrnum) + setsection_vlmcsd(handle, section); + if (rrnum > handle->_rrnum) { + b = ns_skiprr_vlmcsd(handle->_msg_ptr, handle->_eom, section, + rrnum - handle->_rrnum); + + if (b < 0) + return (-1); + handle->_msg_ptr += b; + handle->_rrnum = rrnum; + } + + /* Do the parse. */ + b = ns_name_uncompress_vlmcsd(handle->_msg, handle->_eom, + handle->_msg_ptr, rr->name, NS_MAXDNAME); + if (b < 0) + return (-1); + handle->_msg_ptr += b; + if (handle->_msg_ptr + NS_INT16SZ + NS_INT16SZ > handle->_eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(rr->type, handle->_msg_ptr); + NS_GET16_VLMCSD(rr->rr_class, handle->_msg_ptr); + if (section == ns_s_qd_vlmcsd) { + rr->ttl = 0; + rr->rdlength = 0; + rr->rdata = NULL; + } else { + if (handle->_msg_ptr + NS_INT32SZ + NS_INT16SZ > handle->_eom) + RETERR(EMSGSIZE); + NS_GET32_VLMCSD(rr->ttl, handle->_msg_ptr); + NS_GET16_VLMCSD(rr->rdlength, handle->_msg_ptr); + if (handle->_msg_ptr + rr->rdlength > handle->_eom) + RETERR(EMSGSIZE); + rr->rdata = handle->_msg_ptr; + handle->_msg_ptr += rr->rdlength; + } + if (++handle->_rrnum > handle->_counts[(int)section]) + setsection_vlmcsd(handle, (ns_sect_vlmcsd)((int)section + 1)); + + /* All done. */ + return (0); +} + +/* Private. */ + +static void +setsection_vlmcsd(ns_msg_vlmcsd *msg, ns_sect_vlmcsd sect) { + msg->_sect = sect; + if (sect == ns_s_max_vlmcsd) { + msg->_rrnum = -1; + msg->_msg_ptr = NULL; + } else { + msg->_rrnum = 0; + msg->_msg_ptr = msg->_sections[(int)sect]; + } +} + +#endif // !NO_DNS +#endif // DNS_PARSER_INTERNAL diff --git a/ns_parse.h b/ns_parse.h new file mode 100644 index 00000000..7bf4b6aa --- /dev/null +++ b/ns_parse.h @@ -0,0 +1,73 @@ + +#ifndef NS_PARSE_H_ +#define NS_PARSE_H_ + +#ifndef NS_INT16SZ +#define NS_INT16SZ (sizeof(uint16_t)) +#endif // NS_INT16SZ + +#ifndef NS_INT32SZ +#define NS_INT32SZ (sizeof(uint32_t)) +#endif // NS_INT32SZ + +#ifndef NS_MAXDNAME +#define NS_MAXDNAME 1025 +#endif + +#define ns_msg_id_vlmcsd(handle) ((handle)._id + 0) +#define ns_msg_base_vlmcsd(handle) ((handle)._msg + 0) +#define ns_msg_end_vlmcsd(handle) ((handle)._eom + 0) +#define ns_msg_size_vlmcsd(handle) ((handle)._eom - (handle)._msg) +#define ns_msg_count_vlmcsd(handle, section) ((handle)._counts[section] + 0) + +#define ns_rr_name_vlmcsd(rr) (((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_type_vlmcsd(rr) ((ns_type)((rr).type + 0)) +#define ns_rr_class_vlmcsd(rr) ((ns_class)((rr).rr_class + 0)) +#define ns_rr_ttl_vlmcsd(rr) ((rr).ttl + 0) +#define ns_rr_rdlen_vlmcsd(rr) ((rr).rdlength + 0) +#define ns_rr_rdata_vlmcsd(rr) ((rr).rdata + 0) + +#define ns_msg_id_vlmcsd(handle) ((handle)._id + 0) +#define ns_msg_base_vlmcsd(handle) ((handle)._msg + 0) +#define ns_msg_end_vlmcsd(handle) ((handle)._eom + 0) +#define ns_msg_size_vlmcsd(handle) ((handle)._eom - (handle)._msg) +#define ns_msg_count_vlmcsd(handle, section) ((handle)._counts[section] + 0) + + +typedef enum __ns_sect_vlmcsd { + ns_s_qd_vlmcsd = 0, /*%< Query: Question. */ + ns_s_zn_vlmcsd = 0, /*%< Update: Zone. */ + ns_s_an_vlmcsd = 1, /*%< Query: Answer. */ + ns_s_pr_vlmcsd = 1, /*%< Update: Prerequisites. */ + ns_s_ns_vlmcsd = 2, /*%< Query: Name servers. */ + ns_s_ud_vlmcsd = 2, /*%< Update: Update. */ + ns_s_ar_vlmcsd = 3, /*%< Query|Update: Additional records. */ + ns_s_max_vlmcsd = 4 +} ns_sect_vlmcsd; + +typedef struct __ns_msg_vlmcsd { + const uint8_t *_msg, *_eom; + uint16_t _id, _flags, _counts[ns_s_max_vlmcsd]; + const uint8_t *_sections[ns_s_max_vlmcsd]; + ns_sect_vlmcsd _sect; + int _rrnum; + const uint8_t *_msg_ptr; +} ns_msg_vlmcsd; + + +typedef struct __ns_rr_vlmcsd { + char name[NS_MAXDNAME]; + uint16_t type; + uint16_t rr_class; + uint32_t ttl; + uint16_t rdlength; + const uint8_t * rdata; +} ns_rr_vlmcsd; + +int ns_initparse_vlmcsd(const uint8_t *msg, int msglen, ns_msg_vlmcsd *handle); + +int ns_parserr_vlmcsd(ns_msg_vlmcsd *handle, ns_sect_vlmcsd section, int rrnum, ns_rr_vlmcsd *rr); + + + +#endif /* NS_PARSE_H_ */ diff --git a/ntservice.c b/ntservice.c new file mode 100644 index 00000000..6eb021ea --- /dev/null +++ b/ntservice.c @@ -0,0 +1,346 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "ntservice.h" +#include "shared_globals.h" +#include "vlmcsd.h" +#include "output.h" +#include "helpers.h" + +#ifdef _NTSERVICE + +SERVICE_STATUS gSvcStatus; +SERVICE_STATUS_HANDLE gSvcStatusHandle; + +static VOID WINAPI ServiceCtrlHandler(const DWORD dwCtrl) +{ + // Handle the requested control code. + + switch(dwCtrl) + { + case SERVICE_CONTROL_STOP: + case SERVICE_CONTROL_SHUTDOWN: + + ServiceShutdown = TRUE; + ReportServiceStatus(SERVICE_STOP_PENDING, NO_ERROR, 0); + + // Remove PID file and free ressources + cleanup(); +# ifdef USE_MSRPC + ReportServiceStatus(SERVICE_STOPPED, NO_ERROR, 0); +# endif // !USE_MSRPC + return; + + /*case SERVICE_CONTROL_INTERROGATE: + break;*/ + + default: + break; + } +} + +static VOID WINAPI ServiceMain(const int argc_unused, CARGV argv_unused) +{ + // Register the handler function for the service + + gSvcStatusHandle = RegisterServiceCtrlHandler( + NT_SERVICE_NAME, + ServiceCtrlHandler + ); + + if(!gSvcStatusHandle) + { + //ServiceReportEvent(RegisterServiceCtrlHandler); + return; + } + + // These SERVICE_STATUS members remain as set here + + gSvcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + gSvcStatus.dwServiceSpecificExitCode = 0; + + // Run the actual program + ReportServiceStatus(SERVICE_STOPPED, newmain(), 3000); +} + +SERVICE_TABLE_ENTRY NTServiceDispatchTable[] = { + { + (LPSTR)NT_SERVICE_NAME, + (LPSERVICE_MAIN_FUNCTION) ServiceMain + }, + { + NULL, + NULL + } +}; + +VOID ReportServiceStatus(const DWORD dwCurrentState, const DWORD dwWin32ExitCode, const DWORD dwWaitHint) +{ + static DWORD dwCheckPoint = 1; + + // Fill in the SERVICE_STATUS structure. + + gSvcStatus.dwCurrentState = dwCurrentState; + gSvcStatus.dwWin32ExitCode = dwWin32ExitCode; + gSvcStatus.dwWaitHint = dwWaitHint; + + if (dwCurrentState == SERVICE_START_PENDING) + gSvcStatus.dwControlsAccepted = 0; + else + gSvcStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; + + if ( (dwCurrentState == SERVICE_RUNNING) || + (dwCurrentState == SERVICE_STOPPED) ) + gSvcStatus.dwCheckPoint = 0; + else + gSvcStatus.dwCheckPoint = dwCheckPoint++; + + // Report the status of the service to the SCM. + SetServiceStatus(gSvcStatusHandle, &gSvcStatus); +} + +/*VOID ServiceReportEvent(char *szFunction) +{ + HANDLE hEventSource; + const char *eventStrings[2]; + TCHAR Buffer[80]; + + hEventSource = RegisterEventSource(NULL, NT_SERVICE_NAME); + + if (hEventSource) + { + snprintf(Buffer, 80, "%s failed with %d", szFunction, GetLastError()); + + eventStrings[0] = NT_SERVICE_NAME; + eventStrings[1] = Buffer; + + ReportEvent(hEventSource, // event log handle + EVENTLOG_ERROR_TYPE, // event type + 0, // event category + 00, // event identifier + NULL, // no security identifier + 2, // size of lpszStrings array + 0, // no binary data + eventStrings, // array of strings + NULL); // no binary data + + DeregisterEventSource(hEventSource); + } +}*/ + +//Returns 0=Error, 1=Success, 2=Doesn't exist + + +static uint_fast8_t OpenAndRemoveService(DWORD *dwPreviousState, SC_HANDLE *schSCManager) +{ + SERVICE_STATUS status; + uint_fast8_t i; + SC_HANDLE installedService; + uint_fast8_t result = 1; + BOOL closeManager = FALSE; + + // Allow NULL for both Arguments + if (!dwPreviousState) dwPreviousState = (DWORD*)alloca(sizeof(*dwPreviousState)); + if (!schSCManager) + { + schSCManager = (SC_HANDLE*)alloca(sizeof(*schSCManager)); + closeManager = TRUE; + } + + *schSCManager = OpenSCManager( + NULL, // local computer + NULL, // ServicesActive database + SC_MANAGER_ALL_ACCESS); // full access rights + + if (!*schSCManager) return 0; + + if (!(installedService = OpenService(*schSCManager, NT_SERVICE_NAME, SERVICE_ALL_ACCESS))) + { + result = 2; + } + else + { + *dwPreviousState = SERVICE_STOPPED; + if (QueryServiceStatus(installedService, &status)) *dwPreviousState = status.dwCurrentState; + + ControlService(installedService, SERVICE_CONTROL_STOP, &status); + + for (i = 0; i < 10; i++) + { + QueryServiceStatus(installedService, &status); + // Give it 100 ms after it reported SERVICE_STOPPED. Subsequent CreateService will fail otherwise + Sleep(100); + if (status.dwCurrentState == SERVICE_STOPPED) break; + } + + if (!DeleteService(installedService)) result = 0; + CloseServiceHandle(installedService); + } + + if (closeManager) CloseServiceHandle(*schSCManager); + return result; +} + +static VOID ServiceInstaller(const char *restrict ServiceUser, const char *const ServicePassword) +{ + SC_HANDLE schSCManager; + SC_HANDLE schService; + char szPath[MAX_PATH] = "\""; + + if (!GetModuleFileName(NULL, szPath + sizeof(char), MAX_PATH - 1)) + { + errorout("Cannot install service (%d)\n", (uint32_t)GetLastError()); + return; + } + + strcat(szPath,"\""); + + int i; + for (i = 1; i < global_argc; i ++) + { + // Strip unneccessary parameters, especially the password + if (!strcmp(global_argv[i], "-s")) continue; + + if (!strcmp(global_argv[i], "-W") || + !strcmp(global_argv[i], "-U")) + { + i++; + continue; + } + + strcat(szPath, " "); + + if (strchr(global_argv[i], ' ')) + { + strcat(szPath, "\""); + strcat(szPath, global_argv[i]); + strcat(szPath, "\""); + } + else + strcat(szPath, global_argv[i]); + } + + // Get a handle to the SCM database. + + SERVICE_STATUS status; + DWORD dwPreviousState; + + if (!OpenAndRemoveService(&dwPreviousState, &schSCManager)) + { + errorout("Service removal failed (%d)\n", (uint32_t)GetLastError()); + return; + } + + char *tempUser = NULL; + + if (ServiceUser) + { + // Shortcuts for some well known users + if (!strcasecmp(ServiceUser, "/l")) ServiceUser="NT AUTHORITY\\LocalService"; + if (!strcasecmp(ServiceUser, "/n")) ServiceUser="NT AUTHORITY\\NetworkService"; + + // Allow Local Users without .\ , e.g. "johndoe" instead of ".\johndoe" + if (!strchr(ServiceUser, '\\')) + { + tempUser = (char*)vlmcsd_malloc(strlen(ServiceUser) + 3); + strcpy(tempUser, ".\\"); + strcat(tempUser, ServiceUser); + ServiceUser = tempUser; + } + } + + schService = CreateService( + schSCManager, // SCM database + NT_SERVICE_NAME, // name of service + NT_SERVICE_DISPLAY_NAME, // service name to display + SERVICE_ALL_ACCESS, // desired access + SERVICE_WIN32_OWN_PROCESS, // service type + SERVICE_AUTO_START, // start type + SERVICE_ERROR_NORMAL, // error control type + szPath, // path to service's binary + NULL, // no load ordering group + NULL, // no tag identifier + "tcpip\0", // depends on TCP/IP + ServiceUser, // LocalSystem account + ServicePassword); // no password + +# if __clang__ && (__CYGWIN__ || __MINGW64__ ) + // Workaround for clang not understanding some GCC asm syntax used in + ZeroMemory((char*)ServicePassword, strlen(ServicePassword)); +# else + SecureZeroMemory((char*)ServicePassword, strlen(ServicePassword)); +# endif + if (tempUser) free(tempUser); + + if (schService == NULL) + { + errorout("CreateService failed (%u)\n", (uint32_t)GetLastError()); + CloseServiceHandle(schSCManager); + return; + } + else + { + errorout("Service installed successfully\n"); + + if (dwPreviousState == SERVICE_RUNNING) + { + printf("Restarting " NT_SERVICE_NAME " service => "); + status.dwCurrentState = SERVICE_STOPPED; + + if (StartService(schService, 0, NULL)) + { + for (i = 0; i < 10; i++) + { + if (!QueryServiceStatus(schService, &status) || status.dwCurrentState != SERVICE_START_PENDING) break; + Sleep(100); + } + + if (status.dwCurrentState == SERVICE_RUNNING) + printf("Success\n"); + else if (status.dwCurrentState == SERVICE_START_PENDING) + printf("Not ready within a second\n"); + else + errorout("Error\n"); + } + else + errorout("Error %u\n", (uint32_t)GetLastError()); + } + } + + CloseServiceHandle(schService); + CloseServiceHandle(schSCManager); +} + +int NtServiceInstallation(const int_fast8_t installService, const char *restrict ServiceUser, const char *const ServicePassword) +{ + if (IsNTService) return 0; + + if (installService == 1) // Install + { + ServiceInstaller(ServiceUser, ServicePassword); + return(0); + } + + if (installService == 2) // Remove + { + switch(OpenAndRemoveService(NULL, NULL)) + { + case 0: + errorout("Error removing service %s\n", NT_SERVICE_NAME); + return(!0); + case 1: + printf("Service %s removed successfully\n", NT_SERVICE_NAME); + return(0); + default: + errorout("Service %s does not exist.\n", NT_SERVICE_NAME); + return(!0); + } + } + + // Do nothing + + return(0); +} +#endif // _NTSERVICE diff --git a/ntservice.h b/ntservice.h new file mode 100644 index 00000000..d3cac753 --- /dev/null +++ b/ntservice.h @@ -0,0 +1,28 @@ +#ifndef INCLUDED_NTSERVICE_H +#define INCLUDED_NTSERVICE_H + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "types.h" +#ifdef _NTSERVICE + +//#include + +#define NT_SERVICE_NAME "vlmcsd" +#define NT_SERVICE_DISPLAY_NAME "Key Management Server" + +extern SERVICE_TABLE_ENTRY NTServiceDispatchTable[]; + +VOID ReportServiceStatus(const DWORD, const DWORD, const DWORD); +int NtServiceInstallation(const int_fast8_t installService, const char *restrict ServiceUser, const char *const ServicePassword); + +#else // !_NTSERVICE + +#define ReportServiceStatus(x,y,z) + +#endif // _NTSERVICE + +#endif // INCLUDED_NTSERVICE_H diff --git a/output.c b/output.c new file mode 100644 index 00000000..22599ed0 --- /dev/null +++ b/output.c @@ -0,0 +1,240 @@ +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "output.h" +#include "shared_globals.h" +#include "endian.h" +#include "helpers.h" + +#ifndef NO_LOG +static void vlogger(const char *message, va_list args) +{ + FILE *log; + + #ifdef _NTSERVICE + if (!IsNTService && logstdout) log = stdout; + #else + if (logstdout) log = stdout; + #endif + else + { + if (fn_log == NULL) return; + + #ifndef _WIN32 + if (!strcmp(fn_log, "syslog")) + { + openlog("vlmcsd", LOG_CONS | LOG_PID, LOG_USER); + + ////PORTABILITY: vsyslog is not in Posix but virtually all Unixes have it + vsyslog(LOG_INFO, message, args); + + closelog(); + return; + } + #endif // _WIN32 + + log = fopen(fn_log, "a"); + if ( !log ) return; + } + + time_t now = time(0); + + #ifdef USE_THREADS + char mbstr[2048]; + #else + char mbstr[24]; + #endif + + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", localtime(&now)); + + #ifndef USE_THREADS + + fprintf(log, "%s: ", mbstr); + vfprintf(log, message, args); + fflush(log); + + #else // USE_THREADS + + // We write everything to a string before we really log inside the critical section + // so formatting the output can be concurrent + strcat(mbstr, ": "); + int len = strlen(mbstr); + vsnprintf(mbstr + len, sizeof(mbstr) - len, message, args); + + lock_mutex(&logmutex); + fputs(mbstr, log); + fflush(log); + unlock_mutex(&logmutex); + + #endif // USE_THREADS + if (log != stdout) fclose(log); +} + + +// Always sends to log output +int logger(const char *const fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vlogger(fmt, args); + va_end(args); + return 0; +} + +#endif //NO_LOG + + +// Output to stderr if it is available or to log otherwise (e.g. if running as daemon/service) +void printerrorf(const char *const fmt, ...) +{ + va_list arglist; + + va_start(arglist, fmt); + + #ifndef NO_LOG + #ifdef _NTSERVICE + if (InetdMode || IsNTService) + #else // !_NTSERVICE + if (InetdMode) + #endif // NTSERVIICE + vlogger(fmt, arglist); + else + #endif //NO_LOG + { + vfprintf(stderr, fmt, arglist); + fflush(stderr); + } + + va_end(arglist); +} + + +// Always output to stderr +int errorout(const char* fmt, ...) +{ + va_list args; + + va_start(args, fmt); + int i = vfprintf(stderr, fmt, args); + va_end(args); + fflush(stderr); + + return i; +} + + +static const char *LicenseStatusText[] = +{ + "Unlicensed", "Licensed", "OOB grace", "OOT grace", "Non-Genuine", "Notification", "Extended grace" +}; + + +void uuid2StringLE(const GUID *const guid, char *const string) +{ + sprintf(string, + #ifdef _WIN32 + "%08x-%04x-%04x-%04x-%012I64x", + #else + "%08x-%04x-%04x-%04x-%012llx", + #endif + (unsigned int)LE32( guid->Data1 ), + (unsigned int)LE16( guid->Data2 ), + (unsigned int)LE16( guid->Data3 ), + (unsigned int)BE16( *(uint16_t*)guid->Data4 ), + (unsigned long long)BE64(*(uint64_t*)(guid->Data4)) & 0xffffffffffffLL + ); +} + + +void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + char WorkstationBuffer[3 * WORKSTATION_NAME_BUFFER]; + const char *productName; + ProdListIndex_t index; + + p("Protocol version : %u.%u\n", LE16(Request->MajorVer), LE16(Request->MinorVer)); + p("Client is a virtual machine : %s\n", LE32(Request->VMInfo) ? "Yes" : "No"); + p("Licensing status : %u (%s)\n", (uint32_t)LE32(Request->LicenseStatus), LE32(Request->LicenseStatus) < _countof(LicenseStatusText) ? LicenseStatusText[LE32(Request->LicenseStatus)] : "Unknown"); + p("Remaining time (0 = forever) : %i minutes\n", (uint32_t)LE32(Request->BindingExpiration)); + + uuid2StringLE(&Request->AppID, guidBuffer); + productName = getProductNameLE(&Request->AppID, AppList, &index); + p("Application ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->ActID, guidBuffer); + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&Request->ActID, ExtendedProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Activation ID (Product) : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->KMSID, guidBuffer); + + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&Request->KMSID, ProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Key Management Service ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + uuid2StringLE(&Request->CMID_prev, guidBuffer); + p("Previous client machine ID : %s\n", guidBuffer); + + + char mbstr[64]; + time_t st; + st = fileTimeToUnixTime(&Request->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + ucs2_to_utf8(Request->WorkstationName, WorkstationBuffer, WORKSTATION_NAME_BUFFER, sizeof(WorkstationBuffer)); + + p("Workstation name : %s\n", WorkstationBuffer); + p("N count policy (minimum clients): %u\n", (uint32_t)LE32(Request->N_Policy)); +} + + +void logResponseVerbose(const char *const ePID, const BYTE *const hwid, const RESPONSE *const response, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + //SYSTEMTIME st; + + p("Protocol version : %u.%u\n", (uint32_t)LE16(response->MajorVer), (uint32_t)LE16(response->MinorVer)); + p("KMS host extended PID : %s\n", ePID); + if (LE16(response->MajorVer) > 5) +# ifndef _WIN32 + p("KMS host Hardware ID : %016llX\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + p("KMS host Hardware ID : %016I64X\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // WIN32 + + uuid2StringLE(&response->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + char mbstr[64]; + time_t st; + + st = fileTimeToUnixTime(&response->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + p("KMS host current active clients : %u\n", (uint32_t)LE32(response->Count)); + p("Renewal interval policy : %u\n", (uint32_t)LE32(response->VLRenewalInterval)); + p("Activation interval policy : %u\n", (uint32_t)LE32(response->VLActivationInterval)); +} + diff --git a/output.h b/output.h new file mode 100644 index 00000000..77b37836 --- /dev/null +++ b/output.h @@ -0,0 +1,27 @@ +#ifndef INCLUDED_OUTPUT_H +#define INCLUDED_OUTPUT_H + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "kms.h" + +typedef int (*PRINTFUNC)(const char *const fmt, ...); + +void printerrorf(const char *const fmt, ...); +int errorout(const char* fmt, ...); +void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p); +void logResponseVerbose(const char *const ePID, const BYTE *const hwid, const RESPONSE *const response, const PRINTFUNC p); + +#ifndef NO_LOG +int logger(const char *const fmt, ...); +#endif //NO_LOG + +void uuid2StringLE(const GUID *const guid, char *const string); + +//void copy_arguments(int argc, char **argv, char ***new_argv); +//void destroy_arguments(int argc, char **argv); + +#endif // INCLUDED_OUTPUT_H diff --git a/resolv.h b/resolv.h new file mode 100644 index 00000000..3231106d --- /dev/null +++ b/resolv.h @@ -0,0 +1,499 @@ +/* $NetBSD: resolv.h,v 1.31 2005/12/26 19:01:47 perry Exp $ */ + +/* + * Copyright (c) 1983, 1987, 1989 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (c) 1996-1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * @(#)resolv.h 8.1 (Berkeley) 6/2/93 + * Id: resolv.h,v 1.7.2.11.4.2 2004/06/25 00:41:05 marka Exp + */ + +#ifndef _RESOLV_PRIVATE_H_ +#define _RESOLV_PRIVATE_H_ + +#include +#include "resolv_static.h" + +/* + * Revision information. This is the release date in YYYYMMDD format. + * It can change every day so the right thing to do with it is use it + * in preprocessor commands such as "#if (__RES > 19931104)". Do not + * compare for equality; rather, use it to determine whether your resolver + * is new enough to contain a certain feature. + */ + +#define __RES 20030124 + +/* + * This used to be defined in res_query.c, now it's in herror.c. + * [XXX no it's not. It's in irs/irs_data.c] + * It was + * never extern'd by any *.h file before it was placed here. For thread + * aware programs, the last h_errno value set is stored in res->h_errno. + * + * XXX: There doesn't seem to be a good reason for exposing RES_SET_H_ERRNO + * (and __h_errno_set) to the public via . + * XXX: __h_errno_set is really part of IRS, not part of the resolver. + * If somebody wants to build and use a resolver that doesn't use IRS, + * what do they do? Perhaps something like + * #ifdef WANT_IRS + * # define RES_SET_H_ERRNO(r,x) __h_errno_set(r,x) + * #else + * # define RES_SET_H_ERRNO(r,x) (h_errno = (r)->res_h_errno = (x)) + * #endif + */ + +#define RES_SET_H_ERRNO(r,x) (h_errno = (r)->res_h_errno = (x)) +struct __res_state; /* forward */ + +/* + * Resolver configuration file. + * Normally not present, but may contain the address of the + * initial name server(s) to query and the domain search list. + */ + +#ifndef _PATH_RESCONF +#ifdef ANDROID_CHANGES +#define _PATH_RESCONF "/etc/ppp/resolv.conf" +#else +#define _PATH_RESCONF "/etc/resolv.conf" +#endif +#endif + +typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error } + res_sendhookact; + +typedef res_sendhookact (*res_send_qhook)(struct sockaddr * const *, + const u_char **, int *, + u_char *, int, int *); + +typedef res_sendhookact (*res_send_rhook)(const struct sockaddr *, + const u_char *, int, u_char *, + int, int *); + +struct res_sym { + int number; /* Identifying number, like T_MX */ + const char * name; /* Its symbolic name, like "MX" */ + const char * humanname; /* Its fun name, like "mail exchanger" */ +}; + +/* + * Global defines and variables for resolver stub. + */ +#define MAXNS 3 /* max # name servers we'll track */ +#define MAXDFLSRCH 3 /* # default domain levels to try */ +#define MAXDNSRCH 6 /* max # domains in search path */ +#define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */ + +#define RES_TIMEOUT 5 /* min. seconds between retries */ +#define MAXRESOLVSORT 10 /* number of net to sort on */ +#define RES_MAXNDOTS 15 /* should reflect bit field size */ +#define RES_MAXRETRANS 30 /* only for resolv.conf/RES_OPTIONS */ +#define RES_MAXRETRY 5 /* only for resolv.conf/RES_OPTIONS */ +#define RES_DFLRETRY 2 /* Default #/tries. */ +#define RES_MAXTIME 65535 /* Infinity, in milliseconds. */ + +struct __res_state_ext; + +struct __res_state { + int retrans; /* retransmission time interval */ + int retry; /* number of times to retransmit */ +#ifdef sun + u_int options; /* option flags - see below. */ +#else + u_long options; /* option flags - see below. */ +#endif + int nscount; /* number of name servers */ + struct sockaddr_in + nsaddr_list[MAXNS]; /* address of name server */ +#define nsaddr nsaddr_list[0] /* for backward compatibility */ + u_short id; /* current message id */ + char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ + char defdname[256]; /* default domain (deprecated) */ +#ifdef sun + u_int pfcode; /* RES_PRF_ flags - see below. */ +#else + u_long pfcode; /* RES_PRF_ flags - see below. */ +#endif + unsigned ndots:4; /* threshold for initial abs. query */ + unsigned nsort:4; /* number of elements in sort_list[] */ + char unused[3]; + struct { + struct in_addr addr; + uint32_t mask; + } sort_list[MAXRESOLVSORT]; +#ifdef __OLD_RES_STATE + char lookups[4]; +#else + res_send_qhook qhook; /* query hook */ + res_send_rhook rhook; /* response hook */ + int res_h_errno; /* last one set for this context */ + int _vcsock; /* PRIVATE: for res_send VC i/o */ + u_int _flags; /* PRIVATE: see below */ + u_int _pad; /* make _u 64 bit aligned */ + union { + /* On an 32-bit arch this means 512b total. */ + char pad[72 - 4*sizeof (int) - 2*sizeof (void *)]; + struct { + uint16_t nscount; + uint16_t nstimes[MAXNS]; /* ms. */ + int nssocks[MAXNS]; + struct __res_state_ext *ext; /* extention for IPv6 */ + } _ext; + } _u; +#endif + struct res_static rstatic[1]; +}; + +typedef struct __res_state *res_state; + +union res_sockaddr_union { + struct sockaddr_in sin; +#ifdef IN6ADDR_ANY_INIT + struct sockaddr_in6 sin6; +#endif +#ifdef ISC_ALIGN64 + int64_t __align64; /* 64bit alignment */ +#else + int32_t __align32; /* 32bit alignment */ +#endif + char __space[128]; /* max size */ +}; + +/* + * Resolver flags (used to be discrete per-module statics ints). + */ +#define RES_F_VC 0x00000001 /* socket is TCP */ +#define RES_F_CONN 0x00000002 /* socket is connected */ +#define RES_F_EDNS0ERR 0x00000004 /* EDNS0 caused errors */ +#define RES_F__UNUSED 0x00000008 /* (unused) */ +#define RES_F_LASTMASK 0x000000F0 /* ordinal server of last res_nsend */ +#define RES_F_LASTSHIFT 4 /* bit position of LASTMASK "flag" */ +#define RES_GETLAST(res) (((res)._flags & RES_F_LASTMASK) >> RES_F_LASTSHIFT) + +/* res_findzonecut2() options */ +#define RES_EXHAUSTIVE 0x00000001 /* always do all queries */ +#define RES_IPV4ONLY 0x00000002 /* IPv4 only */ +#define RES_IPV6ONLY 0x00000004 /* IPv6 only */ + +/* + * Resolver options (keep these in synch with res_debug.c, please) + */ +#define RES_INIT 0x00000001 /* address initialized */ +#define RES_DEBUG 0x00000002 /* print debug messages */ +#define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/ +#define RES_USEVC 0x00000008 /* use virtual circuit */ +#define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */ +#define RES_IGNTC 0x00000020 /* ignore trucation errors */ +#define RES_RECURSE 0x00000040 /* recursion desired */ +#define RES_DEFNAMES 0x00000080 /* use default domain name */ +#define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */ +#define RES_DNSRCH 0x00000200 /* search up local domain tree */ +#define RES_INSECURE1 0x00000400 /* type 1 security disabled */ +#define RES_INSECURE2 0x00000800 /* type 2 security disabled */ +#define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ +#define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ +#define RES_ROTATE 0x00004000 /* rotate ns list after each query */ +#define RES_NOCHECKNAME 0x00008000 /* do not check names for sanity. */ +#define RES_KEEPTSIG 0x00010000 /* do not strip TSIG records */ +#define RES_BLAST 0x00020000 /* blast all recursive servers */ +#define RES_NOTLDQUERY 0x00100000 /* don't unqualified name as a tld */ +#define RES_USE_DNSSEC 0x00200000 /* use DNSSEC using OK bit in OPT */ +/* #define RES_DEBUG2 0x00400000 */ /* nslookup internal */ +/* KAME extensions: use higher bit to avoid conflict with ISC use */ +#define RES_USE_DNAME 0x10000000 /* use DNAME */ +#define RES_USE_EDNS0 0x40000000 /* use EDNS0 if configured */ +#define RES_NO_NIBBLE2 0x80000000 /* disable alternate nibble lookup */ + +#define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | \ + RES_DNSRCH | RES_NO_NIBBLE2) + +/* + * Resolver "pfcode" values. Used by dig. + */ +#define RES_PRF_STATS 0x00000001 +#define RES_PRF_UPDATE 0x00000002 +#define RES_PRF_CLASS 0x00000004 +#define RES_PRF_CMD 0x00000008 +#define RES_PRF_QUES 0x00000010 +#define RES_PRF_ANS 0x00000020 +#define RES_PRF_AUTH 0x00000040 +#define RES_PRF_ADD 0x00000080 +#define RES_PRF_HEAD1 0x00000100 +#define RES_PRF_HEAD2 0x00000200 +#define RES_PRF_TTLID 0x00000400 +#define RES_PRF_HEADX 0x00000800 +#define RES_PRF_QUERY 0x00001000 +#define RES_PRF_REPLY 0x00002000 +#define RES_PRF_INIT 0x00004000 +#define RES_PRF_TRUNC 0x00008000 +/* 0x00010000 */ + +/* Things involving an internal (static) resolver context. */ +__BEGIN_DECLS +extern struct __res_state *__res_get_state(void); +extern void __res_put_state(struct __res_state *); + +#ifndef ANDROID_CHANGES +/* + * Source and Binary compatibility; _res will not work properly + * with multi-threaded programs. + */ +extern struct __res_state *__res_state(void); +#define _res (*__res_state()) +#endif + +__END_DECLS + +#ifndef __BIND_NOSTATIC +#define fp_nquery __fp_nquery +#define fp_query __fp_query +#define hostalias __hostalias +#define p_query __p_query +#define res_close __res_close +#define res_opt __res_opt +#define res_isourserver __res_isourserver +#define res_querydomain __res_querydomain +#define res_send __res_send +#define res_sendsigned __res_sendsigned + +#ifdef BIND_RES_POSIX3 +#define dn_expand __dn_expand +#define res_init __res_init +#define res_query __res_query +#define res_search __res_search +#define res_mkquery __res_mkquery +#endif + +__BEGIN_DECLS +void fp_nquery(const u_char *, int, FILE *); +void fp_query(const u_char *, FILE *); +const char * hostalias(const char *); +void p_query(const u_char *); +void res_close(void); +int res_init(void); +int res_opt(int, u_char *, int, int); +int res_isourserver(const struct sockaddr_in *); +int res_mkquery(int, const char *, int, int, const u_char *, int, const u_char *, u_char *, int); +int res_query(const char *, int, int, u_char *, int); +int res_querydomain(const char *, const char *, int, int, u_char *, int); +int res_search(const char *, int, int, u_char *, int); +int res_send(const u_char *, int, u_char *, int); +int res_sendsigned(const u_char *, int, ns_tsig_key *, u_char *, int); +__END_DECLS +#endif + +#if !defined(SHARED_LIBBIND) || defined(LIB) +/* + * If libbind is a shared object (well, DLL anyway) + * these externs break the linker when resolv.h is + * included by a lib client (like named) + * Make them go away if a client is including this + * + */ +extern const struct res_sym __p_key_syms[]; +extern const struct res_sym __p_cert_syms[]; +extern const struct res_sym __p_class_syms[]; +extern const struct res_sym __p_type_syms[]; +extern const struct res_sym __p_rcode_syms[]; +#endif /* SHARED_LIBBIND */ + +#ifndef ADNROID_CHANGES +#define b64_ntop __b64_ntop +#define b64_pton __b64_pton +#endif + +#define dn_comp __dn_comp +#define dn_count_labels __dn_count_labels +#define dn_skipname __dn_skipname +#define fp_resstat __fp_resstat +#define loc_aton __loc_aton +#define loc_ntoa __loc_ntoa +#define p_cdname __p_cdname +#define p_cdnname __p_cdnname +#define p_class __p_class +#define p_fqname __p_fqname +#define p_fqnname __p_fqnname +#define p_option __p_option +#define p_secstodate __p_secstodate +#define p_section __p_section +#define p_time __p_time +#define p_type __p_type +#define p_rcode __p_rcode +#define p_sockun __p_sockun +#define putlong __putlong +#define putshort __putshort +#define res_dnok __res_dnok +#define res_findzonecut __res_findzonecut +#define res_findzonecut2 __res_findzonecut2 +#define res_hnok __res_hnok +#define res_hostalias __res_hostalias +#define res_mailok __res_mailok +#define res_nameinquery __res_nameinquery +#define res_nclose __res_nclose +#define res_ninit __res_ninit +#define res_nmkquery __res_nmkquery +#define res_pquery __res_pquery +#define res_nquery __res_nquery +#define res_nquerydomain __res_nquerydomain +#define res_nsearch __res_nsearch +#define res_nsend __res_nsend +#define res_nsendsigned __res_nsendsigned +#define res_nisourserver __res_nisourserver +#define res_ownok __res_ownok +#define res_queriesmatch __res_queriesmatch +#define res_randomid __res_randomid +#define sym_ntop __sym_ntop +#define sym_ntos __sym_ntos +#define sym_ston __sym_ston +#define res_nopt __res_nopt +#define res_ndestroy __res_ndestroy +#define res_nametoclass __res_nametoclass +#define res_nametotype __res_nametotype +#define res_setservers __res_setservers +#define res_getservers __res_getservers +#define res_buildprotolist __res_buildprotolist +#define res_destroyprotolist __res_destroyprotolist +#define res_destroyservicelist __res_destroyservicelist +#define res_get_nibblesuffix __res_get_nibblesuffix +#define res_get_nibblesuffix2 __res_get_nibblesuffix2 +#define res_ourserver_p __res_ourserver_p +#define res_protocolname __res_protocolname +#define res_protocolnumber __res_protocolnumber +#define res_send_setqhook __res_send_setqhook +#define res_send_setrhook __res_send_setrhook +#define res_servicename __res_servicename +#define res_servicenumber __res_servicenumber +__BEGIN_DECLS +int res_hnok(const char *); +int res_ownok(const char *); +int res_mailok(const char *); +int res_dnok(const char *); +int sym_ston(const struct res_sym *, const char *, int *); +const char * sym_ntos(const struct res_sym *, int, int *); +const char * sym_ntop(const struct res_sym *, int, int *); +#ifndef ANDROID_CHANGES +int b64_ntop(u_char const *, size_t, char *, size_t); +int b64_pton(char const *, u_char *, size_t); +#endif +int loc_aton(const char *, u_char *); +const char * loc_ntoa(const u_char *, char *); +int dn_skipname(const u_char *, const u_char *); +void putlong(uint32_t, u_char *); +void putshort(uint16_t, u_char *); +#ifndef __ultrix__ +uint16_t _getshort(const u_char *); +uint32_t _getlong(const u_char *); +#endif +const char * p_class(int); +const char * p_time(uint32_t); +const char * p_type(int); +const char * p_rcode(int); +const char * p_sockun(union res_sockaddr_union, char *, size_t); +const u_char * p_cdnname(const u_char *, const u_char *, int, FILE *); +const u_char * p_cdname(const u_char *, const u_char *, FILE *); +const u_char * p_fqnname(const u_char *, const u_char *, + int, char *, int); +const u_char * p_fqname(const u_char *, const u_char *, FILE *); +const char * p_option(u_long); +char * p_secstodate(u_long); +int dn_count_labels(const char *); +int dn_comp(const char *, u_char *, int, u_char **, u_char **); +int dn_expand(const u_char *, const u_char *, const u_char *, + char *, int); +u_int res_randomid(void); +int res_nameinquery(const char *, int, int, const u_char *, + const u_char *); +int res_queriesmatch(const u_char *, const u_char *, + const u_char *, const u_char *); +const char * p_section(int, int); +/* Things involving a resolver context. */ +int res_ninit(res_state); +int res_nisourserver(const res_state, const struct sockaddr_in *); +void fp_resstat(const res_state, FILE *); +void res_pquery(const res_state, const u_char *, int, FILE *); +const char * res_hostalias(const res_state, const char *, char *, size_t); +int res_nquery(res_state, const char *, int, int, u_char *, int); +int res_nsearch(res_state, const char *, int, int, u_char *, int); +int res_nquerydomain(res_state, const char *, const char *, + int, int, u_char *, int); +int res_nmkquery(res_state, int, const char *, int, int, + const u_char *, int, const u_char *, + u_char *, int); +int res_nsend(res_state, const u_char *, int, u_char *, int); +int res_nsendsigned(res_state, const u_char *, int, + ns_tsig_key *, u_char *, int); +int res_findzonecut(res_state, const char *, ns_class, int, + char *, size_t, struct in_addr *, int); +int res_findzonecut2(res_state, const char *, ns_class, int, + char *, size_t, + union res_sockaddr_union *, int); +void res_nclose(res_state); +int res_nopt(res_state, int, u_char *, int, int); +void res_send_setqhook(res_send_qhook); +void res_send_setrhook(res_send_rhook); +int __res_vinit(res_state, int); +void res_destroyservicelist(void); +const char * res_servicename(uint16_t, const char *); +const char * res_protocolname(int); +void res_destroyprotolist(void); +void res_buildprotolist(void); +const char * res_get_nibblesuffix(res_state); +const char * res_get_nibblesuffix2(res_state); +void res_ndestroy(res_state); +uint16_t res_nametoclass(const char *, int *); +uint16_t res_nametotype(const char *, int *); +void res_setservers(res_state, + const union res_sockaddr_union *, int); +int res_getservers(res_state, + union res_sockaddr_union *, int); + +int res_get_dns_changed(); +u_int res_randomid(void); + +__END_DECLS + +#endif /* !_RESOLV_PRIVATE_H_ */ diff --git a/resolv_static.h b/resolv_static.h new file mode 100644 index 00000000..481c954c --- /dev/null +++ b/resolv_static.h @@ -0,0 +1,32 @@ +#ifndef _RESOLV_STATIC_H +#define _RESOLV_STATIC_H + +#include + +/* this structure contains all the variables that were declared + * 'static' in the original NetBSD resolver code. + * + * this caused vast amounts of crashes and memory corruptions + * when the resolver was being used by multiple threads. + * + * (note: the OpenBSD/FreeBSD resolver has similar 'issues') + */ + +#define MAXALIASES 35 +#define MAXADDRS 35 + +typedef struct res_static { + char* h_addr_ptrs[MAXADDRS + 1]; + char* host_aliases[MAXALIASES]; + char hostbuf[8*1024]; + u_int32_t host_addr[16 / sizeof(u_int32_t)]; /* IPv4 or IPv6 */ + FILE* hostf; + int stayopen; + const char* servent_ptr; + struct servent servent; + struct hostent host; +} *res_static; + +extern res_static __res_get_static(void); + +#endif /* _RESOLV_STATIC_H */ diff --git a/rpc.c b/rpc.c new file mode 100644 index 00000000..0ac8ef0c --- /dev/null +++ b/rpc.c @@ -0,0 +1,1113 @@ +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#include +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include "rpc.h" +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "helpers.h" +#include "network.h" +#include "shared_globals.h" + +/* Forwards */ + +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p); + + +/* Data definitions */ + +// All GUIDs are defined as BYTE[16] here. No big-endian/little-endian byteswapping required. +static const BYTE TransferSyntaxNDR32[] = { + 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11, 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60 +}; + +static const BYTE InterfaceUuid[] = { + 0x75, 0x21, 0xc8, 0x51, 0x4e, 0x84, 0x50, 0x47, 0xB0, 0xD8, 0xEC, 0x25, 0x55, 0x55, 0xBC, 0x06 +}; + +static const BYTE TransferSyntaxNDR64[] = { + 0x33, 0x05, 0x71, 0x71, 0xba, 0xbe, 0x37, 0x49, 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36 +}; + +static const BYTE BindTimeFeatureNegotiation[] = { + 0x2c, 0x1c, 0xb7, 0x6c, 0x12, 0x98, 0x40, 0x45, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +// +// Dispatch RPC payload to kms.c +// +typedef int (*CreateResponse_t)(const void *const, void *const, const char* const); + +static const struct { + unsigned int RequestSize; + CreateResponse_t CreateResponse; +} _Versions[] = { + { sizeof(REQUEST_V4), (CreateResponse_t) CreateResponseV4 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 } +}; + +RPC_FLAGS RpcFlags; +static int_fast8_t firstPacketSent; + +// +// RPC request (server) +// +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcRequest(const RPC_REQUEST64 *const Request, const unsigned int len, WORD* NdrCtx, WORD* Ndr64Ctx, WORD Ctx) +{ + uint_fast8_t kmsMajorVersion; + uint32_t requestSize = Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64); + + if (len < requestSize) + { + logger("Fatal: RPC request (including header) must be at least %i bytes but is only %i bytes.\n", + (int)(sizeof(RPC_HEADER) + requestSize), + (int)(len + sizeof(RPC_HEADER)) + ); + + return; + } + + if (len < requestSize + sizeof(DWORD)) + { + logger("Fatal: KMS Request too small to contain version info (less than 4 bytes).\n"); + return; + } + + if (Ctx != *Ndr64Ctx) + kmsMajorVersion = LE16(((WORD*)Request->Ndr.Data)[1]); + else + kmsMajorVersion = LE16(((WORD*)Request->Ndr64.Data)[1]); + + if (kmsMajorVersion > 6) + { + logger("Fatal: KMSv%u is not supported.\n", (unsigned int)kmsMajorVersion); + } + else + { + if (len >_Versions[kmsMajorVersion].RequestSize + requestSize) + logger("Warning: %u excess bytes in RPC request.\n", + len - _Versions[kmsMajorVersion].RequestSize + ); + } + + if (Ctx != *Ndr64Ctx && Ctx != *NdrCtx) + logger("Warning: Context id should be %u (NDR32) or %u (NDR64) but is %u.\n", + (unsigned int)*NdrCtx, + (unsigned int)*Ndr64Ctx, + Ctx + ); + + if (Request->Opnum) + logger("Warning: OpNum should be 0 but is %u.\n", + (unsigned int)LE16(Request->Opnum) + ); + + if (LE32(Request->AllocHint) != len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr)) + logger("Warning: Allocation hint should be %u but is %u.\n", + len + sizeof(Request->Ndr), + LE32(Request->AllocHint) + ); + + if (Ctx != *Ndr64Ctx) + { + if (LE32(Request->Ndr.DataLength) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataLength) + ); + + if (LE32(Request->Ndr.DataSizeIs) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataSizeIs) + ); + } + else + { + if (LE64(Request->Ndr64.DataLength) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr), + LE64(Request->Ndr64.DataLength) + ); + + if (LE64(Request->Ndr64.DataSizeIs) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST64), + LE64(Request->Ndr64.DataSizeIs) + ); + } +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + +/* + * check RPC request for (somewhat) correct size + * allow any size that does not cause CreateResponse to fail badly + */ +static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + WORD Ctx = LE16(Request->ContextId); + +# if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcRequest(Request, requestSize, NdrCtx, Ndr64Ctx, Ctx); +# endif // defined(_PEDANTIC) && !defined(NO_LOG) + + // Anything that is smaller than a v4 request is illegal + if (requestSize < sizeof(REQUEST_V4) + (Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64))) return 0; + + // Get KMS major version + uint_fast16_t _v; + + if (Ctx != *Ndr64Ctx) + _v = LE16(((WORD*)Request->Ndr.Data)[1]) - 4; + else + _v = LE16(((WORD*)Request->Ndr64.Data)[1]) - 4; + + // Only KMS v4, v5 and v6 are supported + if (_v >= vlmcsd_countof(_Versions)) + { +# ifndef NO_LOG + logger("Fatal: KMSv%i unsupported\n", _v + 4); +# endif // NO_LOG + return 0; + } + + // Could check for equality but allow bigger requests to support buggy RPC clients (e.g. wine) + // Buffer overrun is check by caller. + return (requestSize >= _Versions[_v].RequestSize); +} + + +/* + * Handles the actual KMS request from the client. + * Calls KMS functions (CreateResponseV4 or CreateResponseV6) in kms.c + * Returns size of the KMS response packet or 0 on failure. + * + * The RPC packet size (excluding header) is actually in Response->AllocHint + */ +static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const Response, const DWORD RpcAssocGroup_unused, const SOCKET sock_unused, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr) +{ + uint_fast16_t _v; + int ResponseSize; + WORD Ctx = LE16(Request->ContextId); + BYTE* requestData; + BYTE* responseData; + BYTE* pRpcReturnCode; + int len; + + if (Ctx != *Ndr64Ctx) + { + requestData = (BYTE*)&Request->Ndr.Data; + responseData = (BYTE*)&Response->Ndr.Data; + } + else + { + requestData = (BYTE*)&Request->Ndr64.Data; + responseData = (BYTE*)&Response->Ndr64.Data; + } + + _v = LE16(((WORD*)requestData)[1]) - 4; + + if (!(ResponseSize = _Versions[_v].CreateResponse(requestData, responseData, ipstr))) + { + return 0; + } + + if (Ctx != *Ndr64Ctx) + { + Response->Ndr.DataSizeMax = LE32(0x00020000); + Response->Ndr.DataLength = Response->Ndr.DataSizeIs = LE32(ResponseSize); + len = ResponseSize + sizeof(Response->Ndr); + } + else + { + Response->Ndr64.DataSizeMax = LE64(0x00020000ULL); + Response->Ndr64.DataLength = Response->Ndr64.DataSizeIs = LE64((uint64_t)ResponseSize); + len = ResponseSize + sizeof(Response->Ndr64); + } + + pRpcReturnCode = ((BYTE*)&Response->Ndr) + len; + UA32(pRpcReturnCode) = 0; //LE32 not needed for 0 + len += sizeof(DWORD); + + // Pad zeros to 32-bit align (seems not neccassary but Windows RPC does it this way) + int pad = ((~len & 3) + 1) & 3; + memset(pRpcReturnCode + sizeof(DWORD), 0, pad); + len += pad; + + Response->AllocHint = LE32(len); + Response->ContextId = Request->ContextId; + + *((WORD*)&Response->CancelCount) = 0; // CancelCount + Pad1 + + return len + 8; +} + + +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcBindRequest(const RPC_BIND_REQUEST *const Request, const unsigned int len) +{ + uint_fast8_t i, HasTransferSyntaxNDR32 = FALSE; + char guidBuffer1[GUID_STRING_LENGTH + 1], guidBuffer2[GUID_STRING_LENGTH + 1]; + + uint32_t CapCtxItems = (len - sizeof(*Request) + sizeof(Request->CtxItems)) / sizeof(Request->CtxItems); + DWORD NumCtxItems = LE32(Request->NumCtxItems); + + if (NumCtxItems < CapCtxItems) // Can't be too small because already handled by RpcBindSize + logger("Warning: Excess bytes in RPC bind request.\n"); + + for (i = 0; i < NumCtxItems; i++) + { + if (!IsEqualGUID(&Request->CtxItems[i].InterfaceUUID, InterfaceUuid)) + { + uuid2StringLE((GUID*)&Request->CtxItems[i].InterfaceUUID, guidBuffer1); + uuid2StringLE((GUID*)InterfaceUuid, guidBuffer2); + logger("Warning: Interface UUID is %s but should be %s in Ctx item %u.\n", guidBuffer1, guidBuffer2, (unsigned int)i); + } + + if (Request->CtxItems[i].NumTransItems != LE16(1)) + logger("Fatal: %u NDR32 transfer items detected in Ctx item %u, but only one is supported.\n", + (unsigned int)LE16(Request->CtxItems[i].NumTransItems), (unsigned int)i + ); + + if (Request->CtxItems[i].InterfaceVerMajor != LE16(1) || Request->CtxItems[i].InterfaceVerMinor != 0) + logger("Warning: NDR32 Interface version is %u.%u but should be 1.0.\n", + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMajor), + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMinor) + ); + + if (Request->CtxItems[i].ContextId != LE16((WORD)i)) + logger("Warning: context id of Ctx item %u is %u.\n", (unsigned int)i, (unsigned int)Request->CtxItems[i].ContextId); + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + HasTransferSyntaxNDR32 = TRUE; + + if (Request->CtxItems[i].SyntaxVersion != LE32(2)) + logger("NDR32 transfer syntax version is %u but should be 2.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("NDR64 transfer syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if (!memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8)) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("BTFN syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + } + + if (!HasTransferSyntaxNDR32) + logger("Warning: RPC bind request has no NDR32 CtxItem.\n"); +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + + +/* + * Check, if we receive enough bytes to return a valid RPC bind response + */ +static unsigned int checkRpcBindSize(const RPC_BIND_REQUEST *const Request, const unsigned int RequestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + if ( RequestSize < sizeof(RPC_BIND_REQUEST) ) return FALSE; + + unsigned int _NumCtxItems = LE32(Request->NumCtxItems); + + if ( RequestSize < sizeof(RPC_BIND_REQUEST) - sizeof(Request->CtxItems[0]) + _NumCtxItems * sizeof(Request->CtxItems[0]) ) return FALSE; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcBindRequest(Request, RequestSize); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + return TRUE; +} + + +/* + * Accepts a bind or alter context request from the client and composes the bind response. + * Needs the socket because the tcp port number is part of the response. + * len is not used here. + * + * Returns TRUE on success. + */ +static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Response, const DWORD RpcAssocGroup, const SOCKET sock, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr_unused) +{ + unsigned int i, _st = FALSE; + DWORD numCtxItems = LE32(Request->NumCtxItems); + int_fast8_t IsNDR64possible = FALSE; + uint_fast8_t portNumberSize; + + socklen_t socklen; + struct sockaddr_storage addr; + + // M$ RPC does not do this. Pad bytes contain apparently random data + // memset(Response->SecondaryAddress, 0, sizeof(Response->SecondaryAddress)); + + socklen = sizeof addr; + + if ( + packetType == RPC_PT_ALTERCONTEXT_REQ || + getsockname(sock, (struct sockaddr*)&addr, &socklen) || + getnameinfo((struct sockaddr*)&addr, socklen, NULL, 0, (char*)Response->SecondaryAddress, sizeof(Response->SecondaryAddress), NI_NUMERICSERV)) + { + portNumberSize = Response->SecondaryAddressLength = 0; + } + else + { + portNumberSize = strlen((char*)Response->SecondaryAddress) + 1; + Response->SecondaryAddressLength = LE16(portNumberSize); + } + + Response->MaxXmitFrag = Request->MaxXmitFrag; + Response->MaxRecvFrag = Request->MaxRecvFrag; + Response->AssocGroup = LE32(RpcAssocGroup); + + // This is really ugly (but efficient) code to support padding after the secondary address field + if (portNumberSize < 3) + { + Response = (RPC_BIND_RESPONSE*)((BYTE*)Response - 4); + } + + Response->NumResults = Request->NumCtxItems; + + if (UseRpcNDR64) + { + for (i = 0; i < numCtxItems; i++) + { + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + /*if (packetType == RPC_PT_BIND_REQ)*/ + *NdrCtx = LE16(Request->CtxItems[i].ContextId); + } + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + IsNDR64possible = TRUE; + + /*if (packetType == RPC_PT_BIND_REQ)*/ + *Ndr64Ctx = LE16(Request->CtxItems[i].ContextId); + } + } + } + + for (i = 0; i < numCtxItems; i++) + { + memset(&Response->Results[i].TransferSyntax, 0, sizeof(GUID)); + + if ( !IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(2); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + _st = TRUE; + } + else if ( IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(1); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + + _st = TRUE; + } + else if ( UseRpcBTFN && !memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8) ) + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = RPC_BIND_ACK; + + // Features requested are actually encoded in the GUID + Response->Results[i].AckReason = + ((WORD*)(&Request->CtxItems[i].TransferSyntax))[4] & + (RPC_BTFN_SEC_CONTEXT_MULTIPLEX | RPC_BTFN_KEEP_ORPHAN); + } + else + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_NACK; // Unsupported + } + } + + if ( !_st ) return 0; + + return sizeof(RPC_BIND_RESPONSE) + numCtxItems * sizeof(((RPC_BIND_RESPONSE *)0)->Results[0]) - (portNumberSize < 3 ? 4 : 0); +} + + +// +// Main RPC handling routine +// +typedef unsigned int (*GetResponseSize_t)(const void *const request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx); +typedef int (*GetResponse_t)(const void* const request, void* response, const DWORD rpcAssocGroup, const SOCKET socket, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr); + +static const struct { + BYTE ResponsePacketType; + GetResponseSize_t CheckRequestSize; + GetResponse_t GetResponse; +} +_Actions[] = { + { RPC_PT_BIND_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, + { RPC_PT_RESPONSE, (GetResponseSize_t)checkRpcRequestSize, (GetResponse_t) rpcRequest }, + { RPC_PT_ALTERCONTEXT_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, +}; + + +/* + * This is the main RPC server loop. Returns after KMS request has been serviced + * or a timeout has occured. + */ +void rpcServer(const SOCKET sock, const DWORD RpcAssocGroup, const char* const ipstr) +{ + RPC_HEADER rpcRequestHeader; + WORD NdrCtx = INVALID_NDR_CTX, Ndr64Ctx = INVALID_NDR_CTX; + + randomNumberInit(); + + while (_recv(sock, &rpcRequestHeader, sizeof(rpcRequestHeader))) + { + //int_fast8_t _st; + unsigned int request_len, response_len; + uint_fast8_t _a; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + checkRpcHeader(&rpcRequestHeader, rpcRequestHeader.PacketType, &logger); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + switch (rpcRequestHeader.PacketType) + { + case RPC_PT_BIND_REQ: _a = 0; break; + case RPC_PT_REQUEST: _a = 1; break; + case RPC_PT_ALTERCONTEXT_REQ: _a = 2; break; + default: return; + } + + request_len = LE16(rpcRequestHeader.FragLength) - sizeof(rpcRequestHeader); + + BYTE requestBuffer[MAX_REQUEST_SIZE + sizeof(RPC_RESPONSE64)]; + BYTE responseBuffer[MAX_RESPONSE_SIZE + sizeof(RPC_HEADER) + sizeof(RPC_RESPONSE64)]; + + RPC_HEADER *rpcResponseHeader = (RPC_HEADER *)responseBuffer; + RPC_RESPONSE* rpcResponse = (RPC_RESPONSE*)(responseBuffer + sizeof(rpcRequestHeader)); + + // The request is larger than the buffer size + if (request_len > MAX_REQUEST_SIZE + sizeof(RPC_REQUEST64)) return; + + // Unable to receive the complete request + if (!_recv(sock, requestBuffer, request_len)) return; + + // Request is invalid + if (!_Actions[_a].CheckRequestSize(requestBuffer, request_len, &NdrCtx, &Ndr64Ctx)) return; + + // Unable to create a valid response from request + if (!(response_len = _Actions[_a].GetResponse(requestBuffer, rpcResponse, RpcAssocGroup, sock, &NdrCtx, &Ndr64Ctx, rpcRequestHeader.PacketType, ipstr))) return; + + response_len += sizeof(RPC_HEADER); + + memcpy(rpcResponseHeader, &rpcRequestHeader, sizeof(RPC_HEADER)); + + rpcResponseHeader->FragLength = LE16(response_len); + rpcResponseHeader->PacketType = _Actions[_a].ResponsePacketType; + + if (rpcResponseHeader->PacketType == RPC_PT_ALTERCONTEXT_ACK) + rpcResponseHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + + if (!_send(sock, responseBuffer, response_len)) return; + + if (DisconnectImmediately && rpcResponseHeader->PacketType == RPC_PT_RESPONSE) + shutdown(sock, VLMCSD_SHUT_RDWR); + } +} + + +/* RPC client functions */ + +static DWORD CallId = 2; // M$ starts with CallId 2. So we do the same. + + +/* + * Checks RPC header. Returns 0 on success. + * This is mainly for debugging a non Microsoft KMS server that uses its own RPC code. + */ +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p) +{ + int status = 0; + + if (Header->PacketType != desiredPacketType) + { + p("Fatal: Received wrong RPC packet type. Expected %u but got %u\n", + (uint32_t)desiredPacketType, + Header->PacketType + ); + status = !0; + } + + if (Header->DataRepresentation != BE32(0x10000000)) + { + p("Fatal: RPC response does not conform to Microsoft's limited support of DCE RPC\n"); + status = !0; + } + + if (Header->AuthLength != 0) + { + p("Fatal: RPC response requests authentication\n"); + status = !0; + } + + // vlmcsd does not support fragmented packets (not yet neccassary) + if ( (Header->PacketFlags & (RPC_PF_FIRST | RPC_PF_LAST)) != (RPC_PF_FIRST | RPC_PF_LAST) ) + { + p("Fatal: RPC packet flags RPC_PF_FIRST and RPC_PF_LAST are not both set.\n"); + status = !0; + } + + if (Header->PacketFlags & RPC_PF_CANCEL_PENDING) p("Warning: %s should not be set\n", "RPC_PF_CANCEL_PENDING"); + if (Header->PacketFlags & RPC_PF_RESERVED) p("Warning: %s should not be set\n", "RPC_PF_RESERVED"); + if (Header->PacketFlags & RPC_PF_NOT_EXEC) p("Warning: %s should not be set\n", "RPC_PF_NOT_EXEC"); + if (Header->PacketFlags & RPC_PF_MAYBE) p("Warning: %s should not be set\n", "RPC_PF_MAYBE"); + if (Header->PacketFlags & RPC_PF_OBJECT) p("Warning: %s should not be set\n", "RPC_PF_OBJECT"); + + if (Header->VersionMajor != 5 || Header->VersionMinor != 0) + { + p("Fatal: Expected RPC version 5.0 and got %u.%u\n", Header->VersionMajor, Header->VersionMinor); + status = !0; + } + + return status; +} + + +/* + * Checks an RPC response header. Does basic header checks by calling checkRpcHeader() + * and then does additional checks if response header complies with the respective request header. + * PRINTFUNC p can be anything that has the same prototype as printf. + * Returns 0 on success. + */ +static int checkRpcResponseHeader(const RPC_HEADER *const ResponseHeader, const RPC_HEADER *const RequestHeader, const BYTE desiredPacketType, const PRINTFUNC p) +{ + static int_fast8_t WineBugDetected = FALSE; + int status = checkRpcHeader(ResponseHeader, desiredPacketType, p); + + if (desiredPacketType == RPC_PT_BIND_ACK) + { + if ((ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) != (RequestHeader->PacketFlags & RPC_PF_MULTIPLEX)) + { + p("Warning: RPC_PF_MULTIPLEX of RPC request and response should match\n"); + } + } + else + { + if (ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) + { + p("Warning: %s should not be set\n", "RPC_PF_MULTIPLEX"); + } + } + + if (!status && ResponseHeader->CallId == LE32(1)) + { + if (!WineBugDetected) + { + p("Warning: Buggy RPC of Wine detected. Call Id of Response is always 1\n"); + WineBugDetected = TRUE; + } + } + else if (ResponseHeader->CallId != RequestHeader->CallId) + { + p("Fatal: Sent Call Id %u but received answer for Call Id %u\n", + (uint32_t)LE32(RequestHeader->CallId), + (uint32_t)LE32(ResponseHeader->CallId) + ); + + status = !0; + } + + return status; +} + +/* + * Initializes an RPC request header as needed for KMS, i.e. packet always fits in one fragment. + * size cannot be greater than fragment length negotiated during RPC bind. + */ +static void createRpcRequestHeader(RPC_HEADER* RequestHeader, BYTE packetType, WORD size) +{ + RequestHeader->PacketType = packetType; + RequestHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + RequestHeader->VersionMajor = 5; + RequestHeader->VersionMinor = 0; + RequestHeader->AuthLength = 0; + RequestHeader->DataRepresentation = BE32(0x10000000); // Little endian, ASCII charset, IEEE floating point + RequestHeader->CallId = LE32(CallId); + RequestHeader->FragLength = LE16(size); +} + + +/* + * Sends a KMS request via RPC and receives a response. + * Parameters are raw (encrypted) reqeuests / responses. + * Returns 0 on success. + */ +RpcStatus rpcSendRequest(const RpcCtx sock, const BYTE *const KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t *const responseSize) +{ + #define MAX_EXCESS_BYTES 16 + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_REQUEST64 *RpcRequest; + RPC_RESPONSE64 _Response; + int status = 0; + int_fast8_t useNdr64 = UseRpcNDR64 && firstPacketSent; + size_t size = sizeof(RPC_HEADER) + (useNdr64 ? sizeof(RPC_REQUEST64) : sizeof(RPC_REQUEST)) + requestSize; + size_t responseSize2; + + *KmsResponse = NULL; + + BYTE *_Request = (BYTE*)vlmcsd_malloc(size); + + RequestHeader = (RPC_HEADER*)_Request; + RpcRequest = (RPC_REQUEST64*)(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, RPC_PT_REQUEST, size); + + // Increment CallId for next Request + CallId++; + + RpcRequest->Opnum = 0; + + if (useNdr64) + { + RpcRequest->ContextId = LE16(1); // We negotiate NDR64 always as context 1 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr64)); + RpcRequest->Ndr64.DataLength = LE64((uint64_t)requestSize); + RpcRequest->Ndr64.DataSizeIs = LE64((uint64_t)requestSize); + memcpy(RpcRequest->Ndr64.Data, KmsRequest, requestSize); + } + else + { + RpcRequest->ContextId = 0; // We negotiate NDR32 always as context 0 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr)); + RpcRequest->Ndr.DataLength = LE32(requestSize); + RpcRequest->Ndr.DataSizeIs = LE32(requestSize); + memcpy(RpcRequest->Ndr.Data, KmsRequest, requestSize); + } + + for(;;) + { + int bytesread; + + if (!_send(sock, _Request, size)) + { + errorout("\nFatal: Could not send RPC request\n"); + status = !0; + break; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: No RPC response received from server\n"); + status = !0; + break; + } + + if ((status = checkRpcResponseHeader(&ResponseHeader, RequestHeader, RPC_PT_RESPONSE, &errorout))) break; + + size = useNdr64 ? sizeof(RPC_RESPONSE64) : sizeof(RPC_RESPONSE); + + if (size > LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader)) + size = LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader); + + if (!_recv(sock, &_Response, size)) + { + errorout("\nFatal: RPC response is incomplete\n"); + status = !0; + break; + } + + if (_Response.CancelCount != 0) + { + errorout("\nFatal: RPC response cancel count is not 0\n"); + status = !0; + } + + if (_Response.ContextId != (useNdr64 ? LE16(1) : 0)) + { + errorout("\nFatal: RPC response context id %u is not bound\n", (unsigned int)LE16(_Response.ContextId)); + status = !0; + } + + int_fast8_t sizesMatch; + + if (useNdr64) + { + *responseSize = (size_t)LE64(_Response.Ndr64.DataLength); + responseSize2 = (size_t)LE64(_Response.Ndr64.DataSizeIs); + + if (!*responseSize || !_Response.Ndr64.DataSizeMax) + { + status = (int)LE32(_Response.Ndr64.status); + break; + } + + sizesMatch = (size_t)LE64(_Response.Ndr64.DataLength) == responseSize2; + } + else + { + *responseSize = (size_t)LE32(_Response.Ndr.DataLength); + responseSize2 = (size_t)LE32(_Response.Ndr.DataSizeIs); + + if (!*responseSize || !_Response.Ndr.DataSizeMax) + { + status = (int)LE32(_Response.Ndr.status); + break; + } + + sizesMatch = (size_t)LE32(_Response.Ndr.DataLength) == responseSize2; + } + + if (!sizesMatch) + { + errorout("\nFatal: NDR data length (%u) does not match NDR data size (%u)\n", + (uint32_t)*responseSize, + (uint32_t)LE32(_Response.Ndr.DataSizeIs) + ); + + status = !0; + } + + *KmsResponse = (BYTE*)vlmcsd_malloc(*responseSize + MAX_EXCESS_BYTES); + + // If RPC stub is too short, assume missing bytes are zero (same ill behavior as MS RPC) + memset(*KmsResponse, 0, *responseSize + MAX_EXCESS_BYTES); + + // Read up to 16 bytes more than bytes expected to detect faulty KMS emulators + if ((bytesread = recv(sock, (char*)*KmsResponse, *responseSize + MAX_EXCESS_BYTES, 0)) < (int)*responseSize) + { + errorout("\nFatal: No or incomplete KMS response received. Required %u bytes but only got %i\n", + (uint32_t)*responseSize, + (int32_t)(bytesread < 0 ? 0 : bytesread) + ); + + status = !0; + break; + } + + DWORD *pReturnCode; + + size_t len = *responseSize + (useNdr64 ? sizeof(_Response.Ndr64) : sizeof(_Response.Ndr)) + sizeof(*pReturnCode); + size_t pad = ((~len & 3) + 1) & 3; + + if (len + pad != LE32(_Response.AllocHint)) + { + errorout("\nWarning: RPC stub size is %u, should be %u (probably incorrect padding)\n", (uint32_t)LE32(_Response.AllocHint), (uint32_t)(len + pad)); + } + else + { + size_t i; + for (i = 0; i < pad; i++) + { + if (*(*KmsResponse + *responseSize + sizeof(*pReturnCode) + i)) + { + errorout("\nWarning: RPC stub data not padded to zeros according to Microsoft standard\n"); + break; + } + } + } + + pReturnCode = (DWORD*)(*KmsResponse + *responseSize + pad); + status = LE32(UA32(pReturnCode)); + + if (status) errorout("\nWarning: RPC stub data reported Error %u\n", (uint32_t)status); + + break; + } + + free(_Request); + firstPacketSent = TRUE; + return status; + #undef MAX_EXCESS_BYTES +} + + +static int_fast8_t IsNullGuid(BYTE* guidPtr) +{ + int_fast8_t i; + + for (i = 0; i < 16; i++) + { + if (guidPtr[i]) return FALSE; + } + + return TRUE; +} + +/* + * Perform RPC client bind. Accepts a connected client socket. + * Returns 0 on success. RPC binding is required before any payload can be + * exchanged. It negotiates about protocol details. + */ +RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const int_fast8_t verbose) +{ + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_BIND_REQUEST *bindRequest; + RPC_BIND_RESPONSE *bindResponse; + int status; + WORD ctxItems = 1 + (packetType == RPC_PT_BIND_REQ ? UseRpcNDR64 + UseRpcBTFN : 0); + size_t rpcBindSize = (sizeof(RPC_HEADER) + sizeof(RPC_BIND_REQUEST) + (ctxItems - 1) * sizeof(bindRequest->CtxItems[0])); + WORD ctxIndex = 0; + WORD i; + WORD CtxBTFN = (WORD)~0, CtxNDR64 = (WORD)~0; + BYTE _Request[rpcBindSize]; + + RequestHeader = (RPC_HEADER*)_Request; + bindRequest = (RPC_BIND_REQUEST* )(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, packetType, rpcBindSize); + RequestHeader->PacketFlags |= UseMultiplexedRpc ? RPC_PF_MULTIPLEX : 0; + + bindRequest->AssocGroup = 0; + bindRequest->MaxRecvFrag = bindRequest->MaxXmitFrag = LE16(5840); + bindRequest->NumCtxItems = LE32(ctxItems); + + // data that is identical in all Ctx items + for (i = 0; i < ctxItems; i++) + { + bindRequest->CtxItems[i].ContextId = LE16(i); + bindRequest->CtxItems[i].InterfaceVerMajor = LE16(1); + bindRequest->CtxItems[i].InterfaceVerMinor = 0; + bindRequest->CtxItems[i].NumTransItems = LE16(1); + bindRequest->CtxItems[i].SyntaxVersion = i ? LE32(1) : LE32(2); + + memcpy(&bindRequest->CtxItems[i].InterfaceUUID, InterfaceUuid, sizeof(GUID)); + } + + memcpy(&bindRequest->CtxItems[0].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + if (UseRpcNDR64 && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + CtxNDR64 = ctxIndex; + } + + if (UseRpcBTFN && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, BindTimeFeatureNegotiation, sizeof(GUID)); + CtxBTFN = ctxIndex; + } + + if (!_send(sock, _Request, rpcBindSize)) + { + errorout("\nFatal: Sending RPC bind request failed\n"); + return !0; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: Did not receive a response from server\n"); + return !0; + } + + if ((status = checkRpcResponseHeader + ( + &ResponseHeader, + RequestHeader, + packetType == RPC_PT_BIND_REQ ? RPC_PT_BIND_ACK : RPC_PT_ALTERCONTEXT_ACK, + &errorout + ))) + { + return status; + } + + bindResponse = (RPC_BIND_RESPONSE*)vlmcsd_malloc(LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER)); + BYTE* bindResponseBytePtr = (BYTE*)bindResponse; + + if (!_recv(sock, bindResponse, LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER))) + { + errorout("\nFatal: Incomplete RPC bind acknowledgement received\n"); + free(bindResponseBytePtr); + return !0; + } + else + { + /* + * checking, whether a bind or alter context response is as expected. + * This check is very strict and checks whether a KMS emulator behaves exactly the same way + * as Microsoft's RPC does. + */ + status = 0; + + if (bindResponse->SecondaryAddressLength < LE16(3)) + bindResponse = (RPC_BIND_RESPONSE*)(bindResponseBytePtr - 4); + + if (bindResponse->NumResults != bindRequest->NumCtxItems) + { + errorout("\nFatal: Expected %u CTX items but got %u\n", + (uint32_t)LE32(bindRequest->NumCtxItems), + (uint32_t)LE32(bindResponse->NumResults) + ); + + status = !0; + } + + for (i = 0; i < ctxItems; i++) + { + const char* transferSyntaxName = + i == CtxBTFN ? "BTFN" : i == CtxNDR64 ? "NDR64" : "NDR32"; + + if (bindResponse->Results[i].AckResult == RPC_BIND_NACK) // transfer syntax was declined + { + if (!IsNullGuid((BYTE*)&bindResponse->Results[i].TransferSyntax)) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return NULL Guid\n", + transferSyntaxName + ); + } + + if (bindResponse->Results[i].SyntaxVersion) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return syntax version 0 but %u\n", + transferSyntaxName, + LE32(bindResponse->Results[i].SyntaxVersion) + ); + } + + if (bindResponse->Results[i].AckReason == RPC_ABSTRACTSYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Transfer syntax %s does not support KMS activation\n", + transferSyntaxName + ); + } + else if (bindResponse->Results[i].AckReason != RPC_SYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return ack reason RPC_SYNTAX_UNSUPPORTED\n", + transferSyntaxName + ); + } + + continue; + } + + if (i == CtxBTFN) // BTFN + { + if (bindResponse->Results[i].AckResult != RPC_BIND_ACK) + { + errorout("\nWarning: BTFN did not respond with RPC_BIND_ACK or RPC_BIND_NACK\n"); + } + + if (bindResponse->Results[i].AckReason != LE16(3)) + { + errorout("\nWarning: BTFN did not return expected feature mask 0x3 but 0x%X\n", (unsigned int)LE16(bindResponse->Results[i].AckReason)); + } + + if (verbose) printf("... BTFN "); + RpcFlags.HasBTFN = TRUE; + + continue; + } + + // NDR32 or NDR64 Ctx + if (bindResponse->Results[i].AckResult != RPC_BIND_ACCEPT) + { + errorout( + "\nFatal: transfer syntax %s returned an invalid status, neither RPC_BIND_ACCEPT nor RPC_BIND_NACK\n", + transferSyntaxName + ); + + status = !0; + } + + if (!IsEqualGUID(&bindResponse->Results[i].TransferSyntax, &bindRequest->CtxItems[i].TransferSyntax)) + { + errorout( + "\nFatal: Transfer syntax of RPC bind request and response does not match\n" + ); + + status = !0; + } + + if (bindResponse->Results[i].SyntaxVersion != bindRequest->CtxItems[i].SyntaxVersion) + { + errorout("\nFatal: Expected transfer syntax version %u for %s but got %u\n", + (uint32_t)LE32(bindRequest->CtxItems[0].SyntaxVersion), + transferSyntaxName, + (uint32_t)LE32(bindResponse->Results[0].SyntaxVersion) + ); + + status = !0; + } + + // The ack reason field is actually undefined here but Microsoft sets this to 0 + if (bindResponse->Results[i].AckReason != 0) + { + errorout( + "\nWarning: Ack reason should be 0 but is %u\n", + LE16(bindResponse->Results[i].AckReason) + ); + } + + if (!status) + { + if (i == CtxNDR64) + { + RpcFlags.HasNDR64 = TRUE; + if (verbose) printf("... NDR64 "); + } + if (!i) + { + RpcFlags.HasNDR32 = TRUE; + if (verbose) printf("... NDR32 "); + } + + } + } + } + + free(bindResponseBytePtr); + + if (!RpcFlags.HasNDR64 && !RpcFlags.HasNDR32) + { + errorout("\nFatal: Could neither negotiate NDR32 nor NDR64 with the RPC server\n"); + status = !0; + } + + return status; +} + +RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose) +{ + firstPacketSent = FALSE; + RpcFlags.mask = 0; + + RpcStatus status = + rpcBindOrAlterClientContext(sock, RPC_PT_BIND_REQ, verbose); + + if (status) return status; + + if (!RpcFlags.HasNDR32) + status = rpcBindOrAlterClientContext(sock, RPC_PT_ALTERCONTEXT_REQ, verbose); + + return status; +} + +#endif // USE_MSRPC diff --git a/rpc.h b/rpc.h new file mode 100644 index 00000000..86792cb3 --- /dev/null +++ b/rpc.h @@ -0,0 +1,178 @@ +#ifndef __rpc_h +#define __rpc_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "types.h" + +typedef struct { + BYTE VersionMajor; + BYTE VersionMinor; + BYTE PacketType; + BYTE PacketFlags; + DWORD DataRepresentation; + WORD FragLength; + WORD AuthLength; + DWORD CallId; +} /*__packed*/ RPC_HEADER; + + +typedef struct { + WORD MaxXmitFrag; + WORD MaxRecvFrag; + DWORD AssocGroup; + DWORD NumCtxItems; + struct { + WORD ContextId; + WORD NumTransItems; + GUID InterfaceUUID; + WORD InterfaceVerMajor; + WORD InterfaceVerMinor; + GUID TransferSyntax; + DWORD SyntaxVersion; + } CtxItems[1]; +} /*__packed*/ RPC_BIND_REQUEST; + +typedef struct { + WORD MaxXmitFrag; + WORD MaxRecvFrag; + DWORD AssocGroup; + WORD SecondaryAddressLength; + BYTE SecondaryAddress[6]; + DWORD NumResults; + struct { + WORD AckResult; + WORD AckReason; + GUID TransferSyntax; + DWORD SyntaxVersion; + } Results[0]; +} /*__packed*/ RPC_BIND_RESPONSE; + + +typedef struct { + DWORD AllocHint; + WORD ContextId; + WORD Opnum; + struct { + DWORD DataLength; + DWORD DataSizeIs; + } Ndr; + BYTE Data[0]; +} /*__packed*/ RPC_REQUEST; + +typedef struct { + DWORD AllocHint; + WORD ContextId; + BYTE CancelCount; + BYTE Pad1; + struct { + DWORD DataLength; + DWORD DataSizeIs1; + DWORD DataSizeIs2; + } Ndr; + BYTE Data[0]; +} /*__packed*/ RPC_RESPONSE; + +typedef struct { + DWORD AllocHint; + WORD ContextId; + WORD Opnum; + union { + struct { + DWORD DataLength; + DWORD DataSizeIs; + BYTE Data[0]; + } Ndr; + struct { + uint64_t DataLength; + uint64_t DataSizeIs; + BYTE Data[0]; + } Ndr64; + }; +} /*__packed*/ RPC_REQUEST64; + +typedef struct { + DWORD AllocHint; + WORD ContextId; + BYTE CancelCount; + BYTE Pad1; + union { + struct { + DWORD DataLength; + DWORD DataSizeMax; + union + { + DWORD DataSizeIs; + DWORD status; + }; + BYTE Data[0]; + } Ndr; + struct { + uint64_t DataLength; + uint64_t DataSizeMax; + union + { + uint64_t DataSizeIs; + DWORD status; + }; + BYTE Data[0]; + } Ndr64; + }; +} /*__packed*/ RPC_RESPONSE64; + + +typedef SOCKET RpcCtx; +typedef int RpcStatus; + +#define INVALID_NDR_CTX ((WORD)~0) + +#define RPC_BIND_ACCEPT (0) +#define RPC_BIND_NACK (LE16(2)) +#define RPC_BIND_ACK (LE16(3)) + +#define RPC_SYNTAX_UNSUPPORTED (LE16(2)) +#define RPC_ABSTRACTSYNTAX_UNSUPPORTED (LE16(1)) + +#define RPC_BTFN_SEC_CONTEXT_MULTIPLEX (LE16(1)) +#define RPC_BTFN_KEEP_ORPHAN (LE16(2)) + +#define INVALID_RPCCTX INVALID_SOCKET +#define closeRpc socketclose + +#define RPC_PT_REQUEST 0 +#define RPC_PT_RESPONSE 2 +#define RPC_PT_BIND_REQ 11 +#define RPC_PT_BIND_ACK 12 +#define RPC_PT_ALTERCONTEXT_REQ 14 +#define RPC_PT_ALTERCONTEXT_ACK 15 + +#define RPC_PF_FIRST 1 +#define RPC_PF_LAST 2 +#define RPC_PF_CANCEL_PENDING 4 +#define RPC_PF_RESERVED 8 +#define RPC_PF_MULTIPLEX 16 +#define RPC_PF_NOT_EXEC 32 +#define RPC_PF_MAYBE 64 +#define RPC_PF_OBJECT 128 + +typedef union _RPC_FLAGS +{ + DWORD mask; + struct { + uint32_t FlagsBTFN : 16; + BOOL HasNDR32 : 1; + BOOL HasNDR64 : 1; + BOOL HasBTFN : 1; + }; +} RPC_FLAGS, *PRPC_FLAGS; + +extern RPC_FLAGS RpcFlags; + +void rpcServer(const RpcCtx socket, const DWORD RpcAssocGroup, const char* const ipstr); +RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose); +RpcStatus rpcSendRequest(const RpcCtx socket, const BYTE *const KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t *const responseSize); + +#endif // __rpc_h diff --git a/shared_globals.c b/shared_globals.c new file mode 100644 index 00000000..f7f32657 --- /dev/null +++ b/shared_globals.c @@ -0,0 +1,98 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "shared_globals.h" + +int global_argc, multi_argc = 0; +CARGV global_argv, multi_argv = NULL; +const char *const Version = VERSION; +DWORD VLActivationInterval = 60 * 2; // 2 hours +DWORD VLRenewalInterval = 60 * 24 * 7; // 7 days +int_fast8_t DisconnectImmediately = FALSE; +const char *const cIPv4 = "IPv4"; +const char *const cIPv6 = "IPv6"; + +#ifndef USE_MSRPC +int_fast8_t UseMultiplexedRpc = TRUE; +int_fast8_t UseRpcNDR64 = TRUE; +int_fast8_t UseRpcBTFN = TRUE; +#endif // USE_MSRPC + +#ifndef NO_SOCKETS +const char *defaultport = "1688"; +#endif // NO_SOCKETS + +KmsResponseParam_t KmsResponseParameters[MAX_KMSAPPS]; + +#if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) +int_fast8_t IsRestarted = FALSE; +#endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + +#if !defined(NO_TIMEOUT) && !__minix__ +DWORD ServerTimeout = 30; +#endif // !defined(NO_TIMEOUT) && !__minix__ + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ +#ifdef USE_MSRPC +uint32_t MaxTasks = RPC_C_LISTEN_MAX_CALLS_DEFAULT; +#else // !USE_MSRPC +uint32_t MaxTasks = SEM_VALUE_MAX; +#endif // !USE_MSRPC +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_LOG +char *fn_log = NULL; +int_fast8_t logstdout = 0; +#ifndef NO_VERBOSE_LOG +int_fast8_t logverbose = 0; +#endif // NO_VERBOSE_LOG +#endif // NO_LOG + +#ifndef NO_SOCKETS +int_fast8_t nodaemon = 0; +int_fast8_t InetdMode = 0; +#else +int_fast8_t nodaemon = 1; +int_fast8_t InetdMode = 1; +#endif + +#ifndef NO_RANDOM_EPID +int_fast8_t RandomizationLevel = 1; +uint16_t Lcid = 0; +#endif + +#ifndef NO_SOCKETS +SOCKET *SocketList; +int numsockets = 0; + +#if !defined(NO_LIMIT) && !__minix__ +#ifndef _WIN32 // Posix +sem_t *Semaphore; +#else // _WIN32 +HANDLE Semaphore; +#endif // _WIN32 + +#endif // !defined(NO_LIMIT) && !__minix__ +#endif // NO_SOCKETS + +#ifdef _NTSERVICE +int_fast8_t IsNTService = TRUE; +int_fast8_t ServiceShutdown = FALSE; +#endif // _NTSERVICE + +#ifndef NO_LOG +#ifdef USE_THREADS +#if !defined(_WIN32) && !defined(__CYGWIN__) +pthread_mutex_t logmutex = PTHREAD_MUTEX_INITIALIZER; +#else +CRITICAL_SECTION logmutex; +#endif // !defined(_WIN32) && !defined(__CYGWIN__) +#endif // USE_THREADS +#endif // NO_LOG + + + + + diff --git a/shared_globals.h b/shared_globals.h new file mode 100644 index 00000000..a59618cb --- /dev/null +++ b/shared_globals.h @@ -0,0 +1,156 @@ +#ifndef INCLUDED_SHARED_GLOBALS_H +#define INCLUDED_SHARED_GLOBALS_H + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include + +#ifndef _WIN32 +#include +#include +#include +#include +#include +#include +#include +#if (!defined(NO_LIMIT) || defined(USE_THREADS)) && !__minix__ +#include +#endif // (!defined(NO_LIMIT) || defined(USE_THREADS)) && !__minix__ +#include +#include +#if !defined(NO_LIMIT) && !__minix__ +#include +#endif // !defined(NO_LIMIT) && !__minix__ +#else +#ifndef USE_MSRPC +#include +#include +#endif // USE_MSRPC +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "types.h" + +#define MAX_KMSAPPS 3 +typedef struct +{ + const char* Epid; + const BYTE* HwId; + #ifndef NO_LOG + const char* EpidSource; + #endif // NO_LOG +} KmsResponseParam_t, *PKmsResponseParam_t; + +#if !defined(NO_LIMIT) && !__minix__ +#ifndef SEM_VALUE_MAX // Android does not define this +#ifdef __ANDROID__ +#define SEM_VALUE_MAX 0x3fffffff +#elif !defined(_WIN32) +#define SEM_VALUE_MAX 0x7fffffff +#else +#define SEM_VALUE_MAX 0x7fff // Be cautious if unknown +#endif // __ANDROID__ +#endif // !defined(SEM_VALUE_MAX) +#endif // !defined(NO_LIMIT) && !__minix__ + +extern const char *const Version; + +//Fix for stupid eclipse parser +#ifndef UINT_MAX +#define UINT_MAX 4294967295 +#endif + + +extern int global_argc, multi_argc; +extern CARGV global_argv, multi_argv; +extern int_fast8_t nodaemon; +extern DWORD VLActivationInterval; +extern DWORD VLRenewalInterval; +extern int_fast8_t DisconnectImmediately; +extern KmsResponseParam_t KmsResponseParameters[MAX_KMSAPPS]; +extern const char *const cIPv4; +extern const char *const cIPv6; +extern int_fast8_t InetdMode; + +#ifndef USE_MSRPC +extern int_fast8_t UseMultiplexedRpc; +extern int_fast8_t UseRpcNDR64; +extern int_fast8_t UseRpcBTFN; +#endif // USE_MSRPC + +#ifndef NO_SOCKETS +extern const char *defaultport; +#endif // NO_SOCKETS + +#if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) +extern int_fast8_t IsRestarted; +#endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + +#if !defined(NO_TIMEOUT) && !__minix__ +extern DWORD ServerTimeout; +#endif // !defined(NO_TIMEOUT) && !__minix__ + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ +extern uint32_t MaxTasks; +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_LOG +extern char *fn_log; +extern int_fast8_t logstdout; +#ifndef NO_VERBOSE_LOG +extern int_fast8_t logverbose; +#endif +#endif + +#ifndef NO_RANDOM_EPID +extern int_fast8_t RandomizationLevel; +extern uint16_t Lcid; +#endif + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +extern SOCKET *SocketList; +extern int numsockets; + +#if !defined(NO_LIMIT) && !__minix__ + +#ifndef _WIN32 +extern sem_t *Semaphore; +#else // _WIN32 +extern HANDLE Semaphore; +#endif // _WIN32 + +#endif // !defined(NO_LIMIT) && !__minix__ + +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + +#ifdef _NTSERVICE +extern int_fast8_t IsNTService; +extern int_fast8_t ServiceShutdown; +#endif + +#ifndef NO_LOG +#ifdef USE_THREADS +#if !defined(_WIN32) && !defined(__CYGWIN__) +extern pthread_mutex_t logmutex; +#else +extern CRITICAL_SECTION logmutex; +#endif // _WIN32 +#endif // USE_THREADS +#endif // NO_LOG + + +#endif // INCLUDED_SHARED_GLOBALS_H diff --git a/types.h b/types.h new file mode 100644 index 00000000..49489960 --- /dev/null +++ b/types.h @@ -0,0 +1,266 @@ +#ifndef __types_h +#define __types_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include + +//#ifdef __sun__ +//#include +//#endif +#ifndef alloca +#ifdef __GNUC__ +#define alloca(x) __builtin_alloca(x) +#endif // __GNUC__ +#endif // alloca + +#ifndef alloca +#if _MSC_VER +#define alloca _malloca +#endif // _MSC_VER +#endif // alloca + +#ifndef alloca +#ifdef __has_builtin // clang feature test +#if __has_builtin(__builtin_alloca) +#define alloca(x) __builtin_alloca(x) +#endif // __has_builtin(__builtin_alloca) +#endif // __has_builtin +#endif // alloca + +#ifndef alloca +#include +#endif + +#ifndef __packed +#if _MSC_VER +#define __packed +#else // !_MSC_VER +#define __packed __attribute__((packed)) +#endif // !_MSC_VER +#endif + +#ifndef __pure +#define __pure __attribute__((pure)) +#endif + +#ifndef __noreturn +#define __noreturn __attribute__((noreturn)) +#endif + +#define restrict __restrict + +typedef struct __packed +{ + uint16_t val[0]; +} PACKED16; + +typedef struct __packed +{ + uint32_t val[0]; +} PACKED32; + +typedef struct __packed +{ + uint64_t val[0]; +} PACKED64; + +// Extend this type to 16 or 32 bits if more than 254 products appear +typedef uint8_t ProdListIndex_t; + +// Deal with Mingw32-w64 C++ header which defines a _countof that is incompatible with vlmcsd +#define vlmcsd_countof(x) ( sizeof(x) / sizeof(x[0]) ) + +// PATH_MAX is optional in Posix. We use a default of 260 here +#ifndef PATH_MAX +#ifdef _WIN32 +#define PATH_MAX MAX_PATH +#else +#define PATH_MAX 260 +#endif // _WIN32 +#endif // !PATH_MAX + +#if PATH_MAX > 260 +#define VLMCSD_PATH_MAX 260 +#else +#define VLMCSD_PATH_MAX PATH_MAX +#endif + +// Synchronization Objects + +// Mutexes +#ifdef USE_THREADS +#if !defined(_WIN32) && !defined(__CYGWIN__) +#define lock_mutex(x) pthread_mutex_lock(x) +#define unlock_mutex(x) pthread_mutex_unlock(x) +#else +#define lock_mutex(x) EnterCriticalSection(x) +#define unlock_mutex(x) LeaveCriticalSection(x) +#endif +#else // !USE_THREADS +//defines to nothing +#define lock_mutex(x) +#define unlock_mutex(x) +#endif // !USE_THREADS + +// Semaphores +#ifndef _WIN32 +#define semaphore_wait(x) sem_wait(x) +#define semaphore_post(x) sem_post(x) +#else // _WIN32 +#define semaphore_wait(x) WaitForSingleObject(x, INFINITE) +#define semaphore_post(x) ReleaseSemaphore(x, 1, NULL) +#endif // _WIN32 + +// Stupid MingW just uses rand() from msvcrt.dll which uses RAND_MAX of 0x7fff +#if RAND_MAX < 0x7fffffff +#define rand32(x) ((uint32_t)((rand(x) << 17) | (rand(x) << 2) | (rand(x) & 3))) +#elif RAND_MAX < 0xffffffff +#define rand32(x) ((uint32_t)((rand(x) << 1) | (rand(x) & 1))) +#else +#define rand32(x) (uint32_t)rand(x) +#endif + +#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(NO_SOCKETS) +#define _NTSERVICE +#endif + +#if (defined(__CYGWIN__) || defined(_WIN32) || defined(NO_SOCKETS)) && !defined(NO_SIGHUP) +#define NO_SIGHUP +#endif // (defined(__CYGWIN__) || defined(_WIN32) || defined(NO_SOCKETS)) && !defined(NO_SIGHUP) + +#ifdef _WIN32 +#ifndef USE_THREADS +#define USE_THREADS +#endif +#endif + +#if defined(USE_THREADS) +#define _TLS __thread +#else +#define _TLS +#endif + +#define GUID_STRING_LENGTH 36 + +#if defined(_WIN32) + +#ifndef USE_MSRPC +#include +#include +#endif // USE_MSRPC + +#include + + +typedef char* sockopt_t; +// Map VLMCSD error codes to WSAGetLastError() codes +// Add more if you need them +#define VLMCSD_EADDRINUSE WSAEADDRINUSE +#define VLMCSD_ENODEV WSAENODEV +#define VLMCSD_EADDRNOTAVAIL WSAEADDRNOTAVAIL +#define VLMCSD_EACCES WSAEACCES +#define VLMCSD_EINVAL WSAEINVAL +#define VLMCSD_ENOTSOCK WSAENOTSOCK +#define VLMCSD_EINTR WSAEINTR +#define VLMCSD_EINPROGRESS WSAEINPROGRESS +#define VLMCSD_ECONNABORTED WSAECONNABORTED + +#define socket_errno WSAGetLastError() +#define socketclose(x) (closesocket(x)) +#define vlmcsd_strerror(x) win_strerror(x) +#define VLMCSD_SHUT_RD SD_RECEIVE +#define VLMCSD_SHUT_WR SD_SEND +#define VLMCSD_SHUT_RDWR SD_BOTH + +/* Unknown Winsock error codes */ +#define WSAENODEV -1 + +#elif defined(__CYGWIN__) +#include + +// Resolve conflicts between OpenSSL and MS Crypto API +#ifdef _CRYPTO_OPENSSL +#undef OCSP_RESPONSE +#undef X509_NAME +#endif + +#else +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; +typedef uint16_t WCHAR; +typedef int BOOL; + +#define FALSE 0 +#define TRUE !0 + +typedef struct { + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; +} /*__packed*/ GUID; + +typedef struct { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} /*__packed*/ FILETIME; + +#endif // defined(__CYGWIN__) + +#ifndef _WIN32 +// Map VLMCSD error codes to POSIX codes +// Add more if you need them +#define VLMCSD_EADDRINUSE EADDRINUSE +#define VLMCSD_ENODEV ENODEV +#define VLMCSD_EADDRNOTAVAIL EADDRNOTAVAIL +#define VLMCSD_EACCES EACCES +#define VLMCSD_EINVAL EINVAL +#define VLMCSD_ENOTSOCK ENOTSOCK +#define VLMCSD_EINTR EINTR +#define VLMCSD_EINPROGRESS EINPROGRESS +#define VLMCSD_ECONNABORTED ECONNABORTED + +typedef void* sockopt_t; +#define _countof(x) ( sizeof(x) / sizeof(x[0]) ) +#define SOCKET int +#define INVALID_SOCKET -1 +#define socket_errno errno +#define socketclose(x) (close(x)) +#define vlmcsd_strerror strerror +#define VLMCSD_SHUT_RD SHUT_RD +#define VLMCSD_SHUT_WR SHUT_WR +#define VLMCSD_SHUT_RDWR SHUT_RDWR + +#endif // __MINGW__ +#define INVALID_UID ((uid_t)~0) +#define INVALID_GID ((gid_t)~0) + +#undef IsEqualGUID +#define IsEqualGUID(a, b) ( !memcmp(a, b, sizeof(GUID)) ) + +#ifndef __stdcall +#define __stdcall +#endif + +#ifndef __cdecl +#define __cdecl +#endif + +typedef const char *const * CARGV; + +typedef struct { + SOCKET socket; + DWORD RpcAssocGroup; +} CLDATA, *const PCLDATA; + + + + +#endif // __types_h diff --git a/vlmcs.1 b/vlmcs.1 new file mode 100644 index 00000000..dcbcf8db --- /dev/null +++ b/vlmcs.1 @@ -0,0 +1,255 @@ +.mso www.tmac +.TH VLMCS 1 "February 2015" "Hotbird64" "KMS Activation Manual" +.LO 1 + +.SH NAME +vlmcs \- a client for testing and/or charging KMS servers + +.SH SYNOPSIS +\fBvlmcs\fR [ \fIoptions\fR ] [ \fItarget\fR ] [ \fIoptions\fR ] +.PP +\fItarget\fR can be one of the following: +.RS +.PP +\fIhostname\fR|\fIipaddress\fR[:\fItcp-port\fR] or to query a specific KMS server (example: vlmcs kms.example.com:1688). +.br +\fR.\fIdomain\fR to automatically detect KMS servers via DNS for \fIdomain\fR (example: vlmcs .example.com). Please note the dot before \fIdomain\fR. +.br +\fI-\fR (a single dash) to detect KMS servers in your own domain. +.RE + +If you use \fIipaddress\fR:\fIport\fR as the \fItarget\fR, the \fIipaddress\fR must be enclosed in brackets +if it contains colons, e.g. [2001:db8:dead:beef::1]:1688. If you use a link-local IPv6 address on Unix systems, you must append a percent sign and the +interface identifier of the source interface, for example fe80::dead:beef%eth0. +.PP +If you omit the \fItarget\fR, 127.0.0.1:1688 will be used except if you use \fB-i6\fR. In this case the default target is [::1]:1688. + +.SH DESCRIPTION +\fBvlmcs\fR is a program that can be used to test a KMS server that provides activation for +several Microsoft products. The KMS server may also be an emulator. It supports +KMS protocol versions 4, 5 and 6. +.PP +.B vlmcs +generates one or more activation requests for a Microsoft KMS product and sends +it to a KMS server. It then analyzes and displays the responses of the KMS server. +.PP +.B vlcms +checks both the DCE-RPC protocol and the activation message for correctness and +reports any errors that it finds. +.PP +.B vlmcs +can also be used to "charge" a KMS server. A Microsoft KMS server sends correct activation messages only if it detects a certain minimum of clients (25 for Windows client OSses, 5 otherwise) on the network. This is Microsoft's futile attempt to prevent running a KMS server in a home environment. + +.SH OPTIONS +.IP "\fB-h\fR or \fB-?" +Show help. + +.IP \fB-x +Show valid +.IR application s +that can be used with +.BR "-l" "." + +.IP \fB-e +Show some examples how to use vlmcs correctly. + +.IP \fB-v +Be verbose. Instead of just displaying the returned ePID and the HwId +(protocol v6 only) vlmcsd shows all details of the query and the response. + +.IP "\fB-l\fR \fIapplication" +Request activation for a specific +.IR "application" "." +Valid applications can be displayed by using +.BR "-x" "." +The default +.IR application " is" +.IR "Windows Vista Business" "." +The list of available applications is not complete. You may +supply GUIDs with +.BR "-a" ", " "-k" " and " "-s" +to specify applications that are not listed with \fB-x\fR. The +.B -l +option is used as a shortcut for the most common applications. + +.IP "\fB-4\fR, \fB-5\fR and \fB-6" +Force version 4, 5 or 6 of the KMS protocol. The default is to select a suitable +version according to the +.IR "application" +selected. Plese note that some products (e.g. Office 2013) may use different protocols with different versions of Windows. + +.IP "\fB-m" +Let the client pretend to be a virtual machine. Early versions of Microsoft's +KMS server did not increase the client count if the request came from a virtual +machine. Newer versions ignore this flag. + +.IP "\fB-d" +Use NetBIOS names instead of DNS names. By default vlmcsd generates some random +DNS names for each request. If you prefer NetBIOS names, you may use +.IR "\fB-d" "." +A real Microsoft activation client uses DNS names or NetBIOS depending on the +client name configuration. KMS servers treat the workstation name as a comment +that affects logging only. Clients will be identified by a GUID that can +be specified using \fB-c\fR. \fB-d\fR has no effect if you also specify \fB-w\fR. + +.IP "\fB-a\fR \fIapplication-guid" +Send requests with a specific +.IR "application-guid" "." +There are currently only three known valid +.IR "application-guid" "s:" + +.IP +55c92734-d682-4d71-983e-d6ec3f16059f (Windows) +.br +59a52881-a989-479d-af46-f275c6370663 (Office 2010) +.br +0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013) + +.IP +A Microsoft KMS server uses these GUIDs to have seperate counters for the +already activated clients. A client that does not contact the KMS server +within 30 days will be deleted from the database. Emulated KMS servers +are always fully charged. + +.IP "\fB-k\fR \fIkms-guid\fR" +Send requests with a specific +.IR "kms-guid" "." +A Microsoft KMS server uses these GUIDs as a product id to decide whether to +grant activation or not. A list of current \fIkms-guid\fRs can be found in +kms.c (table KmsIdList). Emulated KMS servers grant activation unconditionally +and do not check the \fIkms-guid\fR. + +.IP "\fB-s\fR \fIactivation-guid\fR" +The \fIactivation-guid\fR defines the actual product, e.g. "Windows 8.1 Professional WMC KMSCLIENT edition". A \fIactivation-guid\fR maps 1:1 to a product key. +However, neither a Microsoft KMS server nor emulated servers check this id. +The \fIactivation-guid\fR is useful in logging to get a specific product description like +"Windows 8.1 Professional WMC". A list of current \fIactivation-guid\fRs can be found in +kms.c (table ExtendedProductList). + +.IP "\fB-n\fR \fIrequests" +Send +.I requests +requests to the server. The default is to send at least one request and enough +subsequent requests that the server is fully charged afterwards for +the \fIapplication\-guid\fR you selected (explicitly with +.BR "-a" " or implicitly by using " "-l" ")." + +.IP "\fB-T" +Causes to use a new TCP connection for each request if multiple requests +are sent with vlmcsd. This is useful when you want to test an emulated KMS +server whether it suffers from memory leaks. To test for memory leaks use +.B -n +with a large number of requests (> 100000) and then test twice (with and +without +.BR "-T" ")." +This option may become neccessary for future versions of Microsoft's KMS +server because multiple requests with different +.IR clients-guid s +for the same +.I kms-id-guid +are impossible in a real KMS szenario over the same TCP connection. + +.IP "\fB-c\fR \fIclient-machine-guid\fR" +Normally vlmcs generates a random \fIclient-machine-guid\fR for each request. By using this option you can specify a fixed \fIclient-machine-guid\fR +This causes a Microsoft KMS not to increment its client count because it +receives multiple requests for the same client. Thus do not use +.BR "-c" +if you want to charge a real KMS server. + +.IP "\fB-o\fR \fIprevious-client-machine-guid\fR" +If the \fIclient-machine-guid\fR changes for some reason, the real KMS client stores a \fIprevious-client-machine-guid\fR which is sent +to the KMS server. This happens rarely and usually 00000000-0000-0000-0000-000000000000 is used. You can use \fB-o\fR to specify a different +\fIprevious-client-machine-guid\fR. + +.IP "\fB-G\fR \fIfilename\fR" +Grabs ePIDs and HWIDs from a KMS server and writes the information to \fIfilename\fR +in format suitable to be used as a configuration file (aka ini file) for \fBvlmcsd\fR(8). +This is especially useful if you have access to a genuine KMS server and want to use +the same data with \fBvlmcsd\fR(8). + +If \fIfilename\fR does not exist, it will be created. +If you specify an existing \fIfilename\fR, it will be updated to use the information +received from the remote KMS server and a backup \fIfilename\fR~ will be created. + +\fB-G\fR cannot be used with \fB-l\fR, \fB-4\fR, \fB-5\fR, \fB-6\fR, \fB-a\fR, \fB-s\fR, \fB-k\fR, \fB-r\fR and \fB-n\fR + +.IP "\fB-w\fR \fIworkstation-name" +Send requests with a specific +.IR "workstation-name" "." +This disables the random generator for the workstation name. Since it is +a comment only, this option does not have much effect. + +.IP "\fB-r\fR \fIrequired-client-count" +Also known as the "N count policy". Tells the KMS server that successful activation requires +\fIrequired-client-count\fR clients. The default is the +\fIrequired-client-count\fR that the product would need if the request +was a real activation. A Microsoft KMS server counts clients +up to the double amount what was specified with \fB-r\fR. This option +can be used to "overcharge" a Microsoft KMS server. + +.IP "\fB\-t\ \fIstatus\fR" +Reports a specific license status to the KMS server. \fIstatus\fR is a number +that can be from 0 to 6. 0=unlicensed, 1=licensed, 2=OOB grace, 3=OOT grace, +4=Non-genuinue grace, 5=notification, 6=extended grace. Refer to +.URL "http://technet.microsoft.com/en-us/library/ff686879.aspx#_Toc257201371" "TechNet" "" +for more information. A Microsoft KMS server collects this information for +statistics only. + +.IP "\fB-g\fR \fIbinding-expiration\fR" +This tells the KMS server how long a client will stay in its current license +status. This can be the remaining OOB time (the grace peroid that is granted between installation of a product and when activation is actuall required) or +the remaining time when KMS activation must be renewed. +\fIbinding-expiration\fR is specified in minutes. A Microsoft KMS server +apparantly does not use this information. + +.IP "\fB-i \fIprotocol-version\fR" +Force the use of Internet protocol \fIprotocol-version\fR. Allowed values are 4 (IPv4) and 6 (IPv6). This option is useful only if you specfiy a \fIhostname\fR and not an +\fIip-address\fR on the command line. + +.IP "\fB-p\fR" +Do not set the RPC_PF_MULTIPLEX flag in the RPC bind request. This can be used to test if the KMS server uses the same setting of this flag in the RPC bind respone. Some KMS +emulators don't set this correctly. + +.IP "\fB-N0\fR and \fB-N1\fR" +Disables (\fB-N0\fR) or enables (\fB-N1\fR) the NDR64 transfer syntax in the RPC protocol. Disable NDR64 only in case of problems. If NDR64 is not used, vlmcs cannot detect many RPC protocol errors in KMS emulators. If you want to test whether a KMS emulator fully supports NDR64, you must use the \fB-n\fR option to send at least two requests. This is because Microsoft's client always sends the first request using NDR32 syntax and subsequent requests using NDR64 syntax. + +.IP "\fB-B0\fR and \fB-B1\fR" +Disables (\fB-B0\fR) or enables (\fB-B1\fR) bind time feature negotiation (BTFN) in the RPC protocol. Disable BTFN only in case of problems. If BTFN is not used, vlmcs cannot detect many RPC protocol errors in KMS emulators. + +.PP +Options that do not require an argument can be specified together with a single +dash, e.g. vlmcs -6mvT. If you specify an option more than once, the last occurence +will be in effect. + +.SH FILES +.IP "\fBvlmcsd.ini\fR(5)" + +.SH EXAMPLES +.IP "\fBvlmcs kms.example.com" +Request activation for Windows Vista using v4 protocol from kms.example.com. +Repeat activation requests until server is charged for all Windows products. + +.IP "\fBvlmcs -" +Request activation for Windows Vista using v4 protocol from a KMS server that is published via DNS for the current domain. + +.IP "\fBvlmcs .example.com" +Request activation for Windows Vista using v4 protocol from a KMS server that is published via DNS for domain example.com. + +.IP "\fBvlmcs -6 -l Office2013 -v -n 1" +Request exactly one activation for Office2013 using v6 protocol from +localhost. Display verbose results. + +.IP "\fBvlmcs kms.bigcompany.com -G /etc/vlmcsd.ini" +Get ePIDs and HWIDs from kms.bigcompany.com and create/update /etc/vlmcsd.ini accordingly. + +.SH BUGS +Some platforms (e.g. Solaris) may have a \fBman\fR(7) system that does not handle URLs. URLs may be omitted in the documentation on those platforms. Cygwin, Linux, FreeBSD and Mac OS X are known to work correctly. + +.SH AUTHOR +Written by Hotbird64 + +.SH CREDITS +Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nosferati87, qad, Ratiborus, vityan666, ... + +.SH SEE ALSO +\fBvlmcsd\fR(7), \fBvlmcsd\fR(8), \fBvlmcsdmulti\fR(1) diff --git a/vlmcs.1.dos.txt b/vlmcs.1.dos.txt new file mode 100644 index 00000000..33fc67ba --- /dev/null +++ b/vlmcs.1.dos.txt @@ -0,0 +1,305 @@ +VLMCS(1) KMS Activation Manual VLMCS(1) + + + +NAME + vlmcs - a client for testing and/or charging KMS servers + + +SYNOPSIS + vlmcs [ options ] [ target ] [ options ] + + target can be one of the following: + + hostname|ipaddress[:tcp-port] or to query a specific KMS server + (example: vlmcs kms.example.com:1688). + .domain to automatically detect KMS servers via DNS for domain + (example: vlmcs .example.com). Please note the dot before + domain. + - (a single dash) to detect KMS servers in your own domain. + + If you use ipaddress:port as the target, the ipaddress must be enclosed + in brackets if it contains colons, e.g. [2001:db8:dead:beef::1]:1688. + If you use a link-local IPv6 address on Unix systems, you must append a + percent sign and the interface identifier of the source interface, for + example fe80::dead:beef%eth0. + + If you omit the target, 127.0.0.1:1688 will be used except if you use + -i6. In this case the default target is [::1]:1688. + + +DESCRIPTION + vlmcs is a program that can be used to test a KMS server that provides + activation for several Microsoft products. The KMS server may also be + an emulator. It supports KMS protocol versions 4, 5 and 6. + + vlmcs generates one or more activation requests for a Microsoft KMS + product and sends it to a KMS server. It then analyzes and displays the + responses of the KMS server. + + vlcms checks both the DCE-RPC protocol and the activation message for + correctness and reports any errors that it finds. + + vlmcs can also be used to "charge" a KMS server. A Microsoft KMS server + sends correct activation messages only if it detects a certain minimum + of clients (25 for Windows client OSses, 5 otherwise) on the network. + This is Microsoft's futile attempt to prevent running a KMS server in a + home environment. + + +OPTIONS + -h or -? + Show help. + + + -x Show valid applications that can be used with -l. + + + -e Show some examples how to use vlmcs correctly. + + + -v Be verbose. Instead of just displaying the returned ePID and the + HwId (protocol v6 only) vlmcsd shows all details of the query + and the response. + + + -l application + Request activation for a specific application. Valid applica‐ + tions can be displayed by using -x. The default application is + Windows Vista Business. The list of available applications is + not complete. You may supply GUIDs with -a, -k and -s to specify + applications that are not listed with -x. The -l option is used + as a shortcut for the most common applications. + + + -4, -5 and -6 + Force version 4, 5 or 6 of the KMS protocol. The default is to + select a suitable version according to the application selected. + Plese note that some products (e.g. Office 2013) may use differ‐ + ent protocols with different versions of Windows. + + + -m Let the client pretend to be a virtual machine. Early versions + of Microsoft's KMS server did not increase the client count if + the request came from a virtual machine. Newer versions ignore + this flag. + + + -d Use NetBIOS names instead of DNS names. By default vlmcsd gener‐ + ates some random DNS names for each request. If you prefer Net‐ + BIOS names, you may use -d. A real Microsoft activation client + uses DNS names or NetBIOS depending on the client name configu‐ + ration. KMS servers treat the workstation name as a comment that + affects logging only. Clients will be identified by a GUID that + can be specified using -c. -d has no effect if you also specify + -w. + + + -a application-guid + Send requests with a specific application-guid. There are cur‐ + rently only three known valid application-guids: + + + 55c92734-d682-4d71-983e-d6ec3f16059f (Windows) + 59a52881-a989-479d-af46-f275c6370663 (Office 2010) + 0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013) + + + A Microsoft KMS server uses these GUIDs to have seperate coun‐ + ters for the already activated clients. A client that does not + contact the KMS server within 30 days will be deleted from the + database. Emulated KMS servers are always fully charged. + + + -k kms-guid + Send requests with a specific kms-guid. A Microsoft KMS server + uses these GUIDs as a product id to decide whether to grant + activation or not. A list of current kms-guids can be found in + kms.c (table KmsIdList). Emulated KMS servers grant activation + unconditionally and do not check the kms-guid. + + + -s activation-guid + The activation-guid defines the actual product, e.g. "Windows + 8.1 Professional WMC KMSCLIENT edition". A activation-guid maps + 1:1 to a product key. However, neither a Microsoft KMS server + nor emulated servers check this id. The activation-guid is use‐ + ful in logging to get a specific product description like "Win‐ + dows 8.1 Professional WMC". A list of current activation-guids + can be found in kms.c (table ExtendedProductList). + + + -n requests + Send requests requests to the server. The default is to send at + least one request and enough subsequent requests that the server + is fully charged afterwards for the application-guid you + selected (explicitly with -a or implicitly by using -l). + + + -T Causes to use a new TCP connection for each request if multiple + requests are sent with vlmcsd. This is useful when you want to + test an emulated KMS server whether it suffers from memory + leaks. To test for memory leaks use -n with a large number of + requests (> 100000) and then test twice (with and without -T). + This option may become neccessary for future versions of Micro‐ + soft's KMS server because multiple requests with different + clients-guids for the same kms-id-guid are impossible in a real + KMS szenario over the same TCP connection. + + + -c client-machine-guid + Normally vlmcs generates a random client-machine-guid for each + request. By using this option you can specify a fixed client- + machine-guid This causes a Microsoft KMS not to increment its + client count because it receives multiple requests for the same + client. Thus do not use -c if you want to charge a real KMS + server. + + + -o previous-client-machine-guid + If the client-machine-guid changes for some reason, the real KMS + client stores a previous-client-machine-guid which is sent to + the KMS server. This happens rarely and usually + 00000000-0000-0000-0000-000000000000 is used. You can use -o to + specify a different previous-client-machine-guid. + + + -G filename + Grabs ePIDs and HWIDs from a KMS server and writes the informa‐ + tion to filename in format suitable to be used as a configura‐ + tion file (aka ini file) for vlmcsd(8). This is especially use‐ + ful if you have access to a genuine KMS server and want to use + the same data with vlmcsd(8). + + If filename does not exist, it will be created. If you specify + an existing filename, it will be updated to use the information + received from the remote KMS server and a backup filename~ will + be created. + + -G cannot be used with -l, -4, -5, -6, -a, -s, -k, -r and -n + + + -w workstation-name + Send requests with a specific workstation-name. This disables + the random generator for the workstation name. Since it is a + comment only, this option does not have much effect. + + + -r required-client-count + Also known as the "N count policy". Tells the KMS server that + successful activation requires required-client-count clients. + The default is the required-client-count that the product would + need if the request was a real activation. A Microsoft KMS + server counts clients up to the double amount what was specified + with -r. This option can be used to "overcharge" a Microsoft KMS + server. + + + -t status + Reports a specific license status to the KMS server. status is a + number that can be from 0 to 6. 0=unlicensed, 1=licensed, 2=OOB + grace, 3=OOT grace, 4=Non-genuinue grace, 5=notification, + 6=extended grace. Refer to TechNet ⟨http:// + technet.microsoft.com/en-us/library/ff686879.aspx#_Toc257201371⟩ + for more information. A Microsoft KMS server collects this + information for statistics only. + + + -g binding-expiration + This tells the KMS server how long a client will stay in its + current license status. This can be the remaining OOB time (the + grace peroid that is granted between installation of a product + and when activation is actuall required) or the remaining time + when KMS activation must be renewed. binding-expiration is + specified in minutes. A Microsoft KMS server apparantly does not + use this information. + + + -i protocol-version + Force the use of Internet protocol protocol-version. Allowed + values are 4 (IPv4) and 6 (IPv6). This option is useful only if + you specfiy a hostname and not an ip-address on the command + line. + + + -p Do not set the RPC_PF_MULTIPLEX flag in the RPC bind request. + This can be used to test if the KMS server uses the same setting + of this flag in the RPC bind respone. Some KMS emulators don't + set this correctly. + + + -N0 and -N1 + Disables (-N0) or enables (-N1) the NDR64 transfer syntax in the + RPC protocol. Disable NDR64 only in case of problems. If NDR64 + is not used, vlmcs cannot detect many RPC protocol errors in KMS + emulators. If you want to test whether a KMS emulator fully sup‐ + ports NDR64, you must use the -n option to send at least two + requests. This is because Microsoft's client always sends the + first request using NDR32 syntax and subsequent requests using + NDR64 syntax. + + + -B0 and -B1 + Disables (-B0) or enables (-B1) bind time feature negotiation + (BTFN) in the RPC protocol. Disable BTFN only in case of prob‐ + lems. If BTFN is not used, vlmcs cannot detect many RPC protocol + errors in KMS emulators. + + + Options that do not require an argument can be specified together with + a single dash, e.g. vlmcs -6mvT. If you specify an option more than + once, the last occurence will be in effect. + + +FILES + vlmcsd.ini(5) + + +EXAMPLES + vlmcs kms.example.com + Request activation for Windows Vista using v4 protocol from + kms.example.com. Repeat activation requests until server is + charged for all Windows products. + + + vlmcs - + Request activation for Windows Vista using v4 protocol from a + KMS server that is published via DNS for the current domain. + + + vlmcs .example.com + Request activation for Windows Vista using v4 protocol from a + KMS server that is published via DNS for domain example.com. + + + vlmcs -6 -l Office2013 -v -n 1 + Request exactly one activation for Office2013 using v6 protocol + from localhost. Display verbose results. + + + vlmcs kms.bigcompany.com -G /etc/vlmcsd.ini + Get ePIDs and HWIDs from kms.bigcompany.com and create/update + /etc/vlmcsd.ini accordingly. + + +BUGS + Some platforms (e.g. Solaris) may have a man(7) system that does not + handle URLs. URLs may be omitted in the documentation on those plat‐ + forms. Cygwin, Linux, FreeBSD and Mac OS X are known to work correctly. + + +AUTHOR + Written by Hotbird64 + + +CREDITS + Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nos‐ + ferati87, qad, Ratiborus, vityan666, ... + + +SEE ALSO + vlmcsd(7), vlmcsd(8), vlmcsdmulti(1) + + + +Hotbird64 February 2015 VLMCS(1) diff --git a/vlmcs.1.html b/vlmcs.1.html new file mode 100644 index 00000000..aa9b083d --- /dev/null +++ b/vlmcs.1.html @@ -0,0 +1,515 @@ + + + + + + + + + +VLMCS + + + + +

VLMCS

+ +NAME
+SYNOPSIS
+DESCRIPTION
+OPTIONS
+FILES
+EXAMPLES
+BUGS
+AUTHOR
+CREDITS
+SEE ALSO
+ +
+ + +

NAME + +

+ + +

vlmcs − a +client for testing and/or charging KMS servers

+ +

SYNOPSIS + +

+ + +

vlmcs [ +options ] [ target ] [ options ]

+ +

target +can be one of the following:

+ + +

hostname|ipaddress[:tcp-port] +or to query a specific KMS server (example: vlmcs +kms.example.com:1688).
+.domain to automatically detect KMS servers via DNS +for domain (example: vlmcs .example.com). Please note +the dot before domain.
+-
(a single dash) to detect KMS servers in your own +domain.

+ +

If you use +ipaddress:port as the target, the +ipaddress must be enclosed in brackets if it contains +colons, e.g. [2001:db8:dead:beef::1]:1688. If you use a +link-local IPv6 address on Unix systems, you must append a +percent sign and the interface identifier of the source +interface, for example fe80::dead:beef%eth0.

+ +

If you omit the +target, 127.0.0.1:1688 will be used except if you use +-i6. In this case the default target is +[::1]:1688.

+ +

DESCRIPTION + +

+ + +

vlmcs is +a program that can be used to test a KMS server that +provides activation for several Microsoft products. The KMS +server may also be an emulator. It supports KMS protocol +versions 4, 5 and 6.

+ +

vlmcs +generates one or more activation requests for a Microsoft +KMS product and sends it to a KMS server. It then analyzes +and displays the responses of the KMS server.

+ +

vlcms +checks both the DCE-RPC protocol and the activation message +for correctness and reports any errors that it finds.

+ +

vlmcs +can also be used to "charge" a KMS server. A +Microsoft KMS server sends correct activation messages only +if it detects a certain minimum of clients (25 for Windows +client OSses, 5 otherwise) on the network. This is +Microsoft’s futile attempt to prevent running a KMS +server in a home environment.

+ +

OPTIONS + +

+ + +

-h or +-?

+ +

Show help.

+ + + + + + + + + + + + + + + + + +
+ + +

-x

+ + +

Show valid applications that can be used with +-l.

+ + +

-e

+ + +

Show some examples how to use vlmcs correctly.

+ + +

-v

+ + +

Be verbose. Instead of just displaying the returned ePID +and the HwId (protocol v6 only) vlmcsd shows all details of +the query and the response.

+ +

-l +application

+ +

Request activation for a +specific application. Valid applications can be +displayed by using -x. The default application +is Windows Vista Business. The list of available +applications is not complete. You may supply GUIDs with +-a, -k and -s to specify applications +that are not listed with -x. The -l option is +used as a shortcut for the most common applications.

+ +

-4, -5 and +-6

+ +

Force version 4, 5 or 6 of the +KMS protocol. The default is to select a suitable version +according to the application selected. Plese note +that some products (e.g. Office 2013) may use different +protocols with different versions of Windows.

+ + + + + + + + + + + + +
+ + +

-m

+ + +

Let the client pretend to be a virtual machine. Early +versions of Microsoft’s KMS server did not increase +the client count if the request came from a virtual machine. +Newer versions ignore this flag.

+ + +

-d

+ + +

Use NetBIOS names instead of DNS names. By default +vlmcsd generates some random DNS names for each request. If +you prefer NetBIOS names, you may use -d. A real +Microsoft activation client uses DNS names or NetBIOS +depending on the client name configuration. KMS servers +treat the workstation name as a comment that affects logging +only. Clients will be identified by a GUID that can be +specified using -c. -d has no effect if you +also specify -w.

+ +

-a +application-guid

+ +

Send requests with a specific +application-guid. There are currently only three +known valid application-guids:

+ + +

55c92734-d682-4d71-983e-d6ec3f16059f +(Windows)
+59a52881-a989-479d-af46-f275c6370663 (Office 2010)
+0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013)

+ +

A Microsoft KMS +server uses these GUIDs to have seperate counters for the +already activated clients. A client that does not contact +the KMS server within 30 days will be deleted from the +database. Emulated KMS servers are always fully charged.

+ +

-k kms-guid

+ +

Send requests with a specific +kms-guid. A Microsoft KMS server uses these GUIDs as +a product id to decide whether to grant activation or not. A +list of current kms-guids can be found in kms.c +(table KmsIdList). Emulated KMS servers grant activation +unconditionally and do not check the kms-guid.

+ +

-s +activation-guid

+ +

The activation-guid +defines the actual product, e.g. "Windows 8.1 +Professional WMC KMSCLIENT edition". A +activation-guid maps 1:1 to a product key. However, +neither a Microsoft KMS server nor emulated servers check +this id. The activation-guid is useful in logging to +get a specific product description like "Windows 8.1 +Professional WMC". A list of current +activation-guids can be found in kms.c (table +ExtendedProductList).

+ +

-n requests

+ +

Send requests requests +to the server. The default is to send at least one request +and enough subsequent requests that the server is fully +charged afterwards for the application−guid you +selected (explicitly with -a or implicitly by using +-l).

+ + + + + + + +
+ + +

-T

+ + +

Causes to use a new TCP connection for each request if +multiple requests are sent with vlmcsd. This is useful when +you want to test an emulated KMS server whether it suffers +from memory leaks. To test for memory leaks use -n +with a large number of requests (> 100000) and then test +twice (with and without -T). This option may become +neccessary for future versions of Microsoft’s KMS +server because multiple requests with different +clients-guids for the same kms-id-guid are +impossible in a real KMS szenario over the same TCP +connection.

+ +

-c +client-machine-guid

+ +

Normally vlmcs generates a +random client-machine-guid for each request. By using +this option you can specify a fixed +client-machine-guid This causes a Microsoft KMS not +to increment its client count because it receives multiple +requests for the same client. Thus do not use -c if +you want to charge a real KMS server.

+ +

-o +previous-client-machine-guid

+ +

If the +client-machine-guid changes for some reason, the real +KMS client stores a previous-client-machine-guid +which is sent to the KMS server. This happens rarely and +usually 00000000-0000-0000-0000-000000000000 is used. You +can use -o to specify a different +previous-client-machine-guid.

+ +

-G filename

+ +

Grabs ePIDs and HWIDs from a +KMS server and writes the information to filename in +format suitable to be used as a configuration file (aka ini +file) for vlmcsd(8). This is especially useful if you +have access to a genuine KMS server and want to use the same +data with vlmcsd(8).

+ +

If +filename does not exist, it will be created. If you +specify an existing filename, it will be updated to +use the information received from the remote KMS server and +a backup filename~ will be created.

+ +

-G +cannot be used with -l, -4, -5, +-6, -a, -s, -k, -r and +-n

+ +

-w +workstation-name

+ +

Send requests with a specific +workstation-name. This disables the random generator +for the workstation name. Since it is a comment only, this +option does not have much effect.

+ +

-r +required-client-count

+ +

Also known as the "N count +policy". Tells the KMS server that successful +activation requires required-client-count clients. +The default is the required-client-count that the +product would need if the request was a real activation. A +Microsoft KMS server counts clients up to the double amount +what was specified with -r. This option can be used +to "overcharge" a Microsoft KMS server.

+ + +

−t status

+ +

Reports a specific license +status to the KMS server. status is a number that can +be from 0 to 6. 0=unlicensed, 1=licensed, 2=OOB grace, 3=OOT +grace, 4=Non-genuinue grace, 5=notification, 6=extended +grace. Refer to +TechNet +for more information. A Microsoft KMS server collects this +information for statistics only.

+ +

-g +binding-expiration

+ +

This tells the KMS server how +long a client will stay in its current license status. This +can be the remaining OOB time (the grace peroid that is +granted between installation of a product and when +activation is actuall required) or the remaining time when +KMS activation must be renewed. binding-expiration is +specified in minutes. A Microsoft KMS server apparantly does +not use this information.

+ +

-i +protocol-version

+ +

Force the use of Internet +protocol protocol-version. Allowed values are 4 +(IPv4) and 6 (IPv6). This option is useful only if you +specfiy a hostname and not an ip-address on +the command line.

+ + + + + + + +
+ + +

-p

+ + +

Do not set the RPC_PF_MULTIPLEX flag in the RPC bind +request. This can be used to test if the KMS server uses the +same setting of this flag in the RPC bind respone. Some KMS +emulators don’t set this correctly.

+ +

-N0 and -N1

+ +

Disables (-N0) or +enables (-N1) the NDR64 transfer syntax in the RPC +protocol. Disable NDR64 only in case of problems. If NDR64 +is not used, vlmcs cannot detect many RPC protocol errors in +KMS emulators. If you want to test whether a KMS emulator +fully supports NDR64, you must use the -n option to +send at least two requests. This is because +Microsoft’s client always sends the first request +using NDR32 syntax and subsequent requests using NDR64 +syntax.

+ +

-B0 and -B1

+ +

Disables (-B0) or +enables (-B1) bind time feature negotiation (BTFN) in +the RPC protocol. Disable BTFN only in case of problems. If +BTFN is not used, vlmcs cannot detect many RPC protocol +errors in KMS emulators.

+ +

Options that do +not require an argument can be specified together with a +single dash, e.g. vlmcs -6mvT. If you specify an option more +than once, the last occurence will be in effect.

+ +

FILES + +

+ + + +

vlmcsd.ini(5)

+ +

EXAMPLES + +

+ + +

vlmcs +kms.example.com

+ +

Request activation for Windows +Vista using v4 protocol from kms.example.com. Repeat +activation requests until server is charged for all Windows +products.

+ +

vlmcs -

+ +

Request activation for Windows +Vista using v4 protocol from a KMS server that is published +via DNS for the current domain.

+ +

vlmcs .example.com

+ +

Request activation for Windows +Vista using v4 protocol from a KMS server that is published +via DNS for domain example.com.

+ +

vlmcs -6 -l Office2013 -v -n +1

+ +

Request exactly one activation +for Office2013 using v6 protocol from localhost. Display +verbose results.

+ +

vlmcs kms.bigcompany.com -G +/etc/vlmcsd.ini

+ +

Get ePIDs and HWIDs from +kms.bigcompany.com and create/update /etc/vlmcsd.ini +accordingly.

+ +

BUGS + +

+ + +

Some platforms +(e.g. Solaris) may have a man(7) system that does not +handle URLs. URLs may be omitted in the documentation on +those platforms. Cygwin, Linux, FreeBSD and Mac OS X are +known to work correctly.

+ +

AUTHOR + +

+ + +

Written by +Hotbird64

+ +

CREDITS + +

+ + +

Thanks to +CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, +nosferati87, qad, Ratiborus, vityan666, ...

+ +

SEE ALSO + +

+ + + +

vlmcsd(7), +vlmcsd(8), vlmcsdmulti(1)

+
+ + diff --git a/vlmcs.1.pdf b/vlmcs.1.pdf new file mode 100644 index 00000000..bbb22867 Binary files /dev/null and b/vlmcs.1.pdf differ diff --git a/vlmcs.1.unix.txt b/vlmcs.1.unix.txt new file mode 100644 index 00000000..f6706d88 --- /dev/null +++ b/vlmcs.1.unix.txt @@ -0,0 +1,305 @@ +VLMCS(1) KMS Activation Manual VLMCS(1) + + + +NAME + vlmcs - a client for testing and/or charging KMS servers + + +SYNOPSIS + vlmcs [ options ] [ target ] [ options ] + + target can be one of the following: + + hostname|ipaddress[:tcp-port] or to query a specific KMS server + (example: vlmcs kms.example.com:1688). + .domain to automatically detect KMS servers via DNS for domain + (example: vlmcs .example.com). Please note the dot before + domain. + - (a single dash) to detect KMS servers in your own domain. + + If you use ipaddress:port as the target, the ipaddress must be enclosed + in brackets if it contains colons, e.g. [2001:db8:dead:beef::1]:1688. + If you use a link-local IPv6 address on Unix systems, you must append a + percent sign and the interface identifier of the source interface, for + example fe80::dead:beef%eth0. + + If you omit the target, 127.0.0.1:1688 will be used except if you use + -i6. In this case the default target is [::1]:1688. + + +DESCRIPTION + vlmcs is a program that can be used to test a KMS server that provides + activation for several Microsoft products. The KMS server may also be + an emulator. It supports KMS protocol versions 4, 5 and 6. + + vlmcs generates one or more activation requests for a Microsoft KMS + product and sends it to a KMS server. It then analyzes and displays the + responses of the KMS server. + + vlcms checks both the DCE-RPC protocol and the activation message for + correctness and reports any errors that it finds. + + vlmcs can also be used to "charge" a KMS server. A Microsoft KMS server + sends correct activation messages only if it detects a certain minimum + of clients (25 for Windows client OSses, 5 otherwise) on the network. + This is Microsoft's futile attempt to prevent running a KMS server in a + home environment. + + +OPTIONS + -h or -? + Show help. + + + -x Show valid applications that can be used with -l. + + + -e Show some examples how to use vlmcs correctly. + + + -v Be verbose. Instead of just displaying the returned ePID and the + HwId (protocol v6 only) vlmcsd shows all details of the query + and the response. + + + -l application + Request activation for a specific application. Valid applica‐ + tions can be displayed by using -x. The default application is + Windows Vista Business. The list of available applications is + not complete. You may supply GUIDs with -a, -k and -s to specify + applications that are not listed with -x. The -l option is used + as a shortcut for the most common applications. + + + -4, -5 and -6 + Force version 4, 5 or 6 of the KMS protocol. The default is to + select a suitable version according to the application selected. + Plese note that some products (e.g. Office 2013) may use differ‐ + ent protocols with different versions of Windows. + + + -m Let the client pretend to be a virtual machine. Early versions + of Microsoft's KMS server did not increase the client count if + the request came from a virtual machine. Newer versions ignore + this flag. + + + -d Use NetBIOS names instead of DNS names. By default vlmcsd gener‐ + ates some random DNS names for each request. If you prefer Net‐ + BIOS names, you may use -d. A real Microsoft activation client + uses DNS names or NetBIOS depending on the client name configu‐ + ration. KMS servers treat the workstation name as a comment that + affects logging only. Clients will be identified by a GUID that + can be specified using -c. -d has no effect if you also specify + -w. + + + -a application-guid + Send requests with a specific application-guid. There are cur‐ + rently only three known valid application-guids: + + + 55c92734-d682-4d71-983e-d6ec3f16059f (Windows) + 59a52881-a989-479d-af46-f275c6370663 (Office 2010) + 0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013) + + + A Microsoft KMS server uses these GUIDs to have seperate coun‐ + ters for the already activated clients. A client that does not + contact the KMS server within 30 days will be deleted from the + database. Emulated KMS servers are always fully charged. + + + -k kms-guid + Send requests with a specific kms-guid. A Microsoft KMS server + uses these GUIDs as a product id to decide whether to grant + activation or not. A list of current kms-guids can be found in + kms.c (table KmsIdList). Emulated KMS servers grant activation + unconditionally and do not check the kms-guid. + + + -s activation-guid + The activation-guid defines the actual product, e.g. "Windows + 8.1 Professional WMC KMSCLIENT edition". A activation-guid maps + 1:1 to a product key. However, neither a Microsoft KMS server + nor emulated servers check this id. The activation-guid is use‐ + ful in logging to get a specific product description like "Win‐ + dows 8.1 Professional WMC". A list of current activation-guids + can be found in kms.c (table ExtendedProductList). + + + -n requests + Send requests requests to the server. The default is to send at + least one request and enough subsequent requests that the server + is fully charged afterwards for the application-guid you + selected (explicitly with -a or implicitly by using -l). + + + -T Causes to use a new TCP connection for each request if multiple + requests are sent with vlmcsd. This is useful when you want to + test an emulated KMS server whether it suffers from memory + leaks. To test for memory leaks use -n with a large number of + requests (> 100000) and then test twice (with and without -T). + This option may become neccessary for future versions of Micro‐ + soft's KMS server because multiple requests with different + clients-guids for the same kms-id-guid are impossible in a real + KMS szenario over the same TCP connection. + + + -c client-machine-guid + Normally vlmcs generates a random client-machine-guid for each + request. By using this option you can specify a fixed client- + machine-guid This causes a Microsoft KMS not to increment its + client count because it receives multiple requests for the same + client. Thus do not use -c if you want to charge a real KMS + server. + + + -o previous-client-machine-guid + If the client-machine-guid changes for some reason, the real KMS + client stores a previous-client-machine-guid which is sent to + the KMS server. This happens rarely and usually + 00000000-0000-0000-0000-000000000000 is used. You can use -o to + specify a different previous-client-machine-guid. + + + -G filename + Grabs ePIDs and HWIDs from a KMS server and writes the informa‐ + tion to filename in format suitable to be used as a configura‐ + tion file (aka ini file) for vlmcsd(8). This is especially use‐ + ful if you have access to a genuine KMS server and want to use + the same data with vlmcsd(8). + + If filename does not exist, it will be created. If you specify + an existing filename, it will be updated to use the information + received from the remote KMS server and a backup filename~ will + be created. + + -G cannot be used with -l, -4, -5, -6, -a, -s, -k, -r and -n + + + -w workstation-name + Send requests with a specific workstation-name. This disables + the random generator for the workstation name. Since it is a + comment only, this option does not have much effect. + + + -r required-client-count + Also known as the "N count policy". Tells the KMS server that + successful activation requires required-client-count clients. + The default is the required-client-count that the product would + need if the request was a real activation. A Microsoft KMS + server counts clients up to the double amount what was specified + with -r. This option can be used to "overcharge" a Microsoft KMS + server. + + + -t status + Reports a specific license status to the KMS server. status is a + number that can be from 0 to 6. 0=unlicensed, 1=licensed, 2=OOB + grace, 3=OOT grace, 4=Non-genuinue grace, 5=notification, + 6=extended grace. Refer to TechNet ⟨http:// + technet.microsoft.com/en-us/library/ff686879.aspx#_Toc257201371⟩ + for more information. A Microsoft KMS server collects this + information for statistics only. + + + -g binding-expiration + This tells the KMS server how long a client will stay in its + current license status. This can be the remaining OOB time (the + grace peroid that is granted between installation of a product + and when activation is actuall required) or the remaining time + when KMS activation must be renewed. binding-expiration is + specified in minutes. A Microsoft KMS server apparantly does not + use this information. + + + -i protocol-version + Force the use of Internet protocol protocol-version. Allowed + values are 4 (IPv4) and 6 (IPv6). This option is useful only if + you specfiy a hostname and not an ip-address on the command + line. + + + -p Do not set the RPC_PF_MULTIPLEX flag in the RPC bind request. + This can be used to test if the KMS server uses the same setting + of this flag in the RPC bind respone. Some KMS emulators don't + set this correctly. + + + -N0 and -N1 + Disables (-N0) or enables (-N1) the NDR64 transfer syntax in the + RPC protocol. Disable NDR64 only in case of problems. If NDR64 + is not used, vlmcs cannot detect many RPC protocol errors in KMS + emulators. If you want to test whether a KMS emulator fully sup‐ + ports NDR64, you must use the -n option to send at least two + requests. This is because Microsoft's client always sends the + first request using NDR32 syntax and subsequent requests using + NDR64 syntax. + + + -B0 and -B1 + Disables (-B0) or enables (-B1) bind time feature negotiation + (BTFN) in the RPC protocol. Disable BTFN only in case of prob‐ + lems. If BTFN is not used, vlmcs cannot detect many RPC protocol + errors in KMS emulators. + + + Options that do not require an argument can be specified together with + a single dash, e.g. vlmcs -6mvT. If you specify an option more than + once, the last occurence will be in effect. + + +FILES + vlmcsd.ini(5) + + +EXAMPLES + vlmcs kms.example.com + Request activation for Windows Vista using v4 protocol from + kms.example.com. Repeat activation requests until server is + charged for all Windows products. + + + vlmcs - + Request activation for Windows Vista using v4 protocol from a + KMS server that is published via DNS for the current domain. + + + vlmcs .example.com + Request activation for Windows Vista using v4 protocol from a + KMS server that is published via DNS for domain example.com. + + + vlmcs -6 -l Office2013 -v -n 1 + Request exactly one activation for Office2013 using v6 protocol + from localhost. Display verbose results. + + + vlmcs kms.bigcompany.com -G /etc/vlmcsd.ini + Get ePIDs and HWIDs from kms.bigcompany.com and create/update + /etc/vlmcsd.ini accordingly. + + +BUGS + Some platforms (e.g. Solaris) may have a man(7) system that does not + handle URLs. URLs may be omitted in the documentation on those plat‐ + forms. Cygwin, Linux, FreeBSD and Mac OS X are known to work correctly. + + +AUTHOR + Written by Hotbird64 + + +CREDITS + Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nos‐ + ferati87, qad, Ratiborus, vityan666, ... + + +SEE ALSO + vlmcsd(7), vlmcsd(8), vlmcsdmulti(1) + + + +Hotbird64 February 2015 VLMCS(1) diff --git a/vlmcs.c b/vlmcs.c new file mode 100644 index 00000000..db6a60fd --- /dev/null +++ b/vlmcs.c @@ -0,0 +1,1310 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include "vlmcs.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include +#include +#else // _WIN32 +#endif // _WIN32 +#include "endian.h" +#include "shared_globals.h" +#include "output.h" +#ifndef USE_MSRPC +#include "network.h" +#include "rpc.h" +#else // USE_MSRPC +#include "msrpc-client.h" +#endif // USE_MSRPC +#include "kms.h" +#include "helpers.h" +#include "dns_srv.h" + + +#define VLMCS_OPTION_GRAB_INI 1 +#define VLMCS_OPTION_NO_GRAB_INI 2 + +#define kmsVersionMinor 0 // Currently constant. May change in future KMS versions + +// Function Prototypes +static void CreateRequestBase(REQUEST *Request); + + +// KMS Parameters +static int_fast8_t verbose = FALSE; +static int_fast8_t VMInfo = FALSE; +static int_fast8_t dnsnames = TRUE; +static int FixedRequests = 0; +static BYTE LicenseStatus = 0x02; +static const char *CMID = NULL; +static const char *CMID_prev = NULL; +static const char *WorkstationName = NULL; +static int BindingExpiration = 43200; //30 days +static const char *RemoteAddr; +static int_fast8_t ReconnectForEachRequest = FALSE; +static int AddressFamily = AF_UNSPEC; +static int_fast8_t incompatibleOptions = 0; +static const char* fn_ini_client = NULL; + +#ifndef NO_DNS +static int_fast8_t NoSrvRecordPriority = FALSE; +#endif // NO_DNS + + +// Structure for handling "License Packs" (e.g. Office2013v5 or WindowsVista) +typedef struct +{ + const char *names; //This is a list of strings. Terminate with additional Zero!!! + int N_Policy; + int kmsVersionMajor; + const GUID *AppID; + GUID ActID; + GUID KMSID; +} LicensePack; + + +typedef char iniFileEpidLines[3][256]; + +// Well known "license packs" +static const LicensePack LicensePackList[] = +{ + // List of names min lics version appID skuId KMSCountedID + /* 000 */ { "Vista\000W6\000" + "WindowsVista\000" + "Windows\000", 25, 4, PWINGUID, { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } }, { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } }, + /* 001 */ { "W7\000Windows7\000", 25, 4, PWINGUID, { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } }, { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } }, + /* 002 */ { "W8\000Windows8\000", 25, 5, PWINGUID, { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } }, { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } }, + /* 003 */ { "W8C\000Windows8C\000", 25, 5, PWINGUID, { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } }, { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } }, + /* 004 */ { "W81\000Windows81\000", 25, 6, PWINGUID, { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } }, { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } }, + /* 005 */ { "W81C\000Windows81C\000", 25, 6, PWINGUID, { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } }, { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } }, + /* 006 */ { "W10\000Windows10\000", 25, 6, PWINGUID, { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } }, { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } }, + /* 007 */ { "W10C\000Windows10C\000", 25, 6, PWINGUID, { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } }, { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } }, + /* 008 */ { "2008" "\0" "2008A\000", 5, 4, PWINGUID, { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } }, { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } }, + /* 009 */ { "2008B\000", 5, 4, PWINGUID, { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } }, { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } }, + /* 010 */ { "2008C\000", 5, 4, PWINGUID, { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } }, { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } }, + /* 011 */ { "2008R2" "\0" "2008R2A\000", 5, 4, PWINGUID, { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } }, { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } }, + /* 012 */ { "2008R2B\000", 5, 4, PWINGUID, { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } }, { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } }, + /* 013 */ { "2008R2C\000", 5, 4, PWINGUID, { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } }, { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } }, + /* 014 */ { "2012\000", 5, 5, PWINGUID, { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } }, { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } }, + /* 015 */ { "2012R2\000" "12R2\000", 5, 6, PWINGUID, { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } }, { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } }, + /* 016 */ { "Office2010\000O14\000", 5, 4, POFFICE2010GUID, { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } }, { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } }, + /* 017 */ { "Office2013\000O15\000", 5, 6, POFFICE2013GUID, { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } }, { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } }, + /* 018 */ { "Office2013V5\000", 5, 5, POFFICE2013GUID, { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } }, { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } }, + /* 019 */ { "Office2016\000" "O16\000", 5, 6, POFFICE2013GUID, { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } }, { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } }, + /* 020 */ { NULL, 0, 0, NULL, { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } } } +}; + + +typedef struct +{ + const char* first[16]; + const char* second[16]; + const char* tld[22]; +} DnsNames; + + +// Some names for the DNS name random generator +static DnsNames ClientDnsNames = +{ + { "www", "ftp", "kms", "hack-me", "smtp", "ns1", "mx1", "ns1", "pop3", "imap", "mail", "dns", "headquarter", "we-love", "_vlmcs._tcp", "ceo-laptop" }, + { ".microsoft", ".apple", ".amazon", ".samsung", ".adobe", ".google", ".yahoo", ".facebook", ".ubuntu", ".oracle", ".borland", ".htc", ".acer", ".windows", ".linux", ".sony" }, + { ".com", ".net", ".org", ".cn", ".co.uk", ".de", ".com.tw", ".us", ".fr", ".it", ".me", ".info", ".biz", ".co.jp", ".ua", ".at", ".es", ".pro", ".by", ".ru", ".pl", ".kr" } +}; + + +// This is the one, we are actually using. We use Vista, if user selects nothing +LicensePack ActiveLicensePack; + + +// Request Count Control Variables +static int RequestsToGo = 1; +static BOOL firstRequestSent = FALSE; + + +static void string2UuidOrExit(const char *const restrict input, GUID *const restrict guid) +{ + if (strlen(input) != GUID_STRING_LENGTH || !string2Uuid(input, guid)) + { + errorout("Fatal: Command line contains an invalid GUID.\n"); + exit(!0); + } +} + + +#ifndef NO_HELP + +__noreturn static void clientUsage(const char* const programName) +{ + errorout( + "vlmcs %s \n\n" +# ifndef NO_DNS + "Usage: %s [options] [ [:] | . | - ] [options]\n\n" +# else // DNS + "Usage: %s [options] [[:]] [options]\n\n" +# endif // DNS + + "Options:\n\n" + + " -v Be verbose\n" + " -l \n" + " -4 Force V4 protocol\n" + " -5 Force V5 protocol\n" + " -6 Force V6 protocol\n" +# ifndef USE_MSRPC + " -i Use IP protocol (4 or 6)\n" +# endif // USE_MSRPC + " -e Show some valid examples\n" + " -x Show valid Apps\n" + " -d no DNS names, use Netbios names (no effect if -w is used)\n\n" + + "Advanced options:\n\n" + + " -a Use custom Application GUID\n" + " -s Use custom Activation Configuration GUID\n" + " -k Use custom KMS GUID\n" + " -c Use custom Client GUID. Default: Use random\n" + " -o Use custom Prevoius Client GUID. Default: ZeroGUID\n" + " -w Use custom workstation name. Default: Use random\n" + " -r Fake required clients\n" + " -n Fixed # of requests (Default: Enough to charge)\n" + " -m Pretend to be a virtual machine\n" + " -G Get ePID/HwId data and write to . Can't be used with -l, -4, -5, -6, -a, -s, -k, -r and -n\n" +# ifndef USE_MSRPC + " -T Use a new TCP connection for each request.\n" + " -N <0|1> disable or enable NDR64. Default: 1\n" + " -B <0|1> disable or enable RPC bind time feature negotiation. Default: 1\n" +# endif // USE_MSRPC + " -t Use specfic license status (0 <= T <= 6)\n" + " -g Use a specfic binding expiration time in minutes. Default 43200\n" +# ifndef NO_DNS + " -P Ignore priority and weight in DNS SRV records\n" +# endif // NO_DNS +# ifndef USE_MSRPC + " -p Don't use multiplexed RPC bind\n" +# endif // USE_MSRPC + "\n" + + ":\t\tTCP port name of the KMS to use. Default 1688.\n" + ":\t\thost name of the KMS to use. Default 127.0.0.1\n" +# ifndef NO_DNS + ".:\tfind KMS server in via DNS\n" +# endif // NO_DNS + ":\t\t(Type %s -x to see a list of valid apps)\n\n", + Version, programName, programName + ); + + exit(!0); +} + +__pure static int getLineWidth(void) +{ + #ifdef TERMINAL_FIXED_WIDTH // For Toolchains that to not have winsize + return TERMINAL_FIXED_WIDTH; + #else // Can determine width of terminal + #ifndef _WIN32 + + struct winsize w; + + if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &w)) + { + return 80; // Return this if stdout is not a tty + } + + return w.ws_col; + + #else // _WIN32 + + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); + + if (!GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) + { + return 80; // Return this if stdout is not a Console + } + + return csbiInfo.srWindow.Right - csbiInfo.srWindow.Left; + + #endif // WIN32 + + #endif // Can determine width of terminal + +} + +__noreturn static void showProducts(PRINTFUNC p) +{ + int cols = getLineWidth(); + int itemsPerLine; + uint8_t i; + + p( + "The following " + #if !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + "aliases " + #else + "names " + #endif + "can be used with -l:\n\n" + ); + + const LicensePack* lp; + + itemsPerLine = cols / 20; + if (!itemsPerLine) itemsPerLine = 1; + + for (i = 1, lp = LicensePackList; lp->names; lp++) + { + const char* name; + + for (name = lp->names; *name; name += strlen(name) + 1, i++) + { + p("%-20s", name); + + if (!(i % itemsPerLine)) p("\n"); + } + } + + p("\n\n"); + + #if !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + + const KmsIdList* currentProduct; + uint_fast8_t longestString = 0; + uint8_t k, items = getExtendedProductListSize(); + + p("You may also use these product names or numbers:\n\n"); + + for (currentProduct = ExtendedProductList; currentProduct->name; currentProduct++) + { + uint_fast8_t len = strlen(currentProduct->name); + + if (len > longestString) + longestString = len; + } + + itemsPerLine = cols / (longestString + 10); + if (!itemsPerLine) itemsPerLine = 1; + uint8_t lines = items / itemsPerLine; + if (items % itemsPerLine) lines++; + + for (i = 0; i < lines; i++) + { + for (k = 0; k < itemsPerLine; k++) + { + uint8_t j; + uint8_t index = k * lines + i; + + if (index >= items) break; + + p("%3u = %s", index + 1, ExtendedProductList[index].name); + + for (j = 0; j < longestString + 4 - strlen(ExtendedProductList[index].name); j++) + { + p(" "); + } + } + + p("\n"); + } + + p("\n"); + + #endif // !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + + exit(0); +} + +__noreturn static void examples(const char* const programName) +{ + printf( + "\nRequest activation for Office2013 using V4 protocol from 192.168.1.5:1688\n" + "\t%s -l O15 -4 192.168.1.5\n" + "\t%s -l O15 -4 192.168.1.5:1688\n\n" + + "Request activation for Windows Server 2012 using V4 protocol from localhost:1688\n" + "\t%s -4 -l Windows -k 8665cb71-468c-4aa3-a337-cb9bc9d5eaac\n" + "\t%s -4 -l 2012\n" + "\t%s -4 -l 2012 [::1]:1688\n" + "\t%s -4 -l 12 127.0.0.2:1688\n\n" + + "Send 100,000 requests to localhost:1688\n" + "\t%s -n 100000 -l Office2010\n\n" + + "Request Activation for Windows 8 from 10.0.0.1:4711 and pretend to be Steve Ballmer\n" + "\t%s -l Windows8 -w steveb1.redmond.microsoft.com 10.0.0.1:4711\n\n", + programName, programName, programName, programName, programName, programName, programName, programName + ); + + exit(0); +} + + +#else // NO_HELP + + +__noreturn static void clientUsage(const char* const programName) +{ + errorout("Incorrect parameter specified.\n"); + exit(!0); +} + + +#endif // NO_HELP + + +static BOOL findLicensePackByName(const char* const name, LicensePack* const lp) +{ + // Try to find a package in the short list first + + LicensePack *licensePack; + for (licensePack = (LicensePack*)&LicensePackList; licensePack->names; licensePack ++) + { + const char *currentName; + for (currentName = licensePack->names; *currentName; currentName += strlen(currentName) + 1) + { + if (!strcasecmp(name, currentName)) + { + *lp = *licensePack; + return TRUE; + } + } + } + + #if defined(NO_BASIC_PRODUCT_LIST) || defined(NO_EXTENDED_PRODUCT_LIST) + + return FALSE; + + #else // Both Lists are available + + // search extended product list + + uint8_t items = getExtendedProductListSize(); + unsigned int index; + + if (stringToInt(name, 1, items, &index)) + { + index--; + } + else + { + for (index = 0; index < items; index++) + { + if (!strcasecmp(ExtendedProductList[index].name, name)) break; + } + + if (index >= items) return FALSE; + } + + lp->AppID = &AppList[ExtendedProductList[index].AppIndex].guid; + lp->KMSID = ProductList[ExtendedProductList[index].KmsIndex].guid; + lp->ActID = ExtendedProductList[index].guid; + lp->N_Policy = ProductList[ExtendedProductList[index].KmsIndex].KMS_PARAM_REQUIREDCOUNT; + lp->kmsVersionMajor = ProductList[ExtendedProductList[index].KmsIndex].KMS_PARAM_MAJOR; + + return TRUE; + + #endif // Both Lists are available +} + +static const char* const client_optstring = "+N:B:i:l:a:s:k:c:w:r:n:t:g:G:o:pPTv456mexd"; + + +//First pass. We handle only "-l". Since -a -k -s -4 -5 and -6 are exceptions to -l, we process -l first +static void parseCommandLinePass1(const int argc, CARGV argv) +{ + int o; + optReset(); + + for (opterr = 0; ( o = getopt(argc, (char* const*)argv, client_optstring) ) > 0; ) switch (o) + { + case 'l': // Set "License Pack" and protocol version (e.g. Windows8, Office2013v5, ...) + + if (!findLicensePackByName(optarg, &ActiveLicensePack)) + { + errorout("Invalid client application. \"%s\" is not valid for -l.\n\n", optarg); + #ifndef NO_HELP + showProducts(&errorout); + #endif // !NO_HELP + } + + break; + + default: + break; + } +} + + +// Second Pass. Handle all options except "-l" +static void parseCommandLinePass2(const char *const programName, const int argc, CARGV argv) +{ + int o; + optReset(); + + for (opterr = 0; ( o = getopt(argc, (char* const*)argv, client_optstring) ) > 0; ) switch (o) + { + #ifndef NO_HELP + + case 'e': // Show examples + + examples(programName); + break; + + case 'x': // Show Apps + + showProducts(&printf); + break; + + #endif // NO_HELP + +# ifndef NO_DNS + + case 'P': + + NoSrvRecordPriority = TRUE; + break; + +# endif // NO_DNS + + case 'G': + + incompatibleOptions |= VLMCS_OPTION_GRAB_INI; + fn_ini_client = optarg; + break; + +# ifndef USE_MSRPC + + case 'N': + if (!getArgumentBool(&UseRpcNDR64, optarg)) clientUsage(programName); + break; + + case 'B': + if (!getArgumentBool(&UseRpcBTFN, optarg)) clientUsage(programName); + break; + + case 'i': + + switch(getOptionArgumentInt(o, 4, 6)) + { + case 4: + AddressFamily = AF_INET; + break; + case 6: + AddressFamily = AF_INET6; + break; + default: + errorout("IPv5 does not exist.\n"); + exit(!0); + break; + } + + break; + + case 'p': // Multiplexed RPC + + UseMultiplexedRpc = FALSE; + break; + +# endif // USE_MSRPC + + case 'n': // Fixed number of Requests (regardless, whether they are required) + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + FixedRequests = getOptionArgumentInt(o, 1, INT_MAX); + break; + + case 'r': // Fake minimum required client count + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.N_Policy = getOptionArgumentInt(o, 1, INT_MAX); + break; + + case 'c': // use a specific client GUID + + // If using a constant Client ID, send only one request unless /N= explicitly specified + if (!FixedRequests) FixedRequests = 1; + + CMID = optarg; + break; + + case 'o': // use a specific previous client GUID + + CMID_prev = optarg; + break; + + case 'a': // Set specific App Id + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.AppID = (GUID*)vlmcsd_malloc(sizeof(GUID)); + + string2UuidOrExit(optarg, (GUID*)ActiveLicensePack.AppID); + break; + + case 'g': // Set custom "grace" time in minutes (default 30 days) + + BindingExpiration = getOptionArgumentInt(o, 0, INT_MAX); + break; + + case 's': // Set specfic SKU ID + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + string2UuidOrExit(optarg, &ActiveLicensePack.ActID); + break; + + case 'k': // Set specific KMS ID + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + string2UuidOrExit(optarg, &ActiveLicensePack.KMSID); + break; + + case '4': // Force V4 protocol + case '5': // Force V5 protocol + case '6': // Force V5 protocol + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.kmsVersionMajor = o - 0x30; + break; + + case 'd': // Don't use DNS names + + dnsnames = FALSE; + break; + + case 'v': // Be verbose + + verbose = TRUE; + break; + + case 'm': // Pretend to be a virtual machine + + VMInfo = TRUE; + break; + + case 'w': // WorkstationName (max. 63 chars) + + WorkstationName = optarg; + + if (strlen(WorkstationName) > 63) + { + errorout("\007WARNING! Truncating Workstation name to 63 characters (%s).\n", WorkstationName); + } + + break; + + case 't': + + LicenseStatus = getOptionArgumentInt(o, 0, 6) & 0xff; + break; + +# ifndef USE_MSRPC + + case 'T': + + ReconnectForEachRequest = TRUE; + break; + +# endif // USE_MSRPC + + case 'l': + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + break; + + default: + clientUsage(programName); + } + if ((incompatibleOptions & (VLMCS_OPTION_NO_GRAB_INI | VLMCS_OPTION_GRAB_INI)) == (VLMCS_OPTION_NO_GRAB_INI | VLMCS_OPTION_GRAB_INI)) + clientUsage(programName); +} + + +/* + * Compares 2 GUIDs where one is host-endian and the other is little-endian (network byte order) + */ +int_fast8_t IsEqualGuidLEHE(const GUID* const guid1, const GUID* const guid2) +{ + GUID tempGuid; + LEGUID(&tempGuid, guid2); + return IsEqualGUID(guid1, &tempGuid); +} + + +#ifndef USE_MSRPC +static void checkRpcLevel(const REQUEST* request, RESPONSE* response) +{ + if (!RpcFlags.HasNDR32) + errorout("\nWARNING: Server's RPC protocol does not support NDR32.\n"); + + if (UseRpcBTFN && UseRpcNDR64 && RpcFlags.HasNDR64 && !RpcFlags.HasBTFN) + errorout("\nWARNING: Server's RPC protocol has NDR64 but no BTFN.\n"); + + if (!IsEqualGuidLEHE(&request->KMSID, &ProductList[15].guid) && UseRpcBTFN && !RpcFlags.HasBTFN) + errorout("\nWARNING: A server with pre-Vista RPC activated a product other than Office 2010.\n"); +} +#endif // USE_MSRPC + + +static void displayResponse(const RESPONSE_RESULT result, const REQUEST* request, RESPONSE* response, BYTE *hwid) +{ + fflush(stdout); + + if (!result.RpcOK) errorout("\n\007ERROR: Non-Zero RPC result code.\n"); + if (!result.DecryptSuccess) errorout("\n\007ERROR: Decryption of V5/V6 response failed.\n"); + if (!result.IVsOK) errorout("\n\007ERROR: AES CBC initialization vectors (IVs) of request and response do not match.\n"); + if (!result.PidLengthOK) errorout("\n\007ERROR: The length of the PID is not valid.\n"); + if (!result.HashOK) errorout("\n\007ERROR: Computed hash does not match hash in response.\n"); + if (!result.ClientMachineIDOK) errorout("\n\007ERROR: Client machine GUIDs of request and response do not match.\n"); + if (!result.TimeStampOK) errorout("\n\007ERROR: Time stamps of request and response do not match.\n"); + if (!result.VersionOK) errorout("\n\007ERROR: Protocol versions of request and response do not match.\n"); + if (!result.HmacSha256OK) errorout("\n\007ERROR: Keyed-Hash Message Authentication Code (HMAC) is incorrect.\n"); + if (!result.IVnotSuspicious) errorout("\nWARNING: Response uses an IV following KMSv5 rules in KMSv6 protocol.\n"); + + if (result.effectiveResponseSize != result.correctResponseSize) + { + errorout("\n\007WARNING: Size of RPC payload (KMS Message) should be %u but is %u.", result.correctResponseSize, result.effectiveResponseSize); + } + +# ifndef USE_MSRPC + checkRpcLevel(request, response); +# endif // USE_MSRPC + + if (!result.DecryptSuccess) return; // Makes no sense to display anything + + char ePID[3 * PID_BUFFER_SIZE]; + if (!ucs2_to_utf8(response->KmsPID, ePID, PID_BUFFER_SIZE, 3 * PID_BUFFER_SIZE)) + { + memset(ePID + 3 * PID_BUFFER_SIZE - 3, 0, 3); + } + + // Read KMSPID from Response + if (!verbose) + { + printf(" -> %s", ePID); + + if (LE16(response->MajorVer) > 5) + { +# ifndef _WIN32 + printf(" (%016llX)", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + printf(" (%016I64X)", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // _WIN32 + } + + printf("\n"); + } + else + { + printf( + "\n\nResponse from KMS server\n========================\n\n" + "Size of KMS Response : %u (0x%x)\n", result.effectiveResponseSize, result.effectiveResponseSize + ); + + logResponseVerbose(ePID, hwid, response, &printf); + printf("\n"); + } +} + + +static void connectRpc(RpcCtx *s) +{ +# ifdef NO_DNS + + *s = connectToAddress(RemoteAddr, AddressFamily, FALSE); + if (*s == INVALID_RPCCTX) + { + errorout("Fatal: Could not connect to %s\n", RemoteAddr); + exit(!0); + } + + if (verbose) + printf("\nPerforming RPC bind ...\n"); + + if (rpcBindClient(*s, verbose)) + { + errorout("Fatal: Could not bind RPC\n"); + exit(!0); + } + + if (verbose) printf("... successful\n"); + +# else // DNS + + static kms_server_dns_ptr* serverlist = NULL; + static int numServers = 0; + //static int_fast8_t ServerListAlreadyPrinted = FALSE; + int i; + + if (!strcmp(RemoteAddr, "-") || *RemoteAddr == '.') // Get KMS server via DNS SRV record + { + if (!serverlist) + numServers = getKmsServerList(&serverlist, RemoteAddr); + + if (numServers < 1) + { + errorout("Fatal: No KMS servers found\n"); + exit(!0); + } + + if (!NoSrvRecordPriority) sortSrvRecords(serverlist, numServers); + + if (verbose /*&& !ServerListAlreadyPrinted*/) + { + for (i = 0; i < numServers; i++) + { + printf( + "Found %-40s (priority: %hu, weight: %hu, randomized weight: %i)\n", + serverlist[i]->serverName, + serverlist[i]->priority, serverlist[i]->weight, + NoSrvRecordPriority ? 0 : serverlist[i]->random_weight + ); + } + + printf("\n"); + //ServerListAlreadyPrinted = TRUE; + } + } + else // Just use the server supplied on the command line + { + if (!serverlist) + { + serverlist = (kms_server_dns_ptr*)vlmcsd_malloc(sizeof(kms_server_dns_ptr)); + *serverlist = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + numServers = 1; + strncpy((*serverlist)->serverName, RemoteAddr, sizeof((*serverlist)->serverName)); + } + } + + for (i = 0; i < numServers; i++) + { + *s = connectToAddress(serverlist[i]->serverName, AddressFamily, (*RemoteAddr == '.' || *RemoteAddr == '-')); + + if (*s == INVALID_RPCCTX) continue; + + if (verbose) + printf("\nPerforming RPC bind ...\n"); + + if (rpcBindClient(*s, verbose)) + { + errorout("Warning: Could not bind RPC\n"); + continue; + } + + if (verbose) printf("... successful\n"); + + return; + } + + errorout("Fatal: Could not connect to any KMS server\n"); + exit(!0); + +# endif // DNS +} + + +static int SendActivationRequest(const RpcCtx sock, RESPONSE *baseResponse, REQUEST *baseRequest, RESPONSE_RESULT *result, BYTE *const hwid) +{ + size_t requestSize, responseSize; + BYTE *request, *response; + int status; + + result->mask = 0; + + if (LE16(baseRequest->MajorVer) == 4) + request = CreateRequestV4(&requestSize, baseRequest); + else + request = CreateRequestV6(&requestSize, baseRequest); + + if (!(status = rpcSendRequest(sock, request, requestSize, &response, &responseSize))) + { + if (LE16(((RESPONSE*)(response))->MajorVer) == 4) + { + RESPONSE_V4 response_v4; + *result = DecryptResponseV4(&response_v4, responseSize, response, request); + memcpy(baseResponse, &response_v4.ResponseBase, sizeof(RESPONSE)); + } + else + { + RESPONSE_V6 response_v6; + *result = DecryptResponseV6(&response_v6, responseSize, response, request, hwid); + memcpy(baseResponse, &response_v6.ResponseBase, sizeof(RESPONSE)); + } + + result->RpcOK = TRUE; + } + + if (response) free(response); + free(request); + return status; +} + + +static int sendRequest(RpcCtx *const s, REQUEST *const request, RESPONSE *const response, hwid_t hwid, RESPONSE_RESULT *const result) +{ + CreateRequestBase(request); + + if (*s == INVALID_RPCCTX ) + connectRpc(s); + else + { + // Check for lame KMS emulators that close the socket after each request + int_fast8_t disconnected = isDisconnected(*s); + + if (disconnected) + errorout("\nWarning: Server closed RPC connection (probably non-multitasked KMS emulator)\n"); + + if (ReconnectForEachRequest || disconnected) + { + closeRpc(*s); + connectRpc(s); + } + } + + printf("Sending activation request (KMS V%u) ", ActiveLicensePack.kmsVersionMajor); + fflush(stdout); + + return SendActivationRequest(*s, response, request, result, hwid); +} + + +static void displayRequestError(RpcCtx *const s, const int status, const int currentRequest, const int totalRequests) +{ + errorout("\nError 0x%08X while sending request %u of %u\n", status, currentRequest, RequestsToGo + totalRequests); + + switch(status) + { + case 0xC004F042: // not licensed + errorout("The server refused to activate the requested product\n"); + break; + + case 0x8007000D: // e.g. v6 protocol on a v5 server + errorout("The server didn't understand the request\n"); + break; + + case 1: + errorout("An RPC protocol error has occured\n"); + closeRpc(*s); + connectRpc(s); + break; + + default: + break; + } +} + + +static void newIniBackupFile(const char* const restrict fname) +{ + FILE *restrict f = fopen(fname, "wb"); + + if (!f) + { + errorout("Fatal: Cannot create %s: %s\n", fname, strerror(errno)); + exit(!0); + } + + if (fclose(f)) + { + errorout("Fatal: Cannot write to %s: %s\n", fname, strerror(errno)); + unlink(fname); + exit(!0); + } +} + + +static void updateIniFile(iniFileEpidLines* const restrict lines) +{ + int_fast8_t lineWritten[_countof(*lines)]; + struct stat statbuf; + uint_fast8_t i; + int_fast8_t iniFileExistedBefore = TRUE; + unsigned int lineNumber; + + memset(lineWritten, FALSE, sizeof(lineWritten)); + + char* restrict fn_bak = (char*)vlmcsd_malloc(strlen(fn_ini_client) + 2); + + strcpy(fn_bak, fn_ini_client); + strcat(fn_bak, "~"); + + if (stat(fn_ini_client, &statbuf)) + { + if (errno != ENOENT) + { + errorout("Fatal: %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + else + { + iniFileExistedBefore = FALSE; + newIniBackupFile(fn_bak); + } + } + else + { + unlink(fn_bak); // Required for Windows. Most Unix systems don't need it. + if (rename(fn_ini_client, fn_bak)) + { + errorout("Fatal: Cannot create %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + } + + printf("\n%s file %s\n", iniFileExistedBefore ? "Updating" : "Creating", fn_ini_client); + + FILE *restrict in, *restrict out; + + in = fopen(fn_bak, "rb"); + + if (!in) + { + errorout("Fatal: Cannot open %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + + out = fopen(fn_ini_client, "wb"); + + if (!out) + { + errorout("Fatal: Cannot create %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + + char sourceLine[256]; + + for (lineNumber = 1; fgets(sourceLine, sizeof(sourceLine), in); lineNumber++) + { + for (i = 0; i < _countof(*lines); i++) + { + if (*(*lines)[i] && !strncasecmp(sourceLine, (*lines)[i], GUID_STRING_LENGTH)) + { + if (lineWritten[i]) break; + + fprintf(out, "%s", (*lines)[i]); + printf("line %2i: %s", lineNumber, (*lines)[i]); + lineWritten[i] = TRUE; + break; + } + } + + if (i >= _countof(*lines)) + { + fprintf(out, "%s", sourceLine); + } + } + + if (ferror(in)) + { + errorout("Fatal: Cannot read from %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + + fclose(in); + + for (i = 0; i < _countof(*lines); i++) + { + if (!lineWritten[i] && *(*lines)[i]) + { + fprintf(out, "%s", (*lines)[i]); + printf("line %2i: %s", lineNumber + i, (*lines)[i]); + } + } + + if (fclose(out)) + { + errorout("Fatal: Cannot write to %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + + if (!iniFileExistedBefore) unlink(fn_bak); + + free(fn_bak); +} + +static void grabServerData() +{ + RpcCtx s = INVALID_RPCCTX; + WORD MajorVer = 6; + iniFileEpidLines lines; + int_fast8_t Licenses[_countof(lines)] = { 0, 15, 14 }; + uint_fast8_t i; + RESPONSE response; + RESPONSE_RESULT result; + REQUEST request; + hwid_t hwid; + int status; + size_t len; + + for (i = 0; i < _countof(lines); i++) *lines[i] = 0; + + for (i = 0; i < _countof(Licenses) && MajorVer > 3; i++) + { + ActiveLicensePack = LicensePackList[Licenses[i]]; + ActiveLicensePack.kmsVersionMajor = MajorVer; + status = sendRequest(&s, &request, &response, hwid, &result); + printf("%-11s", ActiveLicensePack.names); + + if (status) + { + displayRequestError(&s, status, i + 7 - MajorVer, 9 - MajorVer); + + if (status == 1) break; + + if ((status & 0xF0000000) == 0x80000000) + { + MajorVer--; + i--; + } + + continue; + } + + printf("%i of %i", (int)(i + 7 - MajorVer), (int)(9 - MajorVer)); + displayResponse(result, &request, &response, hwid); + + char guidBuffer[GUID_STRING_LENGTH + 1]; + char ePID[3 * PID_BUFFER_SIZE]; + + uuid2StringLE(&request.AppID, guidBuffer); + + if (!ucs2_to_utf8(response.KmsPID, ePID, PID_BUFFER_SIZE, 3 * PID_BUFFER_SIZE)) + { + memset(ePID + 3 * PID_BUFFER_SIZE - 3, 0, 3); + } + + snprintf(lines[i], sizeof(lines[0]), "%s = %s", guidBuffer, ePID); + + if (response.MajorVer > 5) + { + len = strlen(lines[i]); + snprintf (lines[i] + len, sizeof(lines[0]) - len, "/ %02X %02X %02X %02X %02X %02X %02X %02X", hwid[0], hwid[1], hwid[2], hwid[3], hwid[4], hwid[5], hwid[6], hwid[7]); + } + + len = strlen(lines[i]); + snprintf(lines[i] + len, sizeof(lines[0]) - len, "\n"); + + } + + if (strcmp(fn_ini_client, "-")) + { + updateIniFile(&lines); + } + else + { + printf("\n"); + for (i = 0; i < _countof(lines); i++) printf("%s", lines[i]); + } +} + + +int client_main(const int argc, CARGV argv) +{ + #if defined(_WIN32) && !defined(USE_MSRPC) + + // Windows Sockets must be initialized + + WSADATA wsadata; + int error; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + printerrorf("Fatal: Could not initialize Windows sockets (Error: %d).\n", error); + return error; + } + + #endif // _WIN32 + + #ifdef _NTSERVICE + + // We are not a service + IsNTService = FALSE; + + // Set console output page to UTF-8 + // SetConsoleOutputCP(65001); + + #endif // _NTSERVICE + + randomNumberInit(); + ActiveLicensePack = *LicensePackList; //first license is Windows Vista + + parseCommandLinePass1(argc, argv); + + int_fast8_t useDefaultHost = FALSE; + + if (optind < argc) + RemoteAddr = argv[optind]; + else + useDefaultHost = TRUE; + + int hostportarg = optind; + + if (optind < argc - 1) + { + parseCommandLinePass1(argc - hostportarg, argv + hostportarg); + + if (optind < argc - hostportarg) + clientUsage(argv[0]); + } + + parseCommandLinePass2(argv[0], argc, argv); + + if (optind < argc - 1) + parseCommandLinePass2(argv[0], argc - hostportarg, argv + hostportarg); + + if (useDefaultHost) + RemoteAddr = AddressFamily == AF_INET6 ? "::1" : "127.0.0.1"; + + if (fn_ini_client != NULL) + grabServerData(); + else + { + int requests; + RpcCtx s = INVALID_RPCCTX; + + for (requests = 0, RequestsToGo = ActiveLicensePack.N_Policy - 1; RequestsToGo; requests++) + { + RESPONSE response; + REQUEST request; + RESPONSE_RESULT result; + hwid_t hwid; + + int status = sendRequest(&s, &request, &response, hwid, &result); + + if (FixedRequests) RequestsToGo = FixedRequests - requests - 1; + + if (status) + { + displayRequestError(&s, status, requests + 1, RequestsToGo + requests + 1); + if (!FixedRequests) RequestsToGo = 0; + } + else + { + if (!FixedRequests) + { + if (firstRequestSent && ActiveLicensePack.N_Policy - (int)response.Count >= RequestsToGo) + { + errorout("\nThe KMS server does not increment it's active clients. Aborting...\n"); + RequestsToGo = 0; + } + else + { + RequestsToGo = ActiveLicensePack.N_Policy - response.Count; + if (RequestsToGo < 0) RequestsToGo = 0; + } + } + + fflush(stderr); + printf("%i of %i ", requests + 1, RequestsToGo + requests + 1); + displayResponse(result, &request, &response, hwid); + firstRequestSent = TRUE; + } + } + } + + return 0; +} + + +// Create Base KMS Client Request +static void CreateRequestBase(REQUEST *Request) +{ + + Request->MinorVer = LE16((WORD)kmsVersionMinor); + Request->MajorVer = LE16((WORD)ActiveLicensePack.kmsVersionMajor); + Request->VMInfo = LE32(VMInfo); + Request->LicenseStatus = LE32(LicenseStatus); + Request->BindingExpiration = LE32(BindingExpiration); + LEGUID(&Request->AppID, ActiveLicensePack.AppID); + LEGUID(&Request->ActID, &ActiveLicensePack.ActID); + LEGUID(&Request->KMSID, &ActiveLicensePack.KMSID); + + getUnixTimeAsFileTime(&Request->ClientTime); + Request->N_Policy = LE32(ActiveLicensePack.N_Policy); + + { + GUID tempGUID; + + if (CMID) + { + string2UuidOrExit(CMID, &tempGUID); + LEGUID(&Request->CMID, &tempGUID); + } + else + { + get16RandomBytes(&Request->CMID); + + // Set reserved UUID bits + Request->CMID.Data4[0] &= 0x3F; + Request->CMID.Data4[0] |= 0x80; + + // Set UUID type 4 (random UUID) + Request->CMID.Data3 &= LE16(0xfff); + Request->CMID.Data3 |= LE16(0x4000); + } + + if (CMID_prev) + { + string2UuidOrExit(CMID_prev, &tempGUID); + LEGUID(&Request->CMID_prev, &tempGUID); + } + else + { + memset(&Request->CMID_prev, 0, sizeof(Request->CMID_prev)); + } + } + + static const char alphanum[] = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" /*"abcdefghijklmnopqrstuvwxyz" */; + + if (WorkstationName) + { + utf8_to_ucs2(Request->WorkstationName, WorkstationName, WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + } + else if (dnsnames) + { + int len, len2; + unsigned int index = rand() % _countof(ClientDnsNames.first); + len = utf8_to_ucs2(Request->WorkstationName, ClientDnsNames.first[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + + index = rand() % _countof(ClientDnsNames.second); + len2 = utf8_to_ucs2(Request->WorkstationName + len, ClientDnsNames.second[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + + index = rand() % _countof(ClientDnsNames.tld); + utf8_to_ucs2(Request->WorkstationName + len + len2, ClientDnsNames.tld[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + } + else + { + unsigned int size = (rand() % 14) + 1; + const unsigned char *dummy; + unsigned int i; + + for (i = 0; i < size; i++) + { + Request->WorkstationName[i] = utf8_to_ucs2_char((unsigned char*)alphanum + (rand() % (sizeof(alphanum) - 1)), &dummy); + } + + Request->WorkstationName[size] = 0; + } + + //Show Details + if (verbose) + { + printf("\nRequest Parameters\n==================\n\n"); + logRequestVerbose(Request, &printf); + printf("\n"); + } +} + + diff --git a/vlmcs.h b/vlmcs.h new file mode 100644 index 00000000..47386d0f --- /dev/null +++ b/vlmcs.h @@ -0,0 +1,21 @@ +#ifndef VLMCS_H_ +#define VLMCS_H_ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if defined(USE_MSRPC) && defined(_WIN32) +#include +#endif // defined(USE_MSRPC) && defined(_WIN32) +#include "types.h" + +#if MULTI_CALL_BINARY < 1 +#define client_main main +#else +int client_main(int argc, CARGV argv); +#endif + +#endif /* VLMCS_H_ */ + diff --git a/vlmcs_all.c b/vlmcs_all.c new file mode 100644 index 00000000..31b4147c --- /dev/null +++ b/vlmcs_all.c @@ -0,0 +1,6525 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include "vlmcs.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include +#include +#else // _WIN32 +#endif // _WIN32 +#include "endian.h" +#include "shared_globals.h" +#include "output.h" +#ifndef USE_MSRPC +#include "network.h" +#include "rpc.h" +#else // USE_MSRPC +#include "msrpc-client.h" +#endif // USE_MSRPC +#include "kms.h" +#include "helpers.h" +#include "dns_srv.h" + + +#define VLMCS_OPTION_GRAB_INI 1 +#define VLMCS_OPTION_NO_GRAB_INI 2 + +#define kmsVersionMinor 0 // Currently constant. May change in future KMS versions + +// Function Prototypes +static void CreateRequestBase(REQUEST *Request); + + +// KMS Parameters +static int_fast8_t verbose = FALSE; +static int_fast8_t VMInfo = FALSE; +static int_fast8_t dnsnames = TRUE; +static int FixedRequests = 0; +static BYTE LicenseStatus = 0x02; +static const char *CMID = NULL; +static const char *CMID_prev = NULL; +static const char *WorkstationName = NULL; +static int BindingExpiration = 43200; //30 days +static const char *RemoteAddr; +static int_fast8_t ReconnectForEachRequest = FALSE; +static int AddressFamily = AF_UNSPEC; +static int_fast8_t incompatibleOptions = 0; +static const char* fn_ini_client = NULL; + +#ifndef NO_DNS +static int_fast8_t NoSrvRecordPriority = FALSE; +#endif // NO_DNS + + +// Structure for handling "License Packs" (e.g. Office2013v5 or WindowsVista) +typedef struct +{ + const char *names; //This is a list of strings. Terminate with additional Zero!!! + int N_Policy; + int kmsVersionMajor; + const GUID *AppID; + GUID ActID; + GUID KMSID; +} LicensePack; + + +typedef char iniFileEpidLines[3][256]; + +// Well known "license packs" +static const LicensePack LicensePackList[] = +{ + // List of names min lics version appID skuId KMSCountedID + /* 000 */ { "Vista\000W6\000" + "WindowsVista\000" + "Windows\000", 25, 4, PWINGUID, { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } }, { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } }, + /* 001 */ { "W7\000Windows7\000", 25, 4, PWINGUID, { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } }, { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } }, + /* 002 */ { "W8\000Windows8\000", 25, 5, PWINGUID, { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } }, { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } }, + /* 003 */ { "W8C\000Windows8C\000", 25, 5, PWINGUID, { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } }, { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } }, + /* 004 */ { "W81\000Windows81\000", 25, 6, PWINGUID, { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } }, { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } }, + /* 005 */ { "W81C\000Windows81C\000", 25, 6, PWINGUID, { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } }, { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } }, + /* 006 */ { "W10\000Windows10\000", 25, 6, PWINGUID, { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } }, { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } }, + /* 007 */ { "W10C\000Windows10C\000", 25, 6, PWINGUID, { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } }, { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } }, + /* 008 */ { "2008" "\0" "2008A\000", 5, 4, PWINGUID, { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } }, { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } }, + /* 009 */ { "2008B\000", 5, 4, PWINGUID, { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } }, { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } }, + /* 010 */ { "2008C\000", 5, 4, PWINGUID, { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } }, { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } }, + /* 011 */ { "2008R2" "\0" "2008R2A\000", 5, 4, PWINGUID, { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } }, { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } }, + /* 012 */ { "2008R2B\000", 5, 4, PWINGUID, { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } }, { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } }, + /* 013 */ { "2008R2C\000", 5, 4, PWINGUID, { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } }, { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } }, + /* 014 */ { "2012\000", 5, 5, PWINGUID, { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } }, { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } }, + /* 015 */ { "2012R2\000" "12R2\000", 5, 6, PWINGUID, { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } }, { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } }, + /* 016 */ { "Office2010\000O14\000", 5, 4, POFFICE2010GUID, { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } }, { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } }, + /* 017 */ { "Office2013\000O15\000", 5, 6, POFFICE2013GUID, { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } }, { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } }, + /* 018 */ { "Office2013V5\000", 5, 5, POFFICE2013GUID, { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } }, { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } }, + /* 019 */ { "Office2016\000" "O16\000", 5, 6, POFFICE2013GUID, { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } }, { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } }, + /* 020 */ { NULL, 0, 0, NULL, { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } } } +}; + + +typedef struct +{ + const char* first[16]; + const char* second[16]; + const char* tld[22]; +} DnsNames; + + +// Some names for the DNS name random generator +static DnsNames ClientDnsNames = +{ + { "www", "ftp", "kms", "hack-me", "smtp", "ns1", "mx1", "ns1", "pop3", "imap", "mail", "dns", "headquarter", "we-love", "_vlmcs._tcp", "ceo-laptop" }, + { ".microsoft", ".apple", ".amazon", ".samsung", ".adobe", ".google", ".yahoo", ".facebook", ".ubuntu", ".oracle", ".borland", ".htc", ".acer", ".windows", ".linux", ".sony" }, + { ".com", ".net", ".org", ".cn", ".co.uk", ".de", ".com.tw", ".us", ".fr", ".it", ".me", ".info", ".biz", ".co.jp", ".ua", ".at", ".es", ".pro", ".by", ".ru", ".pl", ".kr" } +}; + + +// This is the one, we are actually using. We use Vista, if user selects nothing +LicensePack ActiveLicensePack; + + +// Request Count Control Variables +static int RequestsToGo = 1; +static BOOL firstRequestSent = FALSE; + + +static void string2UuidOrExit(const char *const restrict input, GUID *const restrict guid) +{ + if (strlen(input) != GUID_STRING_LENGTH || !string2Uuid(input, guid)) + { + errorout("Fatal: Command line contains an invalid GUID.\n"); + exit(!0); + } +} + + +#ifndef NO_HELP + +__noreturn static void clientUsage(const char* const programName) +{ + errorout( + "vlmcs %s \n\n" +# ifndef NO_DNS + "Usage: %s [options] [ [:] | . | - ] [options]\n\n" +# else // DNS + "Usage: %s [options] [[:]] [options]\n\n" +# endif // DNS + + "Options:\n\n" + + " -v Be verbose\n" + " -l \n" + " -4 Force V4 protocol\n" + " -5 Force V5 protocol\n" + " -6 Force V6 protocol\n" +# ifndef USE_MSRPC + " -i Use IP protocol (4 or 6)\n" +# endif // USE_MSRPC + " -e Show some valid examples\n" + " -x Show valid Apps\n" + " -d no DNS names, use Netbios names (no effect if -w is used)\n\n" + + "Advanced options:\n\n" + + " -a Use custom Application GUID\n" + " -s Use custom Activation Configuration GUID\n" + " -k Use custom KMS GUID\n" + " -c Use custom Client GUID. Default: Use random\n" + " -o Use custom Prevoius Client GUID. Default: ZeroGUID\n" + " -w Use custom workstation name. Default: Use random\n" + " -r Fake required clients\n" + " -n Fixed # of requests (Default: Enough to charge)\n" + " -m Pretend to be a virtual machine\n" + " -G Get ePID/HwId data and write to . Can't be used with -l, -4, -5, -6, -a, -s, -k, -r and -n\n" +# ifndef USE_MSRPC + " -T Use a new TCP connection for each request.\n" + " -N <0|1> disable or enable NDR64. Default: 1\n" + " -B <0|1> disable or enable RPC bind time feature negotiation. Default: 1\n" +# endif // USE_MSRPC + " -t Use specfic license status (0 <= T <= 6)\n" + " -g Use a specfic binding expiration time in minutes. Default 43200\n" +# ifndef NO_DNS + " -P Ignore priority and weight in DNS SRV records\n" +# endif // NO_DNS +# ifndef USE_MSRPC + " -p Don't use multiplexed RPC bind\n" +# endif // USE_MSRPC + "\n" + + ":\t\tTCP port name of the KMS to use. Default 1688.\n" + ":\t\thost name of the KMS to use. Default 127.0.0.1\n" +# ifndef NO_DNS + ".:\tfind KMS server in via DNS\n" +# endif // NO_DNS + ":\t\t(Type %s -x to see a list of valid apps)\n\n", + Version, programName, programName + ); + + exit(!0); +} + +__pure static int getLineWidth(void) +{ + #ifdef TERMINAL_FIXED_WIDTH // For Toolchains that to not have winsize + return TERMINAL_FIXED_WIDTH; + #else // Can determine width of terminal + #ifndef _WIN32 + + struct winsize w; + + if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &w)) + { + return 80; // Return this if stdout is not a tty + } + + return w.ws_col; + + #else // _WIN32 + + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); + + if (!GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) + { + return 80; // Return this if stdout is not a Console + } + + return csbiInfo.srWindow.Right - csbiInfo.srWindow.Left; + + #endif // WIN32 + + #endif // Can determine width of terminal + +} + +__noreturn static void showProducts(PRINTFUNC p) +{ + int cols = getLineWidth(); + int itemsPerLine; + uint8_t i; + + p( + "The following " + #if !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + "aliases " + #else + "names " + #endif + "can be used with -l:\n\n" + ); + + const LicensePack* lp; + + itemsPerLine = cols / 20; + if (!itemsPerLine) itemsPerLine = 1; + + for (i = 1, lp = LicensePackList; lp->names; lp++) + { + const char* name; + + for (name = lp->names; *name; name += strlen(name) + 1, i++) + { + p("%-20s", name); + + if (!(i % itemsPerLine)) p("\n"); + } + } + + p("\n\n"); + + #if !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + + const KmsIdList* currentProduct; + uint_fast8_t longestString = 0; + uint8_t k, items = getExtendedProductListSize(); + + p("You may also use these product names or numbers:\n\n"); + + for (currentProduct = ExtendedProductList; currentProduct->name; currentProduct++) + { + uint_fast8_t len = strlen(currentProduct->name); + + if (len > longestString) + longestString = len; + } + + itemsPerLine = cols / (longestString + 10); + if (!itemsPerLine) itemsPerLine = 1; + uint8_t lines = items / itemsPerLine; + if (items % itemsPerLine) lines++; + + for (i = 0; i < lines; i++) + { + for (k = 0; k < itemsPerLine; k++) + { + uint8_t j; + uint8_t index = k * lines + i; + + if (index >= items) break; + + p("%3u = %s", index + 1, ExtendedProductList[index].name); + + for (j = 0; j < longestString + 4 - strlen(ExtendedProductList[index].name); j++) + { + p(" "); + } + } + + p("\n"); + } + + p("\n"); + + #endif // !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + + exit(0); +} + +__noreturn static void examples(const char* const programName) +{ + printf( + "\nRequest activation for Office2013 using V4 protocol from 192.168.1.5:1688\n" + "\t%s -l O15 -4 192.168.1.5\n" + "\t%s -l O15 -4 192.168.1.5:1688\n\n" + + "Request activation for Windows Server 2012 using V4 protocol from localhost:1688\n" + "\t%s -4 -l Windows -k 8665cb71-468c-4aa3-a337-cb9bc9d5eaac\n" + "\t%s -4 -l 2012\n" + "\t%s -4 -l 2012 [::1]:1688\n" + "\t%s -4 -l 12 127.0.0.2:1688\n\n" + + "Send 100,000 requests to localhost:1688\n" + "\t%s -n 100000 -l Office2010\n\n" + + "Request Activation for Windows 8 from 10.0.0.1:4711 and pretend to be Steve Ballmer\n" + "\t%s -l Windows8 -w steveb1.redmond.microsoft.com 10.0.0.1:4711\n\n", + programName, programName, programName, programName, programName, programName, programName, programName + ); + + exit(0); +} + + +#else // NO_HELP + + +__noreturn static void clientUsage(const char* const programName) +{ + errorout("Incorrect parameter specified.\n"); + exit(!0); +} + + +#endif // NO_HELP + + +static BOOL findLicensePackByName(const char* const name, LicensePack* const lp) +{ + // Try to find a package in the short list first + + LicensePack *licensePack; + for (licensePack = (LicensePack*)&LicensePackList; licensePack->names; licensePack ++) + { + const char *currentName; + for (currentName = licensePack->names; *currentName; currentName += strlen(currentName) + 1) + { + if (!strcasecmp(name, currentName)) + { + *lp = *licensePack; + return TRUE; + } + } + } + + #if defined(NO_BASIC_PRODUCT_LIST) || defined(NO_EXTENDED_PRODUCT_LIST) + + return FALSE; + + #else // Both Lists are available + + // search extended product list + + uint8_t items = getExtendedProductListSize(); + unsigned int index; + + if (stringToInt(name, 1, items, &index)) + { + index--; + } + else + { + for (index = 0; index < items; index++) + { + if (!strcasecmp(ExtendedProductList[index].name, name)) break; + } + + if (index >= items) return FALSE; + } + + lp->AppID = &AppList[ExtendedProductList[index].AppIndex].guid; + lp->KMSID = ProductList[ExtendedProductList[index].KmsIndex].guid; + lp->ActID = ExtendedProductList[index].guid; + lp->N_Policy = ProductList[ExtendedProductList[index].KmsIndex].KMS_PARAM_REQUIREDCOUNT; + lp->kmsVersionMajor = ProductList[ExtendedProductList[index].KmsIndex].KMS_PARAM_MAJOR; + + return TRUE; + + #endif // Both Lists are available +} + +static const char* const client_optstring = "+N:B:i:l:a:s:k:c:w:r:n:t:g:G:o:pPTv456mexd"; + + +//First pass. We handle only "-l". Since -a -k -s -4 -5 and -6 are exceptions to -l, we process -l first +static void parseCommandLinePass1(const int argc, CARGV argv) +{ + int o; + optReset(); + + for (opterr = 0; ( o = getopt(argc, (char* const*)argv, client_optstring) ) > 0; ) switch (o) + { + case 'l': // Set "License Pack" and protocol version (e.g. Windows8, Office2013v5, ...) + + if (!findLicensePackByName(optarg, &ActiveLicensePack)) + { + errorout("Invalid client application. \"%s\" is not valid for -l.\n\n", optarg); + #ifndef NO_HELP + showProducts(&errorout); + #endif // !NO_HELP + } + + break; + + default: + break; + } +} + + +// Second Pass. Handle all options except "-l" +static void parseCommandLinePass2(const char *const programName, const int argc, CARGV argv) +{ + int o; + optReset(); + + for (opterr = 0; ( o = getopt(argc, (char* const*)argv, client_optstring) ) > 0; ) switch (o) + { + #ifndef NO_HELP + + case 'e': // Show examples + + examples(programName); + break; + + case 'x': // Show Apps + + showProducts(&printf); + break; + + #endif // NO_HELP + +# ifndef NO_DNS + + case 'P': + + NoSrvRecordPriority = TRUE; + break; + +# endif // NO_DNS + + case 'G': + + incompatibleOptions |= VLMCS_OPTION_GRAB_INI; + fn_ini_client = optarg; + break; + +# ifndef USE_MSRPC + + case 'N': + if (!getArgumentBool(&UseRpcNDR64, optarg)) clientUsage(programName); + break; + + case 'B': + if (!getArgumentBool(&UseRpcBTFN, optarg)) clientUsage(programName); + break; + + case 'i': + + switch(getOptionArgumentInt(o, 4, 6)) + { + case 4: + AddressFamily = AF_INET; + break; + case 6: + AddressFamily = AF_INET6; + break; + default: + errorout("IPv5 does not exist.\n"); + exit(!0); + break; + } + + break; + + case 'p': // Multiplexed RPC + + UseMultiplexedRpc = FALSE; + break; + +# endif // USE_MSRPC + + case 'n': // Fixed number of Requests (regardless, whether they are required) + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + FixedRequests = getOptionArgumentInt(o, 1, INT_MAX); + break; + + case 'r': // Fake minimum required client count + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.N_Policy = getOptionArgumentInt(o, 1, INT_MAX); + break; + + case 'c': // use a specific client GUID + + // If using a constant Client ID, send only one request unless /N= explicitly specified + if (!FixedRequests) FixedRequests = 1; + + CMID = optarg; + break; + + case 'o': // use a specific previous client GUID + + CMID_prev = optarg; + break; + + case 'a': // Set specific App Id + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.AppID = (GUID*)vlmcsd_malloc(sizeof(GUID)); + + string2UuidOrExit(optarg, (GUID*)ActiveLicensePack.AppID); + break; + + case 'g': // Set custom "grace" time in minutes (default 30 days) + + BindingExpiration = getOptionArgumentInt(o, 0, INT_MAX); + break; + + case 's': // Set specfic SKU ID + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + string2UuidOrExit(optarg, &ActiveLicensePack.ActID); + break; + + case 'k': // Set specific KMS ID + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + string2UuidOrExit(optarg, &ActiveLicensePack.KMSID); + break; + + case '4': // Force V4 protocol + case '5': // Force V5 protocol + case '6': // Force V5 protocol + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.kmsVersionMajor = o - 0x30; + break; + + case 'd': // Don't use DNS names + + dnsnames = FALSE; + break; + + case 'v': // Be verbose + + verbose = TRUE; + break; + + case 'm': // Pretend to be a virtual machine + + VMInfo = TRUE; + break; + + case 'w': // WorkstationName (max. 63 chars) + + WorkstationName = optarg; + + if (strlen(WorkstationName) > 63) + { + errorout("\007WARNING! Truncating Workstation name to 63 characters (%s).\n", WorkstationName); + } + + break; + + case 't': + + LicenseStatus = getOptionArgumentInt(o, 0, 6) & 0xff; + break; + +# ifndef USE_MSRPC + + case 'T': + + ReconnectForEachRequest = TRUE; + break; + +# endif // USE_MSRPC + + case 'l': + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + break; + + default: + clientUsage(programName); + } + if ((incompatibleOptions & (VLMCS_OPTION_NO_GRAB_INI | VLMCS_OPTION_GRAB_INI)) == (VLMCS_OPTION_NO_GRAB_INI | VLMCS_OPTION_GRAB_INI)) + clientUsage(programName); +} + + +/* + * Compares 2 GUIDs where one is host-endian and the other is little-endian (network byte order) + */ +int_fast8_t IsEqualGuidLEHE(const GUID* const guid1, const GUID* const guid2) +{ + GUID tempGuid; + LEGUID(&tempGuid, guid2); + return IsEqualGUID(guid1, &tempGuid); +} + + +#ifndef USE_MSRPC +static void checkRpcLevel(const REQUEST* request, RESPONSE* response) +{ + if (!RpcFlags.HasNDR32) + errorout("\nWARNING: Server's RPC protocol does not support NDR32.\n"); + + if (UseRpcBTFN && UseRpcNDR64 && RpcFlags.HasNDR64 && !RpcFlags.HasBTFN) + errorout("\nWARNING: Server's RPC protocol has NDR64 but no BTFN.\n"); + + if (!IsEqualGuidLEHE(&request->KMSID, &ProductList[15].guid) && UseRpcBTFN && !RpcFlags.HasBTFN) + errorout("\nWARNING: A server with pre-Vista RPC activated a product other than Office 2010.\n"); +} +#endif // USE_MSRPC + + +static void displayResponse(const RESPONSE_RESULT result, const REQUEST* request, RESPONSE* response, BYTE *hwid) +{ + fflush(stdout); + + if (!result.RpcOK) errorout("\n\007ERROR: Non-Zero RPC result code.\n"); + if (!result.DecryptSuccess) errorout("\n\007ERROR: Decryption of V5/V6 response failed.\n"); + if (!result.IVsOK) errorout("\n\007ERROR: AES CBC initialization vectors (IVs) of request and response do not match.\n"); + if (!result.PidLengthOK) errorout("\n\007ERROR: The length of the PID is not valid.\n"); + if (!result.HashOK) errorout("\n\007ERROR: Computed hash does not match hash in response.\n"); + if (!result.ClientMachineIDOK) errorout("\n\007ERROR: Client machine GUIDs of request and response do not match.\n"); + if (!result.TimeStampOK) errorout("\n\007ERROR: Time stamps of request and response do not match.\n"); + if (!result.VersionOK) errorout("\n\007ERROR: Protocol versions of request and response do not match.\n"); + if (!result.HmacSha256OK) errorout("\n\007ERROR: Keyed-Hash Message Authentication Code (HMAC) is incorrect.\n"); + if (!result.IVnotSuspicious) errorout("\nWARNING: Response uses an IV following KMSv5 rules in KMSv6 protocol.\n"); + + if (result.effectiveResponseSize != result.correctResponseSize) + { + errorout("\n\007WARNING: Size of RPC payload (KMS Message) should be %u but is %u.", result.correctResponseSize, result.effectiveResponseSize); + } + +# ifndef USE_MSRPC + checkRpcLevel(request, response); +# endif // USE_MSRPC + + if (!result.DecryptSuccess) return; // Makes no sense to display anything + + char ePID[3 * PID_BUFFER_SIZE]; + if (!ucs2_to_utf8(response->KmsPID, ePID, PID_BUFFER_SIZE, 3 * PID_BUFFER_SIZE)) + { + memset(ePID + 3 * PID_BUFFER_SIZE - 3, 0, 3); + } + + // Read KMSPID from Response + if (!verbose) + { + printf(" -> %s", ePID); + + if (LE16(response->MajorVer) > 5) + { +# ifndef _WIN32 + printf(" (%016llX)", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + printf(" (%016I64X)", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // _WIN32 + } + + printf("\n"); + } + else + { + printf( + "\n\nResponse from KMS server\n========================\n\n" + "Size of KMS Response : %u (0x%x)\n", result.effectiveResponseSize, result.effectiveResponseSize + ); + + logResponseVerbose(ePID, hwid, response, &printf); + printf("\n"); + } +} + + +static void connectRpc(RpcCtx *s) +{ +# ifdef NO_DNS + + *s = connectToAddress(RemoteAddr, AddressFamily, FALSE); + if (*s == INVALID_RPCCTX) + { + errorout("Fatal: Could not connect to %s\n", RemoteAddr); + exit(!0); + } + + if (verbose) + printf("\nPerforming RPC bind ...\n"); + + if (rpcBindClient(*s, verbose)) + { + errorout("Fatal: Could not bind RPC\n"); + exit(!0); + } + + if (verbose) printf("... successful\n"); + +# else // DNS + + static kms_server_dns_ptr* serverlist = NULL; + static int numServers = 0; + //static int_fast8_t ServerListAlreadyPrinted = FALSE; + int i; + + if (!strcmp(RemoteAddr, "-") || *RemoteAddr == '.') // Get KMS server via DNS SRV record + { + if (!serverlist) + numServers = getKmsServerList(&serverlist, RemoteAddr); + + if (numServers < 1) + { + errorout("Fatal: No KMS servers found\n"); + exit(!0); + } + + if (!NoSrvRecordPriority) sortSrvRecords(serverlist, numServers); + + if (verbose /*&& !ServerListAlreadyPrinted*/) + { + for (i = 0; i < numServers; i++) + { + printf( + "Found %-40s (priority: %hu, weight: %hu, randomized weight: %i)\n", + serverlist[i]->serverName, + serverlist[i]->priority, serverlist[i]->weight, + NoSrvRecordPriority ? 0 : serverlist[i]->random_weight + ); + } + + printf("\n"); + //ServerListAlreadyPrinted = TRUE; + } + } + else // Just use the server supplied on the command line + { + if (!serverlist) + { + serverlist = (kms_server_dns_ptr*)vlmcsd_malloc(sizeof(kms_server_dns_ptr)); + *serverlist = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + numServers = 1; + strncpy((*serverlist)->serverName, RemoteAddr, sizeof((*serverlist)->serverName)); + } + } + + for (i = 0; i < numServers; i++) + { + *s = connectToAddress(serverlist[i]->serverName, AddressFamily, (*RemoteAddr == '.' || *RemoteAddr == '-')); + + if (*s == INVALID_RPCCTX) continue; + + if (verbose) + printf("\nPerforming RPC bind ...\n"); + + if (rpcBindClient(*s, verbose)) + { + errorout("Warning: Could not bind RPC\n"); + continue; + } + + if (verbose) printf("... successful\n"); + + return; + } + + errorout("Fatal: Could not connect to any KMS server\n"); + exit(!0); + +# endif // DNS +} + + +static int SendActivationRequest(const RpcCtx sock, RESPONSE *baseResponse, REQUEST *baseRequest, RESPONSE_RESULT *result, BYTE *const hwid) +{ + size_t requestSize, responseSize; + BYTE *request, *response; + int status; + + result->mask = 0; + + if (LE16(baseRequest->MajorVer) == 4) + request = CreateRequestV4(&requestSize, baseRequest); + else + request = CreateRequestV6(&requestSize, baseRequest); + + if (!(status = rpcSendRequest(sock, request, requestSize, &response, &responseSize))) + { + if (LE16(((RESPONSE*)(response))->MajorVer) == 4) + { + RESPONSE_V4 response_v4; + *result = DecryptResponseV4(&response_v4, responseSize, response, request); + memcpy(baseResponse, &response_v4.ResponseBase, sizeof(RESPONSE)); + } + else + { + RESPONSE_V6 response_v6; + *result = DecryptResponseV6(&response_v6, responseSize, response, request, hwid); + memcpy(baseResponse, &response_v6.ResponseBase, sizeof(RESPONSE)); + } + + result->RpcOK = TRUE; + } + + if (response) free(response); + free(request); + return status; +} + + +static int sendRequest(RpcCtx *const s, REQUEST *const request, RESPONSE *const response, hwid_t hwid, RESPONSE_RESULT *const result) +{ + CreateRequestBase(request); + + if (*s == INVALID_RPCCTX ) + connectRpc(s); + else + { + // Check for lame KMS emulators that close the socket after each request + int_fast8_t disconnected = isDisconnected(*s); + + if (disconnected) + errorout("\nWarning: Server closed RPC connection (probably non-multitasked KMS emulator)\n"); + + if (ReconnectForEachRequest || disconnected) + { + closeRpc(*s); + connectRpc(s); + } + } + + printf("Sending activation request (KMS V%u) ", ActiveLicensePack.kmsVersionMajor); + fflush(stdout); + + return SendActivationRequest(*s, response, request, result, hwid); +} + + +static void displayRequestError(RpcCtx *const s, const int status, const int currentRequest, const int totalRequests) +{ + errorout("\nError 0x%08X while sending request %u of %u\n", status, currentRequest, RequestsToGo + totalRequests); + + switch(status) + { + case 0xC004F042: // not licensed + errorout("The server refused to activate the requested product\n"); + break; + + case 0x8007000D: // e.g. v6 protocol on a v5 server + errorout("The server didn't understand the request\n"); + break; + + case 1: + errorout("An RPC protocol error has occured\n"); + closeRpc(*s); + connectRpc(s); + break; + + default: + break; + } +} + + +static void newIniBackupFile(const char* const restrict fname) +{ + FILE *restrict f = fopen(fname, "wb"); + + if (!f) + { + errorout("Fatal: Cannot create %s: %s\n", fname, strerror(errno)); + exit(!0); + } + + if (fclose(f)) + { + errorout("Fatal: Cannot write to %s: %s\n", fname, strerror(errno)); + unlink(fname); + exit(!0); + } +} + + +static void updateIniFile(iniFileEpidLines* const restrict lines) +{ + int_fast8_t lineWritten[_countof(*lines)]; + struct stat statbuf; + uint_fast8_t i; + int_fast8_t iniFileExistedBefore = TRUE; + unsigned int lineNumber; + + memset(lineWritten, FALSE, sizeof(lineWritten)); + + char* restrict fn_bak = (char*)vlmcsd_malloc(strlen(fn_ini_client) + 2); + + strcpy(fn_bak, fn_ini_client); + strcat(fn_bak, "~"); + + if (stat(fn_ini_client, &statbuf)) + { + if (errno != ENOENT) + { + errorout("Fatal: %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + else + { + iniFileExistedBefore = FALSE; + newIniBackupFile(fn_bak); + } + } + else + { + unlink(fn_bak); // Required for Windows. Most Unix systems don't need it. + if (rename(fn_ini_client, fn_bak)) + { + errorout("Fatal: Cannot create %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + } + + printf("\n%s file %s\n", iniFileExistedBefore ? "Updating" : "Creating", fn_ini_client); + + FILE *restrict in, *restrict out; + + in = fopen(fn_bak, "rb"); + + if (!in) + { + errorout("Fatal: Cannot open %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + + out = fopen(fn_ini_client, "wb"); + + if (!out) + { + errorout("Fatal: Cannot create %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + + char sourceLine[256]; + + for (lineNumber = 1; fgets(sourceLine, sizeof(sourceLine), in); lineNumber++) + { + for (i = 0; i < _countof(*lines); i++) + { + if (*(*lines)[i] && !strncasecmp(sourceLine, (*lines)[i], GUID_STRING_LENGTH)) + { + if (lineWritten[i]) break; + + fprintf(out, "%s", (*lines)[i]); + printf("line %2i: %s", lineNumber, (*lines)[i]); + lineWritten[i] = TRUE; + break; + } + } + + if (i >= _countof(*lines)) + { + fprintf(out, "%s", sourceLine); + } + } + + if (ferror(in)) + { + errorout("Fatal: Cannot read from %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + + fclose(in); + + for (i = 0; i < _countof(*lines); i++) + { + if (!lineWritten[i] && *(*lines)[i]) + { + fprintf(out, "%s", (*lines)[i]); + printf("line %2i: %s", lineNumber + i, (*lines)[i]); + } + } + + if (fclose(out)) + { + errorout("Fatal: Cannot write to %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + + if (!iniFileExistedBefore) unlink(fn_bak); + + free(fn_bak); +} + +static void grabServerData() +{ + RpcCtx s = INVALID_RPCCTX; + WORD MajorVer = 6; + iniFileEpidLines lines; + int_fast8_t Licenses[_countof(lines)] = { 0, 15, 14 }; + uint_fast8_t i; + RESPONSE response; + RESPONSE_RESULT result; + REQUEST request; + hwid_t hwid; + int status; + size_t len; + + for (i = 0; i < _countof(lines); i++) *lines[i] = 0; + + for (i = 0; i < _countof(Licenses) && MajorVer > 3; i++) + { + ActiveLicensePack = LicensePackList[Licenses[i]]; + ActiveLicensePack.kmsVersionMajor = MajorVer; + status = sendRequest(&s, &request, &response, hwid, &result); + printf("%-11s", ActiveLicensePack.names); + + if (status) + { + displayRequestError(&s, status, i + 7 - MajorVer, 9 - MajorVer); + + if (status == 1) break; + + if ((status & 0xF0000000) == 0x80000000) + { + MajorVer--; + i--; + } + + continue; + } + + printf("%i of %i", (int)(i + 7 - MajorVer), (int)(9 - MajorVer)); + displayResponse(result, &request, &response, hwid); + + char guidBuffer[GUID_STRING_LENGTH + 1]; + char ePID[3 * PID_BUFFER_SIZE]; + + uuid2StringLE(&request.AppID, guidBuffer); + + if (!ucs2_to_utf8(response.KmsPID, ePID, PID_BUFFER_SIZE, 3 * PID_BUFFER_SIZE)) + { + memset(ePID + 3 * PID_BUFFER_SIZE - 3, 0, 3); + } + + snprintf(lines[i], sizeof(lines[0]), "%s = %s", guidBuffer, ePID); + + if (response.MajorVer > 5) + { + len = strlen(lines[i]); + snprintf (lines[i] + len, sizeof(lines[0]) - len, "/ %02X %02X %02X %02X %02X %02X %02X %02X", hwid[0], hwid[1], hwid[2], hwid[3], hwid[4], hwid[5], hwid[6], hwid[7]); + } + + len = strlen(lines[i]); + snprintf(lines[i] + len, sizeof(lines[0]) - len, "\n"); + + } + + if (strcmp(fn_ini_client, "-")) + { + updateIniFile(&lines); + } + else + { + printf("\n"); + for (i = 0; i < _countof(lines); i++) printf("%s", lines[i]); + } +} + + +int client_main(const int argc, CARGV argv) +{ + #if defined(_WIN32) && !defined(USE_MSRPC) + + // Windows Sockets must be initialized + + WSADATA wsadata; + int error; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + printerrorf("Fatal: Could not initialize Windows sockets (Error: %d).\n", error); + return error; + } + + #endif // _WIN32 + + #ifdef _NTSERVICE + + // We are not a service + IsNTService = FALSE; + + // Set console output page to UTF-8 + // SetConsoleOutputCP(65001); + + #endif // _NTSERVICE + + randomNumberInit(); + ActiveLicensePack = *LicensePackList; //first license is Windows Vista + + parseCommandLinePass1(argc, argv); + + int_fast8_t useDefaultHost = FALSE; + + if (optind < argc) + RemoteAddr = argv[optind]; + else + useDefaultHost = TRUE; + + int hostportarg = optind; + + if (optind < argc - 1) + { + parseCommandLinePass1(argc - hostportarg, argv + hostportarg); + + if (optind < argc - hostportarg) + clientUsage(argv[0]); + } + + parseCommandLinePass2(argv[0], argc, argv); + + if (optind < argc - 1) + parseCommandLinePass2(argv[0], argc - hostportarg, argv + hostportarg); + + if (useDefaultHost) + RemoteAddr = AddressFamily == AF_INET6 ? "::1" : "127.0.0.1"; + + if (fn_ini_client != NULL) + grabServerData(); + else + { + int requests; + RpcCtx s = INVALID_RPCCTX; + + for (requests = 0, RequestsToGo = ActiveLicensePack.N_Policy - 1; RequestsToGo; requests++) + { + RESPONSE response; + REQUEST request; + RESPONSE_RESULT result; + hwid_t hwid; + + int status = sendRequest(&s, &request, &response, hwid, &result); + + if (FixedRequests) RequestsToGo = FixedRequests - requests - 1; + + if (status) + { + displayRequestError(&s, status, requests + 1, RequestsToGo + requests + 1); + if (!FixedRequests) RequestsToGo = 0; + } + else + { + if (!FixedRequests) + { + if (firstRequestSent && ActiveLicensePack.N_Policy - (int)response.Count >= RequestsToGo) + { + errorout("\nThe KMS server does not increment it's active clients. Aborting...\n"); + RequestsToGo = 0; + } + else + { + RequestsToGo = ActiveLicensePack.N_Policy - response.Count; + if (RequestsToGo < 0) RequestsToGo = 0; + } + } + + fflush(stderr); + printf("%i of %i ", requests + 1, RequestsToGo + requests + 1); + displayResponse(result, &request, &response, hwid); + firstRequestSent = TRUE; + } + } + } + + return 0; +} + + +// Create Base KMS Client Request +static void CreateRequestBase(REQUEST *Request) +{ + + Request->MinorVer = LE16((WORD)kmsVersionMinor); + Request->MajorVer = LE16((WORD)ActiveLicensePack.kmsVersionMajor); + Request->VMInfo = LE32(VMInfo); + Request->LicenseStatus = LE32(LicenseStatus); + Request->BindingExpiration = LE32(BindingExpiration); + LEGUID(&Request->AppID, ActiveLicensePack.AppID); + LEGUID(&Request->ActID, &ActiveLicensePack.ActID); + LEGUID(&Request->KMSID, &ActiveLicensePack.KMSID); + + getUnixTimeAsFileTime(&Request->ClientTime); + Request->N_Policy = LE32(ActiveLicensePack.N_Policy); + + { + GUID tempGUID; + + if (CMID) + { + string2UuidOrExit(CMID, &tempGUID); + LEGUID(&Request->CMID, &tempGUID); + } + else + { + get16RandomBytes(&Request->CMID); + + // Set reserved UUID bits + Request->CMID.Data4[0] &= 0x3F; + Request->CMID.Data4[0] |= 0x80; + + // Set UUID type 4 (random UUID) + Request->CMID.Data3 &= LE16(0xfff); + Request->CMID.Data3 |= LE16(0x4000); + } + + if (CMID_prev) + { + string2UuidOrExit(CMID_prev, &tempGUID); + LEGUID(&Request->CMID_prev, &tempGUID); + } + else + { + memset(&Request->CMID_prev, 0, sizeof(Request->CMID_prev)); + } + } + + static const char alphanum[] = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" /*"abcdefghijklmnopqrstuvwxyz" */; + + if (WorkstationName) + { + utf8_to_ucs2(Request->WorkstationName, WorkstationName, WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + } + else if (dnsnames) + { + int len, len2; + unsigned int index = rand() % _countof(ClientDnsNames.first); + len = utf8_to_ucs2(Request->WorkstationName, ClientDnsNames.first[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + + index = rand() % _countof(ClientDnsNames.second); + len2 = utf8_to_ucs2(Request->WorkstationName + len, ClientDnsNames.second[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + + index = rand() % _countof(ClientDnsNames.tld); + utf8_to_ucs2(Request->WorkstationName + len + len2, ClientDnsNames.tld[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + } + else + { + unsigned int size = (rand() % 14) + 1; + const unsigned char *dummy; + unsigned int i; + + for (i = 0; i < size; i++) + { + Request->WorkstationName[i] = utf8_to_ucs2_char((unsigned char*)alphanum + (rand() % (sizeof(alphanum) - 1)), &dummy); + } + + Request->WorkstationName[size] = 0; + } + + //Show Details + if (verbose) + { + printf("\nRequest Parameters\n==================\n\n"); + logRequestVerbose(Request, &printf); + printf("\n"); + } +} + + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "crypto.h" +#include "endian.h" +#include + +const BYTE AesKeyV4[] = { + 0x05, 0x3D, 0x83, 0x07, 0xF9, 0xE5, 0xF0, 0x88, 0xEB, 0x5E, 0xA6, 0x68, 0x6C, 0xF0, 0x37, 0xC7, 0xE4, 0xEF, 0xD2, 0xD6}; + +const BYTE AesKeyV5[] = { + 0xCD, 0x7E, 0x79, 0x6F, 0x2A, 0xB2, 0x5D, 0xCB, 0x55, 0xFF, 0xC8, 0xEF, 0x83, 0x64, 0xC4, 0x70 }; + +const BYTE AesKeyV6[] = { + 0xA9, 0x4A, 0x41, 0x95, 0xE2, 0x01, 0x43, 0x2D, 0x9B, 0xCB, 0x46, 0x04, 0x05, 0xD8, 0x4A, 0x21 }; + +static const BYTE SBox[] = { + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16 +}; + + +void XorBlock(const BYTE *const in, const BYTE *out) // Ensure that this is always 32 bit aligned +{ + /*UAA64( out, 0 ) ^= UAA64( in, 0 ); + UAA64( out, 1 ) ^= UAA64( in, 1 );*/ + + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_WORDS; i++) + { + ((DWORD*)out)[i] ^= ((DWORD*)in)[i]; + } +} + +#define AddRoundKey(d, rk) XorBlock((const BYTE *)rk, (const BYTE *)d) + +#define Mul2(word) (((word & 0x7f7f7f7f) << 1) ^ (((word & 0x80808080) >> 7) * 0x1b)) +#define Mul3(word) (Mul2(word) ^ word) +#define Mul4(word) (Mul2(Mul2(word))) +#define Mul8(word) (Mul2(Mul2(Mul2(word)))) +#define Mul9(word) (Mul8(word) ^ word) +#define MulB(word) (Mul8(word) ^ Mul3(word)) +#define MulD(word) (Mul8(word) ^ Mul4(word) ^ word) +#define MulE(word) (Mul8(word) ^ Mul4(word) ^ Mul2(word)) + +//32 bit Galois Multiplication (generates bigger code than Macros) +/*static DWORD Mul(DWORD x, DWORD y) +{ + DWORD result = x, yTemp = y, log2; + + if (!y) return 0; + + for (log2 = 0; yTemp >>= 1; log2++ ) + { + result = Mul2(result); + } + + return result ^ Mul(x, y - (1 << log2)); +}*/ + + +void MixColumnsR(BYTE *restrict state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + #if defined(_CRYPTO_OPENSSL) && defined(_OPENSSL_SOFTWARE) && defined(_USE_AES_FROM_OPENSSL) //Always byte swap regardless of endianess + DWORD word = BS32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = BS32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #else + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #endif + } +} + + +static DWORD SubDword(DWORD v) +{ + BYTE *b = (BYTE *)&v; + uint_fast8_t i = 0; + + for (; i < sizeof(DWORD); i++) b[i] = SBox[b[i]]; + + return v; +} + + +void AesInitKey(AesCtx *Ctx, const BYTE *Key, int_fast8_t IsV6, int RijndaelKeyBytes) +{ + int RijndaelKeyDwords = RijndaelKeyBytes / sizeof(DWORD); + Ctx->rounds = (uint_fast8_t)(RijndaelKeyDwords + 6); + + static const DWORD RCon[] = { + 0x00000000, 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000 }; + + uint_fast8_t i; + DWORD temp; + + memcpy(Ctx->Key, Key, RijndaelKeyBytes); + + for ( i = RijndaelKeyDwords; i < ( Ctx->rounds + 1 ) << 2; i++ ) + { + temp = Ctx->Key[ i - 1 ]; + + if ( ( i % RijndaelKeyDwords ) == 0 ) + temp = BE32( SubDword( ROR32( BE32(temp), 24) ) ^ RCon[ i / RijndaelKeyDwords ] ); + + Ctx->Key[ i ] = Ctx->Key[ i - RijndaelKeyDwords ] ^ temp; + } + + if ( IsV6 ) + { + BYTE *_p = (BYTE *)Ctx->Key; + + _p[ 4 * 16 ] ^= 0x73; + _p[ 6 * 16 ] ^= 0x09; + _p[ 8 * 16 ] ^= 0xE4; + } +} + + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) || defined(_OPENSSL_SOFTWARE) +static void SubBytes(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBox[ block[i] ]; +} + + +static void ShiftRows(BYTE *state) +{ + BYTE bIn[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(bIn, state, AES_BLOCK_BYTES); + for (i = 0; i < AES_BLOCK_BYTES; i++) + { + state[i] = bIn[(i + ((i & 3) << 2)) & 0xf]; + } +}; + + +static void MixColumns(BYTE *state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(Mul2(word) ^ ROR32(Mul3(word), 8) ^ ROR32(word, 16) ^ ROR32(word, 24)); + } +} + + +void AesEncryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + for ( i = 0 ;; i += 4 ) + { + AddRoundKey(block, &Ctx->Key[ i ]); + SubBytes(block); + ShiftRows(block); + + if ( i >= ( Ctx->rounds - 1 ) << 2 ) break; + + MixColumns(block); + } + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); +} + + +void AesCmacV4(BYTE *Message, size_t MessageSize, BYTE *MacOut) +{ + size_t i; + BYTE mac[AES_BLOCK_BYTES]; + AesCtx Ctx; + + AesInitKey(&Ctx, AesKeyV4, FALSE, V4_KEY_BYTES); + + memset(mac, 0, sizeof(mac)); + memset(Message + MessageSize, 0, AES_BLOCK_BYTES); + Message[MessageSize] = 0x80; + + for (i = 0; i <= MessageSize; i += AES_BLOCK_BYTES) + { + XorBlock(Message + i, mac); + AesEncryptBlock(&Ctx, mac); + } + + memcpy(MacOut, mac, AES_BLOCK_BYTES); +} +#endif + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) + +static const BYTE SBoxR[] = { + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D +}; + + +static void ShiftRowsR(BYTE *state) +{ + BYTE b[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(b, state, AES_BLOCK_BYTES); + + for (i = 0; i < AES_BLOCK_BYTES; i++) + state[i] = b[(i - ((i & 0x3) << 2)) & 0xf]; +} + + +static void SubBytesR(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBoxR[ block[i] ]; +} + + +void AesEncryptCbc(const AesCtx *const Ctx, BYTE *restrict iv, BYTE *restrict data, size_t *restrict len) +{ + // Pad up to blocksize inclusive + size_t i; + uint_fast8_t pad = (~*len & (AES_BLOCK_BYTES - 1)) + 1; + + #if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 8) // gcc 4.8 memset bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56977 + for (i = 0; i < pad; i++) data[*len + i] = pad; + #else + memset(data + *len, pad, pad); + #endif + *len += pad; + + if ( iv ) XorBlock(iv, data); + AesEncryptBlock(Ctx, data); + + for (i = *len - AES_BLOCK_BYTES; i; i -= AES_BLOCK_BYTES) + { + XorBlock(data, data + AES_BLOCK_BYTES); + data += AES_BLOCK_BYTES; + AesEncryptBlock(Ctx, data); + } +} + + +void AesDecryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); + + for ( i = ( Ctx->rounds - 1 ) << 2 ;; i -= 4 ) + { + ShiftRowsR(block); + SubBytesR(block); + AddRoundKey(block, &Ctx->Key[ i ]); + + if ( i == 0 ) break; + + MixColumnsR(block); + } +} + + +void AesDecryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t len) +{ + BYTE *cc; + + for (cc = data + len - AES_BLOCK_BYTES; cc > data; cc -= AES_BLOCK_BYTES) + { + AesDecryptBlock(Ctx, cc); + XorBlock(cc - AES_BLOCK_BYTES, cc); + } + + AesDecryptBlock(Ctx, cc); + if ( iv ) XorBlock(iv, cc); +} +#endif // _CRYPTO_OPENSSL || OPENSSL_VERSION_NUMBER < 0x10000000L +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif + +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "kms.h" +#include "shared_globals.h" +#include "helpers.h" + +#define FRIENDLY_NAME_WINDOWS "Windows" +#define FRIENDLY_NAME_OFFICE2010 "Office 2010" +#define FRIENDLY_NAME_OFFICE2013 "Office" + +#ifndef NO_BASIC_PRODUCT_LIST +// Do not change the order of this list. Append items as necessary +const KmsIdList ProductList[] = { + /* 000 */ { { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } /*"212a64dc-43b1-4d3d-a30c-2fc69d2095c6"*/, "Vista", EPID_WINDOWS, 4, 25 }, + /* 001 */ { { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } /*"7fde5219-fbfa-484a-82c9-34d1ad53e856"*/, "Windows 7", EPID_WINDOWS, 4, 25 }, + /* 002 */ { { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } /*"3c40b358-5948-45af-923b-53d21fcc7e79"*/, "Windows 8 VL", EPID_WINDOWS, 5, 25 }, + /* 003 */ { { 0x5f94a0bb, 0xd5a0, 0x4081, { 0xa6, 0x85, 0x58, 0x19, 0x41, 0x8b, 0x2f, 0xe0 } } /*"5f94a0bb-d5a0-4081-a685-5819418b2fe0"*/, "Windows Preview", EPID_WINDOWS, 6, 25 }, + /* 004 */ { { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } /*"bbb97b3b-8ca4-4a28-9717-89fabd42c4ac"*/, "Windows 8 Retail", EPID_WINDOWS, 5, 25 }, + /* 005 */ { { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } /*"cb8fc780-2c05-495a-9710-85afffc904d7"*/, "Windows 8.1 VL", EPID_WINDOWS, 6, 25 }, + /* 006 */ { { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } /*"6d646890-3606-461a-86ab-598bb84ace82"*/, "Windows 8.1 Retail", EPID_WINDOWS, 6, 25 }, + /* 007 */ { { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } /*"33e156e4-b76f-4a52-9f91-f641dd95ac48"*/, "Windows 2008 A", EPID_WINDOWS, 4, 5 }, + /* 008 */ { { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } /*"8fe53387-3087-4447-8985-f75132215ac9"*/, "Windows 2008 B", EPID_WINDOWS, 4, 5 }, + /* 009 */ { { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } /*"8a21fdf3-cbc5-44eb-83f3-fe284e6680a7"*/, "Windows 2008 C", EPID_WINDOWS, 4, 5 }, + /* 010 */ { { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } /*"0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed"*/, "Windows 2008 R2 A", EPID_WINDOWS, 4, 5 }, + /* 011 */ { { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } /*"ca87f5b6-cd46-40c0-b06d-8ecd57a4373f"*/, "Windows 2008 R2 B", EPID_WINDOWS, 4, 5 }, + /* 012 */ { { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } /*"b2ca2689-a9a8-42d7-938d-cf8e9f201958"*/, "Windows 2008 R2 C", EPID_WINDOWS, 4, 5 }, + /* 013 */ { { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } /*"8665cb71-468c-4aa3-a337-cb9bc9d5eaac"*/, "Windows 2012", EPID_WINDOWS, 5, 5 }, + /* 014 */ { { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } /*"8456EFD3-0C04-4089-8740-5B7238535A65"*/, "Windows 2012 R2", EPID_WINDOWS, 6, 5 }, + /* 015 */ { { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } /*"e85af946-2e25-47b7-83e1-bebcebeac611"*/, "Office 2010", EPID_OFFICE2010, 4, 5 }, + /* 016 */ { { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } /*"e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0"*/, "Office 2013", EPID_OFFICE2013, 6, 5 }, + /* 017 */ { { 0x6d5f5270, 0x31ac, 0x433e, { 0xb9, 0x0a, 0x39, 0x89, 0x29, 0x23, 0xc6, 0x57 } } /*"6d5f5270-31ac-433e-b90a-39892923c657"*/, "Windows Server Preview", EPID_WINDOWS, 6, 5 }, + /* 018 */ { { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } /*"85b5f61b-320b-4be3-814a-b76b2bfafc82"*/, "Office 2016", EPID_OFFICE2013, 6, 5 }, + /* 019 */ { { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } /*"58e2134f-8e11-4d17-9cb2-91069c151148"*/, "Windows 10 VL", EPID_WINDOWS, 6, 25 }, + /* 020 */ { { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } /*"e1c51358-fe3e-4203-a4a2-3b6b20c9734e"*/, "Windows 10 Retail", EPID_WINDOWS, 6, 25 }, + /* 021 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; +#endif + +// Application ID is used by KMS server to count KeyManagementServiceCurrentCount +// Do not change the order of this list. Append items as necessary +const KmsIdList AppList[] = { + /* 000 */ { { 0x55c92734, 0xd682, 0x4d71, { 0x98, 0x3e, 0xd6, 0xec, 0x3f, 0x16, 0x05, 0x9f } } /*"55C92734-D682-4D71-983E-D6EC3F16059F"*/, FRIENDLY_NAME_WINDOWS, EPID_WINDOWS, 0, 0}, + /* 001 */ { { 0x59A52881, 0xa989, 0x479d, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"59A52881-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2010, EPID_OFFICE2010, 0, 0}, + /* 002 */ { { 0x0FF1CE15, 0xA989, 0x479D, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"0FF1CE15-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2013, EPID_OFFICE2013, 0, 0}, + /* 003 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + +#ifndef NO_EXTENDED_PRODUCT_LIST +const KmsIdList ExtendedProductList [] = { + + // Windows Server + + { { 0xad2542d4, 0x9154, 0x4c6d, { 0x8a, 0x44, 0x30, 0xf1, 0x1e, 0xe9, 0x69, 0x89, } } /*ad2542d4-9154-4c6d-8a44-30f11ee96989*/, "Windows Server 2008 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x2401e3d0, 0xc50a, 0x4b58, { 0x87, 0xb2, 0x7e, 0x79, 0x4b, 0x7d, 0x26, 0x07, } } /*2401e3d0-c50a-4b58-87b2-7e794b7d2607*/, "Windows Server 2008 Standard V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } } /*68b6e220-cf09-466b-92d3-45cd964b9509*/, "Windows Server 2008 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xfd09ef77, 0x5647, 0x4eff, { 0x80, 0x9c, 0xaf, 0x2b, 0x64, 0x65, 0x9a, 0x45, } } /*fd09ef77-5647-4eff-809c-af2b64659a45*/, "Windows Server 2008 Datacenter V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } } /*c1af4d90-d1bc-44ca-85d4-003ba33db3b9*/, "Windows Server 2008 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0x8198490a, 0xadd0, 0x47b2, { 0xb3, 0xba, 0x31, 0x6b, 0x12, 0xd6, 0x47, 0xb4, } } /*8198490a-add0-47b2-b3ba-316b12d647b4*/, "Windows Server 2008 Enterprise V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } } /*ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b*/, "Windows Server 2008 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x7afb1156, 0x2c1d, 0x40fc, { 0xb2, 0x60, 0xaa, 0xb7, 0x44, 0x2b, 0x62, 0xfe, } } /*7afb1156-2c1d-40fc-b260-aab7442b62fe*/, "Windows Server 2008 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0x68531fb9, 0x5511, 0x4989, { 0x97, 0xbe, 0xd1, 0x1a, 0x0f, 0x55, 0x63, 0x3f, } } /*68531fb9-5511-4989-97be-d11a0f55633f*/, "Windows Server 2008 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } } /*7482e61b-c589-4b7f-8ecc-46d455ac3b87*/, "Windows Server 2008 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } } /*620e2b3d-09e7-42fd-802a-17a13652fe7a*/, "Windows Server 2008 R2 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B }, + { { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } } /*a78b8bd9-8017-4df5-b86a-09f756affa7c*/, "Windows Server 2008 R2 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0xcda18cf3, 0xc196, 0x46ad, { 0xb2, 0x89, 0x60, 0xc0, 0x72, 0x86, 0x99, 0x94, } } /*cda18cf3-c196-46ad-b289-60c072869994*/, "Windows Server 2008 R2 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0xd3643d60, 0x0c42, 0x412d, { 0xa7, 0xd6, 0x52, 0xe6, 0x63, 0x53, 0x27, 0xf6, } } /*d3643d60-0c42-412d-a7d6-52e6635327f6*/, "Windows Server 2012 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } } /*f0f5ec41-0d55-4732-af02-440a44a3cf0f*/, "Windows Server 2012 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x95fd1c83, 0x7df5, 0x494a, { 0xbe, 0x8b, 0x13, 0x00, 0xe1, 0xc9, 0xd1, 0xcd, } } /*95fd1c83-7df5-494a-be8b-1300e1c9d1cd*/, "Windows Server 2012 MultiPoint Premium", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x7d5486c7, 0xe120, 0x4771, { 0xb7, 0xf1, 0x7b, 0x56, 0xc6, 0xd3, 0x17, 0x0c, } } /*7d5486c7-e120-4771-b7f1-7b56c6d3170c*/, "Windows Server 2012 MultiPoint Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } } /*00091344-1ea4-4f37-b789-01750ba6988c*/, "Windows Server 2012 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb3ca044e, 0xa358, 0x4d68, { 0x98, 0x83, 0xaa, 0xa2, 0x94, 0x1a, 0xca, 0x99, } } /*b3ca044e-a358-4d68-9883-aaa2941aca99*/, "Windows Server 2012 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb743a2be, 0x68d4, 0x4dd3, { 0xaf, 0x32, 0x92, 0x42, 0x5b, 0x7b, 0xb6, 0x23, } } /*b743a2be-68d4-4dd3-af32-92425b7bb623*/, "Windows Server 2012 R2 Cloud Storage", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0x21db6ba4, 0x9a7b, 0x4a14, { 0x9e, 0x29, 0x64, 0xa6, 0x0c, 0x59, 0x30, 0x1d, } } /*21db6ba4-9a7b-4a14-9e29-64a60c59301d*/, "Windows Server 2012 R2 Essentials", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xba947c44, 0xd19d, 0x4786, { 0xb6, 0xae, 0x22, 0x77, 0x0b, 0xc9, 0x4c, 0x54, } } /*ba947c44-d19d-4786-b6ae-22770bc94c54*/, "Windows Server 2016 Datacenter Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_SRV_BETA }, + + + // Windows 10 Preview +# ifdef INCLUDE_BETAS + { { 0x6496e59d, 0x89dc, 0x49eb, { 0xa3, 0x53, 0x09, 0xce, 0xb9, 0x40, 0x48, 0x45, } } /*6496e59d-89dc-49eb-a353-09ceb9404845*/, "Windows 10 Core Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xa4383e6b, 0xdada, 0x423d, { 0xa4, 0x3d, 0xf2, 0x56, 0x78, 0x42, 0x96, 0x76, } } /*a4383e6b-dada-423d-a43d-f25678429676*/, "Windows 10 Professional Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcf59a07b, 0x1a2a, 0x4be0, { 0xbf, 0xe0, 0x42, 0x3b, 0x58, 0x23, 0xe6, 0x63, } } /*cf59a07b-1a2a-4be0-bfe0-423b5823e663*/, "Windows 10 Professional WMC Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcde952c7, 0x2f96, 0x4d9d, { 0x8f, 0x2b, 0x2d, 0x34, 0x9f, 0x64, 0xfc, 0x51, } } /*cde952c7-2f96-4d9d-8f2b-2d349f64fc51*/, "Windows 10 Enterprise Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + + + // Windows 10 + + { { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } } /*73111121-5638-40f6-bc11-f1d7b0d64300*/, "Windows 10 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xe272e3e2, 0x732f, 0x4c65, { 0xa8, 0xf0, 0x48, 0x47, 0x47, 0xd0, 0xd9, 0x47, } } /*e272e3e2-732f-4c65-a8f0-484747d0d947*/, "Windows 10 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x7b51a46c, 0x0c04, 0x4e8f, { 0x9a, 0xf4, 0x84, 0x96, 0xcc, 0xa9, 0x0d, 0x5e, } } /*7b51a46c-0c04-4e8f-9af4-8496cca90d5e*/, "Windows 10 Enterprise LTSB", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x87b838b7, 0x41b6, 0x4590, { 0x83, 0x18, 0x57, 0x97, 0x95, 0x1d, 0x85, 0x29, } } /*87b838b7-41b6-4590-8318-5797951d8529*/, "Windows 10 Enterprise LTSB N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0xe0c42288, 0x980c, 0x4788, { 0xa0, 0x14, 0xc0, 0x80, 0xd2, 0xe1, 0x92, 0x6e, } } /*e0c42288-980c-4788-a014-c080d2e1926e*/, "Windows 10 Education", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x3c102355, 0xd027, 0x42c6, { 0xad, 0x23, 0x2e, 0x7e, 0xf8, 0xa0, 0x25, 0x85, } } /*3c102355-d027-42c6-ad23-2e7ef8a02585*/, "Windows 10 Education N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x2de67392, 0xb7a7, 0x462a, { 0xb1, 0xca, 0x10, 0x8d, 0xd1, 0x89, 0xf5, 0x88, } } /*2de67392-b7a7-462a-b1ca-108dd189f588*/, "Windows 10 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xa80b5abf, 0x75ad, 0x428b, { 0xb0, 0x5d, 0xa4, 0x7d, 0x2d, 0xff, 0xee, 0xbf, } } /*a80b5abf-76ad-428b-b05d-a47d2dffeebf*/, "Windows 10 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } } /*58e97c99-f377-4ef1-81d5-4ad5522b5fd8*/, "Windows 10 Home", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0x7b9e1751, 0xa8da, 0x4f75, { 0x95, 0x60, 0x5f, 0xad, 0xfe, 0x3d, 0x8e, 0x38, } } /*7b9e1751-a8da-4f75-9560-5fadfe3d8e38*/, "Windows 10 Home N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xcd918a57, 0xa41b, 0x4c82, { 0x8d, 0xce, 0x1a, 0x53, 0x8e, 0x22, 0x1a, 0x83, } } /*cd918a57-a41b-4c82-8dce-1a538e221a83*/, "Windows 10 Home Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xa9107544, 0xf4a0, 0x4053, { 0xa9, 0x6a, 0x14, 0x79, 0xab, 0xde, 0xf9, 0x12, } } /*a9107544-f4a0-4053-a96a-1479abdef912*/, "Windows 10 Home Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + + + // Windows 8.x + +# ifdef INCLUDE_BETAS + { { 0x2B9C337F, 0x7A1D, 0x4271, { 0x90, 0xA3, 0xC6, 0x85, 0x5A, 0x2B, 0x8A, 0x1C, } } /*2B9C337F-7A1D-4271-90A3-C6855A2B8A1C*/, "Windows 8.x Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0x631EAD72, 0xA8AB, 0x4DF8, { 0xBB, 0xDF, 0x37, 0x20, 0x29, 0x98, 0x9B, 0xDD, } } /*631EAD72-A8AB-4DF8-BBDF-372029989BDD*/, "Windows 8.x Preview ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + { { 0x81671aaf, 0x79d1, 0x4eb1, { 0xb0, 0x04, 0x8c, 0xbb, 0xe1, 0x73, 0xaf, 0xea, } } /*81671aaf-79d1-4eb1-b004-8cbbe173afea*/, "Windows 8.1 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x113e705c, 0xfa49, 0x48a4, { 0xbe, 0xea, 0x7d, 0xd8, 0x79, 0xb4, 0x6b, 0x14, } } /*113e705c-fa49-48a4-beea-7dd879b46b14*/, "Windows 8.1 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x096ce63d, 0x4fac, 0x48a9, { 0x82, 0xa9, 0x61, 0xae, 0x9e, 0x80, 0x0e, 0x5f, } } /*096ce63d-4fac-48a9-82a9-61ae9e800e5f*/, "Windows 8.1 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } } /*c06b6981-d7fd-4a35-b7b4-054742b7af67*/, "Windows 8.1 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x7476d79f, 0x8e48, 0x49b4, { 0xab, 0x63, 0x4d, 0x0b, 0x81, 0x3a, 0x16, 0xe4, } } /*7476d79f-8e48-49b4-ab63-4d0b813a16e4*/, "Windows 8.1 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } } /*fe1c3238-432a-43a1-8e25-97e7d1ef10f3*/, "Windows 8.1 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0x78558a64, 0xdc19, 0x43fe, { 0xa0, 0xd0, 0x80, 0x75, 0xb2, 0xa3, 0x70, 0xa3, } } /*78558a64-dc19-43fe-a0d0-8075b2a370a3*/, "Windows 8.1 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xffee456a, 0xcd87, 0x4390, { 0x8e, 0x07, 0x16, 0x14, 0x6c, 0x67, 0x2f, 0xd0, } } /*ffee456a-cd87-4390-8e07-16146c672fd0*/, "Windows 8.1 Core ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc72c6a1d, 0xf252, 0x4e7e, { 0xbd, 0xd1, 0x3f, 0xca, 0x34, 0x2a, 0xcb, 0x35, } } /*c72c6a1d-f252-4e7e-bdd1-3fca342acb35*/, "Windows 8.1 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xdb78b74f, 0xef1c, 0x4892, { 0xab, 0xfe, 0x1e, 0x66, 0xb8, 0x23, 0x1d, 0xf6, } } /*db78b74f-ef1c-4892-abfe-1e66b8231df6*/, "Windows 8.1 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xe9942b32, 0x2e55, 0x4197, { 0xb0, 0xbd, 0x5f, 0xf5, 0x8c, 0xba, 0x88, 0x60, } } /*e9942b32-2e55-4197-b0bd-5ff58cba8860*/, "Windows 8.1 Core Connected", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xc6ddecd6, 0x2354, 0x4c19, { 0x90, 0x9b, 0x30, 0x6a, 0x30, 0x58, 0x48, 0x4e, } } /*c6ddecd6-2354-4c19-909b-306a3058484e*/, "Windows 8.1 Core Connected N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xb8f5e3a3, 0xed33, 0x4608, { 0x81, 0xe1, 0x37, 0xd6, 0xc9, 0xdc, 0xfd, 0x9c, } } /*b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c*/, "Windows 8.1 Core Connected Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xba998212, 0x460a, 0x44db, { 0xbf, 0xb5, 0x71, 0xbf, 0x09, 0xd1, 0xc6, 0x8b, } } /*ba998212-460a-44db-bfb5-71bf09d1c68b*/, "Windows 8.1 Core Connected Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xe58d87b5, 0x8126, 0x4580, { 0x80, 0xfb, 0x86, 0x1b, 0x22, 0xf7, 0x92, 0x96, } } /*e58d87b5-8126-4580-80fb-861b22f79296*/, "Windows 8.1 Professional Student", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xcab491c7, 0xa918, 0x4f60, { 0xb5, 0x02, 0xda, 0xb7, 0x5e, 0x33, 0x4f, 0x40, } } /*cab491c7-a918-4f60-b502-dab75e334f40*/, "Windows 8.1 Professional Student N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xa00018a3, 0xf20f, 0x4632, { 0xbf, 0x7c, 0x8d, 0xaa, 0x53, 0x51, 0xc9, 0x14, } } /*a00018a3-f20f-4632-bf7c-8daa5351c914*/, "Windows 8 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } } /*a98bcd6d-5343-4603-8afe-5908e4611112*/, "Windows 8 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xebf245c1, 0x29a8, 0x4daf, { 0x9c, 0xb1, 0x38, 0xdf, 0xc6, 0x08, 0xa8, 0xc8, } } /*ebf245c1-29a8-4daf-9cb1-38dfc608a8c8*/, "Windows 8 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0x458e1bec, 0x837a, 0x45f6, { 0xb9, 0xd5, 0x92, 0x5e, 0xd5, 0xd2, 0x99, 0xde, } } /*458e1bec-837a-45f6-b9d5-925ed5d299de*/, "Windows 8 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xe14997e7, 0x800a, 0x4cf7, { 0xad, 0x10, 0xde, 0x4b, 0x45, 0xb5, 0x78, 0xdb, } } /*e14997e7-800a-4cf7-ad10-de4b45b578db*/, "Windows 8 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } } /*c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60*/, "Windows 8 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x197390a0, 0x65f6, 0x4a95, { 0xbd, 0xc4, 0x55, 0xd5, 0x8a, 0x3b, 0x02, 0x53, } } /*197390a0-65f6-4a95-bdc4-55d58a3b0253*/, "Windows 8 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x9d5584a2, 0x2d85, 0x419a, { 0x98, 0x2c, 0xa0, 0x08, 0x88, 0xbb, 0x9d, 0xdf, } } /*9d5584a2-2d85-419a-982c-a00888bb9ddf*/, "Windows 8 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x8860fcd4, 0xa77b, 0x4a20, { 0x90, 0x45, 0xa1, 0x50, 0xff, 0x11, 0xd6, 0x09, } } /*8860fcd4-a77b-4a20-9045-a150ff11d609*/, "Windows 8 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + + + // Windows 7 + + { { 0xae2ee509, 0x1b34, 0x41c0, { 0xac, 0xb7, 0x6d, 0x46, 0x50, 0x16, 0x89, 0x15, } } /*ae2ee509-1b34-41c0-acb7-6d4650168915*/, "Windows 7 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x1cb6d605, 0x11b3, 0x4e14, { 0xbb, 0x30, 0xda, 0x91, 0xc8, 0xe3, 0x98, 0x3a, } } /*1cb6d605-11b3-4e14-bb30-da91c8e3983a*/, "Windows 7 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } } /*b92e9980-b9d5-4821-9c94-140f632f6312*/, "Windows 7 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x54a09a0d, 0xd57b, 0x4c10, { 0x8b, 0x69, 0xa8, 0x42, 0xd6, 0x59, 0x0a, 0xd5, } } /*54a09a0d-d57b-4c10-8b69-a842d6590ad5*/, "Windows 7 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + + + // Windows Vista + + { { 0xcfd8ff08, 0xc0d7, 0x452b, { 0x9f, 0x60, 0xef, 0x5c, 0x70, 0xc3, 0x20, 0x94, } } /*cfd8ff08-c0d7-452b-9f60-ef5c70c32094*/, "Windows Vista Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0xd4f54950, 0x26f2, 0x4fb4, { 0xba, 0x21, 0xff, 0xab, 0x16, 0xaf, 0xca, 0xde, } } /*d4f54950-26f2-4fb4-ba21-ffab16afcade*/, "Windows Vista Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } } /*4f3d1606-3fea-4c01-be3c-8d671c401e3b*/, "Windows Vista Business", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x2c682dc2, 0x8b68, 0x4f63, { 0xa1, 0x65, 0xae, 0x29, 0x1d, 0x4c, 0xf1, 0x38, } } /*2c682dc2-8b68-4f63-a165-ae291d4cf138*/, "Windows Vista Business N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + + + // Windows Embedded + + { { 0xaa6dd3aa, 0xc2b4, 0x40e2, { 0xa5, 0x44, 0xa6, 0xbb, 0xb3, 0xf5, 0xc3, 0x95, } } /*aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395*/, "Windows ThinPC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xdb537896, 0x376f, 0x48ae, { 0xa4, 0x92, 0x53, 0xd0, 0x54, 0x77, 0x73, 0xd0, } } /*db537896-376f-48ae-a492-53d0547773d0*/, "Windows Embedded POSReady 7", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x0ab82d54, 0x47f4, 0x4acb, { 0x81, 0x8c, 0xcc, 0x5b, 0xf0, 0xec, 0xb6, 0x49, } } /*0ab82d54-47f4-4acb-818c-cc5bf0ecb649*/, "Windows Embedded Industry 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xcd4e2d9f, 0x5059, 0x4a50, { 0xa9, 0x2d, 0x05, 0xd5, 0xbb, 0x12, 0x67, 0xc7, } } /*cd4e2d9f-5059-4a50-a92d-05d5bb1267c7*/, "Windows Embedded Industry E 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xf7e88590, 0xdfc7, 0x4c78, { 0xbc, 0xcb, 0x6f, 0x38, 0x65, 0xb9, 0x9d, 0x1a, } } /*f7e88590-dfc7-4c78-bccb-6f3865b99d1a*/, "Windows Embedded Industry A 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + + // Office 2010 + + { { 0x8ce7e872, 0x188c, 0x4b98, { 0x9d, 0x90, 0xf8, 0xf9, 0x0b, 0x7a, 0xad, 0x02, } } /*8ce7e872-188c-4b98-9d90-f8f90b7aad02*/, "Office Access 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xcee5d470, 0x6e3b, 0x4fcc, { 0x8c, 0x2b, 0xd1, 0x74, 0x28, 0x56, 0x8a, 0x9f, } } /*cee5d470-6e3b-4fcc-8c2b-d17428568a9f*/, "Office Excel 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x8947d0b8, 0xc33b, 0x43e1, { 0x8c, 0x56, 0x9b, 0x67, 0x4c, 0x05, 0x28, 0x32, } } /*8947d0b8-c33b-43e1-8c56-9b674c052832*/, "Office Groove 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xca6b6639, 0x4ad6, 0x40ae, { 0xa5, 0x75, 0x14, 0xde, 0xe0, 0x7f, 0x64, 0x30, } } /*ca6b6639-4ad6-40ae-a575-14dee07f6430*/, "Office InfoPath 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x09ed9640, 0xf020, 0x400a, { 0xac, 0xd8, 0xd7, 0xd8, 0x67, 0xdf, 0xd9, 0xc2, } } /*09ed9640-f020-400a-acd8-d7d867dfd9c2*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xef3d4e49, 0xa53d, 0x4d81, { 0xa2, 0xb1, 0x2c, 0xa6, 0xc2, 0x55, 0x6b, 0x2c, } } /*ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xab586f5c, 0x5256, 0x4632, { 0x96, 0x2f, 0xfe, 0xfd, 0x8b, 0x49, 0xe6, 0xf4, } } /*ab586f5c-5256-4632-962f-fefd8b49e6f4*/, "Office OneNote 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xecb7c192, 0x73ab, 0x4ded, { 0xac, 0xf4, 0x23, 0x99, 0xb0, 0x95, 0xd0, 0xcc, } } /*ecb7c192-73ab-4ded-acf4-2399b095d0cc*/, "Office OutLook 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x45593b1d, 0xdfb1, 0x4e91, { 0xbb, 0xfb, 0x2d, 0x5d, 0x0c, 0xe2, 0x22, 0x7a, } } /*45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a*/, "Office PowerPoint 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xdf133ff7, 0xbf14, 0x4f95, { 0xaf, 0xe3, 0x7b, 0x48, 0xe7, 0xe3, 0x31, 0xef, } } /*df133ff7-bf14-4f95-afe3-7b48e7e331ef*/, "Office Project Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x5dc7bf61, 0x5ec9, 0x4996, { 0x9c, 0xcb, 0xdf, 0x80, 0x6a, 0x2d, 0x0e, 0xfe, } } /*5dc7bf61-5ec9-4996-9ccb-df806a2d0efe*/, "Office Project Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xb50c4f75, 0x599b, 0x43e8, { 0x8d, 0xcd, 0x10, 0x81, 0xa7, 0x96, 0x72, 0x41, } } /*b50c4f75-599b-43e8-8dcd-1081a7967241*/, "Office Publisher 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x92236105, 0xbb67, 0x494f, { 0x94, 0xc7, 0x7f, 0x7a, 0x60, 0x79, 0x29, 0xbd, } } /*92236105-bb67-494f-94c7-7f7a607929bd*/, "Office Visio Premium 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xe558389c, 0x83c3, 0x4b29, { 0xad, 0xfe, 0x5e, 0x4d, 0x7f, 0x46, 0xc3, 0x58, } } /*e558389c-83c3-4b29-adfe-5e4d7f46c358*/, "Office Visio Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9ed833ff, 0x4f92, 0x4f36, { 0xb3, 0x70, 0x86, 0x83, 0xa4, 0xf1, 0x32, 0x75, } } /*9ed833ff-4f92-4f36-b370-8683a4f13275*/, "Office Visio Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x2d0882e7, 0xa4e7, 0x423b, { 0x8c, 0xcc, 0x70, 0xd9, 0x1e, 0x01, 0x58, 0xb1, } } /*2d0882e7-a4e7-423b-8ccc-70d91e0158b1*/, "Office Word 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } } /*6f327760-8c5c-417c-9b61-836a98287e0c*/, "Office Professional Plus 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9da2a678, 0xfb6b, 0x4e67, { 0xab, 0x84, 0x60, 0xdd, 0x6a, 0x9c, 0x81, 0x9a, } } /*9da2a678-fb6b-4e67-ab84-60dd6a9c819a*/, "Office Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xea509e87, 0x07a1, 0x4a45, { 0x9e, 0xdc, 0xeb, 0xa5, 0xa3, 0x9f, 0x36, 0xaf, } } /*ea509e87-07a1-4a45-9edc-eba5a39f36af*/, "Office Small Business Basics 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + + // Office 2013 + + { { 0x6ee7622c, 0x18d8, 0x4005, { 0x9f, 0xb7, 0x92, 0xdb, 0x64, 0x4a, 0x27, 0x9b, } } /*6ee7622c-18d8-4005-9fb7-92db644a279b*/, "Office Access 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xf7461d52, 0x7c2b, 0x43b2, { 0x87, 0x44, 0xea, 0x95, 0x8e, 0x0b, 0xd0, 0x9a, } } /*f7461d52-7c2b-43b2-8744-ea958e0bd09a*/, "Office Excel 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xa30b8040, 0xd68a, 0x423f, { 0xb0, 0xb5, 0x9c, 0xe2, 0x92, 0xea, 0x5a, 0x8f, } } /*a30b8040-d68a-423f-b0b5-9ce292ea5a8f*/, "Office InfoPath 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x1b9f11e3, 0xc85c, 0x4e1b, { 0xbb, 0x29, 0x87, 0x9a, 0xd2, 0xc9, 0x09, 0xe3, } } /*1b9f11e3-c85c-4e1b-bb29-879ad2c909e3*/, "Office Lync 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xdc981c6b, 0xfc8e, 0x420f, { 0xaa, 0x43, 0xf8, 0xf3, 0x3e, 0x5c, 0x09, 0x23, } } /*dc981c6b-fc8e-420f-aa43-f8f33e5c0923*/, "Office Mondo 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xefe1f3e6, 0xaea2, 0x4144, { 0xa2, 0x08, 0x32, 0xaa, 0x87, 0x2b, 0x65, 0x45, } } /*efe1f3e6-aea2-4144-a208-32aa872b6545*/, "Office OneNote 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x771c3afa, 0x50c5, 0x443f, { 0xb1, 0x51, 0xff, 0x25, 0x46, 0xd8, 0x63, 0xa0, } } /*771c3afa-50c5-443f-b151-ff2546d863a0*/, "Office OutLook 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x8c762649, 0x97d1, 0x4953, { 0xad, 0x27, 0xb7, 0xe2, 0xc2, 0x5b, 0x97, 0x2e, } } /*8c762649-97d1-4953-ad27-b7e2c25b972e*/, "Office PowerPoint 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x4a5d124a, 0xe620, 0x44ba, { 0xb6, 0xff, 0x65, 0x89, 0x61, 0xb3, 0x3b, 0x9a, } } /*4a5d124a-e620-44ba-b6ff-658961b33b9a*/, "Office Project Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x427a28d1, 0xd17c, 0x4abf, { 0xb7, 0x17, 0x32, 0xc7, 0x80, 0xba, 0x6f, 0x07, } } /*427a28d1-d17c-4abf-b717-32c780ba6f07*/, "Office Project Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x00c79ff1, 0x6850, 0x443d, { 0xbf, 0x61, 0x71, 0xcd, 0xe0, 0xde, 0x30, 0x5f, } } /*00c79ff1-6850-443d-bf61-71cde0de305f*/, "Office Publisher 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xac4efaf0, 0xf81f, 0x4f61, { 0xbd, 0xf7, 0xea, 0x32, 0xb0, 0x2a, 0xb1, 0x17, } } /*ac4efaf0-f81f-4f61-bdf7-ea32b02ab117*/, "Office Visio Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xe13ac10e, 0x75d0, 0x4aff, { 0xa0, 0xcd, 0x76, 0x49, 0x82, 0xcf, 0x54, 0x1c, } } /*e13ac10e-75d0-4aff-a0cd-764982cf541c*/, "Office Visio Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xd9f5b1c6, 0x5386, 0x495a, { 0x88, 0xf9, 0x9a, 0xd6, 0xb4, 0x1a, 0xc9, 0xb3, } } /*d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3*/, "Office Word 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } } /*b322da9c-a2e2-4058-9e4e-f59a6970bd69*/, "Office Professional Plus 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb13afb38, 0xcd79, 0x4ae5, { 0x9f, 0x7f, 0xee, 0xd0, 0x58, 0xd7, 0x50, 0xca, } } /*b13afb38-cd79-4ae5-9f7f-eed058d750ca*/, "Office Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + + // Office 2016 + + { { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } } /*d450596f-894d-49e0-966a-fd39ed4c4c64*/, "Office Professional Plus 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x4f414197, 0x0fc2, 0x4c01, { 0xb6, 0x8a, 0x86, 0xcb, 0xb9, 0xac, 0x25, 0x4c, } } /*4f414197-0fc2-4c01-b68a-86cbb9ac254c*/, "Office Project Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x6bf301c1, 0xb94a, 0x43e9, { 0xba, 0x31, 0xd4, 0x94, 0x59, 0x8c, 0x47, 0xfb, } } /*6bf301c1-b94a-43e9-ba31-d494598c47fb*/, "Office Visio Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x041a06cb, 0xc5b8, 0x4772, { 0x80, 0x9f, 0x41, 0x6d, 0x03, 0xd1, 0x66, 0x54, } } /*041a06cb-c5b8-4772-809f-416d03d16654*/, "Office Publisher 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x67c0fc0c, 0xdeba, 0x401b, { 0xbf, 0x8b, 0x9c, 0x8a, 0xd8, 0x39, 0x58, 0x04, } } /*67c0fc0c-deba-401b-bf8b-9c8ad8395804*/, "Office Access 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x83e04ee1, 0xfa8d, 0x436d, { 0x89, 0x94, 0xd3, 0x1a, 0x86, 0x2c, 0xab, 0x77, } } /*83e04ee1-fa8d-436d-8994-d31a862cab77*/, "Office Skype for Business 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x9caabccb, 0x61b1, 0x4b4b, { 0x8b, 0xec, 0xd1, 0x0a, 0x3c, 0x3a, 0xc2, 0xce, } } /*9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce*/, "Office Mondo 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xaa2a7821, 0x1827, 0x4c2c, { 0x8f, 0x1d, 0x45, 0x13, 0xa3, 0x4d, 0xda, 0x97, } } /*aa2a7821-1827-4c2c-8f1d-4513a34dda97*/, "Office Visio Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xbb11badf, 0xd8aa, 0x470e, { 0x93, 0x11, 0x20, 0xea, 0xf8, 0x0f, 0xe5, 0xcc, } } /*bb11badf-d8aa-470e-9311-20eaf80fe5cc*/, "Office Word 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xc3e65d36, 0x141f, 0x4d2f, { 0xa3, 0x03, 0xa8, 0x42, 0xee, 0x75, 0x6a, 0x29, } } /*c3e65d36-141f-4d2f-a303-a842ee756a29*/, "Office Excel 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd70b1bba, 0xb893, 0x4544, { 0x96, 0xe2, 0xb7, 0xa3, 0x18, 0x09, 0x1c, 0x33, } } /*d70b1bba-b893-4544-96e2-b7a318091c33*/, "Office Powerpoint 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd8cace59, 0x33d2, 0x4ac7, { 0x9b, 0x1b, 0x9b, 0x72, 0x33, 0x9c, 0x51, 0xc8, } } /*d8cace59-33d2-4ac7-9b1b-9b72339c51c8*/, "Office OneNote 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xda7ddabc, 0x3fbe, 0x4447, { 0x9e, 0x01, 0x6a, 0xb7, 0x44, 0x0b, 0x4c, 0xd4, } } /*da7ddabc-3fbe-4447-9e01-6ab7440b4cd4*/, "Office Project Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xdedfa23d, 0x6ed1, 0x45a6, { 0x85, 0xdc, 0x63, 0xca, 0xe0, 0x54, 0x6d, 0xe6, } } /*dedfa23d-6ed1-45a6-85dc-63cae0546de6*/, "Office Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xe914ea6e, 0xa5fa, 0x4439, { 0xa3, 0x94, 0xa9, 0xbb, 0x32, 0x93, 0xca, 0x09, } } /*e914ea6e-a5fa-4439-a394-a9bb3293ca09*/, "Office Mondo R 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xec9d9265, 0x9d1e, 0x4ed0, { 0x83, 0x8a, 0xcd, 0xc2, 0x0f, 0x25, 0x51, 0xa1, } } /*ec9d9265-9d1e-4ed0-838a-cdc20f2551a1*/, "Office Outlook 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + + // End marker (necessity should be removed when time permits) + + { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + + +// necessary because other .c files cannot access _countof() +__pure ProdListIndex_t getExtendedProductListSize(void) +{ + return _countof(ExtendedProductList) - 1; +} + +__pure ProdListIndex_t getAppListSize(void) +{ + return _countof(AppList); +} + +#endif + +#ifndef NO_RANDOM_EPID +// HostType and OSBuild +static const struct KMSHostOS { uint16_t Type; uint16_t Build; } HostOS[] = +{ + { 55041, 6002 }, // Windows Server 2008 SP2 + { 55041, 7601 }, // Windows Server 2008 R2 SP1 + { 5426, 9200 }, // Windows Server 2012 + { 6401, 9600 }, // Windows Server 2012 R2 + { 3612, 10240}, // Windows Server 2016 +}; + +// GroupID and PIDRange +static const struct PKEYCONFIG { uint16_t GroupID; uint32_t RangeMin; uint32_t RangeMax; } pkeyconfig[] = { + { 206, 152000000, 191999999 }, // Windows Server 2012 KMS Host pkeyconfig + { 206, 271000000, 310999999 }, // Windows Server 2012 R2 KMS Host pkeyconfig + { 96, 199000000, 217999999 }, // Office2010 KMS Host pkeyconfig + { 206, 234000000, 255999999 }, // Office2013 KMS Host pkeyconfig +}; + +// Valid language identifiers to be used in the ePID +static const uint16_t LcidList[] = { + 1078, 1052, 1025, 2049, 3073, 4097, 5121, 6145, 7169, 8193, 9217, 10241, 11265, 12289, 13313, 14337, 15361, 16385, + 1067, 1068, 2092, 1069, 1059, 1093, 5146, 1026, 1027, 1028, 2052, 3076, 4100, 5124, 1050, 4122, 1029, 1030, 1125, 1043, 2067, + 1033, 2057, 3081, 4105, 5129, 6153, 7177, 8201, 9225, 10249, 11273, 12297, 13321, 1061, 1080, 1065, 1035, 1036, 2060, + 3084, 4108, 5132, 6156, 1079, 1110, 1031, 2055, 3079, 4103, 5127, 1032, 1095, 1037, 1081, 1038, 1039, 1057, 1040, 2064, 1041, 1099, + 1087, 1111, 1042, 1088, 1062, 1063, 1071, 1086, 2110, 1100, 1082, 1153, 1102, 1104, 1044, 2068, 1045, 1046, 2070, + 1094, 1131, 2155, 3179, 1048, 1049, 9275, 4155, 5179, 3131, 1083, 2107, 8251, 6203, 7227, 1103, 2074, 6170, 3098, + 7194, 1051, 1060, 1034, 2058, 3082, 4106, 5130, 6154, 7178, 8202, 9226, 10250, 11274, 12298, 13322, 14346, 15370, 16394, + 17418, 18442, 19466, 20490, 1089, 1053, 2077, 1114, 1097, 1092, 1098, 1054, 1074, 1058, 1056, 1091, 2115, 1066, 1106, 1076, 1077 +}; + + +#ifdef _PEDANTIC +uint16_t IsValidLcid(const uint16_t Lcid) +{ + uint16_t i; + + for (i = 0; i < _countof(LcidList); i++) + { + if (Lcid == LcidList[i]) return Lcid; + } + + return 0; +} +#endif // _PEDANTIC +#endif // NO_RANDOM_EPID + + +// Unix time is seconds from 1970-01-01. Should be 64 bits to avoid Year 2035 overflow bug. +// FILETIME is 100 nanoseconds from 1601-01-01. Must be 64 bits. +void getUnixTimeAsFileTime(FILETIME *const ts) +{ + int64_t unixtime = (int64_t)time(NULL); + int64_t *filetime = (int64_t*)ts; + + *filetime = LE64( (unixtime + 11644473600LL) * 10000000LL ); +} + +__pure int64_t fileTimeToUnixTime(const FILETIME *const ts) +{ + return LE64( *((const int64_t *const)ts) ) / 10000000LL - 11644473600LL; +} + + +/* + * Get's a product name with a GUID in host-endian order. + * List can be any list defined above. + */ +const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + for (*i = 0; List[*i].name != NULL; (*i)++) + { + if (IsEqualGUID(guid, &List[*i].guid)) + return List[*i].name; + } + + return "Unknown"; +} + + +/* + * same as getProductnameHE except GUID is in little-endian (network) order + */ +const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + GUID HeGUID; + LEGUID(&HeGUID, guid); + return getProductNameHE(&HeGUID, List, i); + #else + return getProductNameHE(guid, List, i); + #endif +} + + +#ifndef NO_RANDOM_EPID +// formats an int with a fixed number of digits with leading zeros (helper for ePID generation) +static char* itoc(char *const c, const int i, uint_fast8_t digits) +{ + char formatString[8]; + if (digits > 9) digits = 0; + strcpy(formatString,"%"); + + if (digits) + { + formatString[1] = '0'; + formatString[2] = digits | 0x30; + formatString[3] = 0; + } + + strcat(formatString, "u"); + sprintf(c, formatString, i); + return c; +} + +static int getRandomServerType() +{ +# ifndef USE_MSRPC + if (!UseRpcBTFN) +# endif // USE_MSRPC + { + // This isn't possible at all, e.g. KMS host on XP + return rand() % (int)_countof(HostOS); + } +# ifndef USE_MSRPC + else + { + // return 9200/9600/10240 if NDR64 is in use, otherwise 6002/7601 + if (UseRpcNDR64) return (rand() % 3) + 2; + return (rand() % 2); + } +# endif // USE_MSRPC +} + + +/* + * Generates a random ePID + */ +static void generateRandomPid(const int index, char *const szPid, int serverType, int16_t lang) +{ + int clientApp; + char numberBuffer[12]; + + if (serverType < 0 || serverType >= (int)_countof(HostOS)) + { + serverType = getRandomServerType(); + } + + strcpy(szPid, itoc(numberBuffer, HostOS[serverType].Type, 5)); + strcat(szPid, "-"); + + if (index == 2) + clientApp = 3; + else if (index == 1) + clientApp = 2; + else + clientApp = serverType == 3 /*change if HostOS changes*/ ? 1 : 0; + + strcat(szPid, itoc(numberBuffer, pkeyconfig[clientApp].GroupID, 5)); + strcat(szPid, "-"); + + int keyId = (rand32() % (pkeyconfig[clientApp].RangeMax - pkeyconfig[clientApp].RangeMin)) + pkeyconfig[clientApp].RangeMin; + strcat(szPid, itoc(numberBuffer, keyId / 1000000, 3)); + strcat(szPid, "-"); + strcat(szPid, itoc(numberBuffer, keyId % 1000000, 6)); + strcat(szPid, "-03-"); + + if (lang < 0) lang = LcidList[rand() % _countof(LcidList)]; + strcat(szPid, itoc(numberBuffer, lang, 0)); + strcat(szPid, "-"); + + strcat(szPid, itoc(numberBuffer, HostOS[serverType].Build, 0)); + strcat(szPid, ".0000-"); + +# define minTime ((time_t)1436958000) // Release Date Windows 10 RTM Escrow + + time_t maxTime, kmsTime; + time(&maxTime); + + if (maxTime < minTime) // Just in case the system time is < 07/15/2015 1:00 pm + maxTime = (time_t)BUILD_TIME; + + kmsTime = (rand32() % (maxTime - minTime)) + minTime; +# undef minTime + + struct tm *pidTime; + pidTime = gmtime(&kmsTime); + + strcat(szPid, itoc(numberBuffer, pidTime->tm_yday, 3)); + strcat(szPid, itoc(numberBuffer, pidTime->tm_year + 1900, 4)); +} + + +/* + * Generates random ePIDs and stores them if not already read from ini file. + * For use with randomization level 1 + */ +void randomPidInit() +{ + ProdListIndex_t i; + + int serverType = getRandomServerType(); + int16_t lang = Lcid ? Lcid : LcidList[rand() % _countof(LcidList)]; + + for (i = 0; i < _countof(AppList) - 1; i++) + { + if (KmsResponseParameters[i].Epid) continue; + + char Epid[PID_BUFFER_SIZE]; + + generateRandomPid(i, Epid, serverType, lang); + KmsResponseParameters[i].Epid = (const char*)vlmcsd_malloc(strlen(Epid) + 1); + + strcpy((char*)KmsResponseParameters[i].Epid, Epid); + + #ifndef NO_LOG + KmsResponseParameters[i].EpidSource = "randomized at program start"; + #endif // NO_LOG + } +} + +#endif // NO_RANDOM_EPID + + +#ifndef NO_LOG +/* + * Logs a Request + */ +static void logRequest(const REQUEST *const baseRequest) +{ + const char *productName; + char clientname[64]; + ProdListIndex_t index; + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->ActID, ExtendedProductList, &index); + if (++index >= (int)_countof(ExtendedProductList)) + #endif // NO_EXTENDED_PRODUCT_LIST + { + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->KMSID, ProductList, &index); + if (++index >= (int)_countof(ProductList)) + #endif // NO_BASIC_PRODUCT_LIST + { + productName = getProductNameLE(&baseRequest->AppID, AppList, &index); + } + } + + #ifndef NO_VERBOSE_LOG + if (logverbose) + { + logger("<<< Incoming KMS request\n"); + logRequestVerbose(baseRequest, &logger); + } + else + { + #endif // NO_VERBOSE_LOG + ucs2_to_utf8(baseRequest->WorkstationName, clientname, 64, 64); + logger("KMS v%i.%i request from %s for %s\n", LE16(baseRequest->MajorVer), LE16(baseRequest->MinorVer), clientname, productName); + #ifndef NO_VERBOSE_LOG + } + #endif // NO_VERBOSE_LOG +} +#endif // NO_LOG + + +/* + * Converts a utf-8 ePID string to UCS-2 and writes it to a RESPONSE struct + */ +static void getEpidFromString(RESPONSE *const Response, const char *const pid) +{ + size_t length = utf8_to_ucs2(Response->KmsPID, pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + Response->PIDSize = LE32(((unsigned int )length + 1) << 1); +} + + +/* + * get ePID from appropriate source + */ +static void getEpid(RESPONSE *const baseResponse, const char** EpidSource, const ProdListIndex_t index, BYTE *const HwId) +{ + const char* pid; + if (KmsResponseParameters[index].Epid == NULL) + { + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 2) + { + char szPid[PID_BUFFER_SIZE]; + generateRandomPid(index, szPid, -1, Lcid ? Lcid : -1); + pid = szPid; + + #ifndef NO_LOG + *EpidSource = "randomized on every request"; + #endif // NO_LOG + } + else + #endif // NO_RANDOM_EPID + { + pid = AppList[index].pid; + #ifndef NO_LOG + *EpidSource = "vlmcsd default"; + #endif // NO_LOG + } + } + else + { + pid = KmsResponseParameters[index].Epid; + + if (HwId && KmsResponseParameters[index].HwId != NULL) + memcpy(HwId, KmsResponseParameters[index].HwId, sizeof(((RESPONSE_V6 *)0)->HwId)); + + #ifndef NO_LOG + *EpidSource = KmsResponseParameters[index].EpidSource; + #endif // NO_LOG + } + getEpidFromString(baseResponse, pid); +} + + +#if !defined(NO_LOG) && defined(_PEDANTIC) +static BOOL CheckVersion4Uuid(const GUID *const guid, const char *const szGuidName) +{ + if (LE16(guid->Data3) >> 12 != 4 || guid->Data4[0] >> 6 != 2) + { + logger("Warning: %s does not conform to version 4 UUID according to RFC 4122\n", szGuidName); + return FALSE; + } + return TRUE; +} + + +static void CheckRequest(const REQUEST *const Request) +{ + CheckVersion4Uuid(&Request->CMID, "Client machine ID"); + CheckVersion4Uuid(&Request->AppID, "Application ID"); + CheckVersion4Uuid(&Request->KMSID, "Server SKU ID"); + CheckVersion4Uuid(&Request->ActID, "Client SKU ID"); + + if (LE32(Request->IsClientVM) > 1) + logger("Warning: Virtual Machine field in request must be 0 or 1 but is %u\n", LE32(Request->IsClientVM)); + + if (LE32(Request->LicenseStatus) > 6 ) + logger("Warning: License status must be between 0 and 6 but is %u\n", LE32(Request->LicenseStatus)); +} +#endif // !defined(NO_LOG) && defined(_PEDANTIC) + + +#ifndef NO_LOG +/* + * Logs the Response + */ +static void logResponse(const RESPONSE *const baseResponse, const BYTE *const hwId, const char *const EpidSource) +{ + char utf8pid[PID_BUFFER_SIZE * 3]; + ucs2_to_utf8(baseResponse->KmsPID, utf8pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + + #ifndef NO_VERBOSE_LOG + if (!logverbose) + { + #endif // NO_VERBOSE_LOG + logger("Sending ePID (%s): %s\n", EpidSource, utf8pid); + #ifndef NO_VERBOSE_LOG + } + else + { + logger(">>> Sending response, ePID source = %s\n", EpidSource); + logResponseVerbose(utf8pid, hwId, baseResponse, &logger); + } + #endif // NO_VERBOSE_LOG + +} +#endif + + +/* + * Creates the unencrypted base response + */ +static BOOL __stdcall CreateResponseBaseCallback(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr) +{ + const char* EpidSource; + #ifndef NO_LOG + logRequest(baseRequest); + #ifdef _PEDANTIC + CheckRequest(baseRequest); + #endif // _PEDANTIC + #endif // NO_LOG + + ProdListIndex_t index; + + getProductNameLE(&baseRequest->AppID, AppList, &index); + + if (index >= _countof(AppList) - 1) index = 0; //default to Windows + + getEpid(baseResponse, &EpidSource, index, hwId); + + baseResponse->Version = baseRequest->Version; + + memcpy(&baseResponse->CMID, &baseRequest->CMID, sizeof(GUID)); + memcpy(&baseResponse->ClientTime, &baseRequest->ClientTime, sizeof(FILETIME)); + + baseResponse->Count = LE32(LE32(baseRequest->N_Policy) << 1); + baseResponse->VLActivationInterval = LE32(VLActivationInterval); + baseResponse->VLRenewalInterval = LE32(VLRenewalInterval); + + #ifndef NO_LOG + logResponse(baseResponse, hwId, EpidSource); + #endif // NO_LOG + + return !0; +} + +RequestCallback_t CreateResponseBase = &CreateResponseBaseCallback; + +////TODO: Move to helpers.c +void get16RandomBytes(void* ptr) +{ + int i; + for (i = 0; i < 4; i++) ((DWORD*)ptr)[i] = rand32(); +} + + +/* + * Creates v4 response + */ +size_t CreateResponseV4(REQUEST_V4 *const request_v4, BYTE *const responseBuffer, const char* const ipstr) +{ + RESPONSE_V4* Response = (RESPONSE_V4*)responseBuffer; + + if ( !CreateResponseBase(&request_v4->RequestBase, &Response->ResponseBase, NULL, ipstr) ) return 0; + + DWORD pidSize = LE32(Response->ResponseBase.PIDSize); + BYTE* postEpidPtr = responseBuffer + V4_PRE_EPID_SIZE + pidSize; + memmove(postEpidPtr, &Response->ResponseBase.CMID, V4_POST_EPID_SIZE); + + size_t encryptSize = V4_PRE_EPID_SIZE + V4_POST_EPID_SIZE + pidSize; + AesCmacV4(responseBuffer, encryptSize, responseBuffer + encryptSize); + + return encryptSize + sizeof(Response->MAC); +} + +/* +// Workaround for buggy GCC 4.2/4.3 +#if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +__attribute__((noinline)) +#endif +__pure static uint64_t TimestampInterval(void *ts) +{ + return ( GET_UA64LE(ts) / TIME_C1 ) * TIME_C2 + TIME_C3; +}*/ + + +/* + * Creates the HMAC for v6 + */ +static int_fast8_t CreateV6Hmac(BYTE *const encrypt_start, const size_t encryptSize, int_fast8_t tolerance) +{ + BYTE hash[32]; +# define halfHashSize (sizeof(hash) >> 1) + uint64_t timeSlot; + BYTE *responseEnd = encrypt_start + encryptSize; + + // This is the time from the response + FILETIME* ft = (FILETIME*)(responseEnd - V6_POST_EPID_SIZE + sizeof(((RESPONSE*)0)->CMID)); + + // Generate a time slot that changes every 4.11 hours. + // Request and repsonse time must match +/- 1 slot. + // When generating a response tolerance must be 0. + // If verifying the hash, try tolerance -1, 0 and +1. One of them must match. + + timeSlot = LE64( (GET_UA64LE(ft) / TIME_C1 * TIME_C2 + TIME_C3) + (tolerance * TIME_C1) ); + + // The time slot is hashed with SHA256 so it is not so obvious that it is time + Sha256((BYTE*) &timeSlot, sizeof(timeSlot), hash); + + // The last 16 bytes of the hashed time slot are the actual HMAC key + if (!Sha256Hmac + ( + hash + halfHashSize, // Use last 16 bytes of SHA256 as HMAC key + encrypt_start, // hash only the encrypted part of the v6 response + encryptSize - sizeof(((RESPONSE_V6*)0)->HMAC), // encryptSize minus the HMAC itself + hash // use same buffer for resulting hash where the key came from + )) + { + return FALSE; + } + + memcpy(responseEnd - sizeof(((RESPONSE_V6*)0)->HMAC), hash + halfHashSize, halfHashSize); + return TRUE; +# undef halfHashSize +} + + +/* + * Creates v5 or v6 response + */ +size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuffer, const char* const ipstr) +{ + // The response will be created in a fixed sized struct to + // avoid unaligned access macros and packed structs on RISC systems + // which largely increase code size. + // + // The fixed sized struct with 64 WCHARs for the ePID will be converted + // to a variable sized struct later and requires unaligned access macros. + + RESPONSE_V6* Response = (RESPONSE_V6*)responseBuffer; + RESPONSE* baseResponse = &Response->ResponseBase; + + #ifdef _DEBUG + RESPONSE_V6_DEBUG* xxx = (RESPONSE_V6_DEBUG*)responseBuffer; + #endif + + static const BYTE DefaultHwid[8] = { HWID }; + int_fast8_t v6 = LE16(request_v6->MajorVer) > 5; + AesCtx aesCtx; + + AesInitKey(&aesCtx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&aesCtx, NULL, request_v6->IV, V6_DECRYPT_SIZE); + + // get random salt and SHA256 it + get16RandomBytes(Response->RandomXoredIVs); + Sha256(Response->RandomXoredIVs, sizeof(Response->RandomXoredIVs), Response->Hash); + + if (v6) // V6 specific stuff + { + // In v6 a random IV is generated + Response->Version = request_v6->Version; + get16RandomBytes(Response->IV); + + // pre-fill with default HwId (not required for v5) + memcpy(Response->HwId, DefaultHwid, sizeof(Response->HwId)); + + // Just copy decrypted request IV (using Null IV) here. Note this is identical + // to XORing non-decrypted request and reponse IVs + memcpy(Response->XoredIVs, request_v6->IV, sizeof(Response->XoredIVs)); + } + else // V5 specific stuff + { + // In v5 IVs of request and response must be identical (MS client checks this) + // The following memcpy copies Version and IVs at once + memcpy(Response, request_v6, V6_UNENCRYPTED_SIZE); + } + + // Xor Random bytes with decrypted request IV + XorBlock(request_v6->IV, Response->RandomXoredIVs); + + // Get the base response + if ( !CreateResponseBase(&request_v6->RequestBase, baseResponse, Response->HwId, ipstr) ) return 0; + + // Convert the fixed sized struct into variable sized + DWORD pidSize = LE32(baseResponse->PIDSize); + BYTE* postEpidPtr = responseBuffer + V6_PRE_EPID_SIZE + pidSize; + size_t post_epid_size = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + + memmove(postEpidPtr, &baseResponse->CMID, post_epid_size); + + // number of bytes to encrypt + size_t encryptSize = + V6_PRE_EPID_SIZE + - sizeof(Response->Version) + + pidSize + + post_epid_size; + + //AesDecryptBlock(&aesCtx, Response->IV); + if (v6 && !CreateV6Hmac(Response->IV, encryptSize, 0)) return 0; + + // Padding auto handled by encryption func + AesEncryptCbc(&aesCtx, NULL, Response->IV, &encryptSize); + + return encryptSize + sizeof(Response->Version); +} + + +// Create Hashed KMS Client Request Data for KMS Protocol Version 4 +BYTE *CreateRequestV4(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V4); + + // Build a proper KMS client request data + BYTE *request = (BYTE *)vlmcsd_malloc(sizeof(REQUEST_V4)); + + // Temporary Pointer for access to REQUEST_V4 structure + REQUEST_V4 *request_v4 = (REQUEST_V4 *)request; + + // Set KMS Client Request Base + memcpy(&request_v4->RequestBase, requestBase, sizeof(REQUEST)); + + // Generate Hash Signature + AesCmacV4(request, sizeof(REQUEST), request_v4->MAC); + + // Return Request Data + return request; +} + + +// Create Encrypted KMS Client Request Data for KMS Protocol Version 6 +BYTE* CreateRequestV6(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V6); + + // Temporary Pointer for access to REQUEST_V5 structure + REQUEST_V6 *request = (REQUEST_V6 *)vlmcsd_malloc(sizeof(REQUEST_V6)); + + // KMS Protocol Version + request->Version = requestBase->Version; + + // Initialize the IV + get16RandomBytes(request->IV); + + // Set KMS Client Request Base + memcpy(&request->RequestBase, requestBase, sizeof(REQUEST)); + + // Encrypt KMS Client Request + size_t encryptSize = sizeof(request->RequestBase); + AesCtx Ctx; + int_fast8_t v6 = LE16(request->MajorVer) > 5; + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, 16); + AesEncryptCbc(&Ctx, request->IV, (BYTE*)(&request->RequestBase), &encryptSize); + + // Return Proper Request Data + return (BYTE*)request; +} + + +/* + * Checks whether Length of ePID is valid + */ +static uint8_t checkPidLength(const RESPONSE *const responseBase) +{ + unsigned int i; + + if (LE32(responseBase->PIDSize) > (PID_BUFFER_SIZE << 1)) return FALSE; + if (responseBase->KmsPID[(LE32(responseBase->PIDSize) >> 1) - 1]) return FALSE; + + for (i = 0; i < (LE32(responseBase->PIDSize) >> 1) - 2; i++) + { + if (!responseBase->KmsPID[i]) return FALSE; + } + + return TRUE; +} + + +/* + * "Decrypts" a KMS v4 response. Actually just copies to a fixed size buffer + */ +RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSize, BYTE* const rawResponse, const BYTE* const rawRequest) +{ + int copySize = + V4_PRE_EPID_SIZE + + (LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) <= PID_BUFFER_SIZE << 1 ? + LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) : + PID_BUFFER_SIZE << 1); + + int messageSize = copySize + V4_POST_EPID_SIZE; + + memcpy(response_v4, rawResponse, copySize); + memcpy(&response_v4->ResponseBase.CMID, rawResponse + copySize, responseSize - copySize); + + // ensure PID is null terminated + response_v4->ResponseBase.KmsPID[PID_BUFFER_SIZE-1] = 0; + + uint8_t* mac = rawResponse + messageSize; + AesCmacV4(rawResponse, messageSize, mac); + + REQUEST_V4* request_v4 = (REQUEST_V4*)rawRequest; + RESPONSE_RESULT result; + + result.mask = (DWORD)~0; + result.PidLengthOK = checkPidLength((RESPONSE*)rawResponse); + result.VersionOK = response_v4->ResponseBase.Version == request_v4->RequestBase.Version; + result.HashOK = !memcmp(&response_v4->MAC, mac, sizeof(response_v4->MAC)); + result.TimeStampOK = !memcmp(&response_v4->ResponseBase.ClientTime, &request_v4->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = !memcmp(&response_v4->ResponseBase.CMID, &request_v4->RequestBase.CMID, sizeof(GUID)); + result.effectiveResponseSize = responseSize; + result.correctResponseSize = sizeof(RESPONSE_V4) - sizeof(response_v4->ResponseBase.KmsPID) + LE32(response_v4->ResponseBase.PIDSize); + + return result; +} + + +static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ctx, RESPONSE_V6* response_v6, REQUEST_V6* request_v6, BYTE* const rawResponse) +{ + // Check IVs + result.IVsOK = !memcmp // In V6 the XoredIV is actually the request IV + ( + response_v6->XoredIVs, + request_v6->IV, + sizeof(response_v6->XoredIVs) + ); + + result.IVnotSuspicious = !!memcmp // If IVs are identical, it is obviously an emulator + ( + request_v6->IV, + response_v6->IV, + sizeof(request_v6->IV) + ); + + // Check Hmac + int_fast8_t tolerance; + BYTE OldHmac[sizeof(response_v6->HMAC)]; + + result.HmacSha256OK = FALSE; + + memcpy // Save received HMAC to compare with calculated HMAC later + ( + OldHmac, + response_v6->HMAC, + sizeof(response_v6->HMAC) + ); + + //AesEncryptBlock(Ctx, Response_v6->IV); // CreateV6Hmac needs original IV as received over the network + + for (tolerance = -1; tolerance < 2; tolerance++) + { + CreateV6Hmac + ( + rawResponse + sizeof(response_v6->Version), // Pointer to start of the encrypted part of the response + (size_t)result.correctResponseSize - V6_UNENCRYPTED_SIZE, // size of the encrypted part + tolerance // tolerance -1, 0, or +1 + ); + + if + (( + result.HmacSha256OK = !memcmp // Compare both HMACs + ( + OldHmac, + rawResponse + (size_t)result.correctResponseSize - sizeof(response_v6->HMAC), + sizeof(OldHmac) + ) + )) + { + break; + } + } + return result; +} + + +static RESPONSE_RESULT VerifyResponseV5(RESPONSE_RESULT result, REQUEST_V5* request_v5, RESPONSE_V5* response_v5) +{ + // Check IVs: in V5 (and only v5) request and response IVs must match + result.IVsOK = !memcmp(request_v5->IV, response_v5->IV, sizeof(request_v5->IV)); + + // V5 has no Hmac, always set to TRUE + result.HmacSha256OK = TRUE; + + return result; +} + + +/* + * Decrypts a KMS v5 or v6 response received from a server. + * hwid must supply a valid 16 byte buffer for v6. hwid is ignored in v5 + */ +RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BYTE* const response, const BYTE* const rawRequest, BYTE* hwid) +{ + RESPONSE_RESULT result; + result.mask = ~0; // Set all bits in the results mask to 1. Assume success first. + result.effectiveResponseSize = responseSize; + + int copySize1 = + sizeof(response_v6->Version); + + // Decrypt KMS Server Response (encrypted part starts after RequestIV) + responseSize -= copySize1; + + AesCtx Ctx; + int_fast8_t v6 = LE16(((RESPONSE_V6*)response)->MajorVer) > 5; + + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&Ctx, NULL, response + copySize1, responseSize); + + // Check padding + BYTE* lastPadByte = response + (size_t)result.effectiveResponseSize - 1; + + // Must be from 1 to 16 + if (!*lastPadByte || *lastPadByte > AES_BLOCK_BYTES) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Check if pad bytes are all the same + BYTE* padByte; + for (padByte = lastPadByte - *lastPadByte + 1; padByte < lastPadByte; padByte++) + if (*padByte != *lastPadByte) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Add size of Version, KmsPIDLen and variable size PID + DWORD pidSize = LE32(((RESPONSE_V6*) response)->ResponseBase.PIDSize); + + copySize1 += + V6_UNENCRYPTED_SIZE + + sizeof(response_v6->ResponseBase.PIDSize) + + (pidSize <= PID_BUFFER_SIZE << 1 ? pidSize : PID_BUFFER_SIZE << 1); + + // Copy part 1 of response up to variable sized PID + memcpy(response_v6, response, copySize1); + + // ensure PID is null terminated + response_v6->ResponseBase.KmsPID[PID_BUFFER_SIZE - 1] = 0; + + // Copy part 2 + size_t copySize2 = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + memcpy(&response_v6->ResponseBase.CMID, response + copySize1, copySize2); + + // Decrypting the response is finished here. Now we check the results for validity + // A basic client doesn't need the stuff below this comment but we want to use vlmcs + // as a debug tool for KMS emulators. + + REQUEST_V6* request_v6 = (REQUEST_V6*) rawRequest; + DWORD decryptSize = sizeof(request_v6->IV) + sizeof(request_v6->RequestBase) + sizeof(request_v6->Pad); + + AesDecryptCbc(&Ctx, NULL, request_v6->IV, decryptSize); + + // Check that all version informations are the same + result.VersionOK = + request_v6->Version == response_v6->ResponseBase.Version && + request_v6->Version == response_v6->Version && + request_v6->Version == request_v6->RequestBase.Version; + + // Check Base Request + result.PidLengthOK = checkPidLength(&((RESPONSE_V6*) response)->ResponseBase); + result.TimeStampOK = !memcmp(&response_v6->ResponseBase.ClientTime, &request_v6->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = IsEqualGUID(&response_v6->ResponseBase.CMID, &request_v6->RequestBase.CMID); + + // Rebuild Random Key and Sha256 Hash + BYTE HashVerify[sizeof(response_v6->Hash)]; + BYTE RandomKey[sizeof(response_v6->RandomXoredIVs)]; + + memcpy(RandomKey, request_v6->IV, sizeof(RandomKey)); + XorBlock(response_v6->RandomXoredIVs, RandomKey); + Sha256(RandomKey, sizeof(RandomKey), HashVerify); + + result.HashOK = !memcmp(response_v6->Hash, HashVerify, sizeof(HashVerify)); + + // size before encryption (padding not included) + result.correctResponseSize = + (v6 ? sizeof(RESPONSE_V6) : sizeof(RESPONSE_V5)) + - sizeof(response_v6->ResponseBase.KmsPID) + + LE32(response_v6->ResponseBase.PIDSize); + + // Version specific stuff + if (v6) + { + // Copy the HwId + memcpy(hwid, response_v6->HwId, sizeof(response_v6->HwId)); + + // Verify the V6 specific part of the response + result = VerifyResponseV6(result, &Ctx, response_v6, request_v6, response); + } + else // V5 + { + // Verify the V5 specific part of the response + result = VerifyResponseV5(result, request_v6, (RESPONSE_V5*)response_v6); + } + + // padded size after encryption + result.correctResponseSize += (~(result.correctResponseSize - sizeof(response_v6->ResponseBase.Version)) & 0xf) + 1; + + return result; +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "endian.h" + +#if defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN) \ + && defined(BS16) && defined(BS32) && defined(BS64) + +#else // ! defined(__BYTE_ORDER) + +void PUT_UAA64BE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v >> 56; + _p[ 1 ] = v >> 48; + _p[ 2 ] = v >> 40; + _p[ 3 ] = v >> 32; + _p[ 4 ] = v >> 24; + _p[ 5 ] = v >> 16; + _p[ 6 ] = v >> 8; + _p[ 7 ] = v; +} + +void PUT_UAA32BE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v >> 24; + _p[ 1 ] = v >> 16; + _p[ 2 ] = v >> 8; + _p[ 3 ] = v; +} + +void PUT_UAA16BE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v >> 8; + _p[ 1 ] = v; +} + + +void PUT_UAA64LE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; + _p[ 4 ] = v >> 32; + _p[ 5 ] = v >> 40; + _p[ 6 ] = v >> 48; + _p[ 7 ] = v >> 56; +} + +void PUT_UAA32LE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; +} + +void PUT_UAA16LE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; +} + + +unsigned long long GET_UAA64BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] << 56 | + (unsigned long long)_p[ 1 ] << 48 | + (unsigned long long)_p[ 2 ] << 40 | + (unsigned long long)_p[ 3 ] << 32 | + (unsigned long long)_p[ 4 ] << 24 | + (unsigned long long)_p[ 5 ] << 16 | + (unsigned long long)_p[ 6 ] << 8 | + (unsigned long long)_p[ 7 ]; + +} + +unsigned int GET_UAA32BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] << 24 | + (unsigned int)_p[ 1 ] << 16 | + (unsigned int)_p[ 2 ] << 8 | + (unsigned int)_p[ 3 ]; +} + +unsigned short GET_UAA16BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] << 8 | + (unsigned short)_p[ 1 ]; +} + + +unsigned long long GET_UAA64LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] | + (unsigned long long)_p[ 1 ] << 8 | + (unsigned long long)_p[ 2 ] << 16 | + (unsigned long long)_p[ 3 ] << 24 | + (unsigned long long)_p[ 4 ] << 32 | + (unsigned long long)_p[ 5 ] << 40 | + (unsigned long long)_p[ 6 ] << 48 | + (unsigned long long)_p[ 7 ] << 56; + +} + +unsigned int GET_UAA32LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] | + (unsigned int)_p[ 1 ] << 8 | + (unsigned int)_p[ 2 ] << 16 | + (unsigned int)_p[ 3 ] << 24; +} + +unsigned short GET_UAA16LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] | + (unsigned short)_p[ 1 ] << 8; +} + + +unsigned short BE16(unsigned short x) +{ + return GET_UAA16BE(&x, 0); +} + +unsigned short LE16(unsigned short x) +{ + return GET_UAA16LE(&x, 0); +} + +unsigned int BE32(unsigned int x) +{ + return GET_UAA32BE(&x, 0); +} + +unsigned int LE32(unsigned int x) +{ + return GET_UAA32LE(&x, 0); +} + +unsigned long long BE64(unsigned long long x) +{ + return GET_UAA64BE(&x, 0); +} + +inline unsigned long long LE64(unsigned long long x) +{ + return GET_UAA64LE(&x, 0); +} + +#endif // defined(__BYTE_ORDER) +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "output.h" +#include "shared_globals.h" +#include "endian.h" +#include "helpers.h" + +#ifndef NO_LOG +static void vlogger(const char *message, va_list args) +{ + FILE *log; + + #ifdef _NTSERVICE + if (!IsNTService && logstdout) log = stdout; + #else + if (logstdout) log = stdout; + #endif + else + { + if (fn_log == NULL) return; + + #ifndef _WIN32 + if (!strcmp(fn_log, "syslog")) + { + openlog("vlmcsd", LOG_CONS | LOG_PID, LOG_USER); + + ////PORTABILITY: vsyslog is not in Posix but virtually all Unixes have it + vsyslog(LOG_INFO, message, args); + + closelog(); + return; + } + #endif // _WIN32 + + log = fopen(fn_log, "a"); + if ( !log ) return; + } + + time_t now = time(0); + + #ifdef USE_THREADS + char mbstr[2048]; + #else + char mbstr[24]; + #endif + + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", localtime(&now)); + + #ifndef USE_THREADS + + fprintf(log, "%s: ", mbstr); + vfprintf(log, message, args); + fflush(log); + + #else // USE_THREADS + + // We write everything to a string before we really log inside the critical section + // so formatting the output can be concurrent + strcat(mbstr, ": "); + int len = strlen(mbstr); + vsnprintf(mbstr + len, sizeof(mbstr) - len, message, args); + + lock_mutex(&logmutex); + fputs(mbstr, log); + fflush(log); + unlock_mutex(&logmutex); + + #endif // USE_THREADS + if (log != stdout) fclose(log); +} + + +// Always sends to log output +int logger(const char *const fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vlogger(fmt, args); + va_end(args); + return 0; +} + +#endif //NO_LOG + + +// Output to stderr if it is available or to log otherwise (e.g. if running as daemon/service) +void printerrorf(const char *const fmt, ...) +{ + va_list arglist; + + va_start(arglist, fmt); + + #ifndef NO_LOG + #ifdef _NTSERVICE + if (InetdMode || IsNTService) + #else // !_NTSERVICE + if (InetdMode) + #endif // NTSERVIICE + vlogger(fmt, arglist); + else + #endif //NO_LOG + { + vfprintf(stderr, fmt, arglist); + fflush(stderr); + } + + va_end(arglist); +} + + +// Always output to stderr +int errorout(const char* fmt, ...) +{ + va_list args; + + va_start(args, fmt); + int i = vfprintf(stderr, fmt, args); + va_end(args); + fflush(stderr); + + return i; +} + + +static const char *LicenseStatusText[] = +{ + "Unlicensed", "Licensed", "OOB grace", "OOT grace", "Non-Genuine", "Notification", "Extended grace" +}; + + +void uuid2StringLE(const GUID *const guid, char *const string) +{ + sprintf(string, + #ifdef _WIN32 + "%08x-%04x-%04x-%04x-%012I64x", + #else + "%08x-%04x-%04x-%04x-%012llx", + #endif + (unsigned int)LE32( guid->Data1 ), + (unsigned int)LE16( guid->Data2 ), + (unsigned int)LE16( guid->Data3 ), + (unsigned int)BE16( *(uint16_t*)guid->Data4 ), + (unsigned long long)BE64(*(uint64_t*)(guid->Data4)) & 0xffffffffffffLL + ); +} + + +void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + char WorkstationBuffer[3 * WORKSTATION_NAME_BUFFER]; + const char *productName; + ProdListIndex_t index; + + p("Protocol version : %u.%u\n", LE16(Request->MajorVer), LE16(Request->MinorVer)); + p("Client is a virtual machine : %s\n", LE32(Request->VMInfo) ? "Yes" : "No"); + p("Licensing status : %u (%s)\n", (uint32_t)LE32(Request->LicenseStatus), LE32(Request->LicenseStatus) < _countof(LicenseStatusText) ? LicenseStatusText[LE32(Request->LicenseStatus)] : "Unknown"); + p("Remaining time (0 = forever) : %i minutes\n", (uint32_t)LE32(Request->BindingExpiration)); + + uuid2StringLE(&Request->AppID, guidBuffer); + productName = getProductNameLE(&Request->AppID, AppList, &index); + p("Application ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->ActID, guidBuffer); + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&Request->ActID, ExtendedProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Activation ID (Product) : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->KMSID, guidBuffer); + + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&Request->KMSID, ProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Key Management Service ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + uuid2StringLE(&Request->CMID_prev, guidBuffer); + p("Previous client machine ID : %s\n", guidBuffer); + + + char mbstr[64]; + time_t st; + st = fileTimeToUnixTime(&Request->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + ucs2_to_utf8(Request->WorkstationName, WorkstationBuffer, WORKSTATION_NAME_BUFFER, sizeof(WorkstationBuffer)); + + p("Workstation name : %s\n", WorkstationBuffer); + p("N count policy (minimum clients): %u\n", (uint32_t)LE32(Request->N_Policy)); +} + + +void logResponseVerbose(const char *const ePID, const BYTE *const hwid, const RESPONSE *const response, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + //SYSTEMTIME st; + + p("Protocol version : %u.%u\n", (uint32_t)LE16(response->MajorVer), (uint32_t)LE16(response->MinorVer)); + p("KMS host extended PID : %s\n", ePID); + if (LE16(response->MajorVer) > 5) +# ifndef _WIN32 + p("KMS host Hardware ID : %016llX\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + p("KMS host Hardware ID : %016I64X\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // WIN32 + + uuid2StringLE(&response->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + char mbstr[64]; + time_t st; + + st = fileTimeToUnixTime(&response->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + p("KMS host current active clients : %u\n", (uint32_t)LE32(response->Count)); + p("Renewal interval policy : %u\n", (uint32_t)LE32(response->VLRenewalInterval)); + p("Activation interval policy : %u\n", (uint32_t)LE32(response->VLActivationInterval)); +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "shared_globals.h" + +int global_argc, multi_argc = 0; +CARGV global_argv, multi_argv = NULL; +const char *const Version = VERSION; +DWORD VLActivationInterval = 60 * 2; // 2 hours +DWORD VLRenewalInterval = 60 * 24 * 7; // 7 days +int_fast8_t DisconnectImmediately = FALSE; +const char *const cIPv4 = "IPv4"; +const char *const cIPv6 = "IPv6"; + +#ifndef USE_MSRPC +int_fast8_t UseMultiplexedRpc = TRUE; +int_fast8_t UseRpcNDR64 = TRUE; +int_fast8_t UseRpcBTFN = TRUE; +#endif // USE_MSRPC + +#ifndef NO_SOCKETS +const char *defaultport = "1688"; +#endif // NO_SOCKETS + +KmsResponseParam_t KmsResponseParameters[MAX_KMSAPPS]; + +#if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) +int_fast8_t IsRestarted = FALSE; +#endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + +#if !defined(NO_TIMEOUT) && !__minix__ +DWORD ServerTimeout = 30; +#endif // !defined(NO_TIMEOUT) && !__minix__ + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ +#ifdef USE_MSRPC +uint32_t MaxTasks = RPC_C_LISTEN_MAX_CALLS_DEFAULT; +#else // !USE_MSRPC +uint32_t MaxTasks = SEM_VALUE_MAX; +#endif // !USE_MSRPC +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_LOG +char *fn_log = NULL; +int_fast8_t logstdout = 0; +#ifndef NO_VERBOSE_LOG +int_fast8_t logverbose = 0; +#endif // NO_VERBOSE_LOG +#endif // NO_LOG + +#ifndef NO_SOCKETS +int_fast8_t nodaemon = 0; +int_fast8_t InetdMode = 0; +#else +int_fast8_t nodaemon = 1; +int_fast8_t InetdMode = 1; +#endif + +#ifndef NO_RANDOM_EPID +int_fast8_t RandomizationLevel = 1; +uint16_t Lcid = 0; +#endif + +#ifndef NO_SOCKETS +SOCKET *SocketList; +int numsockets = 0; + +#if !defined(NO_LIMIT) && !__minix__ +#ifndef _WIN32 // Posix +sem_t *Semaphore; +#else // _WIN32 +HANDLE Semaphore; +#endif // _WIN32 + +#endif // !defined(NO_LIMIT) && !__minix__ +#endif // NO_SOCKETS + +#ifdef _NTSERVICE +int_fast8_t IsNTService = TRUE; +int_fast8_t ServiceShutdown = FALSE; +#endif // _NTSERVICE + +#ifndef NO_LOG +#ifdef USE_THREADS +#if !defined(_WIN32) && !defined(__CYGWIN__) +pthread_mutex_t logmutex = PTHREAD_MUTEX_INITIALIZER; +#else +CRITICAL_SECTION logmutex; +#endif // !defined(_WIN32) && !defined(__CYGWIN__) +#endif // USE_THREADS +#endif // NO_LOG + + + + + +/* + * Helper functions used by other modules + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _WIN32 +#include +#endif // _WIN32 +#include +#include +#include +#include +#include "helpers.h" +#include "output.h" +#include "endian.h" +#include "shared_globals.h" + + +/* + * UCS2 <-> UTF-8 functions + * All functions use little endian UCS2 since we only need it to communicate with Windows via RPC + */ + +// Convert one character from UTF-8 to UCS2 +// Returns 0xffff, if utf-8 evaluates to > 0xfffe (outside basic multilingual pane) +WCHAR utf8_to_ucs2_char (const unsigned char *input, const unsigned char **end_ptr) +{ + *end_ptr = input; + if (input[0] == 0) + return ~0; + + if (input[0] < 0x80) { + *end_ptr = input + 1; + return LE16(input[0]); + } + + if ((input[0] & 0xE0) == 0xE0) { + + if (input[1] == 0 || input[2] == 0) + return ~0; + + *end_ptr = input + 3; + + return + LE16((input[0] & 0x0F)<<12 | + (input[1] & 0x3F)<<6 | + (input[2] & 0x3F)); + } + + if ((input[0] & 0xC0) == 0xC0) { + if (input[1] == 0) + return ~0; + + *end_ptr = input + 2; + + return + LE16((input[0] & 0x1F)<<6 | + (input[1] & 0x3F)); + } + return ~0; +} + +// Convert one character from UCS2 to UTF-8 +// Returns length of UTF-8 char (1, 2 or 3) or -1 on error (UTF-16 outside UCS2) +// char *utf8 must be large enough to hold 3 bytes +int ucs2_to_utf8_char (const WCHAR ucs2_le, char *utf8) +{ + const WCHAR ucs2 = LE16(ucs2_le); + + if (ucs2 < 0x80) { + utf8[0] = ucs2; + utf8[1] = '\0'; + return 1; + } + + if (ucs2 >= 0x80 && ucs2 < 0x800) { + utf8[0] = (ucs2 >> 6) | 0xC0; + utf8[1] = (ucs2 & 0x3F) | 0x80; + utf8[2] = '\0'; + return 2; + } + + if (ucs2 >= 0x800 && ucs2 < 0xFFFF) { + + if (ucs2 >= 0xD800 && ucs2 <= 0xDFFF) { + /* Ill-formed (UTF-16 ouside of BMP) */ + return -1; + } + + utf8[0] = ((ucs2 >> 12) ) | 0xE0; + utf8[1] = ((ucs2 >> 6 ) & 0x3F) | 0x80; + utf8[2] = ((ucs2 ) & 0x3F) | 0x80; + utf8[3] = '\0'; + return 3; + } + + return -1; +} + + +// Converts UTF8 to UCS2. Returns size in bytes of the converted string or -1 on error +size_t utf8_to_ucs2(WCHAR* const ucs2_le, const char* const utf8, const size_t maxucs2, const size_t maxutf8) +{ + const unsigned char* current_utf8 = (unsigned char*)utf8; + WCHAR* current_ucs2_le = ucs2_le; + + for (; *current_utf8; current_ucs2_le++) + { + size_t size = (char*)current_utf8 - utf8; + + if (size >= maxutf8) return (size_t)-1; + if (((*current_utf8 & 0xc0) == 0xc0) && (size >= maxutf8 - 1)) return (size_t)-1; + if (((*current_utf8 & 0xe0) == 0xe0) && (size >= maxutf8 - 2)) return (size_t)-1; + if (current_ucs2_le - ucs2_le >= (intptr_t)maxucs2 - 1) return (size_t)-1; + + *current_ucs2_le = utf8_to_ucs2_char(current_utf8, ¤t_utf8); + current_ucs2_le[1] = 0; + + if (*current_ucs2_le == (WCHAR)-1) return (size_t)-1; + } + return current_ucs2_le - ucs2_le; +} + +// Converts UCS2 to UTF-8. Return TRUE or FALSE +BOOL ucs2_to_utf8(const WCHAR* const ucs2_le, char* utf8, size_t maxucs2, size_t maxutf8) +{ + char utf8_char[4]; + const WCHAR* current_ucs2 = ucs2_le; + unsigned int index_utf8 = 0; + + for(*utf8 = 0; *current_ucs2; current_ucs2++) + { + if (current_ucs2 - ucs2_le > (intptr_t)maxucs2) return FALSE; + int len = ucs2_to_utf8_char(*current_ucs2, utf8_char); + if (index_utf8 + len > maxutf8) return FALSE; + strncat(utf8, utf8_char, len); + index_utf8+=len; + } + + return TRUE; +} + +/* End of UTF-8 <-> UCS2 conversion */ + + +// Checks, whether a string is a valid integer number between min and max. Returns TRUE or FALSE. Puts int value in *value +BOOL stringToInt(const char *const szValue, const unsigned int min, const unsigned int max, unsigned int *const value) +{ + char *nextchar; + + errno = 0; + long long result = strtoll(szValue, &nextchar, 10); + + if (errno || result < (long long)min || result > (long long)max || *nextchar) + { + return FALSE; + } + + *value = (unsigned int)result; + return TRUE; +} + + +//Converts a String Guid to a host binary guid in host endianess +int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict guid) +{ + int i; + + if (strlen(input) < GUID_STRING_LENGTH) return FALSE; + if (input[8] != '-' || input[13] != '-' || input[18] != '-' || input[23] != '-') return FALSE; + + for (i = 0; i < GUID_STRING_LENGTH; i++) + { + if (i == 8 || i == 13 || i == 18 || i == 23) continue; + + const char c = toupper((int)input[i]); + + if (c < '0' || c > 'F' || (c > '9' && c < 'A')) return FALSE; + } + + char inputCopy[GUID_STRING_LENGTH + 1]; + strncpy(inputCopy, input, GUID_STRING_LENGTH + 1); + inputCopy[8] = inputCopy[13] = inputCopy[18] = 0; + + hex2bin((BYTE*)&guid->Data1, inputCopy, 8); + hex2bin((BYTE*)&guid->Data2, inputCopy + 9, 4); + hex2bin((BYTE*)&guid->Data3, inputCopy + 14, 4); + hex2bin(guid->Data4, input + 19, 16); + + guid->Data1 = BE32(guid->Data1); + guid->Data2 = BE16(guid->Data2); + guid->Data3 = BE16(guid->Data3); + return TRUE; +} + + +// convert GUID to little-endian +void LEGUID(GUID *const restrict out, const GUID* const restrict in) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + out->Data1 = LE32(in->Data1); + out->Data2 = LE16(in->Data2); + out->Data3 = LE16(in->Data3); + memcpy(out->Data4, in->Data4, sizeof(out->Data4)); + #else + memcpy(out, in, sizeof(GUID)); + #endif +} + + +//Checks a command line argument if it is numeric and between min and max. Returns the numeric value or exits on error +__pure unsigned int getOptionArgumentInt(const char o, const unsigned int min, const unsigned int max) +{ + unsigned int result; + + if (!stringToInt(optarg, min, max, &result)) + { + printerrorf("Fatal: Option \"-%c\" must be numeric between %u and %u.\n", o, min, max); + exit(!0); + } + + return result; +} + + +// Resets getopt() to start parsing from the beginning +void optReset(void) +{ + #if __minix__ || defined(__BSD__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) + optind = 1; + optreset = 1; // Makes newer BSD getopt happy + #elif defined(__UCLIBC__) // uClibc headers also define __GLIBC__ so be careful here + optind = 0; // uClibc seeks compatibility with GLIBC + #elif defined(__GLIBC__) + optind = 0; // Makes GLIBC getopt happy + #else // Standard for most systems + optind = 1; + #endif +} + + +#if defined(_WIN32) || defined(USE_MSRPC) + +// Returns a static message buffer containing text for a given Win32 error. Not thread safe (same as strerror) +char* win_strerror(const int message) +{ + #define STRERROR_BUFFER_SIZE 256 + static char buffer[STRERROR_BUFFER_SIZE]; + + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, message, 0, buffer, STRERROR_BUFFER_SIZE, NULL); + return buffer; +} + +#endif // defined(_WIN32) || defined(USE_MSRPC) + + +/* + * parses an address in the form host:[port] in addr + * returns host and port in seperate strings + */ +void parseAddress(char *const addr, char** szHost, char** szPort) +{ + *szHost = addr; + +# ifndef NO_SOCKETS + *szPort = (char*)defaultport; +# else // NO_SOCKETS + *szPort = "1688"; +# endif // NO_SOCKETS + + char *lastcolon = strrchr(addr, ':'); + char *firstcolon = strchr(addr, ':'); + char *closingbracket = strrchr(addr, ']'); + + if (*addr == '[' && closingbracket) //Address in brackets + { + *closingbracket = 0; + (*szHost)++; + + if (closingbracket[1] == ':') + *szPort = closingbracket + 2; + } + else if (firstcolon && firstcolon == lastcolon) //IPv4 address or hostname with port + { + *firstcolon = 0; + *szPort = firstcolon + 1; + } +} + + +// Initialize random generator (needs to be done in each thread) +void randomNumberInit() +{ + struct timeval tv; + gettimeofday(&tv, NULL); + srand((unsigned int)(tv.tv_sec ^ tv.tv_usec)); +} + + +// We always exit immediately if any OOM condition occurs +__noreturn void OutOfMemory(void) +{ + errorout("Fatal: Out of memory"); + exit(!0); +} + + +void* vlmcsd_malloc(size_t len) +{ + void* buf = malloc(len); + if (!buf) OutOfMemory(); + return buf; +} + + +/* + * Converts hex digits to bytes in big-endian order. + * Ignores any non-hex characters + */ +void hex2bin(BYTE *const bin, const char *hex, const size_t maxbin) +{ + static const char *const hexdigits = "0123456789ABCDEF"; + char* nextchar; + size_t i; + + for (i = 0; (i < 16) && utf8_to_ucs2_char((const unsigned char*)hex, (const unsigned char**)&nextchar) != (WCHAR)-1; hex = nextchar) + { + const char* pos = strchr(hexdigits, toupper((int)*hex)); + if (!pos) continue; + + if (!(i & 1)) bin[i >> 1] = 0; + bin[i >> 1] |= (char)(pos - hexdigits); + if (!(i & 1)) bin[i >> 1] <<= 4; + i++; + if (i >> 1 > maxbin) break; + } +} + + +__pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument) +{ + if ( + !strncasecmp(argument, "true", 4) || + !strncasecmp(argument, "on", 4) || + !strncasecmp(argument, "yes", 3) || + !strncasecmp(argument, "1", 1) + ) + { + *result = TRUE; + return TRUE; + } + else if ( + !strncasecmp(argument, "false", 5) || + !strncasecmp(argument, "off", 3) || + !strncasecmp(argument, "no", 2) || + !strncasecmp(argument, "0", 1) + ) + { + *result = FALSE; + return TRUE; + } + + return FALSE; +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +#endif // WIN32 + +#include "network.h" +#include "endian.h" +#include "output.h" +#include "helpers.h" +#include "shared_globals.h" +#include "rpc.h" + + +#ifndef _WIN32 +typedef ssize_t (*sendrecv_t)(int, void*, size_t, int); +#else +typedef int (WINAPI *sendrecv_t)(SOCKET, void*, int, int); +#endif + + +// Send or receive a fixed number of bytes regardless if received in one or more chunks +int_fast8_t sendrecv(SOCKET sock, BYTE *data, int len, int_fast8_t do_send) +{ + int n; + sendrecv_t f = do_send + ? (sendrecv_t) send + : (sendrecv_t) recv; + + do + { + n = f(sock, data, len, 0); + } + while ( + ( n < 0 && socket_errno == VLMCSD_EINTR ) || ( n > 0 && ( data += n, (len -= n) > 0 ) )); + + return ! len; +} + + +static int_fast8_t ip2str(char *restrict result, const size_t resultLength, const struct sockaddr *const restrict socketAddress, const socklen_t socketLength) +{ + static const char *const fIPv4 = "%s:%s"; + static const char *const fIPv6 = "[%s]:%s"; + char ipAddress[64], portNumber[8]; + + if (getnameinfo + ( + socketAddress, + socketLength, + ipAddress, + sizeof(ipAddress), + portNumber, + sizeof(portNumber), + NI_NUMERICHOST | NI_NUMERICSERV + )) + { + return FALSE; + } + + if ((unsigned int)snprintf(result, resultLength, socketAddress->sa_family == AF_INET6 ? fIPv6 : fIPv4, ipAddress, portNumber) > resultLength) return FALSE; + return TRUE; +} + + +static int_fast8_t getSocketList(struct addrinfo **saList, const char *const addr, const int flags, const int AddressFamily) +{ + int status; + char *szHost, *szPort; + size_t len = strlen(addr) + 1; + + // Don't alloca too much + if (len > 264) return FALSE; + + char *addrcopy = (char*)alloca(len); + memcpy(addrcopy, addr, len); + + parseAddress(addrcopy, &szHost, &szPort); + + struct addrinfo hints; + + memset(&hints, 0, sizeof(struct addrinfo)); + + hints.ai_family = AddressFamily; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + hints.ai_flags = flags; + + if ((status = getaddrinfo(szHost, szPort, &hints, saList))) + { + printerrorf("Warning: %s: %s\n", addr, gai_strerror(status)); + return FALSE; + } + + return TRUE; +} + + +static int_fast8_t setBlockingEnabled(SOCKET fd, int_fast8_t blocking) +{ + if (fd == INVALID_SOCKET) return FALSE; + + #ifdef _WIN32 + + unsigned long mode = blocking ? 0 : 1; + return (ioctlsocket(fd, FIONBIO, &mode) == 0) ? TRUE : FALSE; + + #else // POSIX + + int flags = fcntl(fd, F_GETFL, 0); + + if (flags < 0) return FALSE; + + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + return (fcntl(fd, F_SETFL, flags) == 0) ? TRUE : FALSE; + + #endif // POSIX +} + + +int_fast8_t isDisconnected(const SOCKET s) +{ + char buffer[1]; + + if (!setBlockingEnabled(s, FALSE)) return TRUE; + + int n = recv(s, buffer, 1, MSG_PEEK); + + if (!setBlockingEnabled(s, TRUE)) return TRUE; + if (n == 0) return TRUE; + + return FALSE; +} + + +// Connect to TCP address addr (e.g. "kms.example.com:1688") and return an +// open socket for the connection if successful or INVALID_SOCKET otherwise +SOCKET connectToAddress(const char *const addr, const int AddressFamily, int_fast8_t showHostName) +{ + struct addrinfo *saList, *sa; + SOCKET s = INVALID_SOCKET; + char szAddr[128]; + + if (!getSocketList(&saList, addr, 0, AddressFamily)) return INVALID_SOCKET; + + for (sa = saList; sa; sa = sa->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (ip2str(szAddr, sizeof(szAddr), sa->ai_addr, sa->ai_addrlen)) + { + if (showHostName) + printf("Connecting to %s (%s) ... ", addr, szAddr); + else + printf("Connecting to %s ... ", szAddr); + + fflush(stdout); + } + + s = socket(sa->ai_family, SOCK_STREAM, IPPROTO_TCP); + +# if !defined(NO_TIMEOUT) && !__minix__ +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = 10; + to.tv_usec = 0; + +# else // Windows requires a DWORD with milliseconds + + DWORD to = 10000; + +# endif // _WIN32 + + setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); +# endif // !defined(NO_TIMEOUT) && !__minix__ + + if (!connect(s, sa->ai_addr, sa->ai_addrlen)) + { + printf("successful\n"); + break; + } + + errorout("%s\n", socket_errno == VLMCSD_EINPROGRESS ? "Timed out" : vlmcsd_strerror(socket_errno)); + + socketclose(s); + s = INVALID_SOCKET; + } + + freeaddrinfo(saList); + return s; +} + + +#ifndef NO_SOCKETS + +// Create a Listening socket for addrinfo sa and return socket s +// szHost and szPort are for logging only +static int listenOnAddress(const struct addrinfo *const ai, SOCKET *s) +{ + int error; + char ipstr[64]; + + ip2str(ipstr, sizeof(ipstr), ai->ai_addr, ai->ai_addrlen); + + //*s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + *s = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); + + if (*s == INVALID_SOCKET) + { + error = socket_errno; + printerrorf("Warning: %s error. %s\n", ai->ai_family == AF_INET6 ? cIPv6 : cIPv4, vlmcsd_strerror(error)); + return error; + } + +# if !defined(_WIN32) && !defined(NO_SIGHUP) + + int flags = fcntl(*s, F_GETFD, 0); + + if (flags != -1) + { + flags |= FD_CLOEXEC; + fcntl(*s, F_SETFD, flags); + } +# ifdef _PEDANTIC + else + { + printerrorf("Warning: Could not set FD_CLOEXEC flag on %s: %s\n", ipstr, vlmcsd_strerror(errno)); + } +# endif // _PEDANTIC + +# endif // !defined(_WIN32) && !defined(NO_SIGHUP) + + BOOL socketOption = TRUE; + + // fix for lame tomato toolchain +# ifndef IPV6_V6ONLY +# ifdef __linux__ +# define IPV6_V6ONLY (26) +# endif // __linux__ +# endif // IPV6_V6ONLY + +# ifdef IPV6_V6ONLY + if (ai->ai_family == AF_INET6) setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + +# ifndef _WIN32 + setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + + if (bind(*s, ai->ai_addr, ai->ai_addrlen) || listen(*s, SOMAXCONN)) + { + error = socket_errno; + printerrorf("Warning: %s: %s\n", ipstr, vlmcsd_strerror(error)); + socketclose(*s); + return error; + } + +# ifndef NO_LOG + logger("Listening on %s\n", ipstr); +# endif + + return 0; +} + + +// Adds a listening socket for an address string, +// e.g. 127.0.0.1:1688 or [2001:db8:dead:beef::1]:1688 +BOOL addListeningSocket(const char *const addr) +{ + struct addrinfo *aiList, *ai; + int result = FALSE; + SOCKET *s = SocketList + numsockets; + + if (getSocketList(&aiList, addr, AI_PASSIVE | AI_NUMERICHOST, AF_UNSPEC)) + { + for (ai = aiList; ai; ai = ai->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (numsockets >= FD_SETSIZE) + { + #ifdef _PEDANTIC // Do not report this error in normal builds to keep file size low + printerrorf("Warning: Cannot listen on %s. Your OS only supports %u listening sockets in an FD_SET.\n", addr, FD_SETSIZE); + #endif + break; + } + + if (!listenOnAddress(ai, s)) + { + numsockets++; + result = TRUE; + } + } + + freeaddrinfo(aiList); + } + return result; +} + + +// Just create some dummy sockets to see if we have a specific protocol (IPv4 or IPv6) +__pure int_fast8_t checkProtocolStack(const int addressfamily) +{ + SOCKET s; // = INVALID_SOCKET; + + s = socket(addressfamily, SOCK_STREAM, 0); + int_fast8_t success = (s != INVALID_SOCKET); + + socketclose(s); + return success; +} + + +// Build an fd_set of all listening socket then use select to wait for an incoming connection +static SOCKET network_accept_any() +{ + fd_set ListeningSocketsList; + SOCKET maxSocket, sock; + int i; + int status; + + FD_ZERO(&ListeningSocketsList); + maxSocket = 0; + + for (i = 0; i < numsockets; i++) + { + FD_SET(SocketList[i], &ListeningSocketsList); + if (SocketList[i] > maxSocket) maxSocket = SocketList[i]; + } + + status = select(maxSocket + 1, &ListeningSocketsList, NULL, NULL, NULL); + + if (status < 0) return INVALID_SOCKET; + + sock = INVALID_SOCKET; + + for (i = 0; i < numsockets; i++) + { + if (FD_ISSET(SocketList[i], &ListeningSocketsList)) + { + sock = SocketList[i]; + break; + } + } + + if (sock == INVALID_SOCKET) + return INVALID_SOCKET; + else + return accept(sock, NULL, NULL); +} + + +void closeAllListeningSockets() +{ + int i; + + for (i = 0; i < numsockets; i++) + { + shutdown(SocketList[i], VLMCSD_SHUT_RDWR); + socketclose(SocketList[i]); + } +} +#endif // NO_SOCKETS + + +static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup) +{ +# if !defined(NO_TIMEOUT) && !__minix__ + +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = ServerTimeout; + to.tv_usec = 0; + + #else // Windows requires a DWORD with milliseconds + + DWORD to = ServerTimeout * 1000; + +# endif // _WIN32 + +# if !defined(NO_LOG) && defined(_PEDANTIC) + + int result = + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)) || + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + + if (result) logger("Warning: Set timeout failed: %s\n", vlmcsd_strerror(socket_errno)); + +# else // !(!defined(NO_LOG) && defined(_PEDANTIC)) + + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + +# endif // !(!defined(NO_LOG) && defined(_PEDANTIC)) + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + char ipstr[64]; + socklen_t len; + struct sockaddr_storage addr; + + len = sizeof addr; + + if (getpeername(s_client, (struct sockaddr*)&addr, &len) || + !ip2str(ipstr, sizeof(ipstr), (struct sockaddr*)&addr, len)) + { +# if !defined(NO_LOG) && defined(_PEDANTIC) + logger("Fatal: Cannot determine client's IP address: %s\n", vlmcsd_strerror(errno)); +# endif // !defined(NO_LOG) && defined(_PEDANTIC) + socketclose(s_client); + return; + } + + +# ifndef NO_LOG + const char *const connection_type = addr.ss_family == AF_INET6 ? cIPv6 : cIPv4; + static const char *const cAccepted = "accepted"; + static const char *const cClosed = "closed"; + static const char *const fIP = "%s connection %s: %s.\n"; + + logger(fIP, connection_type, cAccepted, ipstr); + #endif // NO_LOG + + rpcServer(s_client, RpcAssocGroup, ipstr); + +# ifndef NO_LOG + logger(fIP, connection_type, cClosed, ipstr); +# endif // NO_LOG + + socketclose(s_client); +} + + +#ifndef NO_SOCKETS +static void post_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_post(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} + + +static void wait_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_wait(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} +#endif // NO_SOCKETS + +#if defined(USE_THREADS) && !defined(NO_SOCKETS) + +#if defined(_WIN32) || defined(__CYGWIN__) // Win32 Threads +static DWORD WINAPI serveClientThreadProc(PCLDATA clData) +#else // Posix threads +static void *serveClientThreadProc (PCLDATA clData) +#endif // Thread proc is identical in WIN32 and Posix threads +{ + serveClient(clData->socket, clData->RpcAssocGroup); + free(clData); + post_sem(); + + return 0; +} + +#endif // USE_THREADS + + +#ifndef NO_SOCKETS + +#if defined(USE_THREADS) && (defined(_WIN32) || defined(__CYGWIN__)) // Windows Threads +static int serveClientAsyncWinThreads(const PCLDATA thr_CLData) +{ + wait_sem(); + + HANDLE h = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)serveClientThreadProc, thr_CLData, 0, NULL); + + if (h) + CloseHandle(h); + else + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return GetLastError(); + } + + return NO_ERROR; +} +#endif // defined(USE_THREADS) && defined(_WIN32) // Windows Threads + + +#if defined(USE_THREADS) && !defined(_WIN32) && !defined(__CYGWIN__) // Posix Threads +static int ServeClientAsyncPosixThreads(const PCLDATA thr_CLData) +{ + pthread_t p_thr; + pthread_attr_t attr; + + wait_sem(); + + // Must set detached state to avoid memory leak + if (pthread_attr_init(&attr) || + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) || + pthread_create(&p_thr, &attr, (void * (*)(void *))serveClientThreadProc, thr_CLData)) + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return !0; + } + + return 0; +} +#endif // defined(USE_THREADS) && !defined(_WIN32) // Posix Threads + +#ifndef USE_THREADS // fork() implementation +static void ChildSignalHandler(const int signal) +{ + if (signal == SIGHUP) return; + + post_sem(); + + #ifndef NO_LOG + logger("Warning: Child killed/crashed by %s\n", strsignal(signal)); + #endif // NO_LOG + + exit(!0); +} + +static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + int pid; + wait_sem(); + + if ((pid = fork()) < 0) + { + return errno; + } + else if ( pid ) + { + // Parent process + socketclose(s_client); + return 0; + } + else + { + // Child process + + // Setup a Child Handler for most common termination signals + struct sigaction sa; + + sa.sa_flags = 0; + sa.sa_handler = ChildSignalHandler; + + static int signallist[] = { SIGHUP, SIGINT, SIGTERM, SIGSEGV, SIGILL, SIGFPE, SIGBUS }; + + if (!sigemptyset(&sa.sa_mask)) + { + uint_fast8_t i; + + for (i = 0; i < _countof(signallist); i++) + { + sigaction(signallist[i], &sa, NULL); + } + } + + serveClient(s_client, RpcAssocGroup); + post_sem(); + exit(0); + } +} +#endif + + +int serveClientAsync(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + #ifndef USE_THREADS // fork() implementation + + return ServeClientAsyncFork(s_client, RpcAssocGroup); + + #else // threads implementation + + PCLDATA thr_CLData = (PCLDATA)vlmcsd_malloc(sizeof(CLDATA)); + thr_CLData->socket = s_client; + thr_CLData->RpcAssocGroup = RpcAssocGroup; + + #if defined(_WIN32) || defined (__CYGWIN__) // Windows threads + + return serveClientAsyncWinThreads(thr_CLData); + + #else // Posix Threads + + return ServeClientAsyncPosixThreads(thr_CLData); + + #endif // Posix Threads + + #endif // USE_THREADS +} + +#endif // NO_SOCKETS + + +int runServer() +{ + DWORD RpcAssocGroup = rand32(); + + // If compiled for inetd-only mode just serve the stdin socket + #ifdef NO_SOCKETS + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + #else + // In inetd mode just handle the stdin socket + if (InetdMode) + { + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + } + + // Standalone mode + for (;;) + { + int error; + SOCKET s_client; + + if ( (s_client = network_accept_any()) == INVALID_SOCKET ) + { + error = socket_errno; + + if (error == VLMCSD_EINTR || error == VLMCSD_ECONNABORTED) continue; + + #ifdef _NTSERVICE + if (ServiceShutdown) return 0; + #endif + + #ifndef NO_LOG + logger("Fatal: %s\n",vlmcsd_strerror(error)); + #endif + + return error; + } + + RpcAssocGroup++; + serveClientAsync(s_client, RpcAssocGroup); + } + #endif // NO_SOCKETS + + return 0; +} + +#endif // USE_MSRPC +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#include +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include "rpc.h" +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "helpers.h" +#include "network.h" +#include "shared_globals.h" + +/* Forwards */ + +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p); + + +/* Data definitions */ + +// All GUIDs are defined as BYTE[16] here. No big-endian/little-endian byteswapping required. +static const BYTE TransferSyntaxNDR32[] = { + 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11, 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60 +}; + +static const BYTE InterfaceUuid[] = { + 0x75, 0x21, 0xc8, 0x51, 0x4e, 0x84, 0x50, 0x47, 0xB0, 0xD8, 0xEC, 0x25, 0x55, 0x55, 0xBC, 0x06 +}; + +static const BYTE TransferSyntaxNDR64[] = { + 0x33, 0x05, 0x71, 0x71, 0xba, 0xbe, 0x37, 0x49, 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36 +}; + +static const BYTE BindTimeFeatureNegotiation[] = { + 0x2c, 0x1c, 0xb7, 0x6c, 0x12, 0x98, 0x40, 0x45, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +// +// Dispatch RPC payload to kms.c +// +typedef int (*CreateResponse_t)(const void *const, void *const, const char* const); + +static const struct { + unsigned int RequestSize; + CreateResponse_t CreateResponse; +} _Versions[] = { + { sizeof(REQUEST_V4), (CreateResponse_t) CreateResponseV4 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 } +}; + +RPC_FLAGS RpcFlags; +static int_fast8_t firstPacketSent; + +// +// RPC request (server) +// +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcRequest(const RPC_REQUEST64 *const Request, const unsigned int len, WORD* NdrCtx, WORD* Ndr64Ctx, WORD Ctx) +{ + uint_fast8_t kmsMajorVersion; + uint32_t requestSize = Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64); + + if (len < requestSize) + { + logger("Fatal: RPC request (including header) must be at least %i bytes but is only %i bytes.\n", + (int)(sizeof(RPC_HEADER) + requestSize), + (int)(len + sizeof(RPC_HEADER)) + ); + + return; + } + + if (len < requestSize + sizeof(DWORD)) + { + logger("Fatal: KMS Request too small to contain version info (less than 4 bytes).\n"); + return; + } + + if (Ctx != *Ndr64Ctx) + kmsMajorVersion = LE16(((WORD*)Request->Ndr.Data)[1]); + else + kmsMajorVersion = LE16(((WORD*)Request->Ndr64.Data)[1]); + + if (kmsMajorVersion > 6) + { + logger("Fatal: KMSv%u is not supported.\n", (unsigned int)kmsMajorVersion); + } + else + { + if (len >_Versions[kmsMajorVersion].RequestSize + requestSize) + logger("Warning: %u excess bytes in RPC request.\n", + len - _Versions[kmsMajorVersion].RequestSize + ); + } + + if (Ctx != *Ndr64Ctx && Ctx != *NdrCtx) + logger("Warning: Context id should be %u (NDR32) or %u (NDR64) but is %u.\n", + (unsigned int)*NdrCtx, + (unsigned int)*Ndr64Ctx, + Ctx + ); + + if (Request->Opnum) + logger("Warning: OpNum should be 0 but is %u.\n", + (unsigned int)LE16(Request->Opnum) + ); + + if (LE32(Request->AllocHint) != len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr)) + logger("Warning: Allocation hint should be %u but is %u.\n", + len + sizeof(Request->Ndr), + LE32(Request->AllocHint) + ); + + if (Ctx != *Ndr64Ctx) + { + if (LE32(Request->Ndr.DataLength) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataLength) + ); + + if (LE32(Request->Ndr.DataSizeIs) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataSizeIs) + ); + } + else + { + if (LE64(Request->Ndr64.DataLength) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr), + LE64(Request->Ndr64.DataLength) + ); + + if (LE64(Request->Ndr64.DataSizeIs) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST64), + LE64(Request->Ndr64.DataSizeIs) + ); + } +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + +/* + * check RPC request for (somewhat) correct size + * allow any size that does not cause CreateResponse to fail badly + */ +static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + WORD Ctx = LE16(Request->ContextId); + +# if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcRequest(Request, requestSize, NdrCtx, Ndr64Ctx, Ctx); +# endif // defined(_PEDANTIC) && !defined(NO_LOG) + + // Anything that is smaller than a v4 request is illegal + if (requestSize < sizeof(REQUEST_V4) + (Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64))) return 0; + + // Get KMS major version + uint_fast16_t _v; + + if (Ctx != *Ndr64Ctx) + _v = LE16(((WORD*)Request->Ndr.Data)[1]) - 4; + else + _v = LE16(((WORD*)Request->Ndr64.Data)[1]) - 4; + + // Only KMS v4, v5 and v6 are supported + if (_v >= vlmcsd_countof(_Versions)) + { +# ifndef NO_LOG + logger("Fatal: KMSv%i unsupported\n", _v + 4); +# endif // NO_LOG + return 0; + } + + // Could check for equality but allow bigger requests to support buggy RPC clients (e.g. wine) + // Buffer overrun is check by caller. + return (requestSize >= _Versions[_v].RequestSize); +} + + +/* + * Handles the actual KMS request from the client. + * Calls KMS functions (CreateResponseV4 or CreateResponseV6) in kms.c + * Returns size of the KMS response packet or 0 on failure. + * + * The RPC packet size (excluding header) is actually in Response->AllocHint + */ +static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const Response, const DWORD RpcAssocGroup_unused, const SOCKET sock_unused, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr) +{ + uint_fast16_t _v; + int ResponseSize; + WORD Ctx = LE16(Request->ContextId); + BYTE* requestData; + BYTE* responseData; + BYTE* pRpcReturnCode; + int len; + + if (Ctx != *Ndr64Ctx) + { + requestData = (BYTE*)&Request->Ndr.Data; + responseData = (BYTE*)&Response->Ndr.Data; + } + else + { + requestData = (BYTE*)&Request->Ndr64.Data; + responseData = (BYTE*)&Response->Ndr64.Data; + } + + _v = LE16(((WORD*)requestData)[1]) - 4; + + if (!(ResponseSize = _Versions[_v].CreateResponse(requestData, responseData, ipstr))) + { + return 0; + } + + if (Ctx != *Ndr64Ctx) + { + Response->Ndr.DataSizeMax = LE32(0x00020000); + Response->Ndr.DataLength = Response->Ndr.DataSizeIs = LE32(ResponseSize); + len = ResponseSize + sizeof(Response->Ndr); + } + else + { + Response->Ndr64.DataSizeMax = LE64(0x00020000ULL); + Response->Ndr64.DataLength = Response->Ndr64.DataSizeIs = LE64((uint64_t)ResponseSize); + len = ResponseSize + sizeof(Response->Ndr64); + } + + pRpcReturnCode = ((BYTE*)&Response->Ndr) + len; + UA32(pRpcReturnCode) = 0; //LE32 not needed for 0 + len += sizeof(DWORD); + + // Pad zeros to 32-bit align (seems not neccassary but Windows RPC does it this way) + int pad = ((~len & 3) + 1) & 3; + memset(pRpcReturnCode + sizeof(DWORD), 0, pad); + len += pad; + + Response->AllocHint = LE32(len); + Response->ContextId = Request->ContextId; + + *((WORD*)&Response->CancelCount) = 0; // CancelCount + Pad1 + + return len + 8; +} + + +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcBindRequest(const RPC_BIND_REQUEST *const Request, const unsigned int len) +{ + uint_fast8_t i, HasTransferSyntaxNDR32 = FALSE; + char guidBuffer1[GUID_STRING_LENGTH + 1], guidBuffer2[GUID_STRING_LENGTH + 1]; + + uint32_t CapCtxItems = (len - sizeof(*Request) + sizeof(Request->CtxItems)) / sizeof(Request->CtxItems); + DWORD NumCtxItems = LE32(Request->NumCtxItems); + + if (NumCtxItems < CapCtxItems) // Can't be too small because already handled by RpcBindSize + logger("Warning: Excess bytes in RPC bind request.\n"); + + for (i = 0; i < NumCtxItems; i++) + { + if (!IsEqualGUID(&Request->CtxItems[i].InterfaceUUID, InterfaceUuid)) + { + uuid2StringLE((GUID*)&Request->CtxItems[i].InterfaceUUID, guidBuffer1); + uuid2StringLE((GUID*)InterfaceUuid, guidBuffer2); + logger("Warning: Interface UUID is %s but should be %s in Ctx item %u.\n", guidBuffer1, guidBuffer2, (unsigned int)i); + } + + if (Request->CtxItems[i].NumTransItems != LE16(1)) + logger("Fatal: %u NDR32 transfer items detected in Ctx item %u, but only one is supported.\n", + (unsigned int)LE16(Request->CtxItems[i].NumTransItems), (unsigned int)i + ); + + if (Request->CtxItems[i].InterfaceVerMajor != LE16(1) || Request->CtxItems[i].InterfaceVerMinor != 0) + logger("Warning: NDR32 Interface version is %u.%u but should be 1.0.\n", + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMajor), + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMinor) + ); + + if (Request->CtxItems[i].ContextId != LE16((WORD)i)) + logger("Warning: context id of Ctx item %u is %u.\n", (unsigned int)i, (unsigned int)Request->CtxItems[i].ContextId); + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + HasTransferSyntaxNDR32 = TRUE; + + if (Request->CtxItems[i].SyntaxVersion != LE32(2)) + logger("NDR32 transfer syntax version is %u but should be 2.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("NDR64 transfer syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if (!memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8)) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("BTFN syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + } + + if (!HasTransferSyntaxNDR32) + logger("Warning: RPC bind request has no NDR32 CtxItem.\n"); +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + + +/* + * Check, if we receive enough bytes to return a valid RPC bind response + */ +static unsigned int checkRpcBindSize(const RPC_BIND_REQUEST *const Request, const unsigned int RequestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + if ( RequestSize < sizeof(RPC_BIND_REQUEST) ) return FALSE; + + unsigned int _NumCtxItems = LE32(Request->NumCtxItems); + + if ( RequestSize < sizeof(RPC_BIND_REQUEST) - sizeof(Request->CtxItems[0]) + _NumCtxItems * sizeof(Request->CtxItems[0]) ) return FALSE; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcBindRequest(Request, RequestSize); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + return TRUE; +} + + +/* + * Accepts a bind or alter context request from the client and composes the bind response. + * Needs the socket because the tcp port number is part of the response. + * len is not used here. + * + * Returns TRUE on success. + */ +static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Response, const DWORD RpcAssocGroup, const SOCKET sock, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr_unused) +{ + unsigned int i, _st = FALSE; + DWORD numCtxItems = LE32(Request->NumCtxItems); + int_fast8_t IsNDR64possible = FALSE; + uint_fast8_t portNumberSize; + + socklen_t socklen; + struct sockaddr_storage addr; + + // M$ RPC does not do this. Pad bytes contain apparently random data + // memset(Response->SecondaryAddress, 0, sizeof(Response->SecondaryAddress)); + + socklen = sizeof addr; + + if ( + packetType == RPC_PT_ALTERCONTEXT_REQ || + getsockname(sock, (struct sockaddr*)&addr, &socklen) || + getnameinfo((struct sockaddr*)&addr, socklen, NULL, 0, (char*)Response->SecondaryAddress, sizeof(Response->SecondaryAddress), NI_NUMERICSERV)) + { + portNumberSize = Response->SecondaryAddressLength = 0; + } + else + { + portNumberSize = strlen((char*)Response->SecondaryAddress) + 1; + Response->SecondaryAddressLength = LE16(portNumberSize); + } + + Response->MaxXmitFrag = Request->MaxXmitFrag; + Response->MaxRecvFrag = Request->MaxRecvFrag; + Response->AssocGroup = LE32(RpcAssocGroup); + + // This is really ugly (but efficient) code to support padding after the secondary address field + if (portNumberSize < 3) + { + Response = (RPC_BIND_RESPONSE*)((BYTE*)Response - 4); + } + + Response->NumResults = Request->NumCtxItems; + + if (UseRpcNDR64) + { + for (i = 0; i < numCtxItems; i++) + { + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + /*if (packetType == RPC_PT_BIND_REQ)*/ + *NdrCtx = LE16(Request->CtxItems[i].ContextId); + } + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + IsNDR64possible = TRUE; + + /*if (packetType == RPC_PT_BIND_REQ)*/ + *Ndr64Ctx = LE16(Request->CtxItems[i].ContextId); + } + } + } + + for (i = 0; i < numCtxItems; i++) + { + memset(&Response->Results[i].TransferSyntax, 0, sizeof(GUID)); + + if ( !IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(2); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + _st = TRUE; + } + else if ( IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(1); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + + _st = TRUE; + } + else if ( UseRpcBTFN && !memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8) ) + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = RPC_BIND_ACK; + + // Features requested are actually encoded in the GUID + Response->Results[i].AckReason = + ((WORD*)(&Request->CtxItems[i].TransferSyntax))[4] & + (RPC_BTFN_SEC_CONTEXT_MULTIPLEX | RPC_BTFN_KEEP_ORPHAN); + } + else + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_NACK; // Unsupported + } + } + + if ( !_st ) return 0; + + return sizeof(RPC_BIND_RESPONSE) + numCtxItems * sizeof(((RPC_BIND_RESPONSE *)0)->Results[0]) - (portNumberSize < 3 ? 4 : 0); +} + + +// +// Main RPC handling routine +// +typedef unsigned int (*GetResponseSize_t)(const void *const request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx); +typedef int (*GetResponse_t)(const void* const request, void* response, const DWORD rpcAssocGroup, const SOCKET socket, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr); + +static const struct { + BYTE ResponsePacketType; + GetResponseSize_t CheckRequestSize; + GetResponse_t GetResponse; +} +_Actions[] = { + { RPC_PT_BIND_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, + { RPC_PT_RESPONSE, (GetResponseSize_t)checkRpcRequestSize, (GetResponse_t) rpcRequest }, + { RPC_PT_ALTERCONTEXT_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, +}; + + +/* + * This is the main RPC server loop. Returns after KMS request has been serviced + * or a timeout has occured. + */ +void rpcServer(const SOCKET sock, const DWORD RpcAssocGroup, const char* const ipstr) +{ + RPC_HEADER rpcRequestHeader; + WORD NdrCtx = INVALID_NDR_CTX, Ndr64Ctx = INVALID_NDR_CTX; + + randomNumberInit(); + + while (_recv(sock, &rpcRequestHeader, sizeof(rpcRequestHeader))) + { + //int_fast8_t _st; + unsigned int request_len, response_len; + uint_fast8_t _a; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + checkRpcHeader(&rpcRequestHeader, rpcRequestHeader.PacketType, &logger); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + switch (rpcRequestHeader.PacketType) + { + case RPC_PT_BIND_REQ: _a = 0; break; + case RPC_PT_REQUEST: _a = 1; break; + case RPC_PT_ALTERCONTEXT_REQ: _a = 2; break; + default: return; + } + + request_len = LE16(rpcRequestHeader.FragLength) - sizeof(rpcRequestHeader); + + BYTE requestBuffer[MAX_REQUEST_SIZE + sizeof(RPC_RESPONSE64)]; + BYTE responseBuffer[MAX_RESPONSE_SIZE + sizeof(RPC_HEADER) + sizeof(RPC_RESPONSE64)]; + + RPC_HEADER *rpcResponseHeader = (RPC_HEADER *)responseBuffer; + RPC_RESPONSE* rpcResponse = (RPC_RESPONSE*)(responseBuffer + sizeof(rpcRequestHeader)); + + // The request is larger than the buffer size + if (request_len > MAX_REQUEST_SIZE + sizeof(RPC_REQUEST64)) return; + + // Unable to receive the complete request + if (!_recv(sock, requestBuffer, request_len)) return; + + // Request is invalid + if (!_Actions[_a].CheckRequestSize(requestBuffer, request_len, &NdrCtx, &Ndr64Ctx)) return; + + // Unable to create a valid response from request + if (!(response_len = _Actions[_a].GetResponse(requestBuffer, rpcResponse, RpcAssocGroup, sock, &NdrCtx, &Ndr64Ctx, rpcRequestHeader.PacketType, ipstr))) return; + + response_len += sizeof(RPC_HEADER); + + memcpy(rpcResponseHeader, &rpcRequestHeader, sizeof(RPC_HEADER)); + + rpcResponseHeader->FragLength = LE16(response_len); + rpcResponseHeader->PacketType = _Actions[_a].ResponsePacketType; + + if (rpcResponseHeader->PacketType == RPC_PT_ALTERCONTEXT_ACK) + rpcResponseHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + + if (!_send(sock, responseBuffer, response_len)) return; + + if (DisconnectImmediately && rpcResponseHeader->PacketType == RPC_PT_RESPONSE) + shutdown(sock, VLMCSD_SHUT_RDWR); + } +} + + +/* RPC client functions */ + +static DWORD CallId = 2; // M$ starts with CallId 2. So we do the same. + + +/* + * Checks RPC header. Returns 0 on success. + * This is mainly for debugging a non Microsoft KMS server that uses its own RPC code. + */ +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p) +{ + int status = 0; + + if (Header->PacketType != desiredPacketType) + { + p("Fatal: Received wrong RPC packet type. Expected %u but got %u\n", + (uint32_t)desiredPacketType, + Header->PacketType + ); + status = !0; + } + + if (Header->DataRepresentation != BE32(0x10000000)) + { + p("Fatal: RPC response does not conform to Microsoft's limited support of DCE RPC\n"); + status = !0; + } + + if (Header->AuthLength != 0) + { + p("Fatal: RPC response requests authentication\n"); + status = !0; + } + + // vlmcsd does not support fragmented packets (not yet neccassary) + if ( (Header->PacketFlags & (RPC_PF_FIRST | RPC_PF_LAST)) != (RPC_PF_FIRST | RPC_PF_LAST) ) + { + p("Fatal: RPC packet flags RPC_PF_FIRST and RPC_PF_LAST are not both set.\n"); + status = !0; + } + + if (Header->PacketFlags & RPC_PF_CANCEL_PENDING) p("Warning: %s should not be set\n", "RPC_PF_CANCEL_PENDING"); + if (Header->PacketFlags & RPC_PF_RESERVED) p("Warning: %s should not be set\n", "RPC_PF_RESERVED"); + if (Header->PacketFlags & RPC_PF_NOT_EXEC) p("Warning: %s should not be set\n", "RPC_PF_NOT_EXEC"); + if (Header->PacketFlags & RPC_PF_MAYBE) p("Warning: %s should not be set\n", "RPC_PF_MAYBE"); + if (Header->PacketFlags & RPC_PF_OBJECT) p("Warning: %s should not be set\n", "RPC_PF_OBJECT"); + + if (Header->VersionMajor != 5 || Header->VersionMinor != 0) + { + p("Fatal: Expected RPC version 5.0 and got %u.%u\n", Header->VersionMajor, Header->VersionMinor); + status = !0; + } + + return status; +} + + +/* + * Checks an RPC response header. Does basic header checks by calling checkRpcHeader() + * and then does additional checks if response header complies with the respective request header. + * PRINTFUNC p can be anything that has the same prototype as printf. + * Returns 0 on success. + */ +static int checkRpcResponseHeader(const RPC_HEADER *const ResponseHeader, const RPC_HEADER *const RequestHeader, const BYTE desiredPacketType, const PRINTFUNC p) +{ + static int_fast8_t WineBugDetected = FALSE; + int status = checkRpcHeader(ResponseHeader, desiredPacketType, p); + + if (desiredPacketType == RPC_PT_BIND_ACK) + { + if ((ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) != (RequestHeader->PacketFlags & RPC_PF_MULTIPLEX)) + { + p("Warning: RPC_PF_MULTIPLEX of RPC request and response should match\n"); + } + } + else + { + if (ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) + { + p("Warning: %s should not be set\n", "RPC_PF_MULTIPLEX"); + } + } + + if (!status && ResponseHeader->CallId == LE32(1)) + { + if (!WineBugDetected) + { + p("Warning: Buggy RPC of Wine detected. Call Id of Response is always 1\n"); + WineBugDetected = TRUE; + } + } + else if (ResponseHeader->CallId != RequestHeader->CallId) + { + p("Fatal: Sent Call Id %u but received answer for Call Id %u\n", + (uint32_t)LE32(RequestHeader->CallId), + (uint32_t)LE32(ResponseHeader->CallId) + ); + + status = !0; + } + + return status; +} + +/* + * Initializes an RPC request header as needed for KMS, i.e. packet always fits in one fragment. + * size cannot be greater than fragment length negotiated during RPC bind. + */ +static void createRpcRequestHeader(RPC_HEADER* RequestHeader, BYTE packetType, WORD size) +{ + RequestHeader->PacketType = packetType; + RequestHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + RequestHeader->VersionMajor = 5; + RequestHeader->VersionMinor = 0; + RequestHeader->AuthLength = 0; + RequestHeader->DataRepresentation = BE32(0x10000000); // Little endian, ASCII charset, IEEE floating point + RequestHeader->CallId = LE32(CallId); + RequestHeader->FragLength = LE16(size); +} + + +/* + * Sends a KMS request via RPC and receives a response. + * Parameters are raw (encrypted) reqeuests / responses. + * Returns 0 on success. + */ +RpcStatus rpcSendRequest(const RpcCtx sock, const BYTE *const KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t *const responseSize) +{ + #define MAX_EXCESS_BYTES 16 + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_REQUEST64 *RpcRequest; + RPC_RESPONSE64 _Response; + int status = 0; + int_fast8_t useNdr64 = UseRpcNDR64 && firstPacketSent; + size_t size = sizeof(RPC_HEADER) + (useNdr64 ? sizeof(RPC_REQUEST64) : sizeof(RPC_REQUEST)) + requestSize; + size_t responseSize2; + + *KmsResponse = NULL; + + BYTE *_Request = (BYTE*)vlmcsd_malloc(size); + + RequestHeader = (RPC_HEADER*)_Request; + RpcRequest = (RPC_REQUEST64*)(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, RPC_PT_REQUEST, size); + + // Increment CallId for next Request + CallId++; + + RpcRequest->Opnum = 0; + + if (useNdr64) + { + RpcRequest->ContextId = LE16(1); // We negotiate NDR64 always as context 1 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr64)); + RpcRequest->Ndr64.DataLength = LE64((uint64_t)requestSize); + RpcRequest->Ndr64.DataSizeIs = LE64((uint64_t)requestSize); + memcpy(RpcRequest->Ndr64.Data, KmsRequest, requestSize); + } + else + { + RpcRequest->ContextId = 0; // We negotiate NDR32 always as context 0 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr)); + RpcRequest->Ndr.DataLength = LE32(requestSize); + RpcRequest->Ndr.DataSizeIs = LE32(requestSize); + memcpy(RpcRequest->Ndr.Data, KmsRequest, requestSize); + } + + for(;;) + { + int bytesread; + + if (!_send(sock, _Request, size)) + { + errorout("\nFatal: Could not send RPC request\n"); + status = !0; + break; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: No RPC response received from server\n"); + status = !0; + break; + } + + if ((status = checkRpcResponseHeader(&ResponseHeader, RequestHeader, RPC_PT_RESPONSE, &errorout))) break; + + size = useNdr64 ? sizeof(RPC_RESPONSE64) : sizeof(RPC_RESPONSE); + + if (size > LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader)) + size = LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader); + + if (!_recv(sock, &_Response, size)) + { + errorout("\nFatal: RPC response is incomplete\n"); + status = !0; + break; + } + + if (_Response.CancelCount != 0) + { + errorout("\nFatal: RPC response cancel count is not 0\n"); + status = !0; + } + + if (_Response.ContextId != (useNdr64 ? LE16(1) : 0)) + { + errorout("\nFatal: RPC response context id %u is not bound\n", (unsigned int)LE16(_Response.ContextId)); + status = !0; + } + + int_fast8_t sizesMatch; + + if (useNdr64) + { + *responseSize = (size_t)LE64(_Response.Ndr64.DataLength); + responseSize2 = (size_t)LE64(_Response.Ndr64.DataSizeIs); + + if (!*responseSize || !_Response.Ndr64.DataSizeMax) + { + status = (int)LE32(_Response.Ndr64.status); + break; + } + + sizesMatch = (size_t)LE64(_Response.Ndr64.DataLength) == responseSize2; + } + else + { + *responseSize = (size_t)LE32(_Response.Ndr.DataLength); + responseSize2 = (size_t)LE32(_Response.Ndr.DataSizeIs); + + if (!*responseSize || !_Response.Ndr.DataSizeMax) + { + status = (int)LE32(_Response.Ndr.status); + break; + } + + sizesMatch = (size_t)LE32(_Response.Ndr.DataLength) == responseSize2; + } + + if (!sizesMatch) + { + errorout("\nFatal: NDR data length (%u) does not match NDR data size (%u)\n", + (uint32_t)*responseSize, + (uint32_t)LE32(_Response.Ndr.DataSizeIs) + ); + + status = !0; + } + + *KmsResponse = (BYTE*)vlmcsd_malloc(*responseSize + MAX_EXCESS_BYTES); + + // If RPC stub is too short, assume missing bytes are zero (same ill behavior as MS RPC) + memset(*KmsResponse, 0, *responseSize + MAX_EXCESS_BYTES); + + // Read up to 16 bytes more than bytes expected to detect faulty KMS emulators + if ((bytesread = recv(sock, (char*)*KmsResponse, *responseSize + MAX_EXCESS_BYTES, 0)) < (int)*responseSize) + { + errorout("\nFatal: No or incomplete KMS response received. Required %u bytes but only got %i\n", + (uint32_t)*responseSize, + (int32_t)(bytesread < 0 ? 0 : bytesread) + ); + + status = !0; + break; + } + + DWORD *pReturnCode; + + size_t len = *responseSize + (useNdr64 ? sizeof(_Response.Ndr64) : sizeof(_Response.Ndr)) + sizeof(*pReturnCode); + size_t pad = ((~len & 3) + 1) & 3; + + if (len + pad != LE32(_Response.AllocHint)) + { + errorout("\nWarning: RPC stub size is %u, should be %u (probably incorrect padding)\n", (uint32_t)LE32(_Response.AllocHint), (uint32_t)(len + pad)); + } + else + { + size_t i; + for (i = 0; i < pad; i++) + { + if (*(*KmsResponse + *responseSize + sizeof(*pReturnCode) + i)) + { + errorout("\nWarning: RPC stub data not padded to zeros according to Microsoft standard\n"); + break; + } + } + } + + pReturnCode = (DWORD*)(*KmsResponse + *responseSize + pad); + status = LE32(UA32(pReturnCode)); + + if (status) errorout("\nWarning: RPC stub data reported Error %u\n", (uint32_t)status); + + break; + } + + free(_Request); + firstPacketSent = TRUE; + return status; + #undef MAX_EXCESS_BYTES +} + + +static int_fast8_t IsNullGuid(BYTE* guidPtr) +{ + int_fast8_t i; + + for (i = 0; i < 16; i++) + { + if (guidPtr[i]) return FALSE; + } + + return TRUE; +} + +/* + * Perform RPC client bind. Accepts a connected client socket. + * Returns 0 on success. RPC binding is required before any payload can be + * exchanged. It negotiates about protocol details. + */ +RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const int_fast8_t verbose) +{ + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_BIND_REQUEST *bindRequest; + RPC_BIND_RESPONSE *bindResponse; + int status; + WORD ctxItems = 1 + (packetType == RPC_PT_BIND_REQ ? UseRpcNDR64 + UseRpcBTFN : 0); + size_t rpcBindSize = (sizeof(RPC_HEADER) + sizeof(RPC_BIND_REQUEST) + (ctxItems - 1) * sizeof(bindRequest->CtxItems[0])); + WORD ctxIndex = 0; + WORD i; + WORD CtxBTFN = (WORD)~0, CtxNDR64 = (WORD)~0; + BYTE _Request[rpcBindSize]; + + RequestHeader = (RPC_HEADER*)_Request; + bindRequest = (RPC_BIND_REQUEST* )(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, packetType, rpcBindSize); + RequestHeader->PacketFlags |= UseMultiplexedRpc ? RPC_PF_MULTIPLEX : 0; + + bindRequest->AssocGroup = 0; + bindRequest->MaxRecvFrag = bindRequest->MaxXmitFrag = LE16(5840); + bindRequest->NumCtxItems = LE32(ctxItems); + + // data that is identical in all Ctx items + for (i = 0; i < ctxItems; i++) + { + bindRequest->CtxItems[i].ContextId = LE16(i); + bindRequest->CtxItems[i].InterfaceVerMajor = LE16(1); + bindRequest->CtxItems[i].InterfaceVerMinor = 0; + bindRequest->CtxItems[i].NumTransItems = LE16(1); + bindRequest->CtxItems[i].SyntaxVersion = i ? LE32(1) : LE32(2); + + memcpy(&bindRequest->CtxItems[i].InterfaceUUID, InterfaceUuid, sizeof(GUID)); + } + + memcpy(&bindRequest->CtxItems[0].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + if (UseRpcNDR64 && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + CtxNDR64 = ctxIndex; + } + + if (UseRpcBTFN && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, BindTimeFeatureNegotiation, sizeof(GUID)); + CtxBTFN = ctxIndex; + } + + if (!_send(sock, _Request, rpcBindSize)) + { + errorout("\nFatal: Sending RPC bind request failed\n"); + return !0; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: Did not receive a response from server\n"); + return !0; + } + + if ((status = checkRpcResponseHeader + ( + &ResponseHeader, + RequestHeader, + packetType == RPC_PT_BIND_REQ ? RPC_PT_BIND_ACK : RPC_PT_ALTERCONTEXT_ACK, + &errorout + ))) + { + return status; + } + + bindResponse = (RPC_BIND_RESPONSE*)vlmcsd_malloc(LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER)); + BYTE* bindResponseBytePtr = (BYTE*)bindResponse; + + if (!_recv(sock, bindResponse, LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER))) + { + errorout("\nFatal: Incomplete RPC bind acknowledgement received\n"); + free(bindResponseBytePtr); + return !0; + } + else + { + /* + * checking, whether a bind or alter context response is as expected. + * This check is very strict and checks whether a KMS emulator behaves exactly the same way + * as Microsoft's RPC does. + */ + status = 0; + + if (bindResponse->SecondaryAddressLength < LE16(3)) + bindResponse = (RPC_BIND_RESPONSE*)(bindResponseBytePtr - 4); + + if (bindResponse->NumResults != bindRequest->NumCtxItems) + { + errorout("\nFatal: Expected %u CTX items but got %u\n", + (uint32_t)LE32(bindRequest->NumCtxItems), + (uint32_t)LE32(bindResponse->NumResults) + ); + + status = !0; + } + + for (i = 0; i < ctxItems; i++) + { + const char* transferSyntaxName = + i == CtxBTFN ? "BTFN" : i == CtxNDR64 ? "NDR64" : "NDR32"; + + if (bindResponse->Results[i].AckResult == RPC_BIND_NACK) // transfer syntax was declined + { + if (!IsNullGuid((BYTE*)&bindResponse->Results[i].TransferSyntax)) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return NULL Guid\n", + transferSyntaxName + ); + } + + if (bindResponse->Results[i].SyntaxVersion) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return syntax version 0 but %u\n", + transferSyntaxName, + LE32(bindResponse->Results[i].SyntaxVersion) + ); + } + + if (bindResponse->Results[i].AckReason == RPC_ABSTRACTSYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Transfer syntax %s does not support KMS activation\n", + transferSyntaxName + ); + } + else if (bindResponse->Results[i].AckReason != RPC_SYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return ack reason RPC_SYNTAX_UNSUPPORTED\n", + transferSyntaxName + ); + } + + continue; + } + + if (i == CtxBTFN) // BTFN + { + if (bindResponse->Results[i].AckResult != RPC_BIND_ACK) + { + errorout("\nWarning: BTFN did not respond with RPC_BIND_ACK or RPC_BIND_NACK\n"); + } + + if (bindResponse->Results[i].AckReason != LE16(3)) + { + errorout("\nWarning: BTFN did not return expected feature mask 0x3 but 0x%X\n", (unsigned int)LE16(bindResponse->Results[i].AckReason)); + } + + if (verbose) printf("... BTFN "); + RpcFlags.HasBTFN = TRUE; + + continue; + } + + // NDR32 or NDR64 Ctx + if (bindResponse->Results[i].AckResult != RPC_BIND_ACCEPT) + { + errorout( + "\nFatal: transfer syntax %s returned an invalid status, neither RPC_BIND_ACCEPT nor RPC_BIND_NACK\n", + transferSyntaxName + ); + + status = !0; + } + + if (!IsEqualGUID(&bindResponse->Results[i].TransferSyntax, &bindRequest->CtxItems[i].TransferSyntax)) + { + errorout( + "\nFatal: Transfer syntax of RPC bind request and response does not match\n" + ); + + status = !0; + } + + if (bindResponse->Results[i].SyntaxVersion != bindRequest->CtxItems[i].SyntaxVersion) + { + errorout("\nFatal: Expected transfer syntax version %u for %s but got %u\n", + (uint32_t)LE32(bindRequest->CtxItems[0].SyntaxVersion), + transferSyntaxName, + (uint32_t)LE32(bindResponse->Results[0].SyntaxVersion) + ); + + status = !0; + } + + // The ack reason field is actually undefined here but Microsoft sets this to 0 + if (bindResponse->Results[i].AckReason != 0) + { + errorout( + "\nWarning: Ack reason should be 0 but is %u\n", + LE16(bindResponse->Results[i].AckReason) + ); + } + + if (!status) + { + if (i == CtxNDR64) + { + RpcFlags.HasNDR64 = TRUE; + if (verbose) printf("... NDR64 "); + } + if (!i) + { + RpcFlags.HasNDR32 = TRUE; + if (verbose) printf("... NDR32 "); + } + + } + } + } + + free(bindResponseBytePtr); + + if (!RpcFlags.HasNDR64 && !RpcFlags.HasNDR32) + { + errorout("\nFatal: Could neither negotiate NDR32 nor NDR64 with the RPC server\n"); + status = !0; + } + + return status; +} + +RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose) +{ + firstPacketSent = FALSE; + RpcFlags.mask = 0; + + RpcStatus status = + rpcBindOrAlterClientContext(sock, RPC_PT_BIND_REQ, verbose); + + if (status) return status; + + if (!RpcFlags.HasNDR32) + status = rpcBindOrAlterClientContext(sock, RPC_PT_ALTERCONTEXT_REQ, verbose); + + return status; +} + +#endif // USE_MSRPC +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if !defined(_CRYPTO_OPENSSL) && !defined(_CRYPTO_POLARSSL) && !defined(_CRYPTO_WINDOWS) +#include "crypto_internal.h" +#include "endian.h" + +#define F0(x, y, z) ( ((x) & (y)) | (~(x) & (z)) ) +#define F1(x, y, z) ( ((x) & (y)) | ((x) & (z)) | ((y) & (z)) ) + +#define SI1(x) ( ROR32(x, 2 ) ^ ROR32(x, 13) ^ ROR32(x, 22) ) +#define SI2(x) ( ROR32(x, 6 ) ^ ROR32(x, 11) ^ ROR32(x, 25) ) +#define SI3(x) ( ROR32(x, 7 ) ^ ROR32(x, 18) ^ ((x) >> 3 ) ) +#define SI4(x) ( ROR32(x, 17) ^ ROR32(x, 19) ^ ((x) >> 10) ) + +static const DWORD k[] = { + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, + 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, + 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, + 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, + 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, + 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +}; + + +static void Sha256Init(Sha256Ctx *Ctx) +{ + Ctx->State[0] = 0x6A09E667; + Ctx->State[1] = 0xBB67AE85; + Ctx->State[2] = 0x3C6EF372; + Ctx->State[3] = 0xA54FF53A; + Ctx->State[4] = 0x510E527F; + Ctx->State[5] = 0x9B05688C; + Ctx->State[6] = 0x1F83D9AB; + Ctx->State[7] = 0x5BE0CD19; + Ctx->Len = 0; +} + + +static void Sha256ProcessBlock(Sha256Ctx *Ctx, BYTE *block) +{ + unsigned int i; + DWORD w[64], temp1, temp2; + DWORD a = Ctx->State[0]; + DWORD b = Ctx->State[1]; + DWORD c = Ctx->State[2]; + DWORD d = Ctx->State[3]; + DWORD e = Ctx->State[4]; + DWORD f = Ctx->State[5]; + DWORD g = Ctx->State[6]; + DWORD h = Ctx->State[7]; + + for (i = 0; i < 16; i++) + //w[ i ] = GET_UAA32BE(block, i); + w[i] = BE32(((DWORD*)block)[i]); + + for (i = 16; i < 64; i++) + w[ i ] = SI4(w[ i - 2 ]) + w[ i - 7 ] + SI3(w[ i - 15 ]) + w[ i - 16 ]; + + for (i = 0; i < 64; i++) + { + temp1 = h + SI2(e) + F0(e, f, g) + k[ i ] + w[ i ]; + temp2 = SI1(a) + F1(a, b, c); + + h = g; + g = f; + f = e; + e = d + temp1; + d = c; + c = b; + b = a; + a = temp1 + temp2; + } + + Ctx->State[0] += a; + Ctx->State[1] += b; + Ctx->State[2] += c; + Ctx->State[3] += d; + Ctx->State[4] += e; + Ctx->State[5] += f; + Ctx->State[6] += g; + Ctx->State[7] += h; +} + + +static void Sha256Update(Sha256Ctx *Ctx, BYTE *data, size_t len) +{ + unsigned int b_len = Ctx->Len & 63, + r_len = (b_len ^ 63) + 1; + + Ctx->Len += len; + + if ( len < r_len ) + { + memcpy(Ctx->Buffer + b_len, data, len); + return; + } + + if ( r_len < 64 ) + { + memcpy(Ctx->Buffer + b_len, data, r_len); + len -= r_len; + data += r_len; + Sha256ProcessBlock(Ctx, Ctx->Buffer); + } + + for (; len >= 64; len -= 64, data += 64) + Sha256ProcessBlock(Ctx, data); + + if ( len ) memcpy(Ctx->Buffer, data, len); +} + + +static void Sha256Finish(Sha256Ctx *Ctx, BYTE *hash) +{ + unsigned int i, b_len = Ctx->Len & 63; + + Ctx->Buffer[ b_len ] = 0x80; + if ( b_len ^ 63 ) memset(Ctx->Buffer + b_len + 1, 0, b_len ^ 63); + + if ( b_len >= 56 ) + { + Sha256ProcessBlock(Ctx, Ctx->Buffer); + memset(Ctx->Buffer, 0, 56); + } + + //PUT_UAA64BE(Ctx->Buffer, (unsigned long long)(Ctx->Len * 8), 7); + ((uint64_t*)Ctx->Buffer)[7] = BE64((uint64_t)Ctx->Len << 3); + Sha256ProcessBlock(Ctx, Ctx->Buffer); + + for (i = 0; i < 8; i++) + //PUT_UAA32BE(hash, Ctx->State[i], i); + ((DWORD*)hash)[i] = BE32(Ctx->State[i]); + +} + + +void Sha256(BYTE *data, size_t len, BYTE *hash) +{ + Sha256Ctx Ctx; + + Sha256Init(&Ctx); + Sha256Update(&Ctx, data, len); + Sha256Finish(&Ctx, hash); +} + + +static void _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen) +{ + BYTE IPad[64]; + unsigned int i; + + memset(IPad, 0x36, sizeof(IPad)); + memset(Ctx->OPad, 0x5C, sizeof(Ctx->OPad)); + + if ( klen > 64 ) + { + BYTE *temp = (BYTE*)alloca(32); + Sha256(key, klen, temp); + klen = 32; + key = temp; + } + + for (i = 0; i < klen; i++) + { + IPad[ i ] ^= key[ i ]; + Ctx->OPad[ i ] ^= key[ i ]; + } + + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, IPad, sizeof(IPad)); +} + + +static void _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len) +{ + Sha256Update(&Ctx->ShaCtx, data, len); +} + + +static void _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac) +{ + BYTE temp[32]; + + Sha256Finish(&Ctx->ShaCtx, temp); + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, Ctx->OPad, sizeof(Ctx->OPad)); + Sha256Update(&Ctx->ShaCtx, temp, sizeof(temp)); + Sha256Finish(&Ctx->ShaCtx, hmac); +} + + + +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ + Sha256HmacCtx Ctx; + _Sha256HmacInit(&Ctx, key, 16); + _Sha256HmacUpdate(&Ctx, data, len); + _Sha256HmacFinish(&Ctx, hmac); + return TRUE; +} + + +#endif // No external Crypto + +/* + * dns_srv.c + * + * This file contains the code for KMS SRV record lookup in DNS (_vlmcs._tcp.example.com IN SRV 0 0 1688 mykms.example.com) + * + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef NO_DNS + +#include "dns_srv.h" + +#include +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +//#ifndef DNS_PARSER_INTERNAL +#if __ANDROID__ +#include +#include "nameser.h" +#include "resolv.h" +#else // other Unix non-Android +#include +#include +#include +#endif // other Unix non-Android +//#endif // DNS_PARSER_INTERNAL +#else // WIN32 +#include +#endif // WIN32 + +#include "helpers.h" +#include "output.h" +#include "endian.h" + +#if defined(DNS_PARSER_INTERNAL) && !defined(_WIN32) + +#include "ns_name.h" +#include "ns_parse.h" + +// Define macros to redirect DNS parser functions to internal versions + +#undef ns_msg +#undef ns_initparse +#undef ns_parserr +#undef ns_rr +#undef ns_name_uncompress +#undef ns_msg_base +#undef ns_msg_end +#undef ns_rr_rdata +#undef ns_rr_type +#undef ns_msg_count +#undef ns_rr_class +#undef ns_s_an +#define ns_msg ns_msg_vlmcsd +#define ns_initparse ns_initparse_vlmcsd +#define ns_parserr ns_parserr_vlmcsd +#define ns_rr ns_rr_vlmcsd +#define ns_name_uncompress ns_name_uncompress_vlmcsd +#define ns_msg_base ns_msg_base_vlmcsd +#define ns_msg_end ns_msg_end_vlmcsd +#define ns_rr_rdata ns_rr_rdata_vlmcsd +#define ns_rr_type ns_rr_type_vlmcsd +#define ns_msg_count ns_msg_count_vlmcsd +#define ns_rr_class ns_rr_class_vlmcsd +#define ns_s_an ns_s_an_vlmcsd + +#ifndef NS_MAXLABEL +#define NS_MAXLABEL 63 +#endif + +#endif // defined(DNS_PARSER_INTERNAL) && !defined(_WIN32) + + +//TODO: maybe move to helpers.c +static unsigned int isqrt(unsigned int n) +{ + unsigned int c = 0x8000; + unsigned int g = 0x8000; + + for(;;) + { + if(g*g > n) + g ^= c; + + c >>= 1; + + if(c == 0) return g; + + g |= c; + } +} + + +/* + * Compare function for qsort to sort SRV records by priority and weight + * random_weight must be product of weight from SRV record and square root of a random number + */ +static int kmsServerListCompareFunc1(const void* a, const void* b) +{ + if ( !a && !b) return 0; + if ( a && !b) return -1; + if ( !a && b) return 1; + + int priority_order = (int)((*(kms_server_dns_ptr*)a)->priority) - ((int)(*(kms_server_dns_ptr*)b)->priority); + + if (priority_order) return priority_order; + + return (int)((*(kms_server_dns_ptr*)b)->random_weight) - ((int)(*(kms_server_dns_ptr*)a)->random_weight); +} + +/* Sort resulting SRV records */ +void sortSrvRecords(kms_server_dns_ptr* serverlist, const int answers) +{ + int i; + + for (i = 0; i < answers; i++) + { + serverlist[i]->random_weight = (rand32() % 256) * isqrt(serverlist[i]->weight * 1000); + } + + qsort(serverlist, answers, sizeof(kms_server_dns_ptr), kmsServerListCompareFunc1); +} + + +#define RECEIVE_BUFFER_SIZE 2048 +#ifndef _WIN32 // UNIX resolver + +/* + * Retrieves a raw DNS answer (a buffer of what came over the net) + * Result must be parsed + */ +static int getDnsRawAnswer(const char *restrict query, unsigned char** receive_buffer) +{ + if (res_init() < 0) + { + errorout("Cannot initialize resolver: %s", strerror(errno)); + return 0; + } + + //if(!(*receive_buffer = (unsigned char*)malloc(RECEIVE_BUFFER_SIZE))) OutOfMemory(); + *receive_buffer = (unsigned char*)vlmcsd_malloc(RECEIVE_BUFFER_SIZE); + + int bytes_received; + + if (*query == '.') + { +# if __ANDROID__ || __GLIBC__ /* including __UCLIBC__*/ || __APPLE__ || __CYGWIN__ || __FreeBSD__ || __NetBSD__ || __DragonFly__ || __OpenBSD__ || __sun__ + bytes_received = res_querydomain("_vlmcs._tcp", query + 1, ns_c_in, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); +# else + char* querystring = (char*)alloca(strlen(query) + 12); + strcpy(querystring, "_vlmcs._tcp"); + strcat(querystring, query); + bytes_received = res_query(querystring, C_IN, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); +# endif + } + else + { + bytes_received = res_search("_vlmcs._tcp", ns_c_in, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); + } + + if (bytes_received < 0) + { + errorout("Fatal: DNS query to %s%s failed: %s\n", "_vlmcs._tcp", *query == '.' ? query : "", hstrerror(h_errno)); + return 0; + } + + return bytes_received; +} + +/* + * Retrieves an unsorted array of SRV records (Unix / Posix) + */ +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *restrict query) +{ + unsigned char* receive_buffer; + *serverlist = NULL; + + int bytes_received = getDnsRawAnswer(query, &receive_buffer); + + if (bytes_received == 0) return 0; + + ns_msg msg; + + if (ns_initparse(receive_buffer, bytes_received, &msg) < 0) + { + errorout("Fatal: Incorrect DNS response: %s\n", strerror(errno)); + free(receive_buffer); + return 0; + } + + uint16_t i, answers = ns_msg_count(msg, ns_s_an); + //if(!(*serverlist = (kms_server_dns_ptr*)malloc(answers * sizeof(kms_server_dns_ptr)))) OutOfMemory(); + *serverlist = (kms_server_dns_ptr*)malloc(answers * sizeof(kms_server_dns_ptr)); + + memset(*serverlist, 0, answers * sizeof(kms_server_dns_ptr)); + + for (i = 0; i < answers; i++) + { + ns_rr rr; + + if (ns_parserr(&msg, ns_s_an, i, &rr) < 0) + { + errorout("Warning: Error in DNS resource record: %s\n", strerror(errno)); + continue; + } + + if (ns_rr_type(rr) != ns_t_srv) + { + errorout("Warning: DNS server returned non-SRV record\n"); + continue; + } + + if (ns_rr_class(rr) != ns_c_in) + { + errorout("Warning: DNS server returned non-IN class record\n"); + continue; + } + + dns_srv_record_ptr srvrecord = (dns_srv_record_ptr)ns_rr_rdata(rr); + kms_server_dns_ptr kms_server = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + (*serverlist)[i] = kms_server; + + if (ns_name_uncompress(ns_msg_base(msg), ns_msg_end(msg), srvrecord->name, kms_server->serverName, sizeof(kms_server->serverName)) < 0) + { + errorout("Warning: No valid DNS name returned in SRV record: %s\n", strerror(errno)); + continue; + } + + sprintf(kms_server->serverName + strlen(kms_server->serverName), ":%hu", GET_UA16BE(&srvrecord->port)); + kms_server->priority = GET_UA16BE(&srvrecord->priority); + kms_server->weight = GET_UA16BE(&srvrecord->weight); + + } + + free(receive_buffer); + return answers; +} + +#else // WIN32 (Windows Resolver) + +/* + * Retrieves an unsorted array of SRV records (Windows) + */ +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *const restrict query) +{ +# define MAX_DNS_NAME_SIZE 254 + *serverlist = NULL; + PDNS_RECORD receive_buffer; + char dnsDomain[MAX_DNS_NAME_SIZE]; + char FqdnQuery[MAX_DNS_NAME_SIZE]; + DWORD size = MAX_DNS_NAME_SIZE; + DNS_STATUS result; + int answers = 0; + PDNS_RECORD dns_iterator; + + if (*query == '-') + { + if (!GetComputerNameExA(ComputerNamePhysicalDnsDomain, dnsDomain, &size)) + { + errorout("Fatal: Could not determine computer's DNS name: %s\n", vlmcsd_strerror(GetLastError())); + return 0; + } + + strcpy(FqdnQuery, "_vlmcs._tcp."); + strncat(FqdnQuery, dnsDomain, MAX_DNS_NAME_SIZE - 12); + } + else + { + strcpy(FqdnQuery, "_vlmcs._tcp"); + strncat(FqdnQuery, query, MAX_DNS_NAME_SIZE - 11); + } + + if ((result = DnsQuery_UTF8(FqdnQuery, DNS_TYPE_SRV, 0, NULL, &receive_buffer, NULL)) != 0) + { + errorout("Fatal: DNS query to %s failed: %s\n", FqdnQuery, vlmcsd_strerror(result)); + return 0; + } + + for (dns_iterator = receive_buffer; dns_iterator; dns_iterator = dns_iterator->pNext) + { + if (dns_iterator->Flags.S.Section != 1) continue; + + if (dns_iterator->wType != DNS_TYPE_SRV) + { + errorout("Warning: DNS server returned non-SRV record\n"); + continue; + } + + answers++; + } + + *serverlist = (kms_server_dns_ptr*)vlmcsd_malloc(answers * sizeof(kms_server_dns_ptr)); + + for (answers = 0, dns_iterator = receive_buffer; dns_iterator; dns_iterator = dns_iterator->pNext) + { + if (dns_iterator->wType != DNS_TYPE_SRV) continue; + + kms_server_dns_ptr kms_server = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + memset(kms_server, 0, sizeof(kms_server_dns_t)); + + snprintf(kms_server->serverName, sizeof(kms_server->serverName), "%s:%hu", dns_iterator->Data.SRV.pNameTarget, dns_iterator->Data.SRV.wPort); + kms_server->priority = dns_iterator->Data.SRV.wPriority; + kms_server->weight = dns_iterator->Data.SRV.wWeight; + + (*serverlist)[answers++] = kms_server; + } + + //sortSrvRecords(*serverlist, answers, NoSrvRecordPriority); + + DnsRecordListFree(receive_buffer, DnsFreeRecordList); + + return answers; +# undef MAX_DNS_NAME_SIZE +} +#endif // _WIN32 +#undef RECEIVE_BUFFER_SIZE +#endif // NO_DNS + + +/* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Modified by Hotbird64 for use with vlmcs. + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef DNS_PARSER_INTERNAL +#ifndef NO_DNS + +/* Import. */ + +#include +#include +#include + +#include "types.h" +#include "endian.h" +#include "ns_name.h" +#include "ns_parse.h" + +/* Macros. */ + +#define NS_GET16_VLMCSD(s, cp) do { \ + (s) = GET_UA16BE(cp); \ + (cp) += NS_INT16SZ; \ +} while (0) + +#define NS_GET32_VLMCSD(l, cp) do { \ + (l) = GET_UA32BE(cp); \ + (cp) += NS_INT32SZ; \ +} while (0) + +#define RETERR(err) do { errno = (err); return (-1); } while (0) + +/* Forward. */ + +static void setsection_vlmcsd(ns_msg_vlmcsd *msg, ns_sect_vlmcsd sect); + + +static int dn_skipname_vlmcsd(const unsigned char *s, const unsigned char *end) +{ + const unsigned char *p; + for (p=s; p=192) + {if (p+1 0; count--) { + int b, rdlength; + + b = dn_skipname_vlmcsd(ptr, eom); + if (b < 0) + RETERR(EMSGSIZE); + ptr += b/*Name*/ + NS_INT16SZ/*Type*/ + NS_INT16SZ/*Class*/; + if (section != ns_s_qd_vlmcsd) { + if (ptr + NS_INT32SZ + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + ptr += NS_INT32SZ/*TTL*/; + NS_GET16_VLMCSD(rdlength, ptr); + ptr += rdlength/*RData*/; + } + } + if (ptr > eom) + RETERR(EMSGSIZE); + return (ptr - optr); +} + +int +ns_initparse_vlmcsd(const uint8_t *msg, int msglen, ns_msg_vlmcsd *handle) { + const uint8_t *eom = msg + msglen; + int i; + + memset(handle, 0x5e, sizeof *handle); + handle->_msg = msg; + handle->_eom = eom; + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_id, msg); + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_flags, msg); + for (i = 0; i < ns_s_max_vlmcsd; i++) { + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_counts[i], msg); + } + for (i = 0; i < ns_s_max_vlmcsd; i++) + if (handle->_counts[i] == 0) + handle->_sections[i] = NULL; + else { + int b = ns_skiprr_vlmcsd(msg, eom, (ns_sect_vlmcsd)i, + handle->_counts[i]); + + if (b < 0) + return (-1); + handle->_sections[i] = msg; + msg += b; + } + if (msg > eom) + RETERR(EMSGSIZE); + handle->_eom = msg; + setsection_vlmcsd(handle, ns_s_max_vlmcsd); + return (0); +} + +int +ns_parserr_vlmcsd(ns_msg_vlmcsd *handle, ns_sect_vlmcsd section, int rrnum, ns_rr_vlmcsd *rr) { + int b; + + /* Make section right. */ + if (section >= ns_s_max_vlmcsd) + RETERR(ENODEV); + if (section != handle->_sect) + setsection_vlmcsd(handle, section); + + /* Make rrnum right. */ + if (rrnum == -1) + rrnum = handle->_rrnum; + if (rrnum < 0 || rrnum >= handle->_counts[(int)section]) + RETERR(ENODEV); + if (rrnum < handle->_rrnum) + setsection_vlmcsd(handle, section); + if (rrnum > handle->_rrnum) { + b = ns_skiprr_vlmcsd(handle->_msg_ptr, handle->_eom, section, + rrnum - handle->_rrnum); + + if (b < 0) + return (-1); + handle->_msg_ptr += b; + handle->_rrnum = rrnum; + } + + /* Do the parse. */ + b = ns_name_uncompress_vlmcsd(handle->_msg, handle->_eom, + handle->_msg_ptr, rr->name, NS_MAXDNAME); + if (b < 0) + return (-1); + handle->_msg_ptr += b; + if (handle->_msg_ptr + NS_INT16SZ + NS_INT16SZ > handle->_eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(rr->type, handle->_msg_ptr); + NS_GET16_VLMCSD(rr->rr_class, handle->_msg_ptr); + if (section == ns_s_qd_vlmcsd) { + rr->ttl = 0; + rr->rdlength = 0; + rr->rdata = NULL; + } else { + if (handle->_msg_ptr + NS_INT32SZ + NS_INT16SZ > handle->_eom) + RETERR(EMSGSIZE); + NS_GET32_VLMCSD(rr->ttl, handle->_msg_ptr); + NS_GET16_VLMCSD(rr->rdlength, handle->_msg_ptr); + if (handle->_msg_ptr + rr->rdlength > handle->_eom) + RETERR(EMSGSIZE); + rr->rdata = handle->_msg_ptr; + handle->_msg_ptr += rr->rdlength; + } + if (++handle->_rrnum > handle->_counts[(int)section]) + setsection_vlmcsd(handle, (ns_sect_vlmcsd)((int)section + 1)); + + /* All done. */ + return (0); +} + +/* Private. */ + +static void +setsection_vlmcsd(ns_msg_vlmcsd *msg, ns_sect_vlmcsd sect) { + msg->_sect = sect; + if (sect == ns_s_max_vlmcsd) { + msg->_rrnum = -1; + msg->_msg_ptr = NULL; + } else { + msg->_rrnum = 0; + msg->_msg_ptr = msg->_sections[(int)sect]; + } +} + +#endif // !NO_DNS +#endif // DNS_PARSER_INTERNAL +/* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Modified by Hotbird64 for use with vlmcs. + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef DNS_PARSER_INTERNAL +#ifndef NO_DNS + +#include +#include +#include +#include +#include +#include +#include + +#include "types.h" +#include "ns_name.h" + +#ifdef SPRINTF_CHAR +# define SPRINTF(x) strlen(sprintf/**/x) +#else +# define SPRINTF(x) ((size_t)sprintf x) +#endif + +#define NS_TYPE_ELT 0x40 /* EDNS0 extended label type */ +#define DNS_LABELTYPE_BITSTRING 0x41 + +#define NS_MAXCDNAME 255 +#define NS_CMPRSFLGS 0xc0 + +/* Data. */ + +static char digits[] = "0123456789"; + + +/* Forward. */ + +static int special_vlmcsd(int); +static int printable_vlmcsd(int); +static int labellen_vlmcsd(const uint8_t *); +static int decode_bitstring_vlmcsd(const char **, char *, const char *); + +/* + * ns_name_ntop(src, dst, dstsiz) + * Convert an encoded domain name to printable ascii as per RFC1035. + * return: + * Number of bytes written to buffer, or -1 (with errno set) + * notes: + * The root is returned as "." + * All other domains are returned in non absolute form + */ +static int +ns_name_ntop_vlmcsd(const uint8_t *src, char *dst, size_t dstsiz) +{ + const uint8_t *cp; + char *dn, *eom; + uint8_t c; + uint32_t n; + int l; + + cp = src; + dn = dst; + eom = dst + dstsiz; + + while ((n = *cp++) != 0) { + if ((n & NS_CMPRSFLGS) == NS_CMPRSFLGS) { + /* Some kind of compression pointer. */ + errno = EMSGSIZE; + return (-1); + } + if (dn != dst) { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '.'; + } + if ((l = labellen_vlmcsd(cp - 1)) < 0) { + errno = EMSGSIZE; /* XXX */ + return(-1); + } + if (dn + l >= eom) { + errno = EMSGSIZE; + return (-1); + } + if ((n & NS_CMPRSFLGS) == NS_TYPE_ELT) { + int m; + + if (n != DNS_LABELTYPE_BITSTRING) { + /* XXX: labellen should reject this case */ + errno = EINVAL; + return(-1); + } + if ((m = decode_bitstring_vlmcsd((const char **)&cp, dn, eom)) < 0) + { + errno = EMSGSIZE; + return(-1); + } + dn += m; + continue; + } + for ((void)NULL; l > 0; l--) { + c = *cp++; + if (special_vlmcsd(c)) { + if (dn + 1 >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\\'; + *dn++ = (char)c; + } else if (!printable_vlmcsd(c)) { + if (dn + 3 >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\\'; + *dn++ = digits[c / 100]; + *dn++ = digits[(c % 100) / 10]; + *dn++ = digits[c % 10]; + } else { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = (char)c; + } + } + } + if (dn == dst) { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '.'; + } + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\0'; + return (dn - dst); +} + +static int +ns_name_unpack_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + uint8_t *dst, size_t dstsiz) +{ + const uint8_t *srcp, *dstlim; + uint8_t *dstp; + int n, len, checked, l; + + len = -1; + checked = 0; + dstp = dst; + srcp = src; + dstlim = dst + dstsiz; + if (srcp < msg || srcp >= eom) { + errno = EMSGSIZE; + return (-1); + } + /* Fetch next label in domain name. */ + while ((n = *srcp++) != 0) { + /* Check for indirection. */ + switch (n & NS_CMPRSFLGS) { + case 0: + case NS_TYPE_ELT: + /* Limit checks. */ + if ((l = labellen_vlmcsd(srcp - 1)) < 0) { + errno = EMSGSIZE; + return(-1); + } + if (dstp + l + 1 >= dstlim || srcp + l >= eom) { + errno = EMSGSIZE; + return (-1); + } + checked += l + 1; + *dstp++ = n; + memcpy(dstp, srcp, l); + dstp += l; + srcp += l; + break; + + case NS_CMPRSFLGS: + if (srcp >= eom) { + errno = EMSGSIZE; + return (-1); + } + if (len < 0) + len = srcp - src + 1; + srcp = msg + (((n & 0x3f) << 8) | (*srcp & 0xff)); + if (srcp < msg || srcp >= eom) { /* Out of range. */ + errno = EMSGSIZE; + return (-1); + } + checked += 2; + /* + * Check for loops in the compressed name; + * if we've looked at the whole message, + * there must be a loop. + */ + if (checked >= eom - msg) { + errno = EMSGSIZE; + return (-1); + } + break; + + default: + errno = EMSGSIZE; + return (-1); /* flag error */ + } + } + *dstp = '\0'; + if (len < 0) + len = srcp - src; + return (len); +} + + +/* + * ns_name_uncompress_vlmcsd(msg, eom, src, dst, dstsiz) + * Expand compressed domain name to presentation format. + * return: + * Number of bytes read out of `src', or -1 (with errno set). + * note: + * Root domain returns as "." not "". + */ +int +ns_name_uncompress_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + char *dst, size_t dstsiz) +{ + uint8_t tmp[NS_MAXCDNAME]; + int n; + + if ((n = ns_name_unpack_vlmcsd(msg, eom, src, tmp, sizeof tmp)) == -1) + return (-1); + if (ns_name_ntop_vlmcsd(tmp, dst, dstsiz) == -1) + return (-1); + return (n); +} + +/* + * special(ch) + * Thinking in noninternationalized USASCII (per the DNS spec), + * is this characted special ("in need of quoting") ? + * return: + * boolean. + */ +static int +special_vlmcsd(int ch) { + switch (ch) { + case 0x22: /* '"' */ + case 0x2E: /* '.' */ + case 0x3B: /* ';' */ + case 0x5C: /* '\\' */ + case 0x28: /* '(' */ + case 0x29: /* ')' */ + /* Special modifiers in zone files. */ + case 0x40: /* '@' */ + case 0x24: /* '$' */ + return (1); + default: + return (0); + } +} + +/* + * printable(ch) + * Thinking in noninternationalized USASCII (per the DNS spec), + * is this character visible and not a space when printed ? + * return: + * boolean. + */ +static int +printable_vlmcsd(int ch) { + return (ch > 0x20 && ch < 0x7f); +} + +static int +decode_bitstring_vlmcsd(const char **cpp, char *dn, const char *eom) +{ + const char *cp = *cpp; + char *beg = dn, tc; + int b, blen, plen; + + if ((blen = (*cp & 0xff)) == 0) + blen = 256; + plen = (blen + 3) / 4; + plen += sizeof("\\[x/]") + (blen > 99 ? 3 : (blen > 9) ? 2 : 1); + if (dn + plen >= eom) + return(-1); + + cp++; + dn += SPRINTF((dn, "\\[x")); + for (b = blen; b > 7; b -= 8, cp++) + dn += SPRINTF((dn, "%02x", *cp & 0xff)); + if (b > 4) { + tc = *cp++; + dn += SPRINTF((dn, "%02x", tc & (0xff << (8 - b)))); + } else if (b > 0) { + tc = *cp++; + dn += SPRINTF((dn, "%1x", + ((tc >> 4) & 0x0f) & (0x0f << (4 - b)))); + } + dn += SPRINTF((dn, "/%d]", blen)); + + *cpp = cp; + return(dn - beg); +} + +static int +labellen_vlmcsd(const uint8_t *lp) +{ + int bitlen; + uint8_t l = *lp; + + if ((l & NS_CMPRSFLGS) == NS_CMPRSFLGS) { + /* should be avoided by the caller */ + return(-1); + } + + if ((l & NS_CMPRSFLGS) == NS_TYPE_ELT) { + if (l == DNS_LABELTYPE_BITSTRING) { + if ((bitlen = *(lp + 1)) == 0) + bitlen = 256; + return((bitlen + 7 ) / 8 + 1); + } + return(-1); /* unknwon ELT */ + } + return(l); +} + +#endif // !NO_DNS +#endif // DNS_PARSER_INTERNAL diff --git a/vlmcsd.7 b/vlmcsd.7 new file mode 100644 index 00000000..f92ae6aa --- /dev/null +++ b/vlmcsd.7 @@ -0,0 +1,137 @@ +.TH VLMCSD 7 "June 2014" "Hotbird64" "KMS Activation Manual" + +.SH NAME +vlmcsd\ \-\ a guide to KMS activation using vlmcsd + +.SH SYNOPSIS +.B vlmcsd +[ +.IR "options" " ] + +.SH DESCRIPTION +This manual describes the concepts of Microsoft KMS activation using \fBvlmcsd\fR. For detailed usage of \fBvlmcsd\fR see \fBvlmcsd\fR(8). + +.SS What is KMS? +KMS is a way to activate Microsoft products that was designed for medium and large businesses. In a standard SOHO environment you enter a product key during installation and then activate your product over the Internet. This is done by sending a request to a server at microsoft.com which then either grants or refuses activation. +.PP +By entering a special key called General Volume License Key (\fBGVLK\fR), a.k.a "KMS client key", the product no longer asks the Microsoft server for activation but a user-defined server (called the KMS server) which usually resides in a company's intranet. \fBvlmcsd\fR is an independent open source implementation of a KMS server that is available for everyone while Microsoft gives their KMS server only to corporations that signed a so called "Select contract". In addition \fBvlmcsd\fR never refuses activation while the Microsoft KMS server only activates the products the customer has paid for. +.PP +Product activation using \fBvlmcsd\fR is performed in three easy steps: +.IP 1) 3 +Run \fBvlmcsd\fR (or any other KMS emulator) on a computer in your network. This will be your KMS server. New users should simply run the program without any parameters. The defaults should fit the needs of most users. +.IP 2) 3 +Install your product and enter the GVLK when you are asked for a key +.IP 3) 3 +Configure your client (the machine where you installed your product) to use your KMS server. +.PP +However, when it comes to the details, some things turn out to be more difficult than you might think. +.PP +The most important thing to know is that KMS activation is not permanent. The computer remains activated for 180 days (30 or 45 days with consumer-only products). KMS activation however is not an evaluation license. You can repeat the activation anytime and as often as you like to extend activation to another 180 days. This normally happens automatically. For this to work, you have to ensure that a KMS server is always reachable for the clients on your network. +.PP +Beginning with Windows 8.1 the KMS server must be a different computer than the client. You cannot use \fBvlmcsd\fR on the same computer where you want to activate a product. If you have only one computer, you can run \fBvlmcsd\fR in a virtual machine. \fBvlmcsd\fR is also designed to run on "always-on devices", for example a router. The router becomes your KMS server then. + +.SS How to get a GVLK? +That is relatively simple. The GVLKs are published on Microsoft's Technet web site. +.PP +Windows: http://technet.microsoft.com/en-us/library/jj612867.aspx +.br +Office 2010: http://technet.microsoft.com/en-us/library/ee624355(v=office.14).aspx#section2_3 +.br +Office 2013: http://technet.microsoft.com/en-us/library/dn385360.aspx +.PP +These lists only include products that Microsoft sells to corporations via volume license contracts. For Windows there are inofficial GVLKs that work with consumer-only versions of Windows. Here is a list: +.PP +789NJ\-TQK6T\-6XTH8\-J39CJ\-J8D3P - Windows 8.1 Professional with Media Center +.br +M9Q9P\-WNJJT\-6PXPY\-DWX8H\-6XWKK - Windows 8.1 Core +.br +7B9N3\-D94CG\-YTVHR\-QBPX3\-RJP64 - Windows 8.1 Core N +.br +BB6NG\-PQ82V\-VRDPW\-8XVD2\-V8P66 - Windows 8.1 Core Single Language +.br +NCTT7\-2RGK8\-WMHRF\-RY7YQ\-JTXG3 - Windows 8.1 Core Country Specific +.br +GNBB8\-YVD74\-QJHX6\-27H4K\-8QHDG - Windows 8 Professional with Media Center +.br +BN3D2\-R7TKB\-3YPBD\-8DRP2\-27GG4 - Windows 8 Core +.br +8N2M2\-HWPGY\-7PGT9\-HGDD8\-GVGGY - Windows 8 Core N +.br +2WN2H\-YGCQR\-KFX6K\-CD6TF\-84YXQ - Windows 8 Core Single Language +.br +4K36P\-JN4VD\-GDC6V\-KDT89\-DYFKP - Windows 8 Core Country Specific +.PP +The above keys require activation renewal every 45 days (Win 8.1) or 30 days (Win 8). All GVLKs from the Microsoft Technet web site require renewal every 180 days. + +.SS What are SLMGR and OSPP and how to use them? +You will need these utilities later. So please continue reading this section. +.PP +These are two Visual Basic script utilities that are used to control Microsoft's Software Protection system. To use them open a Windows Command Prompt. slmgr.vbs is for Windows. ospp.vbs is for Office 2010 and 2013. These utilities are installed with Windows and Office and you don't need to download them. +.PP +slmgr.vbs resides in the system32 directory. So you just have to type "slmgr" in the Windows Command prompt to use it. To use ospp.vbs you'll have to change the current directory to your Office installation. This is usually something like "C:\eProgram\ Files\eMicrosoft\ Office\eOffice14". You may type "slmgr" or "cscript ospp.vbs" without parameters to see help for these commands but this produces some rather confusing output for newbies. + +.SS How to get the GVLK into the product? +Normally every product asks you to enter a key during installation. At this time simply enter the GVLK. If you skipped this step or entered some other key which later turned out to be non-working, you can use "slmgr\ /ipk\ \fIGVLK\fR" (Windows) or "cscript ospp.vbs\ /inpkey:\fIGVLK\fR" (Office) at any time. +.IP \fBExamples\fR +slmgr\ /ipk GCRJD\-8NW9H\-F2CDX\-CCM8D\-9D6T9 +.br +cscript ospp.vbs\ /inpkey:YC7DK\-G2NP3\-2QQC3\-J6H88\-GVGXT + +.SS Why doesn't Office accpet a GVLK? +You'll have to install a volume license (VL) version of Office. Office versions downloaded from MSDN and/or Technet are non-VL. + +.SS How to configure a client to use a KMS server? +After you have installed a GVLK you can set your product to use your KMS server. \fBvlmcsd\fR or another KMS server must already be running on your server machine. +.IP "\fBWindows\fR" 5 +.PP +Type "slmgr\ /skms\ \fIkms-server\fR[:\fItcp-port\fR]". Example: "slmgr\ /skms\ 192.168.1.17:1688" + +.IP "\fBOffice\fR" 5 +.IP 1) 3 +Type "cscript ospp.vbs\ /sethst:\fIkms-server\fR". Example "cscript ospp.vbs\ /sethst:192.168.1.17" +.IP 2) 3 +Type "cscript ospp.vbs\ /setprt:\fItcp-port\fR". Example: cscript ospp.vbs\ /setprt:1688 +.PP +\fItcp-port\fR is usually 1688 unless you instructed \fBvlmcsd\fR to use a different port which is rarely necessary. + +.SS How to activate my product? +If you have installed a product with GVLK and pointed it to working KMS server like \fBvlmcsd\fR, activation occurs automatically. This may take a while. +.IP "You may type" +slmgr\ /ato +.br +\-or\- +.br +cscript ospp.vbs\ /act +.PP +at any time to speed up that process. You may repeat these commands later to extend your activation for another 180 (45) days. + +.SS Does vlmcsd work correctly? +If something does not work, it may have the cause that \fRvlmcsd\fR does not work correctly although this is unlikely. You can test this with the KMS client \fBvlmcs\fR(1). First type "vlmcs" on the same machine where you started \fBvlmcsd\fR. If things are ok, you should see something like this: +.IP +Connecting to 127.0.0.1:1688 ... successful +.br +Sending\ activation\ request\ (KMS\ V4)\ 1\ of\ 1\ \-> 06401\-00206\-296\-206344\-03\-5179\-9600.0000\-3432013 +.PP +If anything goes wrong, you'll see an error message. Next try "vlmcs \fIkms-server\fR" from another machine where \fIkms-server\fR is the hostname or IP address of your KMS server. If that fails while it works locally, you'll most likely have to configure your firewall that it accepts incoming connections on TCP port 1688. + +.SS Is there an easier way than using OSPP and SLMGR? +Yes and no. KMS activation was designed for large corporations. Thus Microsoft designed KMS in a way that corporations can configure their network infrastructure to fully automate KMS activation. Since this involves DHCP and DNS, it is not that easy to accomplish that for home users. However, if you are using an open source router firmware like OpenWRT or DD-WRT, it is easy to customize DHCP and DNS. +.IP 1) 3 +Configure DHCP that it assigns a DNS domain name to your clients (if it doesn't already), e.g. my-home-net.local +.IP 2) 3 +Create zone my-home-net.local in your DNS server (if it doesn't exist already). +.IP 3) 3 +Add the following records to your DNS + +_vlmcs._tcp.my-home-net.local. 10800 IN SRV 100 100 kms1.my-home-net.local. +.br +kms1.my-home-net.local. 10800 IN A 192.168.1.17 + +Replace 192.168.1.17 with the IP address of your KMS server. If you don't like a cache time of 10800 seconds (3 hours), replace it with another number. +.PP +This causes that clients will find the KMS server automatically. + +.SH AUTHOR +This manual page was written by Hotbird64. +.SH SEE ALSO +\fBvlmcsd\fR(8), \fBvlmcs\fR(1) diff --git a/vlmcsd.7.dos.txt b/vlmcsd.7.dos.txt new file mode 100644 index 00000000..fb2efab8 --- /dev/null +++ b/vlmcsd.7.dos.txt @@ -0,0 +1,222 @@ +VLMCSD(7) KMS Activation Manual VLMCSD(7) + + + +NAME + vlmcsd - a guide to KMS activation using vlmcsd + + +SYNOPSIS + vlmcsd [ options ] + + +DESCRIPTION + This manual describes the concepts of Microsoft KMS activation using + vlmcsd. For detailed usage of vlmcsd see vlmcsd(8). + + + What is KMS? + KMS is a way to activate Microsoft products that was designed for + medium and large businesses. In a standard SOHO environment you enter a + product key during installation and then activate your product over the + Internet. This is done by sending a request to a server at micro‐ + soft.com which then either grants or refuses activation. + + By entering a special key called General Volume License Key (GVLK), + a.k.a "KMS client key", the product no longer asks the Microsoft server + for activation but a user-defined server (called the KMS server) which + usually resides in a company's intranet. vlmcsd is an independent open + source implementation of a KMS server that is available for everyone + while Microsoft gives their KMS server only to corporations that signed + a so called "Select contract". In addition vlmcsd never refuses activa‐ + tion while the Microsoft KMS server only activates the products the + customer has paid for. + + Product activation using vlmcsd is performed in three easy steps: + + 1) Run vlmcsd (or any other KMS emulator) on a computer in your net‐ + work. This will be your KMS server. New users should simply run the + program without any parameters. The defaults should fit the needs of + most users. + + 2) Install your product and enter the GVLK when you are asked for a key + + 3) Configure your client (the machine where you installed your product) + to use your KMS server. + + However, when it comes to the details, some things turn out to be more + difficult than you might think. + + The most important thing to know is that KMS activation is not perma‐ + nent. The computer remains activated for 180 days (30 or 45 days with + consumer-only products). KMS activation however is not an evaluation + license. You can repeat the activation anytime and as often as you like + to extend activation to another 180 days. This normally happens auto‐ + matically. For this to work, you have to ensure that a KMS server is + always reachable for the clients on your network. + + Beginning with Windows 8.1 the KMS server must be a different computer + than the client. You cannot use vlmcsd on the same computer where you + want to activate a product. If you have only one computer, you can run + vlmcsd in a virtual machine. vlmcsd is also designed to run on "always- + on devices", for example a router. The router becomes your KMS server + then. + + + How to get a GVLK? + That is relatively simple. The GVLKs are published on Microsoft's Tech‐ + net web site. + + Windows: http://technet.microsoft.com/en-us/library/jj612867.aspx + Office 2010: http://technet.microsoft.com/en- + us/library/ee624355(v=office.14).aspx#section2_3 + Office 2013: http://technet.microsoft.com/en-us/library/dn385360.aspx + + These lists only include products that Microsoft sells to corporations + via volume license contracts. For Windows there are inofficial GVLKs + that work with consumer-only versions of Windows. Here is a list: + + 789NJ-TQK6T-6XTH8-J39CJ-J8D3P - Windows 8.1 Professional with Media + Center + M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK - Windows 8.1 Core + 7B9N3-D94CG-YTVHR-QBPX3-RJP64 - Windows 8.1 Core N + BB6NG-PQ82V-VRDPW-8XVD2-V8P66 - Windows 8.1 Core Single Language + NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3 - Windows 8.1 Core Country Specific + GNBB8-YVD74-QJHX6-27H4K-8QHDG - Windows 8 Professional with Media Cen‐ + ter + BN3D2-R7TKB-3YPBD-8DRP2-27GG4 - Windows 8 Core + 8N2M2-HWPGY-7PGT9-HGDD8-GVGGY - Windows 8 Core N + 2WN2H-YGCQR-KFX6K-CD6TF-84YXQ - Windows 8 Core Single Language + 4K36P-JN4VD-GDC6V-KDT89-DYFKP - Windows 8 Core Country Specific + + The above keys require activation renewal every 45 days (Win 8.1) or 30 + days (Win 8). All GVLKs from the Microsoft Technet web site require + renewal every 180 days. + + + What are SLMGR and OSPP and how to use them? + You will need these utilities later. So please continue reading this + section. + + These are two Visual Basic script utilities that are used to control + Microsoft's Software Protection system. To use them open a Windows Com‐ + mand Prompt. slmgr.vbs is for Windows. ospp.vbs is for Office 2010 and + 2013. These utilities are installed with Windows and Office and you + don't need to download them. + + slmgr.vbs resides in the system32 directory. So you just have to type + "slmgr" in the Windows Command prompt to use it. To use ospp.vbs you'll + have to change the current directory to your Office installation. This + is usually something like "C:\Program Files\Microsoft Office\Office14". + You may type "slmgr" or "cscript ospp.vbs" without parameters to see + help for these commands but this produces some rather confusing output + for newbies. + + + How to get the GVLK into the product? + Normally every product asks you to enter a key during installation. At + this time simply enter the GVLK. If you skipped this step or entered + some other key which later turned out to be non-working, you can use + "slmgr /ipk GVLK" (Windows) or "cscript ospp.vbs /inpkey:GVLK" (Office) + at any time. + + Examples + slmgr /ipk GCRJD-8NW9H-F2CDX-CCM8D-9D6T9 + cscript ospp.vbs /inpkey:YC7DK-G2NP3-2QQC3-J6H88-GVGXT + + + Why doesn't Office accpet a GVLK? + You'll have to install a volume license (VL) version of Office. Office + versions downloaded from MSDN and/or Technet are non-VL. + + + How to configure a client to use a KMS server? + After you have installed a GVLK you can set your product to use your + KMS server. vlmcsd or another KMS server must already be running on + your server machine. + + Windows + + Type "slmgr /skms kms-server[:tcp-port]". Example: + "slmgr /skms 192.168.1.17:1688" + + + Office + + 1) Type "cscript ospp.vbs /sethst:kms-server". Example "cscript + ospp.vbs /sethst:192.168.1.17" + + 2) Type "cscript ospp.vbs /setprt:tcp-port". Example: cscript + ospp.vbs /setprt:1688 + + tcp-port is usually 1688 unless you instructed vlmcsd to use a differ‐ + ent port which is rarely necessary. + + + How to activate my product? + If you have installed a product with GVLK and pointed it to working KMS + server like vlmcsd, activation occurs automatically. This may take a + while. + + You may type + slmgr /ato + -or- + cscript ospp.vbs /act + + at any time to speed up that process. You may repeat these commands + later to extend your activation for another 180 (45) days. + + + Does vlmcsd work correctly? + If something does not work, it may have the cause that vlmcsd does not + work correctly although this is unlikely. You can test this with the + KMS client vlmcs(1). First type "vlmcs" on the same machine where you + started vlmcsd. If things are ok, you should see something like this: + + Connecting to 127.0.0.1:1688 ... successful + Sending activation request (KMS V4) 1 of 1 -> + 06401-00206-296-206344-03-5179-9600.0000-3432013 + + If anything goes wrong, you'll see an error message. Next try "vlmcs + kms-server" from another machine where kms-server is the hostname or IP + address of your KMS server. If that fails while it works locally, + you'll most likely have to configure your firewall that it accepts + incoming connections on TCP port 1688. + + + Is there an easier way than using OSPP and SLMGR? + Yes and no. KMS activation was designed for large corporations. Thus + Microsoft designed KMS in a way that corporations can configure their + network infrastructure to fully automate KMS activation. Since this + involves DHCP and DNS, it is not that easy to accomplish that for home + users. However, if you are using an open source router firmware like + OpenWRT or DD-WRT, it is easy to customize DHCP and DNS. + + 1) Configure DHCP that it assigns a DNS domain name to your clients (if + it doesn't already), e.g. my-home-net.local + + 2) Create zone my-home-net.local in your DNS server (if it doesn't + exist already). + + 3) Add the following records to your DNS + + _vlmcs._tcp.my-home-net.local. 10800 IN SRV 100 100 kms1.my-home- + net.local. + kms1.my-home-net.local. 10800 IN A 192.168.1.17 + + Replace 192.168.1.17 with the IP address of your KMS server. If you + don't like a cache time of 10800 seconds (3 hours), replace it with + another number. + + This causes that clients will find the KMS server automatically. + + +AUTHOR + This manual page was written by Hotbird64. + +SEE ALSO + vlmcsd(8), vlmcs(1) + + + +Hotbird64 June 2014 VLMCSD(7) diff --git a/vlmcsd.7.html b/vlmcsd.7.html new file mode 100644 index 00000000..5025e77a --- /dev/null +++ b/vlmcsd.7.html @@ -0,0 +1,413 @@ + + + + + + + + + +VLMCSD + + + + +

VLMCSD

+ +NAME
+SYNOPSIS
+DESCRIPTION
+AUTHOR
+SEE ALSO
+ +
+ + +

NAME + +

+ + + +

vlmcsd − a +guide to KMS activation using vlmcsd

+ +

SYNOPSIS + +

+ + +

vlmcsd [ +options ]

+ +

DESCRIPTION + +

+ + +

This manual +describes the concepts of Microsoft KMS activation using +vlmcsd. For detailed usage of vlmcsd see +vlmcsd(8).

+ +

What is +KMS?
+KMS is a way to activate Microsoft products that was +designed for medium and large businesses. In a standard SOHO +environment you enter a product key during installation and +then activate your product over the Internet. This is done +by sending a request to a server at microsoft.com which then +either grants or refuses activation.

+ +

By entering a +special key called General Volume License Key (GVLK), +a.k.a "KMS client key", the product no longer asks +the Microsoft server for activation but a user-defined +server (called the KMS server) which usually resides in a +company’s intranet. vlmcsd is an independent +open source implementation of a KMS server that is available +for everyone while Microsoft gives their KMS server only to +corporations that signed a so called "Select +contract". In addition vlmcsd never refuses +activation while the Microsoft KMS server only activates the +products the customer has paid for.

+ +

Product +activation using vlmcsd is performed in three easy +steps:

+ + + + + + + + + + + + + + + + + +
+ + +

1)

+ + +

Run vlmcsd (or any other KMS emulator) on a +computer in your network. This will be your KMS server. New +users should simply run the program without any parameters. +The defaults should fit the needs of most users.

+ + +

2)

+ + +

Install your product and enter the GVLK when you are +asked for a key

+ + +

3)

+ + +

Configure your client (the machine where you installed +your product) to use your KMS server.

+ +

However, when +it comes to the details, some things turn out to be more +difficult than you might think.

+ +

The most +important thing to know is that KMS activation is not +permanent. The computer remains activated for 180 days (30 +or 45 days with consumer-only products). KMS activation +however is not an evaluation license. You can repeat the +activation anytime and as often as you like to extend +activation to another 180 days. This normally happens +automatically. For this to work, you have to ensure that a +KMS server is always reachable for the clients on your +network.

+ +

Beginning with +Windows 8.1 the KMS server must be a different computer than +the client. You cannot use vlmcsd on the same +computer where you want to activate a product. If you have +only one computer, you can run vlmcsd in a virtual +machine. vlmcsd is also designed to run on +"always-on devices", for example a router. The +router becomes your KMS server then.

+ +

How to get a +GVLK?
+That is relatively simple. The GVLKs are published on +Microsoft’s Technet web site.

+ +

Windows: +http://technet.microsoft.com/en-us/library/jj612867.aspx +
+Office 2010: +http://technet.microsoft.com/en-us/library/ee624355(v=office.14).aspx#section2_3 +
+Office 2013: +http://technet.microsoft.com/en-us/library/dn385360.aspx

+ +

These lists +only include products that Microsoft sells to corporations +via volume license contracts. For Windows there are +inofficial GVLKs that work with consumer-only versions of +Windows. Here is a list:

+ + +

789NJ−TQK6T−6XTH8−J39CJ−J8D3P +- Windows 8.1 Professional with Media Center
+M9Q9P−WNJJT−6PXPY−DWX8H−6XWKK - +Windows 8.1 Core
+7B9N3−D94CG−YTVHR−QBPX3−RJP64 - +Windows 8.1 Core N
+BB6NG−PQ82V−VRDPW−8XVD2−V8P66 - +Windows 8.1 Core Single Language
+NCTT7−2RGK8−WMHRF−RY7YQ−JTXG3 - +Windows 8.1 Core Country Specific
+GNBB8−YVD74−QJHX6−27H4K−8QHDG - +Windows 8 Professional with Media Center
+BN3D2−R7TKB−3YPBD−8DRP2−27GG4 - +Windows 8 Core
+8N2M2−HWPGY−7PGT9−HGDD8−GVGGY - +Windows 8 Core N
+2WN2H−YGCQR−KFX6K−CD6TF−84YXQ - +Windows 8 Core Single Language
+4K36P−JN4VD−GDC6V−KDT89−DYFKP - +Windows 8 Core Country Specific

+ +

The above keys +require activation renewal every 45 days (Win 8.1) or 30 +days (Win 8). All GVLKs from the Microsoft Technet web site +require renewal every 180 days.

+ +

What are +SLMGR and OSPP and how to use them?
+You will need these utilities later. So please continue +reading this section.

+ +

These are two +Visual Basic script utilities that are used to control +Microsoft’s Software Protection system. To use them +open a Windows Command Prompt. slmgr.vbs is for Windows. +ospp.vbs is for Office 2010 and 2013. These utilities are +installed with Windows and Office and you don’t need +to download them.

+ +

slmgr.vbs +resides in the system32 directory. So you just have to type +"slmgr" in the Windows Command prompt to use it. +To use ospp.vbs you’ll have to change the current +directory to your Office installation. This is usually +something like +"C:\Program Files\Microsoft Office\Office14". +You may type "slmgr" or "cscript +ospp.vbs" without parameters to see help for these +commands but this produces some rather confusing output for +newbies.

+ +

How to get +the GVLK into the product?
+Normally every product asks you to enter a key during +installation. At this time simply enter the GVLK. If you +skipped this step or entered some other key which later +turned out to be non-working, you can use +"slmgr /ipk GVLK" (Windows) or +"cscript ospp.vbs /inpkey:GVLK" +(Office) at any time.
+Examples

+ +

slmgr /ipk +GCRJD−8NW9H−F2CDX−CCM8D−9D6T9
+cscript +ospp.vbs /inpkey:YC7DK−G2NP3−2QQC3−J6H88−GVGXT

+ +

Why +doesn’t Office accpet a GVLK?
+You’ll have to install a volume license (VL) version +of Office. Office versions downloaded from MSDN and/or +Technet are non-VL.

+ +

How to +configure a client to use a KMS server?
+After you have installed a GVLK you can set your product to +use your KMS server. vlmcsd or another KMS server +must already be running on your server machine.
+Windows

+ +

Type +"slmgr /skms kms-server[:tcp-port]". +Example: "slmgr /skms 192.168.1.17:1688" +
+Office

+ + + + + + + + + + + + +
+ + +

1)

+ + +

Type "cscript +ospp.vbs /sethst:kms-server". Example +"cscript ospp.vbs /sethst:192.168.1.17"

+ + +

2)

+ + +

Type "cscript +ospp.vbs /setprt:tcp-port". Example: +cscript ospp.vbs /setprt:1688

+ + +

tcp-port +is usually 1688 unless you instructed vlmcsd to use a +different port which is rarely necessary.

+ +

How to +activate my product?
+If you have installed a product with GVLK and pointed it to +working KMS server like vlmcsd, activation occurs +automatically. This may take a while.
+You may type

+ +

slmgr /ato
+−or−
+cscript ospp.vbs /act

+ +

at any time to +speed up that process. You may repeat these commands later +to extend your activation for another 180 (45) days.

+ +

Does vlmcsd +work correctly?
+If something does not work, it may have the cause that +vlmcsd does not work correctly although this is unlikely. +You can test this with the KMS client vlmcs(1). First +type "vlmcs" on the same machine where you started +vlmcsd. If things are ok, you should see something +like this:

+ +

Connecting to +127.0.0.1:1688 ... successful
+ +Sending activation request (KMS V4) 1 of 1 −> +06401−00206−296−206344−03−5179−9600.0000−3432013

+ +

If anything +goes wrong, you’ll see an error message. Next try +"vlmcs kms-server" from another machine +where kms-server is the hostname or IP address of +your KMS server. If that fails while it works locally, +you’ll most likely have to configure your firewall +that it accepts incoming connections on TCP port 1688.

+ +

Is there an +easier way than using OSPP and SLMGR?
+Yes and no. KMS activation was designed for large +corporations. Thus Microsoft designed KMS in a way that +corporations can configure their network infrastructure to +fully automate KMS activation. Since this involves DHCP and +DNS, it is not that easy to accomplish that for home users. +However, if you are using an open source router firmware +like OpenWRT or DD-WRT, it is easy to customize DHCP and +DNS.

+ + + + + + + + + + + + + + + + + +
+ + +

1)

+ + +

Configure DHCP that it assigns a DNS domain name to your +clients (if it doesn’t already), e.g. +my-home-net.local

+ + +

2)

+ + +

Create zone my-home-net.local in your DNS server (if it +doesn’t exist already).

+ + +

3)

+ + +

Add the following records to your DNS

+ + +

_vlmcs._tcp.my-home-net.local. +10800 IN SRV 100 100 kms1.my-home-net.local.
+kms1.my-home-net.local. 10800 IN A 192.168.1.17

+ +

Replace +192.168.1.17 with the IP address of your KMS server. If you +don’t like a cache time of 10800 seconds (3 hours), +replace it with another number.

+ +

This causes +that clients will find the KMS server automatically.

+ +

AUTHOR + +

+ + +

This manual +page was written by Hotbird64.

+ +

SEE ALSO + +

+ + + +

vlmcsd(8), +vlmcs(1)

+
+ + diff --git a/vlmcsd.7.pdf b/vlmcsd.7.pdf new file mode 100644 index 00000000..1a32b665 Binary files /dev/null and b/vlmcsd.7.pdf differ diff --git a/vlmcsd.7.unix.txt b/vlmcsd.7.unix.txt new file mode 100644 index 00000000..4b28ad8c --- /dev/null +++ b/vlmcsd.7.unix.txt @@ -0,0 +1,222 @@ +VLMCSD(7) KMS Activation Manual VLMCSD(7) + + + +NAME + vlmcsd - a guide to KMS activation using vlmcsd + + +SYNOPSIS + vlmcsd [ options ] + + +DESCRIPTION + This manual describes the concepts of Microsoft KMS activation using + vlmcsd. For detailed usage of vlmcsd see vlmcsd(8). + + + What is KMS? + KMS is a way to activate Microsoft products that was designed for + medium and large businesses. In a standard SOHO environment you enter a + product key during installation and then activate your product over the + Internet. This is done by sending a request to a server at micro‐ + soft.com which then either grants or refuses activation. + + By entering a special key called General Volume License Key (GVLK), + a.k.a "KMS client key", the product no longer asks the Microsoft server + for activation but a user-defined server (called the KMS server) which + usually resides in a company's intranet. vlmcsd is an independent open + source implementation of a KMS server that is available for everyone + while Microsoft gives their KMS server only to corporations that signed + a so called "Select contract". In addition vlmcsd never refuses activa‐ + tion while the Microsoft KMS server only activates the products the + customer has paid for. + + Product activation using vlmcsd is performed in three easy steps: + + 1) Run vlmcsd (or any other KMS emulator) on a computer in your net‐ + work. This will be your KMS server. New users should simply run the + program without any parameters. The defaults should fit the needs of + most users. + + 2) Install your product and enter the GVLK when you are asked for a key + + 3) Configure your client (the machine where you installed your product) + to use your KMS server. + + However, when it comes to the details, some things turn out to be more + difficult than you might think. + + The most important thing to know is that KMS activation is not perma‐ + nent. The computer remains activated for 180 days (30 or 45 days with + consumer-only products). KMS activation however is not an evaluation + license. You can repeat the activation anytime and as often as you like + to extend activation to another 180 days. This normally happens auto‐ + matically. For this to work, you have to ensure that a KMS server is + always reachable for the clients on your network. + + Beginning with Windows 8.1 the KMS server must be a different computer + than the client. You cannot use vlmcsd on the same computer where you + want to activate a product. If you have only one computer, you can run + vlmcsd in a virtual machine. vlmcsd is also designed to run on "always- + on devices", for example a router. The router becomes your KMS server + then. + + + How to get a GVLK? + That is relatively simple. The GVLKs are published on Microsoft's Tech‐ + net web site. + + Windows: http://technet.microsoft.com/en-us/library/jj612867.aspx + Office 2010: http://technet.microsoft.com/en- + us/library/ee624355(v=office.14).aspx#section2_3 + Office 2013: http://technet.microsoft.com/en-us/library/dn385360.aspx + + These lists only include products that Microsoft sells to corporations + via volume license contracts. For Windows there are inofficial GVLKs + that work with consumer-only versions of Windows. Here is a list: + + 789NJ-TQK6T-6XTH8-J39CJ-J8D3P - Windows 8.1 Professional with Media + Center + M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK - Windows 8.1 Core + 7B9N3-D94CG-YTVHR-QBPX3-RJP64 - Windows 8.1 Core N + BB6NG-PQ82V-VRDPW-8XVD2-V8P66 - Windows 8.1 Core Single Language + NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3 - Windows 8.1 Core Country Specific + GNBB8-YVD74-QJHX6-27H4K-8QHDG - Windows 8 Professional with Media Cen‐ + ter + BN3D2-R7TKB-3YPBD-8DRP2-27GG4 - Windows 8 Core + 8N2M2-HWPGY-7PGT9-HGDD8-GVGGY - Windows 8 Core N + 2WN2H-YGCQR-KFX6K-CD6TF-84YXQ - Windows 8 Core Single Language + 4K36P-JN4VD-GDC6V-KDT89-DYFKP - Windows 8 Core Country Specific + + The above keys require activation renewal every 45 days (Win 8.1) or 30 + days (Win 8). All GVLKs from the Microsoft Technet web site require + renewal every 180 days. + + + What are SLMGR and OSPP and how to use them? + You will need these utilities later. So please continue reading this + section. + + These are two Visual Basic script utilities that are used to control + Microsoft's Software Protection system. To use them open a Windows Com‐ + mand Prompt. slmgr.vbs is for Windows. ospp.vbs is for Office 2010 and + 2013. These utilities are installed with Windows and Office and you + don't need to download them. + + slmgr.vbs resides in the system32 directory. So you just have to type + "slmgr" in the Windows Command prompt to use it. To use ospp.vbs you'll + have to change the current directory to your Office installation. This + is usually something like "C:\Program Files\Microsoft Office\Office14". + You may type "slmgr" or "cscript ospp.vbs" without parameters to see + help for these commands but this produces some rather confusing output + for newbies. + + + How to get the GVLK into the product? + Normally every product asks you to enter a key during installation. At + this time simply enter the GVLK. If you skipped this step or entered + some other key which later turned out to be non-working, you can use + "slmgr /ipk GVLK" (Windows) or "cscript ospp.vbs /inpkey:GVLK" (Office) + at any time. + + Examples + slmgr /ipk GCRJD-8NW9H-F2CDX-CCM8D-9D6T9 + cscript ospp.vbs /inpkey:YC7DK-G2NP3-2QQC3-J6H88-GVGXT + + + Why doesn't Office accpet a GVLK? + You'll have to install a volume license (VL) version of Office. Office + versions downloaded from MSDN and/or Technet are non-VL. + + + How to configure a client to use a KMS server? + After you have installed a GVLK you can set your product to use your + KMS server. vlmcsd or another KMS server must already be running on + your server machine. + + Windows + + Type "slmgr /skms kms-server[:tcp-port]". Example: + "slmgr /skms 192.168.1.17:1688" + + + Office + + 1) Type "cscript ospp.vbs /sethst:kms-server". Example "cscript + ospp.vbs /sethst:192.168.1.17" + + 2) Type "cscript ospp.vbs /setprt:tcp-port". Example: cscript + ospp.vbs /setprt:1688 + + tcp-port is usually 1688 unless you instructed vlmcsd to use a differ‐ + ent port which is rarely necessary. + + + How to activate my product? + If you have installed a product with GVLK and pointed it to working KMS + server like vlmcsd, activation occurs automatically. This may take a + while. + + You may type + slmgr /ato + -or- + cscript ospp.vbs /act + + at any time to speed up that process. You may repeat these commands + later to extend your activation for another 180 (45) days. + + + Does vlmcsd work correctly? + If something does not work, it may have the cause that vlmcsd does not + work correctly although this is unlikely. You can test this with the + KMS client vlmcs(1). First type "vlmcs" on the same machine where you + started vlmcsd. If things are ok, you should see something like this: + + Connecting to 127.0.0.1:1688 ... successful + Sending activation request (KMS V4) 1 of 1 -> + 06401-00206-296-206344-03-5179-9600.0000-3432013 + + If anything goes wrong, you'll see an error message. Next try "vlmcs + kms-server" from another machine where kms-server is the hostname or IP + address of your KMS server. If that fails while it works locally, + you'll most likely have to configure your firewall that it accepts + incoming connections on TCP port 1688. + + + Is there an easier way than using OSPP and SLMGR? + Yes and no. KMS activation was designed for large corporations. Thus + Microsoft designed KMS in a way that corporations can configure their + network infrastructure to fully automate KMS activation. Since this + involves DHCP and DNS, it is not that easy to accomplish that for home + users. However, if you are using an open source router firmware like + OpenWRT or DD-WRT, it is easy to customize DHCP and DNS. + + 1) Configure DHCP that it assigns a DNS domain name to your clients (if + it doesn't already), e.g. my-home-net.local + + 2) Create zone my-home-net.local in your DNS server (if it doesn't + exist already). + + 3) Add the following records to your DNS + + _vlmcs._tcp.my-home-net.local. 10800 IN SRV 100 100 kms1.my-home- + net.local. + kms1.my-home-net.local. 10800 IN A 192.168.1.17 + + Replace 192.168.1.17 with the IP address of your KMS server. If you + don't like a cache time of 10800 seconds (3 hours), replace it with + another number. + + This causes that clients will find the KMS server automatically. + + +AUTHOR + This manual page was written by Hotbird64. + +SEE ALSO + vlmcsd(8), vlmcs(1) + + + +Hotbird64 June 2014 VLMCSD(7) diff --git a/vlmcsd.8 b/vlmcsd.8 new file mode 100644 index 00000000..c3874f1b --- /dev/null +++ b/vlmcsd.8 @@ -0,0 +1,256 @@ +.mso www.tmac +.TH VLMCSD 8 "July 2015" "Hotbird64" "KMS Activation Manual" +.LO 8 + +.SH NAME +vlmcsd \- a fully Microsoft compatible KMS server + +.SH SYNOPSIS +.B vlmcsd +[ +.IR "options" " ] + +.SH DESCRIPTION +\fBvlmcsd\fR is a fully Microsoft compatible KMS server that provides product activation services to clients. It is meant as a drop-in replacement for a Microsoft KMS server (Windows computer with KMS key entered). It currently supports KMS protocol versions 4, 5 and 6. +.PP +\fBvlmcsd\fR is designed to run on POSIX compatible operating systens. It only requires a basic C library with a BSD-style sockets API and either \fBfork\fR(2) or \fBpthreads\fR(7). That allows it to run on most embedded systems like routers, NASes, mobile phones, tablets, TVs, settop boxes, etc. Some efforts have been made that it also runs on Windows. +.PP +Although \fBvlmcsd\fR does neither require an activation key nor a payment to anyone, it is not meant to run illegal copies of Windows. Its purpose is to ensure that owners of legal copies can use their software without restrictions, e.g. if you buy a new computer or motherboard and your key will be refused activation from Microsoft servers due to hardware changes. +.PP +\fBvlmcsd\fR may be started via an internet superserver like \fBinetd\fR(8) or \fBxinetd\fR(8) as well as an advanced init system like \fBsystemd\fR(8) or \fBlaunchd\fR(8) using socket based activation. If \fBvlmcsd\fR detects that \fBstdin\fR(3) is a socket, it assumes that there is already a connected client on stdin that wants to be activated. All options that control setting up listening sockets will be ignored when in inetd mode. + +.SH OPTIONS +Since vlmcsd can be configured at compile time, some options may not be available on your system. +.PP +All options that do no require an argument may be combined with a single dash, for instance "vlmcsd -D -e" is identical to "vlmcsd -De". For all options that require an argument a space between the option and the option argument is optional. Thus "vlmcsd -r 2" and "vlmcsd -r2" are identical too. + +.IP "\fB-h\fR or \fB-?\fR" +Displays help. + +.IP "\fB-L\fR \fIipaddress\fR[:\fIport\fR]" +Instructs vlmcsd to listen on \fIipaddress\fR with optional \fIport\fR (default 1688). You can use this option more than once. If you do not specify \fB-L\fR at least once, IP addresses 0.0.0.0 (IPv4) and :: (IPv6) are used. If the IP address contains colons (IPv6) you must enclose the IP address in brackets if you specify the optional port, e.g. [2001:db8::dead:beef]:1688. +.PP +.IP +If no port is specified, vlmcsd uses the default port according to a preceding \fB-P\fR option. If you specify a port, it can be a number (1-65535) or a name (usually found in /etc/services if not provided via LDAP, NIS+ or another name service). +.PP +.IP +If you specify a link local IPv6 address (fe80::/10, usually starting with fe80::), it must be followed by a percent sign (%) and a scope id (=network interface name or number) on most unixoid OSses including Linux, Android, MacOS X and iOS, e.g. fe80::1234:56ff:fe78:9abc\fB%eth0\fR or [fe80::1234:56ff:fe78:9abc\fB%2\fR]:1688. Windows (including cygwin) does not require a scope id unless the same link local address is used on more than one network interface. Windows does not accept a name and the scope id must be a number. + +.IP "\fB-P\fR \fIport" +Use TCP \fIport\fR for all subsequent \fB-L\fR statements that do not include an optional port. If you use \fB-P\fR and \fB-L\fR, \fB-P\fR must be specified before \fB-L\fR. + +.IP "\fB-4\fR and \fB-6\fR" +Used to control the use of IPv4 and IPv4 if you did not use -L. If you specify both \fB-4\fR and \fB-6\fR or none, vlmcsd uses both protocols. If you specify only one, that protocol will be used only. \fBThese options are deprecated and will be removed.\fR + +.IP "\fB-I\fR" +This option is deprecated and does nothing. It is provided for compatibility with svn681 and earlier versions only. It will be removed in a future release. + +.IP "\fB-t\fR \fIseconds\fR" +Timeout the TCP connection with the client after \fIseconds\fR seconds. After sending an activation request. RPC keeps the TCP connection for a while. The default is 30 seconds. You may specify a shorter period to free ressources on your device faster. This is useful for devices with limited main memory or if you used \fB-m\fR to limit the concurrent clients that may request activation. Microsoft RPC clients disconnect after 30 seconds by default. Setting \fIseconds\fR to a greater value does not make much sense. + +.IP "\fB-m\fR \fIconcurrent-clients\fR" +Limit the number of clients that will be handled concurrently. This is useful for devices with limited ressources or if you are experiencing DoS attacks that spawn thousands of threads or forked processes. If additional clients connect to vlmcsd, they need to wait until another client disconnects. If you set \fIconcurrent-clients\fR to a small value ( <10 ), you should also select a reasonable timeout of 2 or 3 seconds with \fB-t\fR. The default is no limit. + +.IP "\fB-d\fR" +Disconnect each client after processing one activation request. This is a direct violation of DCE RPC but may help if you receive malicous fake RPC requests that block your threads or forked processes. Some other KMS emulators (e.g. py-kms) behave this way. + +.IP "\fB-k\fR" +Do not disconnect clients after processing an activation request. This selects the default behavior. \fB-k\fR is useful only if you used an ini file (see \fBvlmcsd.ini\fR(5) and \fB-i\fR). If the ini file contains the line "DisconnectClientsImmediately = true", you can use this switch to restore the default behavior. + +.IP "\fB-N0\fR and \fB-N1\fR +Disables (\fB-N0\fR) or enables (\fB-N1\fR) the use of the NDR64 transfer syntax in the RPC protocol. Unlike Microsoft vlmcsd supports NDR64 on 32-bit operating systems. Microsoft introduced NDR64 in Windows Vista but their KMS servers started using it with Windows 8. Thus if you choose random ePIDs, vlmcsd will select ePIDs with build numbers 9200 and 9600 if you enable NDR64 and build numbers 6002 and 7601 if you disable NDR64. The default is to enable NDR64. + +.IP "\fB-B0\fR and \fB-B1\fR" +Disables (\fB-B0\fR) or enables (\fB-B1\fR) bind time feature negotiation (BTFN) in the RPC protocol. All Windows operating systems starting with Vista support BTFN and try to negotiate it when initiating an RPC connection. Thus consider turning it off as a debug / troubleshooting feature only. Some older firewalls that selectively block or redirect RPC traffic may get confused when they detect NDR64 or BTFN. + +.IP "\fB-l\fR \fIfilename\fR +Use \fIfilename\fR as a log file. The log file records all activations with IP address, Windows workstation name (no reverse DNS lookup), activated product, KMS protocol, time and date. If you do not specify a log file, no log is created. For a live view of the log file +type tail -f \fIfile\fR. +.PP +.IP +If you use the special \fIfilename\fR "syslog", vlmcsd uses \fBsyslog\fR(3) for logging. If your system has no syslog service (/dev/log) installed, logging output will go to /dev/console. Syslog logging is not available in the native Windows version. The Cygwin version does support syslog logging. + +.IP "\fB-D\fR" +Normally vlmcsd daemonizes and runs in background (except the native Windows version). If \fB-D\fR is specified, vlmcsd does not daemonize and runs in foreground. This is useful for testing and allows you to simply press to exit vlmcsd. +.PP +.IP +The native Windows version never daemonizes and always behaves as if \fB-D\fR had been specified. You may want to install vlmcsd as a service instead. See \fB-s\fR. + +.IP "\fB-e\fR" +If specified, vlmcsd ignores \fB-l\fR and writes all logging output to \fBstdout\fR(3). This is mainly useful for testing and debugging and often combined with \fB-D\fR. + +.IP "\fB-f\fR" +This flag combines \fB-D\fR and \fB-e\fR. So typing "vlmcsd -f" is identical to "vlmcsd -De". The purpose of \fB-f\fR is to provide compatibility with previous versions of vlmcsd. \fBThis option is deprecated and will be removed.\fR + +.IP "\fB-v\fR" +Use verbose logging. Logs every parameter of the base request and the base response. It also logs the HWID of the KMS server if KMS protocol version 6 is used. This option is mainly for debugging purposes. It only has an effect if some form of logging is used. Thus \fB-v\fR does not make sense if not used with \fB-l\fR, \fB-e\fR or \fB-f\fR. + +.IP "\fB-q\fR" +Do not use verbose logging. This is actually the default behavior. It only makes sense if you use vlmcsd with an ini file (see \fB-i\fR and \fBvlmcsd.ini\fR(5)). If the ini file contains the line "LogVerbose = true" you can use \fB-q\fR to restore the default behavior. + +.IP "\fB-p\fR \fIfilename\fR" +Create pid file \fIfilename\fR. This has nothing to do with KMS ePIDs. A pid file is a file where vlmcsd writes its own process id. This is used by standard init scripts (typically found in /etc/init.d). The default is not to write a pid file. + +.IP "\fB-u\fR \fIuser\fR and \fB-g\fR \fIgroup\fR" +Causes vlmcsd to run in the specified \fIuser\fR and \fIgroup\fR security context. The main purpose for this is to drop root privileges after it has been started from the root account. To use this feature from cygwin you must run cyglsa-config and the account from which vlmcsd is started must have the rights "Act as part of the operating system" and "Replace a process +level token". The native Windows version does not support these options. +.PP +.IP +The actual security context switch is performed after the TCP sockets have been created. This allows you to use privileged ports (< 1024) when you start vlmcsd from the root account. +.PP +.IP +However if you use an ini, pid or log file, you must ensure that the unprivileged user has access to these files. You can always log to \fBsyslog\fR(3) from an unprivileged account on most platforms (see \fB-l\fR). + +.IP "\fB-w\fR \fIePID\fR" +Use \fIePID\fR as Windows ePID. If specified, \fB-r\fR is disregarded for Windows. + +.IP "\fB-0\fR \fIePID\fR" +Use \fIePID\fR as Office 2010 ePID (including Project and Visio). If specified, \fB-r\fR is disregarded for Office 2010. + +.IP "\fB-3\fR \fIePID\fR" +Use \fIePID\fR as Office 2013 ePID (including Project and Visio). If specified, \fB-r\fR is disregarded for Office 2013. + +.IP "\fB-H\fR \fIHwId\fR" +Use \fIHwId\fR for all products. All HWIDs in the ini file (see \fB-i\fR) will not be used. In an ini file you can specify a seperate HWID for each \fIapplication-guid\fR. This is not possible when entering a HWID from the command line. + +\fIHwId\fR must be specified as 16 hex digits that are interpreted as a series of 8 bytes (big endian). Any character that is not a hex digit will be ignored. This is for better readability. The following commands are identical: + +vlmcsd -H 0123456789ABCDEF +.br +vlmcsd -H 01:23:45:67:89:ab:cd:ef +.br +vlmcsd -H "01 23 45 67 89 AB CD EF" + +.IP "\fB-i\fR \fIfilename\fR" +Use configuration file (aka ini file) \fIfilename\fR. Most configuration parameters can be set either via the command line or an ini file. The command line always has precedence over configuration items in the ini file. See \fBvlmcsd.ini\fR(5) for the format of the configuration file. + +If vlmcsd has been compiled to use a default configuration file (often /etc/vlmcsd.ini), you may use \fB-i-\fR to ignore the default configuration file. + +.IP "\fB-r0\fR, \fB-r1\fR (default) and \fB-r2\fR" +These options determine how ePIDs are generated if + +- you did not sprecify an ePID in the command line and +.br +- you haven't used \fB-i\fR or +.br +- the file specified by \fB-i\fR cannot be opened or +.br +- the file specified by \fB-i\fR does not contain the \fIapplication-guid\fR for the KMS request + +\fB-r0\fR means there are no random ePIDs. vlmcsd simply issues default ePIDs that are built into the binary at compile time. \fBPro:\fR behaves like real KMS server that also always issues the same ePID. \fBCon\fR: Microsoft may start blacklisting again and the default ePID may not work any longer. + +\fB-r1\fR instructs vlmcsd to generate random ePIDs when the program starts or receives a SIGHUP signal and uses these ePIDs until it is stopped or receives another SIGHUP. Most other KMS emulators generate a new ePID on every KMS request. This is easily detectable. Microsoft could just modify sppsvc.exe in a way that it always sends two identical KMS requests in two RPC requests but over the same TCP connection. If both KMS responses contain the different ePIDs, the KMS server is not genuine. \fB-r1\fR is the default mode. \fB-r1\fR also ensures that all three ePIDs (Windows, Office 2010 and Office 2013) use the same OS build number and LCID (language id). + +If vlmcsd has been started by an internet superserver, \fB-r1\fR works identically to \fB-r2\fR. This is simply due to the fact that vlmcsd is started upon a connection request and does not stay in memory after servicing a KMS request. + +\fB-r2\fR behaves like most other KMS server emulators with random support and generates a new random ePID on every request. Use this mode with "care". However since Microsoft currently does not seem to do any verification of the ePID, you currently don't need to pay attention to ePIDs at all. + +.IP "\fB-C\fR \fILCID\fR" +Do not randomize the locale id part of the ePID and use \fILCID\fR instead. The \fILCID\fR must be specified as a decimal number, e.g. 1049 for "Russian - Russia". This option has no effect if the ePID is not randomized at all, e.g. if it is selected from the command line or an ini file. + +By default vlmcsd generates a valid locale id that is recognized by .NET Framework 4.0. This may lead to a locale id which is unlikely to occur in your country, for instance 2155 for "Quecha - Ecuador". You may want to select the locale id of your country instead. See +.URL "http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx" "MSDN" "" +for a list of valid \fILCID\fRs. Please note that some of them are not recognized by .NET Framework 4.0. + +Most other KMS emulators use a fixed \fILCID\fR of 1033 (English - US). To achive the same behavior in vlmcsd use \fB-C 1033\fR. + +.IP "\fB-R\fR \fIrenewal-interval\fR" +Instructs clients to renew activation every \fIrenewal-interval\fR. The \fIrenewal-interval\fR is a number optionally immediately followed by a letter indicating the unit. Valid unit letters are s (seconds), m (minutes), h (hours), d (days) and w (weeks). If you do not specify a letter, minutes is assumed. + +\fB-R3d\fR for instance instructs clients to renew activation every 3 days. The default \fIrenewal-interval\fR is 10080 (identical to 7d and 1w). + +Due to poor implementation of Microsofts KMS Client it cannot be guaranteed that activation is renewed on time as specfied by the -R option. Don't care about that. Renewal will happen well before your activation expires (usually 180 days). + +Even though you can specify seconds, the granularity of this option is 1 minute. Seconds are rounded down to the next multiple of 60. + +.IP "\fB-A\fR \fIactivation-interval\fR" +Instructs clients to retry activation every \fIactivation-interval\fR if it was +unsuccessful, e.g. because it could not reach the server. The default is 120 (identical to 2h). \fIactivation-interval\fR follows the same syntax as \fIrenewal-interval\fR in the +\fB-R\fR option. + +.IP "\fB-s\fR" +Installs vlmcsd as a Windows service. This option only works with the native Windows version and Cygwin. Combine \fB-s\fR with other command line options. These will be in effect when you start the service. The service automatically starts when you reboot your machine. To start it manually, type "net start vlmcsd". + +If you use Cygwin, you must include your Cygwin system DLL directory (usually C:\eCygwin\ebin or C:\eCygwin64\ebin) into the PATH environment variable or the service will not start. + +You can reinstall the service anytime using vlmcsd -s again, e.g. with a different command line. If the service is running, it will be restarted with the new command line. + +When using \fB-s\fR the command line is checked for basic syntax errors only. For example "vlmcsd -s -L 1.2.3.4" reports no error but the service will not start if 1.2.3.4 is not an IP address on your system. + +.IP "\fB-S\fR" +Uninstalls the vlmcsd service. Works only with the native Windows version and Cygwin. All other options will be ignored if you include -S in the command line. + +.IP "\fB-U\fR [\fIdomain\fR\e]\fIusername\fR" +Can only be used together with \fB-s\fR. Starts the service as a different user than the local SYSTEM account. This is used to run the service under an account with low privileges. If you omit the domain, an account from the local computer will be used. + +You may use "NT AUTHORITY\eNetworkService". This is a pseudo user with low privileges. You may also use "NT AUTHORITY\eLocalService" which has more privileges but these are of no use for running vlmcsd. + +Make sure that the user you specify has at least execute permission for your executable. "NT AUTHORITY\eNetworkService" normally has no permission to run binaries from your home directory. + +For your convenience you can use the special username "/l" as a shortcut for "NT AUTHORITY\eLocalService" and "/n" for "NT AUTHORITY\eNetworkService". "vlmcsd\ \-s\ \-U\ /n" installs the service to run as "NT AUTHORITY\eNetworkService". + +.IP "\fB-W\fR \fIpassword\fI" +Can only be used together with \fB-s\fR. Specifies a \fIpassword\fR for the corresponding username you use with -U. SYSTEM, "NT AUTHORITY\eNetworkService", "NT AUTHORITY\eLocalService" do not require a password. + +If you specify a user with even lower privileges than "NT AUTHORITY\eNetworkService", you must specify its password. You also have to grant the "Log on as a service" right to that user. + +.SH SIGNALS +The following signals differ from the default behavior: + +.IP "\fBSIGTERM\fR, \fBSIGINT\fR" +These signals cause vlmcsd to exit gracefully. All global semaphores and shared memory pages will be released, the pid file will be unlinked (deleted) and a shutdown message will be logged. + +.IP "\fBSIGHUP\fR" +Causes vlmcsd to be restarted completely. This is useful if you started vlmcsd with an ini file. You can modify the ini file while vlmcsd is running and then sending \fBSIGHUP\fR, e.g. by typing "killall -SIGHUP vlmcsd" or "kill -SIGHUP `cat /var/run/vlmcsd.pid`". + +The SIGHUP handler has been implemented relatively simple. It is virtually the same as stopping vlmcsd and starting it again immediately with the following exceptions: + +.RS +.IP "\(em" 3 +The new process does not get a new process id. +.IP "\(em" 3 +If you used a pid file, it is not deleted and recreated because the process id stays the same. +.IP "\(em" 3 +If you used the 'user' and/or 'group' directive in an ini file these are ignored. This is because once you switched to lower privileged users and groups, there is no way back. Anything else would be a severe security flaw in the OS. +.RE + +Signaling is not available in the native Windows version and in the Cygwin version when it runs as Windows service. + +.SH SUPPORTED OPERATING SYSTEMS +\fBvlmcsd\fR compiles and runs on Linux, Windows (no Cygwin required but explicitly supported), Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, Solaris, OpenIndiana, Android and iOS. Other POSIX or unixoid OSses may work with unmodified sources or may require minor porting efforts. + +.SH SUPPORTED PRODUCTS +\fBvlmcsd\fR can answer activation requests for the following products: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Office 2010, Project 2010, Visio 2010, Office 2013, Project 2013, Visio 2013. +.PP +Office, Project and Visio must be volume license versions. + +.SH FILES +.IP "\fBvlmcsd.ini\fR(5)" + +.SH EXAMPLES +.IP "\fBvlmcsd -f\fR" +Starts \fBvlmcsd\fR in foreground. Useful if you use it for the first time and want to see what's happening when a client requests activation. + +.IP "\fBvlmcsd -l /var/log/vlmcsd.log\fR" +Starts \fBvlmcsd\fR as a daemon and logs everything to /var/log/vlmcsd.log. + +.IP "\fBvlmcsd -L 192.168.1.17" +Starts \fBvlmcsd\fR as a daemon and listens on IP address 192.168.1.17 only. This is useful for routers that have a public and a private IP address to prevent your KMS server from becoming public. + +.IP "\fBvlmcsd -s -U /n -l C:\elogs\evlmcsd.log" +Installs \fBvlmcsd\fR as a Windows service with low privileges and logs everything to C:\elogs\evlmcsd.log when the service is started with "net start vlmcsd". + +.SH BUGS +An ePID specified in an ini file must not contain spaces. + +The maximum number of \fB-L\fR options in the command line or listen statements in the inifile is the platform default for \fIFD_SETSIZE\fR. This is 64 on Windows and 1024 on most Unixes. + +.SH AUTHOR +Written by crony12, Hotbird64 and vityan666. +With contributions from DougQaid. + +.SH CREDITS +Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Ratiborus, ... + +.SH SEE ALSO +\fBvlmcsd.ini\fR(5), \fBvlmcsd\fR(7), \fBvlmcs\fR(1), \fBvlmcsdmulti\fR(1) diff --git a/vlmcsd.8.dos.txt b/vlmcsd.8.dos.txt new file mode 100644 index 00000000..ae322643 --- /dev/null +++ b/vlmcsd.8.dos.txt @@ -0,0 +1,523 @@ +VLMCSD(8) KMS Activation Manual VLMCSD(8) + + + +NAME + vlmcsd - a fully Microsoft compatible KMS server + + +SYNOPSIS + vlmcsd [ options ] + + +DESCRIPTION + vlmcsd is a fully Microsoft compatible KMS server that provides product + activation services to clients. It is meant as a drop-in replacement + for a Microsoft KMS server (Windows computer with KMS key entered). It + currently supports KMS protocol versions 4, 5 and 6. + + vlmcsd is designed to run on POSIX compatible operating systens. It + only requires a basic C library with a BSD-style sockets API and either + fork(2) or pthreads(7). That allows it to run on most embedded systems + like routers, NASes, mobile phones, tablets, TVs, settop boxes, etc. + Some efforts have been made that it also runs on Windows. + + Although vlmcsd does neither require an activation key nor a payment to + anyone, it is not meant to run illegal copies of Windows. Its purpose + is to ensure that owners of legal copies can use their software without + restrictions, e.g. if you buy a new computer or motherboard and your + key will be refused activation from Microsoft servers due to hardware + changes. + + vlmcsd may be started via an internet superserver like inetd(8) or + xinetd(8) as well as an advanced init system like systemd(8) or + launchd(8) using socket based activation. If vlmcsd detects that + stdin(3) is a socket, it assumes that there is already a connected + client on stdin that wants to be activated. All options that control + setting up listening sockets will be ignored when in inetd mode. + + +OPTIONS + Since vlmcsd can be configured at compile time, some options may not be + available on your system. + + All options that do no require an argument may be combined with a sin‐ + gle dash, for instance "vlmcsd -D -e" is identical to "vlmcsd -De". For + all options that require an argument a space between the option and the + option argument is optional. Thus "vlmcsd -r 2" and "vlmcsd -r2" are + identical too. + + + -h or -? + Displays help. + + + -L ipaddress[:port] + Instructs vlmcsd to listen on ipaddress with optional port + (default 1688). You can use this option more than once. If you + do not specify -L at least once, IP addresses 0.0.0.0 (IPv4) and + :: (IPv6) are used. If the IP address contains colons (IPv6) you + must enclose the IP address in brackets if you specify the + optional port, e.g. [2001:db8::dead:beef]:1688. + + If no port is specified, vlmcsd uses the default port according + to a preceding -P option. If you specify a port, it can be a + number (1-65535) or a name (usually found in /etc/services if + not provided via LDAP, NIS+ or another name service). + + If you specify a link local IPv6 address (fe80::/10, usually + starting with fe80::), it must be followed by a percent sign (%) + and a scope id (=network interface name or number) on most + unixoid OSses including Linux, Android, MacOS X and iOS, e.g. + fe80::1234:56ff:fe78:9abc%eth0 or + [fe80::1234:56ff:fe78:9abc%2]:1688. Windows (including cygwin) + does not require a scope id unless the same link local address + is used on more than one network interface. Windows does not + accept a name and the scope id must be a number. + + + -P port + Use TCP port for all subsequent -L statements that do not + include an optional port. If you use -P and -L, -P must be spec‐ + ified before -L. + + + -4 and -6 + Used to control the use of IPv4 and IPv4 if you did not use -L. + If you specify both -4 and -6 or none, vlmcsd uses both proto‐ + cols. If you specify only one, that protocol will be used only. + These options are deprecated and will be removed. + + + -I This option is deprecated and does nothing. It is provided for + compatibility with svn681 and earlier versions only. It will be + removed in a future release. + + + -t seconds + Timeout the TCP connection with the client after seconds sec‐ + onds. After sending an activation request. RPC keeps the TCP + connection for a while. The default is 30 seconds. You may spec‐ + ify a shorter period to free ressources on your device faster. + This is useful for devices with limited main memory or if you + used -m to limit the concurrent clients that may request activa‐ + tion. Microsoft RPC clients disconnect after 30 seconds by + default. Setting seconds to a greater value does not make much + sense. + + + -m concurrent-clients + Limit the number of clients that will be handled concurrently. + This is useful for devices with limited ressources or if you are + experiencing DoS attacks that spawn thousands of threads or + forked processes. If additional clients connect to vlmcsd, they + need to wait until another client disconnects. If you set con‐ + current-clients to a small value ( <10 ), you should also select + a reasonable timeout of 2 or 3 seconds with -t. The default is + no limit. + + + -d Disconnect each client after processing one activation request. + This is a direct violation of DCE RPC but may help if you + receive malicous fake RPC requests that block your threads or + forked processes. Some other KMS emulators (e.g. py-kms) behave + this way. + + + -k Do not disconnect clients after processing an activation + request. This selects the default behavior. -k is useful only if + you used an ini file (see vlmcsd.ini(5) and -i). If the ini file + contains the line "DisconnectClientsImmediately = true", you can + use this switch to restore the default behavior. + + + -N0 and -N1 + Disables (-N0) or enables (-N1) the use of the NDR64 transfer + syntax in the RPC protocol. Unlike Microsoft vlmcsd supports + NDR64 on 32-bit operating systems. Microsoft introduced NDR64 in + Windows Vista but their KMS servers started using it with Win‐ + dows 8. Thus if you choose random ePIDs, vlmcsd will select + ePIDs with build numbers 9200 and 9600 if you enable NDR64 and + build numbers 6002 and 7601 if you disable NDR64. The default is + to enable NDR64. + + + -B0 and -B1 + Disables (-B0) or enables (-B1) bind time feature negotiation + (BTFN) in the RPC protocol. All Windows operating systems start‐ + ing with Vista support BTFN and try to negotiate it when initi‐ + ating an RPC connection. Thus consider turning it off as a debug + / troubleshooting feature only. Some older firewalls that selec‐ + tively block or redirect RPC traffic may get confused when they + detect NDR64 or BTFN. + + + -l filename + Use filename as a log file. The log file records all activations + with IP address, Windows workstation name (no reverse DNS + lookup), activated product, KMS protocol, time and date. If you + do not specify a log file, no log is created. For a live view of + the log file type tail -f file. + + If you use the special filename "syslog", vlmcsd uses syslog(3) + for logging. If your system has no syslog service (/dev/log) + installed, logging output will go to /dev/console. Syslog log‐ + ging is not available in the native Windows version. The Cygwin + version does support syslog logging. + + + -D Normally vlmcsd daemonizes and runs in background (except the + native Windows version). If -D is specified, vlmcsd does not + daemonize and runs in foreground. This is useful for testing and + allows you to simply press to exit vlmcsd. + + The native Windows version never daemonizes and always behaves + as if -D had been specified. You may want to install vlmcsd as a + service instead. See -s. + + + -e If specified, vlmcsd ignores -l and writes all logging output to + stdout(3). This is mainly useful for testing and debugging and + often combined with -D. + + + -f This flag combines -D and -e. So typing "vlmcsd -f" is identical + to "vlmcsd -De". The purpose of -f is to provide compatibility + with previous versions of vlmcsd. This option is deprecated and + will be removed. + + + -v Use verbose logging. Logs every parameter of the base request + and the base response. It also logs the HWID of the KMS server + if KMS protocol version 6 is used. This option is mainly for + debugging purposes. It only has an effect if some form of log‐ + ging is used. Thus -v does not make sense if not used with -l, + -e or -f. + + + -q Do not use verbose logging. This is actually the default behav‐ + ior. It only makes sense if you use vlmcsd with an ini file (see + -i and vlmcsd.ini(5)). If the ini file contains the line + "LogVerbose = true" you can use -q to restore the default behav‐ + ior. + + + -p filename + Create pid file filename. This has nothing to do with KMS ePIDs. + A pid file is a file where vlmcsd writes its own process id. + This is used by standard init scripts (typically found in + /etc/init.d). The default is not to write a pid file. + + + -u user and -g group + Causes vlmcsd to run in the specified user and group security + context. The main purpose for this is to drop root privileges + after it has been started from the root account. To use this + feature from cygwin you must run cyglsa-config and the account + from which vlmcsd is started must have the rights "Act as part + of the operating system" and "Replace a process level token". + The native Windows version does not support these options. + + The actual security context switch is performed after the TCP + sockets have been created. This allows you to use privileged + ports (< 1024) when you start vlmcsd from the root account. + + However if you use an ini, pid or log file, you must ensure that + the unprivileged user has access to these files. You can always + log to syslog(3) from an unprivileged account on most platforms + (see -l). + + + -w ePID + Use ePID as Windows ePID. If specified, -r is disregarded for + Windows. + + + -0 ePID + Use ePID as Office 2010 ePID (including Project and Visio). If + specified, -r is disregarded for Office 2010. + + + -3 ePID + Use ePID as Office 2013 ePID (including Project and Visio). If + specified, -r is disregarded for Office 2013. + + + -H HwId + Use HwId for all products. All HWIDs in the ini file (see -i) + will not be used. In an ini file you can specify a seperate HWID + for each application-guid. This is not possible when entering a + HWID from the command line. + + HwId must be specified as 16 hex digits that are interpreted as + a series of 8 bytes (big endian). Any character that is not a + hex digit will be ignored. This is for better readability. The + following commands are identical: + + vlmcsd -H 0123456789ABCDEF + vlmcsd -H 01:23:45:67:89:ab:cd:ef + vlmcsd -H "01 23 45 67 89 AB CD EF" + + + -i filename + Use configuration file (aka ini file) filename. Most configura‐ + tion parameters can be set either via the command line or an ini + file. The command line always has precedence over configuration + items in the ini file. See vlmcsd.ini(5) for the format of the + configuration file. + + If vlmcsd has been compiled to use a default configuration file + (often /etc/vlmcsd.ini), you may use -i- to ignore the default + configuration file. + + + -r0, -r1 (default) and -r2 + These options determine how ePIDs are generated if + + - you did not sprecify an ePID in the command line and + - you haven't used -i or + - the file specified by -i cannot be opened or + - the file specified by -i does not contain the application-guid + for the KMS request + + -r0 means there are no random ePIDs. vlmcsd simply issues + default ePIDs that are built into the binary at compile time. + Pro: behaves like real KMS server that also always issues the + same ePID. Con: Microsoft may start blacklisting again and the + default ePID may not work any longer. + + -r1 instructs vlmcsd to generate random ePIDs when the program + starts or receives a SIGHUP signal and uses these ePIDs until it + is stopped or receives another SIGHUP. Most other KMS emulators + generate a new ePID on every KMS request. This is easily + detectable. Microsoft could just modify sppsvc.exe in a way that + it always sends two identical KMS requests in two RPC requests + but over the same TCP connection. If both KMS responses contain + the different ePIDs, the KMS server is not genuine. -r1 is the + default mode. -r1 also ensures that all three ePIDs (Windows, + Office 2010 and Office 2013) use the same OS build number and + LCID (language id). + + If vlmcsd has been started by an internet superserver, -r1 works + identically to -r2. This is simply due to the fact that vlmcsd + is started upon a connection request and does not stay in memory + after servicing a KMS request. + + -r2 behaves like most other KMS server emulators with random + support and generates a new random ePID on every request. Use + this mode with "care". However since Microsoft currently does + not seem to do any verification of the ePID, you currently don't + need to pay attention to ePIDs at all. + + + -C LCID + Do not randomize the locale id part of the ePID and use LCID + instead. The LCID must be specified as a decimal number, e.g. + 1049 for "Russian - Russia". This option has no effect if the + ePID is not randomized at all, e.g. if it is selected from the + command line or an ini file. + + By default vlmcsd generates a valid locale id that is recognized + by .NET Framework 4.0. This may lead to a locale id which is + unlikely to occur in your country, for instance 2155 for "Quecha + - Ecuador". You may want to select the locale id of your country + instead. See MSDN ⟨http://msdn.microsoft.com/en-us/goglobal/ + bb964664.aspx⟩ for a list of valid LCIDs. Please note that some + of them are not recognized by .NET Framework 4.0. + + Most other KMS emulators use a fixed LCID of 1033 (English - + US). To achive the same behavior in vlmcsd use -C 1033. + + + -R renewal-interval + Instructs clients to renew activation every renewal-interval. + The renewal-interval is a number optionally immediately followed + by a letter indicating the unit. Valid unit letters are s (sec‐ + onds), m (minutes), h (hours), d (days) and w (weeks). If you do + not specify a letter, minutes is assumed. + + -R3d for instance instructs clients to renew activation every 3 + days. The default renewal-interval is 10080 (identical to 7d and + 1w). + + Due to poor implementation of Microsofts KMS Client it cannot be + guaranteed that activation is renewed on time as specfied by the + -R option. Don't care about that. Renewal will happen well + before your activation expires (usually 180 days). + + Even though you can specify seconds, the granularity of this + option is 1 minute. Seconds are rounded down to the next multi‐ + ple of 60. + + + -A activation-interval + Instructs clients to retry activation every activation-interval + if it was unsuccessful, e.g. because it could not reach the + server. The default is 120 (identical to 2h). activation-inter‐ + val follows the same syntax as renewal-interval in the -R + option. + + + -s Installs vlmcsd as a Windows service. This option only works + with the native Windows version and Cygwin. Combine -s with + other command line options. These will be in effect when you + start the service. The service automatically starts when you + reboot your machine. To start it manually, type "net start vlm‐ + csd". + + If you use Cygwin, you must include your Cygwin system DLL + directory (usually C:\Cygwin\bin or C:\Cygwin64\bin) into the + PATH environment variable or the service will not start. + + You can reinstall the service anytime using vlmcsd -s again, + e.g. with a different command line. If the service is running, + it will be restarted with the new command line. + + When using -s the command line is checked for basic syntax + errors only. For example "vlmcsd -s -L 1.2.3.4" reports no error + but the service will not start if 1.2.3.4 is not an IP address + on your system. + + + -S Uninstalls the vlmcsd service. Works only with the native Win‐ + dows version and Cygwin. All other options will be ignored if + you include -S in the command line. + + + -U [domain\]username + Can only be used together with -s. Starts the service as a dif‐ + ferent user than the local SYSTEM account. This is used to run + the service under an account with low privileges. If you omit + the domain, an account from the local computer will be used. + + You may use "NT AUTHORITY\NetworkService". This is a pseudo user + with low privileges. You may also use "NT AUTHORITY\LocalSer‐ + vice" which has more privileges but these are of no use for run‐ + ning vlmcsd. + + Make sure that the user you specify has at least execute permis‐ + sion for your executable. "NT AUTHORITY\NetworkService" normally + has no permission to run binaries from your home directory. + + For your convenience you can use the special username "/l" as a + shortcut for "NT AUTHORITY\LocalService" and "/n" for "NT + AUTHORITY\NetworkService". "vlmcsd -s -U /n" installs the ser‐ + vice to run as "NT AUTHORITY\NetworkService". + + + -W password + Can only be used together with -s. Specifies a password for the + corresponding username you use with -U. SYSTEM, "NT AUTHOR‐ + ITY\NetworkService", "NT AUTHORITY\LocalService" do not require + a password. + + If you specify a user with even lower privileges than "NT + AUTHORITY\NetworkService", you must specify its password. You + also have to grant the "Log on as a service" right to that user. + + +SIGNALS + The following signals differ from the default behavior: + + + SIGTERM, SIGINT + These signals cause vlmcsd to exit gracefully. All global sema‐ + phores and shared memory pages will be released, the pid file + will be unlinked (deleted) and a shutdown message will be + logged. + + + SIGHUP Causes vlmcsd to be restarted completely. This is useful if you + started vlmcsd with an ini file. You can modify the ini file + while vlmcsd is running and then sending SIGHUP, e.g. by typing + "killall -SIGHUP vlmcsd" or "kill -SIGHUP `cat /var/run/vlm‐ + csd.pid`". + + The SIGHUP handler has been implemented relatively simple. It is + virtually the same as stopping vlmcsd and starting it again + immediately with the following exceptions: + + + — The new process does not get a new process id. + + — If you used a pid file, it is not deleted and recreated + because the process id stays the same. + + — If you used the 'user' and/or 'group' directive in an ini + file these are ignored. This is because once you switched to + lower privileged users and groups, there is no way back. Any‐ + thing else would be a severe security flaw in the OS. + + Signaling is not available in the native Windows version and in the + Cygwin version when it runs as Windows service. + + +SUPPORTED OPERATING SYSTEMS + vlmcsd compiles and runs on Linux, Windows (no Cygwin required but + explicitly supported), Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, + Solaris, OpenIndiana, Android and iOS. Other POSIX or unixoid OSses may + work with unmodified sources or may require minor porting efforts. + + +SUPPORTED PRODUCTS + vlmcsd can answer activation requests for the following products: Win‐ + dows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows + Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows + Server 2012 R2, Office 2010, Project 2010, Visio 2010, Office 2013, + Project 2013, Visio 2013. + + Office, Project and Visio must be volume license versions. + + +FILES + vlmcsd.ini(5) + + +EXAMPLES + vlmcsd -f + Starts vlmcsd in foreground. Useful if you use it for the first + time and want to see what's happening when a client requests + activation. + + + vlmcsd -l /var/log/vlmcsd.log + Starts vlmcsd as a daemon and logs everything to /var/log/vlm‐ + csd.log. + + + vlmcsd -L 192.168.1.17 + Starts vlmcsd as a daemon and listens on IP address 192.168.1.17 + only. This is useful for routers that have a public and a pri‐ + vate IP address to prevent your KMS server from becoming public. + + + vlmcsd -s -U /n -l C:\logs\vlmcsd.log + Installs vlmcsd as a Windows service with low privileges and + logs everything to C:\logs\vlmcsd.log when the service is + started with "net start vlmcsd". + + +BUGS + An ePID specified in an ini file must not contain spaces. + + The maximum number of -L options in the command line or listen state‐ + ments in the inifile is the platform default for FD_SETSIZE. This is 64 + on Windows and 1024 on most Unixes. + + +AUTHOR + Written by crony12, Hotbird64 and vityan666. With contributions from + DougQaid. + + +CREDITS + Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐ + borus, ... + + +SEE ALSO + vlmcsd.ini(5), vlmcsd(7), vlmcs(1), vlmcsdmulti(1) + + + +Hotbird64 July 2015 VLMCSD(8) diff --git a/vlmcsd.8.html b/vlmcsd.8.html new file mode 100644 index 00000000..3e2697e3 --- /dev/null +++ b/vlmcsd.8.html @@ -0,0 +1,855 @@ + + + + + + + + + +VLMCSD + + + + +

VLMCSD

+ +NAME
+SYNOPSIS
+DESCRIPTION
+OPTIONS
+SIGNALS
+SUPPORTED OPERATING SYSTEMS
+SUPPORTED PRODUCTS
+FILES
+EXAMPLES
+BUGS
+AUTHOR
+CREDITS
+SEE ALSO
+ +
+ + +

NAME + +

+ + +

vlmcsd − +a fully Microsoft compatible KMS server

+ +

SYNOPSIS + +

+ + +

vlmcsd [ +options ]

+ +

DESCRIPTION + +

+ + +

vlmcsd +is a fully Microsoft compatible KMS server that provides +product activation services to clients. It is meant as a +drop-in replacement for a Microsoft KMS server (Windows +computer with KMS key entered). It currently supports KMS +protocol versions 4, 5 and 6.

+ +

vlmcsd +is designed to run on POSIX compatible operating systens. It +only requires a basic C library with a BSD-style sockets API +and either fork(2) or pthreads(7). That allows +it to run on most embedded systems like routers, NASes, +mobile phones, tablets, TVs, settop boxes, etc. Some efforts +have been made that it also runs on Windows.

+ +

Although +vlmcsd does neither require an activation key nor a +payment to anyone, it is not meant to run illegal copies of +Windows. Its purpose is to ensure that owners of legal +copies can use their software without restrictions, e.g. if +you buy a new computer or motherboard and your key will be +refused activation from Microsoft servers due to hardware +changes.

+ +

vlmcsd +may be started via an internet superserver like +inetd(8) or xinetd(8) as well as an advanced +init system like systemd(8) or launchd(8) +using socket based activation. If vlmcsd detects that +stdin(3) is a socket, it assumes that there is +already a connected client on stdin that wants to be +activated. All options that control setting up listening +sockets will be ignored when in inetd mode.

+ +

OPTIONS + +

+ + +

Since vlmcsd +can be configured at compile time, some options may not be +available on your system.

+ +

All options +that do no require an argument may be combined with a single +dash, for instance "vlmcsd -D -e" is identical to +"vlmcsd -De". For all options that require an +argument a space between the option and the option argument +is optional. Thus "vlmcsd -r 2" and "vlmcsd +-r2" are identical too.
+-h
or -?

+ +

Displays help.

+ +

-L +ipaddress[:port]

+ +

Instructs vlmcsd to listen on +ipaddress with optional port (default 1688). +You can use this option more than once. If you do not +specify -L at least once, IP addresses 0.0.0.0 (IPv4) +and :: (IPv6) are used. If the IP address contains colons +(IPv6) you must enclose the IP address in brackets if you +specify the optional port, e.g. +[2001:db8::dead:beef]:1688.

+ +

If no port is +specified, vlmcsd uses the default port according to a +preceding -P option. If you specify a port, it can be +a number (1-65535) or a name (usually found in /etc/services +if not provided via LDAP, NIS+ or another name service).

+ +

If you specify +a link local IPv6 address (fe80::/10, usually starting with +fe80::), it must be followed by a percent sign (%) and a +scope id (=network interface name or number) on most unixoid +OSses including Linux, Android, MacOS X and iOS, e.g. +fe80::1234:56ff:fe78:9abc%eth0 or +[fe80::1234:56ff:fe78:9abc%2]:1688. Windows +(including cygwin) does not require a scope id unless the +same link local address is used on more than one network +interface. Windows does not accept a name and the scope id +must be a number.

+ +

-P port

+ +

Use TCP port for all +subsequent -L statements that do not include an +optional port. If you use -P and -L, -P +must be specified before -L.

+ +

-4 and -6

+ +

Used to control the use of IPv4 +and IPv4 if you did not use -L. If you specify both +-4 and -6 or none, vlmcsd uses both protocols. +If you specify only one, that protocol will be used only. +These options are deprecated and will be removed.

+ + + + + + + +
+ + +

-I

+ + +

This option is deprecated and does nothing. It is +provided for compatibility with svn681 and earlier versions +only. It will be removed in a future release.

+ +

-t seconds

+ +

Timeout the TCP connection with +the client after seconds seconds. After sending an +activation request. RPC keeps the TCP connection for a +while. The default is 30 seconds. You may specify a shorter +period to free ressources on your device faster. This is +useful for devices with limited main memory or if you used +-m to limit the concurrent clients that may request +activation. Microsoft RPC clients disconnect after 30 +seconds by default. Setting seconds to a greater +value does not make much sense.

+ +

-m +concurrent-clients

+ +

Limit the number of clients +that will be handled concurrently. This is useful for +devices with limited ressources or if you are experiencing +DoS attacks that spawn thousands of threads or forked +processes. If additional clients connect to vlmcsd, they +need to wait until another client disconnects. If you set +concurrent-clients to a small value ( <10 ), you +should also select a reasonable timeout of 2 or 3 seconds +with -t. The default is no limit.

+ + + + + + + + + + + + +
+ + +

-d

+ + +

Disconnect each client after processing one activation +request. This is a direct violation of DCE RPC but may help +if you receive malicous fake RPC requests that block your +threads or forked processes. Some other KMS emulators (e.g. +py-kms) behave this way.

+ + +

-k

+ + +

Do not disconnect clients after processing an activation +request. This selects the default behavior. -k is +useful only if you used an ini file (see +vlmcsd.ini(5) and -i). If the ini file +contains the line "DisconnectClientsImmediately = +true", you can use this switch to restore the default +behavior.

+ +

-N0 and -N1

+ +

Disables (-N0) or +enables (-N1) the use of the NDR64 transfer syntax in +the RPC protocol. Unlike Microsoft vlmcsd supports NDR64 on +32-bit operating systems. Microsoft introduced NDR64 in +Windows Vista but their KMS servers started using it with +Windows 8. Thus if you choose random ePIDs, vlmcsd will +select ePIDs with build numbers 9200 and 9600 if you enable +NDR64 and build numbers 6002 and 7601 if you disable NDR64. +The default is to enable NDR64.

+ +

-B0 and -B1

+ +

Disables (-B0) or +enables (-B1) bind time feature negotiation (BTFN) in +the RPC protocol. All Windows operating systems starting +with Vista support BTFN and try to negotiate it when +initiating an RPC connection. Thus consider turning it off +as a debug / troubleshooting feature only. Some older +firewalls that selectively block or redirect RPC traffic may +get confused when they detect NDR64 or BTFN.

+ +

-l filename

+ +

Use filename as a log +file. The log file records all activations with IP address, +Windows workstation name (no reverse DNS lookup), activated +product, KMS protocol, time and date. If you do not specify +a log file, no log is created. For a live view of the log +file type tail -f file.

+ +

If you use the +special filename "syslog", vlmcsd uses +syslog(3) for logging. If your system has no syslog +service (/dev/log) installed, logging output will go to +/dev/console. Syslog logging is not available in the native +Windows version. The Cygwin version does support syslog +logging.

+ + + + + + + +
+ + +

-D

+ + +

Normally vlmcsd daemonizes and runs in background +(except the native Windows version). If -D is +specified, vlmcsd does not daemonize and runs in foreground. +This is useful for testing and allows you to simply press +<Ctrl-C> to exit vlmcsd.

+ +

The native +Windows version never daemonizes and always behaves as if +-D had been specified. You may want to install vlmcsd +as a service instead. See -s.

+ + + + + + + + + + + + + + + + + + + + + + +
+ + +

-e

+ + +

If specified, vlmcsd ignores +-l and writes all logging output to stdout(3). +This is mainly useful for testing and debugging and often +combined with -D.

+ + +

-f

+ + +

This flag combines -D and -e. So typing +"vlmcsd -f" is identical to "vlmcsd +-De". The purpose of -f is to provide +compatibility with previous versions of vlmcsd. This +option is deprecated and will be removed.

+ + +

-v

+ + +

Use verbose logging. Logs every parameter of the base +request and the base response. It also logs the HWID of the +KMS server if KMS protocol version 6 is used. This option is +mainly for debugging purposes. It only has an effect if some +form of logging is used. Thus -v does not make sense +if not used with -l, -e or -f.

+ + +

-q

+ + +

Do not use verbose logging. This is actually the default +behavior. It only makes sense if you use vlmcsd with an ini +file (see -i and vlmcsd.ini(5)). If the ini +file contains the line "LogVerbose = true" you can +use -q to restore the default behavior.

+ +

-p filename

+ +

Create pid file +filename. This has nothing to do with KMS ePIDs. A +pid file is a file where vlmcsd writes its own process id. +This is used by standard init scripts (typically found in +/etc/init.d). The default is not to write a pid file.

+ +

-u user and +-g group

+ +

Causes vlmcsd to run in the +specified user and group security context. The +main purpose for this is to drop root privileges after it +has been started from the root account. To use this feature +from cygwin you must run cyglsa-config and the account from +which vlmcsd is started must have the rights "Act as +part of the operating system" and "Replace a +process level token". The native Windows version does +not support these options.

+ +

The actual +security context switch is performed after the TCP sockets +have been created. This allows you to use privileged ports +(< 1024) when you start vlmcsd from the root account.

+ +

However if you +use an ini, pid or log file, you must ensure that the +unprivileged user has access to these files. You can always +log to syslog(3) from an unprivileged account on most +platforms (see -l).

+ +

-w ePID

+ +

Use ePID as Windows +ePID. If specified, -r is disregarded for +Windows.

+ +

-0 ePID

+ +

Use ePID as Office 2010 +ePID (including Project and Visio). If specified, -r +is disregarded for Office 2010.

+ +

-3 ePID

+ +

Use ePID as Office 2013 +ePID (including Project and Visio). If specified, -r +is disregarded for Office 2013.

+ +

-H HwId

+ +

Use HwId for all +products. All HWIDs in the ini file (see -i) will not +be used. In an ini file you can specify a seperate HWID for +each application-guid. This is not possible when +entering a HWID from the command line.

+ +

HwId +must be specified as 16 hex digits that are interpreted as a +series of 8 bytes (big endian). Any character that is not a +hex digit will be ignored. This is for better readability. +The following commands are identical:

+ +

vlmcsd -H +0123456789ABCDEF
+vlmcsd -H 01:23:45:67:89:ab:cd:ef
+vlmcsd -H "01 23 45 67 89 AB CD EF"

+ +

-i filename

+ +

Use configuration file (aka ini +file) filename. Most configuration parameters can be +set either via the command line or an ini file. The command +line always has precedence over configuration items in the +ini file. See vlmcsd.ini(5) for the format of the +configuration file.

+ +

If vlmcsd has +been compiled to use a default configuration file (often +/etc/vlmcsd.ini), you may use -i- to ignore the +default configuration file.

+ +

-r0, -r1 +(default) and -r2

+ +

These options determine how +ePIDs are generated if

+ +

- you did not +sprecify an ePID in the command line and
+- you haven’t used -i or
+- the file specified by -i cannot be opened or
+- the file specified by -i does not contain the +application-guid for the KMS request

+ +

-r0 +means there are no random ePIDs. vlmcsd simply issues +default ePIDs that are built into the binary at compile +time. Pro: behaves like real KMS server that also +always issues the same ePID. Con: Microsoft may start +blacklisting again and the default ePID may not work any +longer.

+ +

-r1 +instructs vlmcsd to generate random ePIDs when the program +starts or receives a SIGHUP signal and uses these ePIDs +until it is stopped or receives another SIGHUP. Most other +KMS emulators generate a new ePID on every KMS request. This +is easily detectable. Microsoft could just modify sppsvc.exe +in a way that it always sends two identical KMS requests in +two RPC requests but over the same TCP connection. If both +KMS responses contain the different ePIDs, the KMS server is +not genuine. -r1 is the default mode. -r1 also +ensures that all three ePIDs (Windows, Office 2010 and +Office 2013) use the same OS build number and LCID (language +id).

+ +

If vlmcsd has +been started by an internet superserver, -r1 works +identically to -r2. This is simply due to the fact +that vlmcsd is started upon a connection request and does +not stay in memory after servicing a KMS request.

+ +

-r2 +behaves like most other KMS server emulators with random +support and generates a new random ePID on every request. +Use this mode with "care". However since Microsoft +currently does not seem to do any verification of the ePID, +you currently don’t need to pay attention to ePIDs at +all.

+ +

-C LCID

+ +

Do not randomize the locale id +part of the ePID and use LCID instead. The +LCID must be specified as a decimal number, e.g. 1049 +for "Russian - Russia". This option has no effect +if the ePID is not randomized at all, e.g. if it is selected +from the command line or an ini file.

+ +

By default +vlmcsd generates a valid locale id that is recognized by +.NET Framework 4.0. This may lead to a locale id which is +unlikely to occur in your country, for instance 2155 for +"Quecha - Ecuador". You may want to select the +locale id of your country instead. See +MSDN +for a list of valid LCIDs. Please note that some of +them are not recognized by .NET Framework 4.0.

+ +

Most other KMS +emulators use a fixed LCID of 1033 (English - US). To +achive the same behavior in vlmcsd use -C 1033.

+ +

-R +renewal-interval

+ +

Instructs clients to renew +activation every renewal-interval. The +renewal-interval is a number optionally immediately +followed by a letter indicating the unit. Valid unit letters +are s (seconds), m (minutes), h (hours), d (days) and w +(weeks). If you do not specify a letter, minutes is +assumed.

+ +

-R3d for +instance instructs clients to renew activation every 3 days. +The default renewal-interval is 10080 (identical to +7d and 1w).

+ +

Due to poor +implementation of Microsofts KMS Client it cannot be +guaranteed that activation is renewed on time as specfied by +the -R option. Don’t care about that. Renewal will +happen well before your activation expires (usually 180 +days).

+ +

Even though you +can specify seconds, the granularity of this option is 1 +minute. Seconds are rounded down to the next multiple of +60.

+ +

-A +activation-interval

+ +

Instructs clients to retry +activation every activation-interval if it was +unsuccessful, e.g. because it could not reach the server. +The default is 120 (identical to 2h). +activation-interval follows the same syntax as +renewal-interval in the -R option.

+ + + + + + + +
+ + +

-s

+ + +

Installs vlmcsd as a Windows service. This option only +works with the native Windows version and Cygwin. Combine +-s with other command line options. These will be in +effect when you start the service. The service automatically +starts when you reboot your machine. To start it manually, +type "net start vlmcsd".

+ +

If you use +Cygwin, you must include your Cygwin system DLL directory +(usually C:\Cygwin\bin or C:\Cygwin64\bin) into the PATH +environment variable or the service will not start.

+ +

You can +reinstall the service anytime using vlmcsd -s again, e.g. +with a different command line. If the service is running, it +will be restarted with the new command line.

+ +

When using +-s the command line is checked for basic syntax +errors only. For example "vlmcsd -s -L 1.2.3.4" +reports no error but the service will not start if 1.2.3.4 +is not an IP address on your system.

+ + + + + + + +
+ + +

-S

+ + +

Uninstalls the vlmcsd service. +Works only with the native Windows version and Cygwin. All +other options will be ignored if you include -S in the +command line.

+ +

-U +[domain\]username

+ +

Can only be used together with +-s. Starts the service as a different user than the +local SYSTEM account. This is used to run the service under +an account with low privileges. If you omit the domain, an +account from the local computer will be used.

+ +

You may use +"NT AUTHORITY\NetworkService". This is a pseudo +user with low privileges. You may also use "NT +AUTHORITY\LocalService" which has more privileges but +these are of no use for running vlmcsd.

+ +

Make sure that +the user you specify has at least execute permission for +your executable. "NT AUTHORITY\NetworkService" +normally has no permission to run binaries from your home +directory.

+ +

For your +convenience you can use the special username "/l" +as a shortcut for "NT AUTHORITY\LocalService" and +"/n" for "NT AUTHORITY\NetworkService". +"vlmcsd −s −U /n" +installs the service to run as "NT +AUTHORITY\NetworkService".

+ +

-W password

+ +

Can only be used together with +-s. Specifies a password for the corresponding +username you use with -U. SYSTEM, "NT +AUTHORITY\NetworkService", "NT +AUTHORITY\LocalService" do not require a password.

+ +

If you specify +a user with even lower privileges than "NT +AUTHORITY\NetworkService", you must specify its +password. You also have to grant the "Log on as a +service" right to that user.

+ +

SIGNALS + +

+ + +

The following +signals differ from the default behavior:
+SIGTERM
, SIGINT

+ +

These signals cause vlmcsd to +exit gracefully. All global semaphores and shared memory +pages will be released, the pid file will be unlinked +(deleted) and a shutdown message will be logged.

+ + + + + + + +
+ + +

SIGHUP

+ + +

Causes vlmcsd to be restarted completely. This is useful +if you started vlmcsd with an ini file. You can modify the +ini file while vlmcsd is running and then sending +SIGHUP, e.g. by typing "killall -SIGHUP +vlmcsd" or "kill -SIGHUP ’cat +/var/run/vlmcsd.pid’".

+ +

The SIGHUP +handler has been implemented relatively simple. It is +virtually the same as stopping vlmcsd and starting it again +immediately with the following exceptions:

+ + + + + + + + + + + + + + + + + +
+ + +

+ + +

The new process does not get a +new process id.

+ + +

+ + +

If you used a pid file, it is not deleted and recreated +because the process id stays the same.

+ + +

+ + +

If you used the ’user’ and/or +’group’ directive in an ini file these are +ignored. This is because once you switched to lower +privileged users and groups, there is no way back. Anything +else would be a severe security flaw in the OS.

+ +

Signaling is +not available in the native Windows version and in the +Cygwin version when it runs as Windows service.

+ +

SUPPORTED OPERATING SYSTEMS + +

+ + +

vlmcsd +compiles and runs on Linux, Windows (no Cygwin required but +explicitly supported), Mac OS X, FreeBSD, NetBSD, OpenBSD, +Minix, Solaris, OpenIndiana, Android and iOS. Other POSIX or +unixoid OSses may work with unmodified sources or may +require minor porting efforts.

+ +

SUPPORTED PRODUCTS + +

+ + +

vlmcsd +can answer activation requests for the following products: +Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows +10, Windows Server 2008, Windows Server 2008 R2, Windows +Server 2012, Windows Server 2012 R2, Office 2010, Project +2010, Visio 2010, Office 2013, Project 2013, Visio 2013.

+ +

Office, Project +and Visio must be volume license versions.

+ +

FILES + +

+ + + +

vlmcsd.ini(5)

+ +

EXAMPLES + +

+ + +

vlmcsd +-f

+ +

Starts vlmcsd in +foreground. Useful if you use it for the first time and want +to see what’s happening when a client requests +activation.

+ +

vlmcsd -l +/var/log/vlmcsd.log

+ +

Starts vlmcsd as a +daemon and logs everything to /var/log/vlmcsd.log.

+ +

vlmcsd -L +192.168.1.17

+ +

Starts vlmcsd as a +daemon and listens on IP address 192.168.1.17 only. This is +useful for routers that have a public and a private IP +address to prevent your KMS server from becoming public.

+ +

vlmcsd -s -U /n -l +C:\logs\vlmcsd.log

+ +

Installs vlmcsd as a +Windows service with low privileges and logs everything to +C:\logs\vlmcsd.log when the service is started with +"net start vlmcsd".

+ +

BUGS + +

+ + +

An ePID +specified in an ini file must not contain spaces.

+ +

The maximum +number of -L options in the command line or listen +statements in the inifile is the platform default for +FD_SETSIZE. This is 64 on Windows and 1024 on most +Unixes.

+ +

AUTHOR + +

+ + +

Written by +crony12, Hotbird64 and vityan666. With contributions from +DougQaid.

+ +

CREDITS + +

+ + +

Thanks to +CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, +Ratiborus, ...

+ +

SEE ALSO + +

+ + + +

vlmcsd.ini(5), +vlmcsd(7), vlmcs(1), vlmcsdmulti(1)

+
+ + diff --git a/vlmcsd.8.pdf b/vlmcsd.8.pdf new file mode 100644 index 00000000..7fde8c85 Binary files /dev/null and b/vlmcsd.8.pdf differ diff --git a/vlmcsd.8.unix.txt b/vlmcsd.8.unix.txt new file mode 100644 index 00000000..9f6492ab --- /dev/null +++ b/vlmcsd.8.unix.txt @@ -0,0 +1,523 @@ +VLMCSD(8) KMS Activation Manual VLMCSD(8) + + + +NAME + vlmcsd - a fully Microsoft compatible KMS server + + +SYNOPSIS + vlmcsd [ options ] + + +DESCRIPTION + vlmcsd is a fully Microsoft compatible KMS server that provides product + activation services to clients. It is meant as a drop-in replacement + for a Microsoft KMS server (Windows computer with KMS key entered). It + currently supports KMS protocol versions 4, 5 and 6. + + vlmcsd is designed to run on POSIX compatible operating systens. It + only requires a basic C library with a BSD-style sockets API and either + fork(2) or pthreads(7). That allows it to run on most embedded systems + like routers, NASes, mobile phones, tablets, TVs, settop boxes, etc. + Some efforts have been made that it also runs on Windows. + + Although vlmcsd does neither require an activation key nor a payment to + anyone, it is not meant to run illegal copies of Windows. Its purpose + is to ensure that owners of legal copies can use their software without + restrictions, e.g. if you buy a new computer or motherboard and your + key will be refused activation from Microsoft servers due to hardware + changes. + + vlmcsd may be started via an internet superserver like inetd(8) or + xinetd(8) as well as an advanced init system like systemd(8) or + launchd(8) using socket based activation. If vlmcsd detects that + stdin(3) is a socket, it assumes that there is already a connected + client on stdin that wants to be activated. All options that control + setting up listening sockets will be ignored when in inetd mode. + + +OPTIONS + Since vlmcsd can be configured at compile time, some options may not be + available on your system. + + All options that do no require an argument may be combined with a sin‐ + gle dash, for instance "vlmcsd -D -e" is identical to "vlmcsd -De". For + all options that require an argument a space between the option and the + option argument is optional. Thus "vlmcsd -r 2" and "vlmcsd -r2" are + identical too. + + + -h or -? + Displays help. + + + -L ipaddress[:port] + Instructs vlmcsd to listen on ipaddress with optional port + (default 1688). You can use this option more than once. If you + do not specify -L at least once, IP addresses 0.0.0.0 (IPv4) and + :: (IPv6) are used. If the IP address contains colons (IPv6) you + must enclose the IP address in brackets if you specify the + optional port, e.g. [2001:db8::dead:beef]:1688. + + If no port is specified, vlmcsd uses the default port according + to a preceding -P option. If you specify a port, it can be a + number (1-65535) or a name (usually found in /etc/services if + not provided via LDAP, NIS+ or another name service). + + If you specify a link local IPv6 address (fe80::/10, usually + starting with fe80::), it must be followed by a percent sign (%) + and a scope id (=network interface name or number) on most + unixoid OSses including Linux, Android, MacOS X and iOS, e.g. + fe80::1234:56ff:fe78:9abc%eth0 or + [fe80::1234:56ff:fe78:9abc%2]:1688. Windows (including cygwin) + does not require a scope id unless the same link local address + is used on more than one network interface. Windows does not + accept a name and the scope id must be a number. + + + -P port + Use TCP port for all subsequent -L statements that do not + include an optional port. If you use -P and -L, -P must be spec‐ + ified before -L. + + + -4 and -6 + Used to control the use of IPv4 and IPv4 if you did not use -L. + If you specify both -4 and -6 or none, vlmcsd uses both proto‐ + cols. If you specify only one, that protocol will be used only. + These options are deprecated and will be removed. + + + -I This option is deprecated and does nothing. It is provided for + compatibility with svn681 and earlier versions only. It will be + removed in a future release. + + + -t seconds + Timeout the TCP connection with the client after seconds sec‐ + onds. After sending an activation request. RPC keeps the TCP + connection for a while. The default is 30 seconds. You may spec‐ + ify a shorter period to free ressources on your device faster. + This is useful for devices with limited main memory or if you + used -m to limit the concurrent clients that may request activa‐ + tion. Microsoft RPC clients disconnect after 30 seconds by + default. Setting seconds to a greater value does not make much + sense. + + + -m concurrent-clients + Limit the number of clients that will be handled concurrently. + This is useful for devices with limited ressources or if you are + experiencing DoS attacks that spawn thousands of threads or + forked processes. If additional clients connect to vlmcsd, they + need to wait until another client disconnects. If you set con‐ + current-clients to a small value ( <10 ), you should also select + a reasonable timeout of 2 or 3 seconds with -t. The default is + no limit. + + + -d Disconnect each client after processing one activation request. + This is a direct violation of DCE RPC but may help if you + receive malicous fake RPC requests that block your threads or + forked processes. Some other KMS emulators (e.g. py-kms) behave + this way. + + + -k Do not disconnect clients after processing an activation + request. This selects the default behavior. -k is useful only if + you used an ini file (see vlmcsd.ini(5) and -i). If the ini file + contains the line "DisconnectClientsImmediately = true", you can + use this switch to restore the default behavior. + + + -N0 and -N1 + Disables (-N0) or enables (-N1) the use of the NDR64 transfer + syntax in the RPC protocol. Unlike Microsoft vlmcsd supports + NDR64 on 32-bit operating systems. Microsoft introduced NDR64 in + Windows Vista but their KMS servers started using it with Win‐ + dows 8. Thus if you choose random ePIDs, vlmcsd will select + ePIDs with build numbers 9200 and 9600 if you enable NDR64 and + build numbers 6002 and 7601 if you disable NDR64. The default is + to enable NDR64. + + + -B0 and -B1 + Disables (-B0) or enables (-B1) bind time feature negotiation + (BTFN) in the RPC protocol. All Windows operating systems start‐ + ing with Vista support BTFN and try to negotiate it when initi‐ + ating an RPC connection. Thus consider turning it off as a debug + / troubleshooting feature only. Some older firewalls that selec‐ + tively block or redirect RPC traffic may get confused when they + detect NDR64 or BTFN. + + + -l filename + Use filename as a log file. The log file records all activations + with IP address, Windows workstation name (no reverse DNS + lookup), activated product, KMS protocol, time and date. If you + do not specify a log file, no log is created. For a live view of + the log file type tail -f file. + + If you use the special filename "syslog", vlmcsd uses syslog(3) + for logging. If your system has no syslog service (/dev/log) + installed, logging output will go to /dev/console. Syslog log‐ + ging is not available in the native Windows version. The Cygwin + version does support syslog logging. + + + -D Normally vlmcsd daemonizes and runs in background (except the + native Windows version). If -D is specified, vlmcsd does not + daemonize and runs in foreground. This is useful for testing and + allows you to simply press to exit vlmcsd. + + The native Windows version never daemonizes and always behaves + as if -D had been specified. You may want to install vlmcsd as a + service instead. See -s. + + + -e If specified, vlmcsd ignores -l and writes all logging output to + stdout(3). This is mainly useful for testing and debugging and + often combined with -D. + + + -f This flag combines -D and -e. So typing "vlmcsd -f" is identical + to "vlmcsd -De". The purpose of -f is to provide compatibility + with previous versions of vlmcsd. This option is deprecated and + will be removed. + + + -v Use verbose logging. Logs every parameter of the base request + and the base response. It also logs the HWID of the KMS server + if KMS protocol version 6 is used. This option is mainly for + debugging purposes. It only has an effect if some form of log‐ + ging is used. Thus -v does not make sense if not used with -l, + -e or -f. + + + -q Do not use verbose logging. This is actually the default behav‐ + ior. It only makes sense if you use vlmcsd with an ini file (see + -i and vlmcsd.ini(5)). If the ini file contains the line + "LogVerbose = true" you can use -q to restore the default behav‐ + ior. + + + -p filename + Create pid file filename. This has nothing to do with KMS ePIDs. + A pid file is a file where vlmcsd writes its own process id. + This is used by standard init scripts (typically found in + /etc/init.d). The default is not to write a pid file. + + + -u user and -g group + Causes vlmcsd to run in the specified user and group security + context. The main purpose for this is to drop root privileges + after it has been started from the root account. To use this + feature from cygwin you must run cyglsa-config and the account + from which vlmcsd is started must have the rights "Act as part + of the operating system" and "Replace a process level token". + The native Windows version does not support these options. + + The actual security context switch is performed after the TCP + sockets have been created. This allows you to use privileged + ports (< 1024) when you start vlmcsd from the root account. + + However if you use an ini, pid or log file, you must ensure that + the unprivileged user has access to these files. You can always + log to syslog(3) from an unprivileged account on most platforms + (see -l). + + + -w ePID + Use ePID as Windows ePID. If specified, -r is disregarded for + Windows. + + + -0 ePID + Use ePID as Office 2010 ePID (including Project and Visio). If + specified, -r is disregarded for Office 2010. + + + -3 ePID + Use ePID as Office 2013 ePID (including Project and Visio). If + specified, -r is disregarded for Office 2013. + + + -H HwId + Use HwId for all products. All HWIDs in the ini file (see -i) + will not be used. In an ini file you can specify a seperate HWID + for each application-guid. This is not possible when entering a + HWID from the command line. + + HwId must be specified as 16 hex digits that are interpreted as + a series of 8 bytes (big endian). Any character that is not a + hex digit will be ignored. This is for better readability. The + following commands are identical: + + vlmcsd -H 0123456789ABCDEF + vlmcsd -H 01:23:45:67:89:ab:cd:ef + vlmcsd -H "01 23 45 67 89 AB CD EF" + + + -i filename + Use configuration file (aka ini file) filename. Most configura‐ + tion parameters can be set either via the command line or an ini + file. The command line always has precedence over configuration + items in the ini file. See vlmcsd.ini(5) for the format of the + configuration file. + + If vlmcsd has been compiled to use a default configuration file + (often /etc/vlmcsd.ini), you may use -i- to ignore the default + configuration file. + + + -r0, -r1 (default) and -r2 + These options determine how ePIDs are generated if + + - you did not sprecify an ePID in the command line and + - you haven't used -i or + - the file specified by -i cannot be opened or + - the file specified by -i does not contain the application-guid + for the KMS request + + -r0 means there are no random ePIDs. vlmcsd simply issues + default ePIDs that are built into the binary at compile time. + Pro: behaves like real KMS server that also always issues the + same ePID. Con: Microsoft may start blacklisting again and the + default ePID may not work any longer. + + -r1 instructs vlmcsd to generate random ePIDs when the program + starts or receives a SIGHUP signal and uses these ePIDs until it + is stopped or receives another SIGHUP. Most other KMS emulators + generate a new ePID on every KMS request. This is easily + detectable. Microsoft could just modify sppsvc.exe in a way that + it always sends two identical KMS requests in two RPC requests + but over the same TCP connection. If both KMS responses contain + the different ePIDs, the KMS server is not genuine. -r1 is the + default mode. -r1 also ensures that all three ePIDs (Windows, + Office 2010 and Office 2013) use the same OS build number and + LCID (language id). + + If vlmcsd has been started by an internet superserver, -r1 works + identically to -r2. This is simply due to the fact that vlmcsd + is started upon a connection request and does not stay in memory + after servicing a KMS request. + + -r2 behaves like most other KMS server emulators with random + support and generates a new random ePID on every request. Use + this mode with "care". However since Microsoft currently does + not seem to do any verification of the ePID, you currently don't + need to pay attention to ePIDs at all. + + + -C LCID + Do not randomize the locale id part of the ePID and use LCID + instead. The LCID must be specified as a decimal number, e.g. + 1049 for "Russian - Russia". This option has no effect if the + ePID is not randomized at all, e.g. if it is selected from the + command line or an ini file. + + By default vlmcsd generates a valid locale id that is recognized + by .NET Framework 4.0. This may lead to a locale id which is + unlikely to occur in your country, for instance 2155 for "Quecha + - Ecuador". You may want to select the locale id of your country + instead. See MSDN ⟨http://msdn.microsoft.com/en-us/goglobal/ + bb964664.aspx⟩ for a list of valid LCIDs. Please note that some + of them are not recognized by .NET Framework 4.0. + + Most other KMS emulators use a fixed LCID of 1033 (English - + US). To achive the same behavior in vlmcsd use -C 1033. + + + -R renewal-interval + Instructs clients to renew activation every renewal-interval. + The renewal-interval is a number optionally immediately followed + by a letter indicating the unit. Valid unit letters are s (sec‐ + onds), m (minutes), h (hours), d (days) and w (weeks). If you do + not specify a letter, minutes is assumed. + + -R3d for instance instructs clients to renew activation every 3 + days. The default renewal-interval is 10080 (identical to 7d and + 1w). + + Due to poor implementation of Microsofts KMS Client it cannot be + guaranteed that activation is renewed on time as specfied by the + -R option. Don't care about that. Renewal will happen well + before your activation expires (usually 180 days). + + Even though you can specify seconds, the granularity of this + option is 1 minute. Seconds are rounded down to the next multi‐ + ple of 60. + + + -A activation-interval + Instructs clients to retry activation every activation-interval + if it was unsuccessful, e.g. because it could not reach the + server. The default is 120 (identical to 2h). activation-inter‐ + val follows the same syntax as renewal-interval in the -R + option. + + + -s Installs vlmcsd as a Windows service. This option only works + with the native Windows version and Cygwin. Combine -s with + other command line options. These will be in effect when you + start the service. The service automatically starts when you + reboot your machine. To start it manually, type "net start vlm‐ + csd". + + If you use Cygwin, you must include your Cygwin system DLL + directory (usually C:\Cygwin\bin or C:\Cygwin64\bin) into the + PATH environment variable or the service will not start. + + You can reinstall the service anytime using vlmcsd -s again, + e.g. with a different command line. If the service is running, + it will be restarted with the new command line. + + When using -s the command line is checked for basic syntax + errors only. For example "vlmcsd -s -L 1.2.3.4" reports no error + but the service will not start if 1.2.3.4 is not an IP address + on your system. + + + -S Uninstalls the vlmcsd service. Works only with the native Win‐ + dows version and Cygwin. All other options will be ignored if + you include -S in the command line. + + + -U [domain\]username + Can only be used together with -s. Starts the service as a dif‐ + ferent user than the local SYSTEM account. This is used to run + the service under an account with low privileges. If you omit + the domain, an account from the local computer will be used. + + You may use "NT AUTHORITY\NetworkService". This is a pseudo user + with low privileges. You may also use "NT AUTHORITY\LocalSer‐ + vice" which has more privileges but these are of no use for run‐ + ning vlmcsd. + + Make sure that the user you specify has at least execute permis‐ + sion for your executable. "NT AUTHORITY\NetworkService" normally + has no permission to run binaries from your home directory. + + For your convenience you can use the special username "/l" as a + shortcut for "NT AUTHORITY\LocalService" and "/n" for "NT + AUTHORITY\NetworkService". "vlmcsd -s -U /n" installs the ser‐ + vice to run as "NT AUTHORITY\NetworkService". + + + -W password + Can only be used together with -s. Specifies a password for the + corresponding username you use with -U. SYSTEM, "NT AUTHOR‐ + ITY\NetworkService", "NT AUTHORITY\LocalService" do not require + a password. + + If you specify a user with even lower privileges than "NT + AUTHORITY\NetworkService", you must specify its password. You + also have to grant the "Log on as a service" right to that user. + + +SIGNALS + The following signals differ from the default behavior: + + + SIGTERM, SIGINT + These signals cause vlmcsd to exit gracefully. All global sema‐ + phores and shared memory pages will be released, the pid file + will be unlinked (deleted) and a shutdown message will be + logged. + + + SIGHUP Causes vlmcsd to be restarted completely. This is useful if you + started vlmcsd with an ini file. You can modify the ini file + while vlmcsd is running and then sending SIGHUP, e.g. by typing + "killall -SIGHUP vlmcsd" or "kill -SIGHUP `cat /var/run/vlm‐ + csd.pid`". + + The SIGHUP handler has been implemented relatively simple. It is + virtually the same as stopping vlmcsd and starting it again + immediately with the following exceptions: + + + — The new process does not get a new process id. + + — If you used a pid file, it is not deleted and recreated + because the process id stays the same. + + — If you used the 'user' and/or 'group' directive in an ini + file these are ignored. This is because once you switched to + lower privileged users and groups, there is no way back. Any‐ + thing else would be a severe security flaw in the OS. + + Signaling is not available in the native Windows version and in the + Cygwin version when it runs as Windows service. + + +SUPPORTED OPERATING SYSTEMS + vlmcsd compiles and runs on Linux, Windows (no Cygwin required but + explicitly supported), Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, + Solaris, OpenIndiana, Android and iOS. Other POSIX or unixoid OSses may + work with unmodified sources or may require minor porting efforts. + + +SUPPORTED PRODUCTS + vlmcsd can answer activation requests for the following products: Win‐ + dows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows + Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows + Server 2012 R2, Office 2010, Project 2010, Visio 2010, Office 2013, + Project 2013, Visio 2013. + + Office, Project and Visio must be volume license versions. + + +FILES + vlmcsd.ini(5) + + +EXAMPLES + vlmcsd -f + Starts vlmcsd in foreground. Useful if you use it for the first + time and want to see what's happening when a client requests + activation. + + + vlmcsd -l /var/log/vlmcsd.log + Starts vlmcsd as a daemon and logs everything to /var/log/vlm‐ + csd.log. + + + vlmcsd -L 192.168.1.17 + Starts vlmcsd as a daemon and listens on IP address 192.168.1.17 + only. This is useful for routers that have a public and a pri‐ + vate IP address to prevent your KMS server from becoming public. + + + vlmcsd -s -U /n -l C:\logs\vlmcsd.log + Installs vlmcsd as a Windows service with low privileges and + logs everything to C:\logs\vlmcsd.log when the service is + started with "net start vlmcsd". + + +BUGS + An ePID specified in an ini file must not contain spaces. + + The maximum number of -L options in the command line or listen state‐ + ments in the inifile is the platform default for FD_SETSIZE. This is 64 + on Windows and 1024 on most Unixes. + + +AUTHOR + Written by crony12, Hotbird64 and vityan666. With contributions from + DougQaid. + + +CREDITS + Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐ + borus, ... + + +SEE ALSO + vlmcsd.ini(5), vlmcsd(7), vlmcs(1), vlmcsdmulti(1) + + + +Hotbird64 July 2015 VLMCSD(8) diff --git a/vlmcsd.c b/vlmcsd.c new file mode 100644 index 00000000..63ef423e --- /dev/null +++ b/vlmcsd.c @@ -0,0 +1,1685 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if defined(USE_MSRPC) && !defined(_WIN32) && !defined(__CYGWIN__) +#error Microsoft RPC is only available on Windows and Cygwin +#endif + +#if defined(NO_SOCKETS) && defined(USE_MSRPC) +#error Cannot use inetd mode with Microsoft RPC +#endif + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#include +#include + +#if !defined(NO_LIMIT) && !__minix__ +#include +#if !__ANDROID__ +#include +#else // __ANDROID__ +#include +#endif // __ANDROID__ +#endif // !defined(NO_LIMIT) && !__minix__ + +#include +#include +#include +#include +#include +#endif // !_WIN32 + +#if __APPLE__ +#include +#endif // __APPLE__ + +#if __linux__ && defined(USE_AUXV) +#include +#endif + +#if __FreeBSD__ +#include +#endif + +#include "vlmcsd.h" +#include "endian.h" +#include "shared_globals.h" +#include "output.h" +#ifndef USE_MSRPC +#include "network.h" +#else // USE_MSRPC +#include "msrpc-server.h" +#endif // USE_MSRPC +#include "ntservice.h" +#include "helpers.h" + + +static const char* const optstring = "N:B:m:t:w:0:3:H:A:R:u:g:L:p:i:P:l:r:U:W:C:SsfeDd46VvIdqkZ"; + +#if !defined(NO_SOCKETS) +#if !defined(USE_MSRPC) +static uint_fast8_t maxsockets = 0; +static int_fast8_t haveIPv6Stack = 0; +static int_fast8_t haveIPv4Stack = 0; +static int_fast8_t v6required = 0; +static int_fast8_t v4required = 0; +#endif // !defined(USE_MSRPC) +#endif // !defined(NO_SOCKETS) + +#ifdef _NTSERVICE +static int_fast8_t installService = 0; +static const char *restrict ServiceUser = NULL; +static const char *restrict ServicePassword = ""; +#endif + +#ifndef NO_PID_FILE +static const char *fn_pid = NULL; +#endif + +#ifndef NO_INI_FILE + +#ifdef INI_FILE +static const char *fn_ini = INI_FILE; +#else // !INI_FILE +static const char *fn_ini = NULL; +#endif // !INI_FILE + +static const char* IniFileErrorMessage = ""; +char* IniFileErrorBuffer = NULL; +#define INIFILE_ERROR_BUFFERSIZE 256 + +static IniFileParameter_t IniFileParameterList[] = +{ +# ifndef NO_RANDOM_EPID + { "RandomizationLevel", INI_PARAM_RANDOMIZATION_LEVEL }, + { "LCID", INI_PARAM_LCID }, +# endif // NO_RANDOM_EPID +# ifdef USE_MSRPC + { "Port", INI_PARAM_PORT }, +# endif // USE_MSRPC +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + { "Listen", INI_PARAM_LISTEN }, +# if !defined(NO_LIMIT) && !__minix__ + { "MaxWorkers", INI_PARAM_MAX_WORKERS }, +# endif // !defined(NO_LIMIT) && !__minix__ +# endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) +# if !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC) + { "ConnectionTimeout", INI_PARAM_CONNECTION_TIMEOUT }, +# endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC) +# ifndef USE_MSRPC + { "DisconnectClientsImmediately", INI_PARAM_DISCONNECT_IMMEDIATELY }, + { "UseNDR64", INI_PARAM_RPC_NDR64 }, + { "UseBTFN", INI_PARAM_RPC_BTFN }, +# endif // USE_MSRPC +# ifndef NO_PID_FILE + { "PIDFile", INI_PARAM_PID_FILE }, +# endif // NO_PID_FILE +# ifndef NO_LOG + { "LogFile", INI_PARAM_LOG_FILE }, +# ifndef NO_VERBOSE_LOG + { "LogVerbose", INI_PARAM_LOG_VERBOSE }, +# endif // NO_VERBOSE_LOG +# endif // NO_LOG +# ifndef NO_CUSTOM_INTERVALS + {"ActivationInterval", INI_PARAM_ACTIVATION_INTERVAL }, + {"RenewalInterval", INI_PARAM_RENEWAL_INTERVAL }, +# endif // NO_CUSTOM_INTERVALS +# if !defined(NO_USER_SWITCH) && !defined(_WIN32) + { "user", INI_PARAM_UID }, + { "group", INI_PARAM_GID}, +# endif // !defined(NO_USER_SWITCH) && !defined(_WIN32) +}; + +#endif // NO_INI_FILE + + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#if !defined(USE_THREADS) && !defined(CYGWIN) && !defined(USE_MSRPC) +static int shmid = -1; +#endif + +#if __ANDROID__ && !defined(USE_THREADS) // Bionic does not wrap these syscalls (willingly because Google fears, developers don't know how to use it) + +#ifdef __NR_shmget +static int shmget(key_t key, size_t size, int shmflg) +{ + return syscall(__NR_shmget, key, size, shmflg); +} +#endif // __NR_shmget + +#ifdef __NR_shmat +static void *shmat(int shmid, const void *shmaddr, int shmflg) +{ + return (void *)syscall(__NR_shmat, shmid, shmaddr, shmflg); +} +#endif // __NR_shmat + +#ifdef __NR_shmdt +static int shmdt(const void *shmaddr) +{ + return syscall(__NR_shmdt, shmaddr); +} +#endif // __NR_shmdt + +#ifdef __NR_shmctl +static int shmctl(int shmid, int cmd, /*struct shmid_ds*/void *buf) +{ + return syscall(__NR_shmctl, shmid, cmd, buf); +} +#endif // __NR_shmctl + +#endif // __ANDROID__ && !defined(USE_THREADS) + +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_USER_SWITCH +#ifndef _WIN32 + +static const char *uname = NULL, *gname = NULL; +static gid_t gid = INVALID_GID; +static uid_t uid = INVALID_UID; + +// Get Numeric id of user/group +static char GetNumericId(gid_t *restrict id, const char *const c) +{ + char* endptr; + gid_t temp; + + temp = (gid_t)strtoll(c, &endptr, 10); + + if (!*endptr) *id = temp; + + return *endptr; +} + + +// Get group id from option argument +static char GetGid() +{ + struct group *g; + + if ((g = getgrnam(optarg))) + gid = g->gr_gid; + else + return GetNumericId(&gid, optarg); + + return 0; +} + + +// Get user id from option argument +static char GetUid() +{ + struct passwd *u; + + ////PORTABILITY: Assumes uid_t and gid_t are of same size (shouldn't be a problem) + if ((u = getpwnam(optarg))) + uid = u->pw_uid; + else + return GetNumericId((gid_t*)&uid, optarg); + + return 0; +} +#endif // _WIN32 +#endif //NO_USER_SWITCH + +#ifdef NO_HELP +static __noreturn void usage() +{ + printerrorf("Incorrect parameters\n\n"); + exit(!0); +} +#else // HELP + + +static __noreturn void usage() +{ + printerrorf("vlmcsd %s\n" + "\nUsage:\n" + " %s [ options ]\n\n" + "Where:\n" + #ifndef NO_CL_PIDS + " -w always use for Windows\n" + " -0 always use for Office2010\n" + " -3 always use for Office2013\n" + " -H always use hardware Id \n" + #endif // NO_CL_PIDS + #if !defined(_WIN32) && !defined(NO_USER_SWITCH) + " -u set uid to \n" + " -g set gid to \n" + #endif // !defined(_WIN32) && !defined(NO_USER_SWITCH) + #ifndef NO_RANDOM_EPID + " -r 0|1|2\t\tset ePID randomization level (default 1)\n" + " -C \t\tuse fixed in random ePIDs\n" + #endif // NO_RANDOM_EPID + #ifndef NO_SOCKETS + #ifndef USE_MSRPC + " -4\t\t\tuse IPv4\n" + " -6\t\t\tuse IPv6\n" + " -L
[:]\tlisten on IP address
with optional \n" + " -P \t\tset TCP port for subsequent -L statements (default 1688)\n" + #else // USE_MSRPC + " -P \t\tuse TCP port (default 1688)\n" + #endif // USE_MSRPC + #if !defined(NO_LIMIT) && !__minix__ + " -m \t\tHandle max. simultaneously (default no limit)\n" + #endif // !defined(NO_LIMIT) && !__minix__ + #ifdef _NTSERVICE + " -s install vlmcsd as an NT service. Ignores -e" + #ifndef _WIN32 + ", -f and -D" + #endif // _WIN32 + "\n" + " -S remove vlmcsd service. Ignores all other options\n" + " -U run NT service as . Must be used with -s\n" + " -W optional for -U. Must be used with -s\n" + #endif // _NTSERVICE + #ifndef NO_LOG + " -e log to stdout\n" + #endif // NO_LOG + #ifndef _WIN32 // + " -D run in foreground\n" + " -f run in foreground" + #ifndef NO_LOG + " and log to stdout" + #endif // NO_LOG + "\n" + #endif // _WIN32 + #endif // NO_SOCKETS + #ifndef USE_MSRPC + #if !defined(NO_TIMEOUT) && !__minix__ + " -t \t\tdisconnect clients after of inactivity (default 30)\n" + #endif // !defined(NO_TIMEOUT) && !__minix__ + " -d\t\t\tdisconnect clients after each request\n" + " -k\t\t\tdon't disconnect clients after each request (default)\n" + " -N0, -N1\t\tdisable/enable NDR64\n" + " -B0, -B1\t\tdisable/enable bind time feature negotiation\n" + #endif // USE_MSRPC + #ifndef NO_PID_FILE + " -p write pid to \n" + #endif // NO_PID_FILE + #ifndef NO_INI_FILE + " -i \t\tuse config file \n" + #endif // NO_INI_FILE + #ifndef NO_CUSTOM_INTERVALS + " -R renew activation every (default 1w)\n" + " -A retry activation every (default 2h)\n" + #endif // NO_CUSTOM_INTERVALS + #ifndef NO_LOG + #ifndef _WIN32 + " -l syslog log to syslog\n" + #endif // _WIN32 + " -l log to \n" + #ifndef NO_VERBOSE_LOG + " -v\t\t\tlog verbose\n" + " -q\t\t\tdon't log verbose (default)\n" + #endif // NO_VERBOSE_LOG + #endif // NO_LOG + " -V display version information and exit" + "\n", + Version, global_argv[0]); + + exit(!0); +} +#endif // HELP + + +#ifndef NO_CUSTOM_INTERVALS + +// Convert time span strings (e.g. "2h", "5w") to minutes +__pure static DWORD timeSpanString2Minutes(const char *const restrict argument) +{ + char *unitId; + + long long val = strtoll(argument, &unitId, 10); + + switch(toupper((int)*unitId)) + { + case 0: + case 'M': + break; + case 'H': + val *= 60; + break; + case 'D': + val *= 60 * 24; + break; + case 'W': + val *= 60 * 24 * 7; + break; + case 'S': + val /= 60; + break; + default: + return 0; + } + + if (val < 1) val = 1; + if (val > UINT_MAX) val = UINT_MAX; + + return (DWORD)val; +} + + +#ifndef NO_INI_FILE +__pure static BOOL getTimeSpanFromIniFile(DWORD* result, const char *const restrict argument) +{ + DWORD val = timeSpanString2Minutes(argument); + if (!val) + { + IniFileErrorMessage = "Incorrect time span."; + return FALSE; + } + + *result = val; + return TRUE; +} +#endif // NO_INI_FILE + + +__pure static DWORD getTimeSpanFromCommandLine(const char *const restrict optarg, const char optchar) +{ + long long val = timeSpanString2Minutes(optarg); + + if (!val) + { + printerrorf("Fatal: No valid time span specified in option -%c.\n", optchar); + exit (!0); + } + + return (DWORD)val; +} + +#endif // NO_CUSTOM_INTERVALS + + +#ifndef NO_INI_FILE +static void ignoreIniFileParameter(uint_fast8_t iniFileParameterId) +{ + uint_fast8_t i; + + for (i = 0; i < _countof(IniFileParameterList); i++) + { + if (IniFileParameterList[i].Id != iniFileParameterId) continue; + IniFileParameterList[i].Id = 0; + break; + } +} +#else // NO_INI_FILE +#define ignoreIniFileParameter(x) +#endif // NO_INI_FILE + + +#ifndef NO_INI_FILE +static BOOL getIniFileArgumentBool(int_fast8_t *result, const char *const argument) +{ + IniFileErrorMessage = "Argument must be true/on/yes/1 or false/off/no/0"; + return getArgumentBool(result, argument); +} + + +static BOOL getIniFileArgumentInt(unsigned int *result, const char *const argument, const unsigned int min, const unsigned int max) +{ + unsigned int tempResult; + + if (!stringToInt(argument, min, max, &tempResult)) + { + snprintf(IniFileErrorBuffer, INIFILE_ERROR_BUFFERSIZE, "Must be integer between %u and %u", min, max); + IniFileErrorMessage = IniFileErrorBuffer; + return FALSE; + } + + *result = tempResult; + return TRUE; +} + + +static char* allocateStringArgument(const char *const argument) +{ + char* result = (char*)vlmcsd_malloc(strlen(argument) + 1); + strcpy(result, argument); + return result; +} + + +static BOOL setIniFileParameter(uint_fast8_t id, const char *const iniarg) +{ + unsigned int result; + BOOL success = TRUE; + + switch(id) + { +# if !defined(NO_USER_SWITCH) && !defined(_WIN32) + + case INI_PARAM_GID: + { + struct group *g; + IniFileErrorMessage = "Invalid group id or name"; + if (!(gname = allocateStringArgument(iniarg))) return FALSE; + + if ((g = getgrnam(iniarg))) + gid = g->gr_gid; + else + success = !GetNumericId(&gid, iniarg); + break; + } + + case INI_PARAM_UID: + { + struct passwd *p; + IniFileErrorMessage = "Invalid user id or name"; + if (!(uname = allocateStringArgument(iniarg))) return FALSE; + + if ((p = getpwnam(iniarg))) + uid = p->pw_uid; + else + success = !GetNumericId(&uid, iniarg); + break; + } + +# endif // !defined(NO_USER_SWITCH) && !defined(_WIN32) + +# ifndef NO_RANDOM_EPID + + case INI_PARAM_LCID: + success = getIniFileArgumentInt(&result, iniarg, 0, 32767); + if (success) Lcid = (uint16_t)result; + break; + + case INI_PARAM_RANDOMIZATION_LEVEL: + success = getIniFileArgumentInt(&result, iniarg, 0, 2); + if (success) RandomizationLevel = (int_fast8_t)result; + break; + +# endif // NO_RANDOM_EPID + +# ifdef USE_MSRPC + + case INI_PARAM_PORT: + defaultport = allocateStringArgument(iniarg); + break; + +# endif // USE_MSRPC + +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + case INI_PARAM_LISTEN: + maxsockets++; + return TRUE; + +# if !defined(NO_LIMIT) && !__minix__ + + case INI_PARAM_MAX_WORKERS: +# ifdef USE_MSRPC + success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT); +# else // !USE_MSRPC + success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, SEM_VALUE_MAX); +# endif // !USE_MSRPC + break; + +# endif // !defined(NO_LIMIT) && !__minix__ +# endif // NO_SOCKETS + +# ifndef NO_PID_FILE + + case INI_PARAM_PID_FILE: + fn_pid = allocateStringArgument(iniarg); + break; + +# endif // NO_PID_FILE + +# ifndef NO_LOG + + case INI_PARAM_LOG_FILE: + fn_log = allocateStringArgument(iniarg); + break; + +# ifndef NO_VERBOSE_LOG + case INI_PARAM_LOG_VERBOSE: + success = getIniFileArgumentBool(&logverbose, iniarg); + break; + +# endif // NO_VERBOSE_LOG +# endif // NO_LOG + +# ifndef NO_CUSTOM_INTERVALS + + case INI_PARAM_ACTIVATION_INTERVAL: + success = getTimeSpanFromIniFile(&VLActivationInterval, iniarg); + break; + + case INI_PARAM_RENEWAL_INTERVAL: + success = getTimeSpanFromIniFile(&VLRenewalInterval, iniarg); + break; + +# endif // NO_CUSTOM_INTERVALS + +# ifndef USE_MSRPC + +# if !defined(NO_TIMEOUT) && !__minix__ + + case INI_PARAM_CONNECTION_TIMEOUT: + success = getIniFileArgumentInt(&result, iniarg, 1, 600); + if (success) ServerTimeout = (DWORD)result; + break; + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + case INI_PARAM_DISCONNECT_IMMEDIATELY: + success = getIniFileArgumentBool(&DisconnectImmediately, iniarg); + break; + + case INI_PARAM_RPC_NDR64: + success = getIniFileArgumentBool(&UseRpcNDR64, iniarg); + break; + + case INI_PARAM_RPC_BTFN: + success = getIniFileArgumentBool(&UseRpcBTFN, iniarg); + break; + +# endif // USE_MSRPC + + default: + return FALSE; + } + + return success; +} + + +static __pure int isControlCharOrSlash(const char c) +{ + if ((unsigned char)c < '!') return !0; + if (c == '/') return !0; + return 0; +} + + +static void iniFileLineNextWord(const char **s) +{ + while ( **s && isspace((int)**s) ) (*s)++; +} + + +static BOOL setHwIdFromIniFileLine(const char **s, const ProdListIndex_t index) +{ + iniFileLineNextWord(s); + + if (**s == '/') + { + if (KmsResponseParameters[index].HwId) return TRUE; + + BYTE* HwId = (BYTE*)vlmcsd_malloc(sizeof(((RESPONSE_V6 *)0)->HwId)); + hex2bin(HwId, *s + 1, sizeof(((RESPONSE_V6 *)0)->HwId)); + KmsResponseParameters[index].HwId = HwId; + } + + return TRUE; +} + + +static BOOL checkGuidInIniFileLine(const char **s, ProdListIndex_t *const index) +{ + GUID AppGuid; + + if (!string2Uuid(*s, &AppGuid)) return FALSE; + + (*s) += GUID_STRING_LENGTH; + getProductNameHE(&AppGuid, AppList, index); + + if (*index > getAppListSize() - 2) + { + IniFileErrorMessage = "Unknown App Guid."; + return FALSE; + } + + iniFileLineNextWord(s); + if ( *(*s)++ != '=' ) return FALSE; + + return TRUE; +} + + +static BOOL setEpidFromIniFileLine(const char **s, const ProdListIndex_t index) +{ + iniFileLineNextWord(s); + const char *savedPosition = *s; + uint_fast16_t i; + + for (i = 0; !isControlCharOrSlash(**s); i++) + { + if (utf8_to_ucs2_char((const unsigned char*)*s, (const unsigned char**)s) == (WCHAR)~0) + { + return FALSE; + } + } + + if (i < 1 || i >= PID_BUFFER_SIZE) return FALSE; + if (KmsResponseParameters[index].Epid) return TRUE; + + size_t size = *s - savedPosition + 1; + + char* epidbuffer = (char*)vlmcsd_malloc(size); + memcpy(epidbuffer, savedPosition, size - 1); + epidbuffer[size - 1] = 0; + + KmsResponseParameters[index].Epid = epidbuffer; + + #ifndef NO_LOG + KmsResponseParameters[index].EpidSource = fn_ini; + #endif //NO_LOG + + return TRUE; +} + + +static BOOL getIniFileArgument(const char **s) +{ + while (!isspace((int)**s) && **s != '=' && **s) (*s)++; + iniFileLineNextWord(s); + + if (*((*s)++) != '=') + { + IniFileErrorMessage = "'=' required after keyword."; + return FALSE; + } + + iniFileLineNextWord(s); + + if (!**s) + { + IniFileErrorMessage = "missing argument after '='."; + return FALSE; + } + + return TRUE; +} + + +static BOOL handleIniFileParameter(const char *s) +{ + uint_fast8_t i; + + for (i = 0; i < _countof(IniFileParameterList); i++) + { + if (strncasecmp(IniFileParameterList[i].Name, s, strlen(IniFileParameterList[i].Name))) continue; + if (!IniFileParameterList[i].Id) return TRUE; + + if (!getIniFileArgument(&s)) return FALSE; + + return setIniFileParameter(IniFileParameterList[i].Id, s); + } + + IniFileErrorMessage = "Unknown keyword."; + return FALSE; +} + + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +static BOOL setupListeningSocketsFromIniFile(const char *s) +{ + if (!maxsockets) return TRUE; + if (strncasecmp("Listen", s, 6)) return TRUE; + if (!getIniFileArgument(&s)) return TRUE; + + snprintf(IniFileErrorBuffer, INIFILE_ERROR_BUFFERSIZE, "Cannot listen on %s.", s); + IniFileErrorMessage = IniFileErrorBuffer; + return addListeningSocket(s); +} +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + +static BOOL readIniFile(const uint_fast8_t pass) +{ + char line[256]; + const char *s; + ProdListIndex_t appIndex; + unsigned int lineNumber; + uint_fast8_t lineParseError; + + FILE *restrict f; + BOOL result = TRUE; + + IniFileErrorBuffer = (char*)vlmcsd_malloc(INIFILE_ERROR_BUFFERSIZE); + + if ( !(f = fopen(fn_ini, "r") )) return FALSE; + + for (lineNumber = 1; (s = fgets(line, sizeof(line), f)); lineNumber++) + { + line[strlen(line) - 1] = 0; + + iniFileLineNextWord(&s); + if (*s == ';' || *s == '#' || !*s) continue; + +# ifndef NO_SOCKETS + if (pass == INI_FILE_PASS_1) +# endif // NO_SOCKETS + { + if (handleIniFileParameter(s)) continue; + + lineParseError = !checkGuidInIniFileLine(&s, &appIndex) || + !setEpidFromIniFileLine(&s, appIndex) || + !setHwIdFromIniFileLine(&s, appIndex); + } +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + else if (pass == INI_FILE_PASS_2) + { + lineParseError = !setupListeningSocketsFromIniFile(s); + } + else + { + return FALSE; + } +# endif // NO_SOCKETS + + if (lineParseError) + { + printerrorf("Warning: %s line %u: \"%s\". %s\n", fn_ini, lineNumber, line, IniFileErrorMessage); + continue; + } + } + + if (ferror(f)) result = FALSE; + + free(IniFileErrorBuffer); + fclose(f); + +# if !defined(NO_SOCKETS) && !defined(NO_LOG) + + if (pass == INI_FILE_PASS_1 && !InetdMode && result) + { +# ifdef _NTSERVICE + if (!installService) +# endif // _NTSERVICE + logger("Read ini file %s\n", fn_ini); + } + +# endif // !defined(NO_SOCKETS) && !defined(NO_LOG) + + return result; +} +#endif // NO_INI_FILE + + +#if !defined(NO_SOCKETS) +#if !defined(_WIN32) +#if !defined(NO_SIGHUP) +static void exec_self(char** argv) +{ +# if __linux__ && defined(USE_AUXV) + + char *execname_ptr = (char*)getauxval(AT_EXECFN); + if (execname_ptr) execv(execname_ptr, argv); + +# elif (__linux__ || __CYGWIN__) && !defined(NO_PROCFS) + + execv(realpath("/proc/self/exe", NULL), argv); + +# elif (__FreeBSD__) && !defined(NO_PROCFS) + + int mib[4]; + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PATHNAME; + mib[3] = -1; + char path[PATH_MAX + 1]; + size_t cb = sizeof(path); + if (!sysctl(mib, 4, path, &cb, NULL, 0)) execv(path, argv); + +# elif (__DragonFly__) && !defined(NO_PROCFS) + + execv(realpath("/proc/curproc/file", NULL), argv); + +# elif __NetBSD__ && !defined(NO_PROCFS) + + execv(realpath("/proc/curproc/exe", NULL), argv); + +# elif __sun__ + + const char* exename = getexecname(); + if (exename) execv(exename, argv); + +# elif __APPLE__ + + char path[PATH_MAX + 1]; + uint32_t size = sizeof(path); + if (_NSGetExecutablePath(path, &size) == 0) execv(path, argv); + +# else + + execvp(argv[0], argv); + +# endif +} + + +static void HangupHandler(const int signal_unused) +{ + int i; + int_fast8_t daemonize_protection = TRUE; + CARGV argv_in = multi_argv == NULL ? global_argv : multi_argv; + int argc_in = multi_argc == 0 ? global_argc : multi_argc; + const char** argv_out = (const char**)vlmcsd_malloc((argc_in + 2) * sizeof(char**)); + + for (i = 0; i < argc_in; i++) + { + if (!strcmp(argv_in[i], "-Z")) daemonize_protection = FALSE; + argv_out[i] = argv_in[i]; + } + + argv_out[argc_in] = argv_out[argc_in + 1] = NULL; + if (daemonize_protection) argv_out[argc_in] = (char*) "-Z"; + + exec_self((char**)argv_out); + +# ifndef NO_LOG + logger("Fatal: Unable to restart on SIGHUP: %s\n", strerror(errno)); +# endif + +# ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); +# endif // NO_PID_FILE + exit(errno); +} +#endif // NO_SIGHUP + + +static void terminationHandler(const int signal_unused) +{ + cleanup(); + exit(0); +} + + +#if defined(CHILD_HANDLER) || __minix__ +static void childHandler(const int signal) +{ + waitpid(-1, NULL, WNOHANG); +} +#endif // defined(CHILD_HANDLER) || __minix__ + + +static int daemonizeAndSetSignalAction() +{ + struct sigaction sa; + sigemptyset(&sa.sa_mask); + +# ifndef NO_LOG + if ( !nodaemon) if (daemon(!0, logstdout)) +# else // NO_LOG + if ( !nodaemon) if (daemon(!0, 0)) +# endif // NO_LOG + { + printerrorf("Fatal: Could not daemonize to background.\n"); + return(errno); + } + + if (!InetdMode) + { +# ifndef USE_THREADS + +# if defined(CHILD_HANDLER) || __minix__ + sa.sa_handler = childHandler; +# else // !(defined(CHILD_HANDLER) || __minix__) + sa.sa_handler = SIG_IGN; +# endif // !(defined(CHILD_HANDLER) || __minix__) + sa.sa_flags = SA_NOCLDWAIT; + + if (sigaction(SIGCHLD, &sa, NULL)) + return(errno); + +# endif // !USE_THREADS + + sa.sa_handler = terminationHandler; + sa.sa_flags = 0; + + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + +# ifndef NO_SIGHUP + sa.sa_handler = HangupHandler; + sa.sa_flags = SA_NODEFER; + sigaction(SIGHUP, &sa, NULL); +# endif // NO_SIGHUP + } + + return 0; +} + + +#else // _WIN32 + +static BOOL terminationHandler(const DWORD fdwCtrlType) +{ + // What a lame substitute for Unix signal handling + switch(fdwCtrlType) + { + case CTRL_C_EVENT: + case CTRL_CLOSE_EVENT: + case CTRL_BREAK_EVENT: + case CTRL_LOGOFF_EVENT: + case CTRL_SHUTDOWN_EVENT: + cleanup(); + exit(0); + default: + return FALSE; + } +} + + +static DWORD daemonizeAndSetSignalAction() +{ + if(!SetConsoleCtrlHandler( (PHANDLER_ROUTINE) terminationHandler, TRUE )) + { + #ifndef NO_LOG + DWORD rc = GetLastError(); + logger("Warning: Could not register Windows signal handler: Error %u\n", rc); + #endif // NO_LOG + } + + return ERROR_SUCCESS; +} +#endif // _WIN32 +#endif // !defined(NO_SOCKETS) + + +// Workaround for Cygwin fork bug (only affects cygwin processes that are Windows services) +// Best is to compile for Cygwin with threads. fork() is slow and unreliable on Cygwin +#if !defined(NO_INI_FILE) || !defined(NO_LOG) || !defined(NO_CL_PIDS) +__pure static char* getCommandLineArg(char *const restrict optarg) +{ + #if !defined (__CYGWIN__) || defined(USE_THREADS) || defined(NO_SOCKETS) + return optarg; + #else + if (!IsNTService) return optarg; + + return allocateStringArgument(optarg); + #endif +} +#endif // !defined(NO_INI_FILE) || !defined(NO_LOG) || !defined(NO_CL_PIDS) + + +static void parseGeneralArguments() { + int o; + + #ifndef NO_CL_PIDS + BYTE* HwId; + #endif // NO_CL_PIDS + + for (opterr = 0; ( o = getopt(global_argc, (char* const*)global_argv, optstring) ) > 0; ) switch (o) + { + #if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + case 'Z': + IsRestarted = TRUE; + nodaemon = TRUE; + break; + #endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + + #ifndef NO_CL_PIDS + case 'w': + KmsResponseParameters[APP_ID_WINDOWS].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_WINDOWS].EpidSource = "command line"; + #endif // NO_LOG + break; + + case '0': + KmsResponseParameters[APP_ID_OFFICE2010].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_OFFICE2010].EpidSource = "command line"; + #endif // NO_LOG + break; + + case '3': + KmsResponseParameters[APP_ID_OFFICE2013].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_OFFICE2013].EpidSource = "command line"; + #endif // NO_LOG + break; + + case 'H': + HwId = (BYTE*)vlmcsd_malloc(sizeof(((RESPONSE_V6 *)0)->HwId)); + + hex2bin(HwId, optarg, sizeof(((RESPONSE_V6 *)0)->HwId)); + + KmsResponseParameters[APP_ID_WINDOWS].HwId = HwId; + KmsResponseParameters[APP_ID_OFFICE2010].HwId = HwId; + KmsResponseParameters[APP_ID_OFFICE2013].HwId = HwId; + break; + #endif // NO_CL_PIDS + + #ifndef NO_SOCKETS + + #ifndef USE_MSRPC + case '4': + case '6': + case 'P': + ignoreIniFileParameter(INI_PARAM_LISTEN); + break; + #else // USE_MSRPC + case 'P': + defaultport = optarg; + ignoreIniFileParameter(INI_PARAM_PORT); + break; + #endif // USE_MSRPC + + #if !defined(NO_LIMIT) && !__minix__ + + case 'm': + #ifdef USE_MSRPC + MaxTasks = getOptionArgumentInt(o, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT); + #else // !USE_MSRPC + MaxTasks = getOptionArgumentInt(o, 1, SEM_VALUE_MAX); + #endif // !USE_MSRPC + ignoreIniFileParameter(INI_PARAM_MAX_WORKERS); + break; + + #endif // !defined(NO_LIMIT) && !__minix__ + #endif // NO_SOCKETS + + #if !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) + case 't': + ServerTimeout = getOptionArgumentInt(o, 1, 600); + ignoreIniFileParameter(INI_PARAM_CONNECTION_TIMEOUT); + break; + #endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) + + #ifndef NO_PID_FILE + case 'p': + fn_pid = getCommandLineArg(optarg); + ignoreIniFileParameter(INI_PARAM_PID_FILE); + break; + #endif + + #ifndef NO_INI_FILE + case 'i': + fn_ini = getCommandLineArg(optarg); + if (!strcmp(fn_ini, "-")) fn_ini = NULL; + break; + #endif + + #ifndef NO_LOG + case 'l': + fn_log = getCommandLineArg(optarg); + ignoreIniFileParameter(INI_PARAM_LOG_FILE); + break; + + #ifndef NO_VERBOSE_LOG + case 'v': + case 'q': + logverbose = o == 'v'; + ignoreIniFileParameter(INI_PARAM_LOG_VERBOSE); + break; + + #endif // NO_VERBOSE_LOG + #endif // NO_LOG + + #ifndef NO_SOCKETS + #ifndef USE_MSRPC + case 'L': + maxsockets++; + ignoreIniFileParameter(INI_PARAM_LISTEN); + break; + #endif // USE_MSRPC + + case 'f': + nodaemon = 1; + #ifndef NO_LOG + logstdout = 1; + #endif + break; + + #ifdef _NTSERVICE + case 'U': + ServiceUser = optarg; + break; + + case 'W': + ServicePassword = optarg; + break; + + case 's': + #ifndef USE_MSRPC + if (InetdMode) usage(); + #endif // USE_MSRPC + if (!IsNTService) installService = 1; // Install + break; + + case 'S': + if (!IsNTService) installService = 2; // Remove + break; + #endif // _NTSERVICE + + case 'D': + nodaemon = 1; + break; + + #ifndef NO_LOG + case 'e': + logstdout = 1; + break; + #endif // NO_LOG + #endif // NO_SOCKETS + + #ifndef _WIN32 + case 'I': // Backward compatibility with svn681 and earlier + break; + #endif // _WIN32 + + #ifndef NO_RANDOM_EPID + case 'r': + RandomizationLevel = (int_fast8_t)getOptionArgumentInt(o, 0, 2); + ignoreIniFileParameter(INI_PARAM_RANDOMIZATION_LEVEL); + break; + + case 'C': + Lcid = (uint16_t)getOptionArgumentInt(o, 0, 32767); + + ignoreIniFileParameter(INI_PARAM_LCID); + + #ifdef _PEDANTIC + if (!IsValidLcid(Lcid)) + { + printerrorf("Warning: %s is not a valid LCID.\n", optarg); + } + #endif // _PEDANTIC + + break; + #endif // NO_RANDOM_PID + + #if !defined(NO_USER_SWITCH) && !defined(_WIN32) + case 'g': + gname = optarg; + ignoreIniFileParameter(INI_PARAM_GID); + #ifndef NO_SIGHUP + if (!IsRestarted) + #endif // NO_SIGHUP + if (GetGid()) + { + printerrorf("Fatal: setgid for %s failed.\n", optarg); + exit(!0); + } + break; + + case 'u': + uname = optarg; + ignoreIniFileParameter(INI_PARAM_UID); + #ifndef NO_SIGHUP + if (!IsRestarted) + #endif // NO_SIGHUP + if (GetUid()) + { + printerrorf("Fatal: setuid for %s failed.\n", optarg); + exit(!0); + } + break; + #endif // NO_USER_SWITCH && !_WIN32 + + #ifndef NO_CUSTOM_INTERVALS + case 'R': + VLRenewalInterval = getTimeSpanFromCommandLine(optarg, o); + ignoreIniFileParameter(INI_PARAM_RENEWAL_INTERVAL); + break; + + case 'A': + VLActivationInterval = getTimeSpanFromCommandLine(optarg, o); + ignoreIniFileParameter(INI_PARAM_ACTIVATION_INTERVAL); + break; + #endif + + #ifndef USE_MSRPC + case 'd': + case 'k': + DisconnectImmediately = o == 'd'; + ignoreIniFileParameter(INI_PARAM_DISCONNECT_IMMEDIATELY); + break; + + case 'N': + if (!getArgumentBool(&UseRpcNDR64, optarg)) usage(); + ignoreIniFileParameter(INI_PARAM_RPC_NDR64); + break; + + case 'B': + if (!getArgumentBool(&UseRpcBTFN, optarg)) usage(); + ignoreIniFileParameter(INI_PARAM_RPC_BTFN); + break; + #endif // !USE_MSRPC + + case 'V': + #ifdef _NTSERVICE + if (IsNTService) break; + #endif + printf("vlmcsd %s\n", Version); + exit(0); + + default: + usage(); + } + + // Do not allow non-option arguments + if (optind != global_argc) + usage(); + + #ifdef _NTSERVICE + // -U and -W must be used with -s + if ((ServiceUser || *ServicePassword) && installService != 1) usage(); + #endif // _NTSERVICE +} + + +#ifndef NO_PID_FILE +static void writePidFile() +{ +# ifndef NO_SIGHUP + if (IsRestarted) return; +# endif // NO_SIGHUP + + if (fn_pid && !InetdMode) + { + FILE *_f = fopen(fn_pid, "w"); + + if ( _f ) + { + fprintf(_f, "%u", (uint32_t)getpid()); + fclose(_f); + } + + #ifndef NO_LOG + else + { + logger("Warning: Cannot write pid file '%s'. %s.\n", fn_pid, strerror(errno)); + } + #endif // NO_LOG + } +} +#else +#define writePidFile(x) +#endif // NO_PID_FILE + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + +void cleanup() +{ + + if (!InetdMode) + { + #ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); + #endif // NO_PID_FILE + closeAllListeningSockets(); + + #if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !defined(_WIN32) && !__minix__ + sem_unlink("/vlmcsd"); + #if !defined(USE_THREADS) && !defined(CYGWIN) + if (shmid >= 0) + { + if (Semaphore != (sem_t*)-1) shmdt(Semaphore); + shmctl(shmid, IPC_RMID, NULL); + } + #endif // !defined(USE_THREADS) && !defined(CYGWIN) + #endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !defined(_WIN32) && !__minix__ + + #ifndef NO_LOG + logger("vlmcsd %s was shutdown\n", Version); + #endif // NO_LOG + } + +} + +#elif defined(USE_MSRPC) + +void cleanup() +{ +# ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); +# endif // NO_PID_FILE + +# ifndef NO_LOG + logger("vlmcsd %s was shutdown\n", Version); +# endif // NO_LOG +} + +#else // Neither Sockets nor RPC + +__pure void cleanup() {} + +#endif // Neither Sockets nor RPC + + +#if !defined(USE_MSRPC) && !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ +// Get a semaphore for limiting the maximum concurrent tasks +static void allocateSemaphore(void) +{ + #ifdef USE_THREADS + #define sharemode 0 + #else + #define sharemode 1 + #endif + + #ifndef _WIN32 + sem_unlink("/vlmcsd"); + #endif + + if(MaxTasks < SEM_VALUE_MAX && !InetdMode) + { + #ifndef _WIN32 + + #if !defined(USE_THREADS) && !defined(CYGWIN) + + if ((Semaphore = sem_open("/vlmcsd", O_CREAT /*| O_EXCL*/, 0700, MaxTasks)) == SEM_FAILED) // fails on many systems + { + // We didn't get a named Semaphore (/dev/shm on Linux) so let's try our own shared page + + if ( + ( shmid = shmget(IPC_PRIVATE, sizeof(sem_t), IPC_CREAT | 0600) ) < 0 || + ( Semaphore = (sem_t*)shmat(shmid, NULL, 0) ) == (sem_t*)-1 || + sem_init(Semaphore, 1, MaxTasks) < 0 + ) + { + int errno_save = errno; + if (Semaphore != (sem_t*)-1) shmdt(Semaphore); + if (shmid >= 0) shmctl(shmid, IPC_RMID, NULL); + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(errno_save)); + MaxTasks = SEM_VALUE_MAX; + } + } + + #else // THREADS or CYGWIN + + Semaphore = (sem_t*)vlmcsd_malloc(sizeof(sem_t)); + + if (sem_init(Semaphore, sharemode, MaxTasks) < 0) // sem_init is not implemented on Darwin (returns ENOSYS) + { + free(Semaphore); + + if ((Semaphore = sem_open("/vlmcsd", O_CREAT /*| O_EXCL*/, 0700, MaxTasks)) == SEM_FAILED) + { + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(errno)); + MaxTasks = SEM_VALUE_MAX; + } + } + + #endif // THREADS or CYGWIN + + #else // _WIN32 + + if (!(Semaphore = CreateSemaphoreA(NULL, MaxTasks, MaxTasks, NULL))) + { + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(GetLastError())); + MaxTasks = SEM_VALUE_MAX; + } + + #endif // _WIN32 + } +} +#endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ + + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +int setupListeningSockets() +{ + int o; + uint_fast8_t allocsockets = maxsockets ? maxsockets : 2; + + SocketList = (SOCKET*)vlmcsd_malloc((size_t)allocsockets * sizeof(SOCKET)); + + haveIPv4Stack = checkProtocolStack(AF_INET); + haveIPv6Stack = checkProtocolStack(AF_INET6); + + // Reset getopt since we've alread used it + optReset(); + + for (opterr = 0; ( o = getopt(global_argc, (char* const*)global_argv, optstring) ) > 0; ) switch (o) + { + case '4': + + if (!haveIPv4Stack) + { + printerrorf("Fatal: Your system does not support %s.\n", cIPv4); + return !0; + } + v4required = 1; + break; + + case '6': + + if (!haveIPv6Stack) + { + printerrorf("Fatal: Your system does not support %s.\n", cIPv6); + return !0; + } + v6required = 1; + break; + + case 'L': + + addListeningSocket(optarg); + break; + + case 'P': + + defaultport = optarg; + break; + + default: + + break; + } + + +# ifndef NO_INI_FILE + if (maxsockets && !numsockets) + { + if (fn_ini && !readIniFile(INI_FILE_PASS_2)) + { + #ifdef INI_FILE + if (strcmp(fn_ini, INI_FILE)) + #endif // INI_FILE + printerrorf("Warning: Can't read %s: %s\n", fn_ini, strerror(errno)); + } + } +# endif + + // if -L hasn't been specified on the command line, use default sockets (all IP addresses) + // maxsocket results from first pass parsing the arguments + if (!maxsockets) + { + if (haveIPv6Stack && (v6required || !v4required)) addListeningSocket("::"); + if (haveIPv4Stack && (v4required || !v6required)) addListeningSocket("0.0.0.0"); + } + + if (!numsockets) + { + printerrorf("Fatal: Could not listen on any socket.\n"); + return(!0); + } + + return 0; +} +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + +int server_main(int argc, CARGV argv) +{ + #if !defined(_NTSERVICE) && !defined(NO_SOCKETS) + int error; + #endif // !defined(_NTSERVICE) && !defined(NO_SOCKETS) + + // Initialize ePID / HwId parameters + memset(KmsResponseParameters, 0, sizeof(KmsResponseParameters)); + + global_argc = argc; + global_argv = argv; + + #ifdef _NTSERVICE // #endif is in newmain() + DWORD lasterror = ERROR_SUCCESS; + + if (!StartServiceCtrlDispatcher(NTServiceDispatchTable) && (lasterror = GetLastError()) == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) + { + IsNTService = FALSE; + return newmain(); + } + + return lasterror; +} + + +int newmain() +{ + int error; + + // Initialize thread synchronization objects for Windows and Cygwin + #ifdef USE_THREADS + + #ifndef NO_LOG + // Initialize the Critical Section for proper logging + InitializeCriticalSection(&logmutex); + #endif // NO_LOG + + #endif // USE_THREADS + + #ifdef _WIN32 + + #ifndef USE_MSRPC + // Windows Sockets must be initialized + WSADATA wsadata; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + printerrorf("Fatal: Could not initialize Windows sockets (Error: %d).\n", error); + return error; + } + #endif // USE_MSRPC + + // Windows can never daemonize + nodaemon = 1; + + #else // __CYGWIN__ + + // Do not daemonize if we are a Windows service + if (IsNTService) nodaemon = 1; + + #endif // _WIN32 / __CYGWIN__ + #endif // _NTSERVICE ( #ifdef is main(int argc, CARGV argv) ) + + parseGeneralArguments(); // Does not return if an error occurs + + #if !defined(_WIN32) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + struct stat statbuf; + fstat(STDIN_FILENO, &statbuf); + if (S_ISSOCK(statbuf.st_mode)) + { + InetdMode = 1; + nodaemon = 1; + maxsockets = 0; + #ifndef NO_LOG + logstdout = 0; + #endif // NO_LOG + } + #endif // !defined(_WIN32) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + #ifndef NO_INI_FILE + if (fn_ini && !readIniFile(INI_FILE_PASS_1)) + { + #ifdef INI_FILE + if (strcmp(fn_ini, INI_FILE)) + #endif // INI_FILE + printerrorf("Warning: Can't read %s: %s\n", fn_ini, strerror(errno)); + } + #endif // NO_INI_FILE + + #if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ && !defined(USE_MSRPC) + allocateSemaphore(); + #endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && __minix__ + + #ifdef _NTSERVICE + if (installService) + return NtServiceInstallation(installService, ServiceUser, ServicePassword); + #endif // _NTSERVICE + + #if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + if (!InetdMode) + { + if ((error = setupListeningSockets())) return error; + } + #endif // NO_SOCKETS + + // After sockets have been set up, we may switch to a lower privileged user + #if !defined(_WIN32) && !defined(NO_USER_SWITCH) + + #ifndef NO_SIGHUP + if (!IsRestarted) + { + #endif // NO_SIGHUP + if (gid != INVALID_GID && setgid(gid)) + { + printerrorf("Fatal: setgid for %s failed.\n", gname); + return !0; + } + + if (uid != INVALID_UID && setuid(uid)) + { + printerrorf("Fatal: setuid for %s failed.\n", uname); + return !0; + } + #ifndef NO_SIGHUP + } + #endif // NO_SIGHUP + + #endif // !defined(_WIN32) && !defined(NO_USER_SWITCH) + + randomNumberInit(); + + // Randomization Level 1 means generate ePIDs at startup and use them during + // the lifetime of the process. So we generate them now + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 1) randomPidInit(); + #endif + + #if !defined(NO_SOCKETS) + #ifdef _WIN32 + if (!IsNTService) + #endif // _WIN32 + if ((error = daemonizeAndSetSignalAction())) return error; + #endif // !defined(NO_SOCKETS) + + writePidFile(); + + #if !defined(NO_LOG) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + if (!InetdMode) + logger("vlmcsd %s started successfully\n", Version); + #endif // !defined(NO_LOG) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + #if defined(_NTSERVICE) && !defined(USE_MSRPC) + if (IsNTService) ReportServiceStatus(SERVICE_RUNNING, NO_ERROR, 200); + #endif // defined(_NTSERVICE) && !defined(USE_MSRPC) + + int rc; + rc = runServer(); + + // Clean up things and exit + #ifdef _NTSERVICE + if (!ServiceShutdown) + #endif + cleanup(); + #ifdef _NTSERVICE + else + ReportServiceStatus(SERVICE_STOPPED, NO_ERROR, 0); + #endif + + return rc; +} diff --git a/vlmcsd.h b/vlmcsd.h new file mode 100644 index 00000000..7845a53a --- /dev/null +++ b/vlmcsd.h @@ -0,0 +1,61 @@ +#ifndef __main_h +#define __main_h + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#define __T(x) #x +#define _T(x) __T(x) + +extern char *fn_log; + +#include "types.h" + +//int main(int argc, CARGV); +extern void cleanup(); + +#ifdef _NTSERVICE +int newmain(); +#endif + +#if MULTI_CALL_BINARY < 1 +#define server_main main +#else +int server_main(int argc, CARGV argv); +#endif + +#ifndef SA_NOCLDWAIT // required for Cygwin +#define SA_NOCLDWAIT 0 +#endif + +#ifndef NO_INI_FILE +#define INI_PARAM_RANDOMIZATION_LEVEL 1 +#define INI_PARAM_LCID 2 +#define INI_PARAM_LISTEN 3 +#define INI_PARAM_MAX_WORKERS 4 +#define INI_PARAM_CONNECTION_TIMEOUT 5 +#define INI_PARAM_PID_FILE 6 +#define INI_PARAM_LOG_FILE 7 +#define INI_PARAM_LOG_VERBOSE 8 +#define INI_PARAM_ACTIVATION_INTERVAL 9 +#define INI_PARAM_RENEWAL_INTERVAL 10 +#define INI_PARAM_DISCONNECT_IMMEDIATELY 11 +#define INI_PARAM_UID 12 +#define INI_PARAM_GID 13 +#define INI_PARAM_PORT 14 +#define INI_PARAM_RPC_NDR64 15 +#define INI_PARAM_RPC_BTFN 16 + +#define INI_FILE_PASS_1 1 +#define INI_FILE_PASS_2 2 + +typedef struct +{ + const char* const Name; + uint_fast8_t Id; +} IniFileParameter_t, *PIniFileParameter_t; +#endif // NO_INI_FILE + +#endif // __main_h diff --git a/vlmcsd.ini b/vlmcsd.ini new file mode 100644 index 00000000..7bd2b98a --- /dev/null +++ b/vlmcsd.ini @@ -0,0 +1,92 @@ +# +# +# Sample vlmcsd.ini +# +# An ini file for vlmcsd is normally not required. It is for advanced users only. +# vlmcsd uses an ini file only if specified using the -i option in the command line parameters. +# There is no default ini file because vlmcsd is designed to run on many platforms. +# +# Every line starting with a number sign (#) or semicolon (;) is treated as a comment. +# If a key word is used more than once, the last occurrence is used. The only exception +# to this is Listen. You can use Listen=[:port] more than once. +# + +# Set ePID/HwId for Windows explicitly +;55c92734-d682-4d71-983e-d6ec3f16059f = 06401-00206-271-392041-03-1033-9600.0000-3622014 / 01 02 03 04 05 06 07 08 + +# Set ePID for Office 2010 (including Visio and Project) explicitly +;59a52881-a989-479d-af46-f275c6370663 = 06401-00096-199-496023-03-1033-9600.0000-3622014 + +# Set ePID for Office 2013 (including Visio and Project) explicitly +;0ff1ce15-a989-479d-af46-f275c6370663 = 06401-00206-234-409313-03-1033-9600.0000-3622014 + +# Use custom TCP port +# Command line: -P +# ***The Port directive only works if vlmcsd was compiled to use MS RPC +# ***Use Listen otherwise +;Port = 1688 + +# Listen on all IPv4 addresses (default port 1688) +# Command line: -L (and compatibility options -4, -6, -P) +# Does not work with MS RPC, use Port= +;Listen = 0.0.0.0:1688 + +# Listen on all IPv6 addresses (default port 1688) +# Command line: -L (and compatibility options -4, -6, -P) +;Listen = [::]:1688 + +# Randomize ePIDs at program start up (only those that are not explicitly specified) +# Command line: -r +;RandomizationLevel = 1 + +# Use a specific culture (1033 = English US) in ePIDs even if the ePID is randomized +# Command line: -C +;LCID = 1033 + +# Set a maximum of 4 workers (forked processes or threads) +# Command line: -m +;MaxWorkers = 4 + +# Disconnect users after 30 seconds of inactivity +# Command line: -t +;ConnectionTimeout = 30 + +# Disconnect clients immediately after each request +# Command line: -d and -k +;DisconnectClientsImmediately = yes + +# Write a pid file (a file containing the process id of vlmcsd) +# Command line: -p +;PidFile = /var/run/vlmcsd.pid + +# Write log to /var/log/vlmcsd.log +# Command line: -l (-e and -f also override this directive) +;LogFile = /var/log/vlmcsd.log + +# Create a verbose log +# Command line: -v and -q +;LogVerbose = true + +# Set activation interval to 2 hours +# Command line: -A +;ActivationInterval = 2h + +# Set renewal interval to 7 days +# Command line: -R +;RenewalInterval = 7d + +# Run program as user vlmcsduser +# Command line: -u +;user = vlmcsduser + +# Run program as group vlmcsdgroup +# Command line: -g +;group = vlmcsdgroup + +# Disable or enable the NDR64 transfer syntax in RPC (default enabled) +# Command line: -n +;UseNDR64 = true + +# Disable or enable bind time feature negotiation in RPC (default enabled) +# Command line: -b +;UseBTFN = true diff --git a/vlmcsd.ini.5 b/vlmcsd.ini.5 new file mode 100644 index 00000000..8b350987 --- /dev/null +++ b/vlmcsd.ini.5 @@ -0,0 +1,130 @@ +.TH VLMCSD.INI 5 "February 2015" "Hotbird64" "KMS Activation Manual" +.LO 8 + +.SH NAME +\fBvlmcsd.ini\fR \- vlmcsd KMS emulator configuration file + +.SH SYNOPSIS +.B vlmcsd.ini + +.SH DESCRIPTION +\fBvlmcsd.ini\fR (or simply called the "ini file") is a configuration file for \fBvlmcsd\fR(8). By default vlmcsd does not use a configuration file. It is completely optional and for advanced users only. You must use the \fB-i\fR option on the vlmcsd command line to use an ini file. There is no default name or default location for the ini file. +.PP +Everything, that can be configured in the ini file, may also be specified on the command line. Any configuration option specified on the command line takes precedence over the respective configuration line in the ini file. +.PP +\fBBenefits of a configuration file\fR +.PP +While you can use the configuration file to simply modify the default behavior of vlmcsd, it can also be used to change the configuration of vlmcsd after you sent a HUP \fBsignal\fR(7). Whenever you send SIGHUP, the configuration file will be re-read. Any changes you made to the ini file will be reflected after vlmcsd received the hangup signal. +.PP +\fBDifferences between command line and configuration file\fR +.PP +If you specify an illegal option or option argument on the command line, vlmcsd displays help and exits. If you specify an incorrect \fIkeyword\fR or \fIargument\fR in the ini file, vlmcsd displays a warning with some information, ignores the respective line and continues. This is intentional and prevents vlmcsd from aborting after a SIGHUP if the configuration was modified incorrectly. + +.SH SYNTAX +vlmcsd.ini is a UTF-8 encoded text file with each line being in the format \fIkeyword\fR = \fIargument\fR. The \fIkeyword\fR is not case-sensitive. The \fIargument\fR is treated literally. It is neither required nor allowed to enclose the \fIargument\fR in any form of quote characters except when quote characters are part of the argument itself. Whitespace characters are ignored only + +- at the beginning of a line +.br +- between the \fIkeyword\fR and '=' +.br +- between '=' and the \fIargument\fR + +Lines, that start with '#' or ';' are treated as comments. Empty lines are ignored as well. If a \fIkeyword\fR is repeated in another line, vlmcsd will use the \fIargument\fR of the last occurence of the \fIkeyword\fR. An exception to this is the Listen \fIkeyword\fR which can be specified multiple times and causes vlmcsd to listen on more than one IP address and/or port. +.PP +Some \fIargument\fRs are binary arguments that need to be either TRUE or FALSE. You can use "Yes", "On" or "1" as an alias for TRUE and "No", "Off" or "0" as an alias for FALSE. Binary arguments are case-insensitive. + +.SH KEYWORDS +The following \fIkeyword\fRs are defined: + +.IP "\fBListen\fR" +This defines on what combinations of IP addresses and ports vlmcsd should listen. \fBListen\fR can be specified more than once. The \fIargument\fR has the form \fIipaddress\fR[:\fIport\fR]. If you omit the \fIport\fR, the default port of 1688 is used. If the \fIipaddress\fR contains colons and a \fIport\fR is used, you must enclose the \fIipaddress\fR in brackets. The default is to listen to 0.0.0.0:1688 and [::]:1688 which means listen to all IPv4 and all IPv6 addresses. See the \fB-L\fR option in \fBvlmcsd\fR(8) for more info about the syntax. If you use \fB-L\fR, \fB-P\fR, \fB-4\fR or \fB-6\fR on the command line, all \fBListen\fR keywords in the ini file will be ignored. The \fBListen\fR keyword cannot be used on Windows and Cygwin if vlmcsd has been compiled to use Microsoft RPC. + +Examples: + +Listen = 192.168.1.123:1688 +.br +Listen = 0.0.0.0:1234 +.br +Listen = [fe80::1721:12ff:fe81:d36b%eth0]:1688 + +.IP "\fBPort\fR" +Can only be used on Windows and Cygwin if vlmcsd has been compiled to use Microsoft RPC. Causes vlmcsd to listen on that port instead of 1688. On all non-Windows operating systems or if vlmcsd has been compiled to use its own RPC implementation, you must use \fBListen\fR instead. + +.IP "\fBUseNDR64\fR" +Can be TRUE or FALSE. Specifies whether you want to use the NDR64 transfer syntax. See options \fB-n0\fR and \fB-n1\fR in \fBvlmcsd\fR(8). The default is TRUE. + +.IP "\fBUseBTFN\fR" +Can be TRUE or FALSE. Specifies whether you want to use bind time feature negotiation in RPC. See options \fB-b0\fR and \fB-b1\fR in \fBvlmcsd\fR(8). The default is TRUE. + +.IP "\fBRandomizationLevel\fR" +The \fIargument\fR must 0, 1 or 2. This specifies the ePID randomization level. See options \fB-r0\fR, \fB-r1\fR and \fB-r2\fR in \fBvlmcsd\fR(8). The default randomization level is 1. + +.IP "\fBLCID\fR" +Use a specific culture id (LCID) even if the ePID is randomized. The \fIargument\fR must be a number between 1 and 32767. While any number in that range is valid, you should use an offcial LCID. A list of assigned LCIDs can be found at http://msdn.microsoft.com/en\-us/goglobal/bb964664.aspx. On the command line you control this setting with option \fB-C\fR. + +.IP "\fBMaxWorkers\fR" +The \fIargument\fR specifies the maximum number of worker processes or threads that will be used to serve activation requests concurrently. This is the same as specifying \fB-m\fR on the command line. Minimum is 1. The maximum is platform specific and is at least 32767 but is likely to be greater on most systems. The default is no limit. + +.IP "\fBConnectionTimeout\fR" +Used to control when the vlmcsd disconnects idle TPC connections. The default is 30 seconds. This is the same setting as \fB-t\fR on the command line. + +.IP "\fBDisconnectClientsImmediately\fR" +Set this to TRUE to disconnect a client after it got an activation response regardless whether a timeout has occured or not. The default is FALSE. Setting this to TRUE is non-standard behavior. Use only if you are experiencing DoS or DDoS attacks. On the command line you control this behavior with options \fB-d\fR and \fB-k\fR. + +.IP "\fBPidFile\fR" +Write a pid file. The \fIargument\fR is the full pathname of a pid file. The pid file contains is single line containing the process id of the vlmcsd process. It can be used to stop (SIGTERM) or restart (SIGHUP) vlmcsd. This directive can be overriden using \fB-p\fR on the command line. + +.IP "\fBLogFile\fR" +Write a log file. The \fIargument\fR is the full pathname of a log file. On a unixoid OS and with Cygwin you can use the special filename 'syslog' to log to the syslog facility. This is the same as specifying \fB-l\fR on the command line. + +.IP "\fBLogVerbose\fR" +Set this to either TRUE or FALSE. The default is FALSE. If set to TRUE, more details of each activation will be logged. You use \fB-v\fR and \fB-q\fR in the command line to control this setting. \fBLogVerbose\fR has an effect only if you specify a log file or redirect logging to \fBstdout\fR(3). + +.IP "\fBActivationInterval\fR" +This is the same as specifying \fB-A\fR on the command line. See \fBvlmcsd\fR(8) for details. The default is 2 hours. Example: ActivationInterval = 1h + +.IP "\fBRenewalInterval\fR" +This is the same as specifying \fB-R\fR on the command line. See \fBvlmcsd\fR(8) for details. The default is 7 days. Example: ActivationInterval = 3h. Please note that the KMS client decides itself when to renew activation. Even though vlmcsd sends the renewal interval you specify, it is no more than some kind of recommendation to the client. Older KMS clients did follow the recommendation from a KMS server or emulator. Newer clients do not. + +.IP "\fBUser\fR" +Run vlmcsd as another, preferrably less privileged, user. The \fIargument\fR can be a user name or a numeric user id. You must have the required privileges (capabilities on Linux) to change the security context of a process without providing any credentials (a password in most cases). On most unixoid OSses 'root' is the only user who has these privileges in the default configuration. This setting is not available in the native Windows version of vlmcsd. See \fB-u\fR in \fBvlmcsd\fR(8). This setting cannot be changed on the fly by sending SIGHUP to vlmcsd. + +.IP "\fBGroup\fR" +Run vlmcsd as another, preferrably less privileged, group. The \fIargument\fR can be a group name or a numeric group id. You must have the required privileges (capabilities on Linux) to change the security context of a process without providing any credentials (a password in most cases). On most unixoid OSses 'root' is the only user who has these privileges in the default configuration. This setting is not available in the native Windows version of vlmcsd. See \fB-g\fR in \fBvlmcsd\fR(8). This setting cannot be changed on the fly by sending SIGHUP to vlmcsd. + +.SH "SPECIAL KEYWORDS" +Any valid GUID is being treated as a special \fBkeyword\fR in the ini file. It is used to select a specfic ePID and HwId for an application GUID. The \fIargument\fR has the form \fIePID\fR [ / \fIHwId\fR ]. KMS currently knows only 3 application GUIDs: + +55c92734\-d682\-4d71\-983e\-d6ec3f16059f\ (Windows) +.br +59a52881\-a989\-479d\-af46\-f275c6370663\ (Office 2010) +.br +0ff1ce15\-a989\-479d\-af46\-f275c6370663\ (Office 2013) + +To use specific ePIDs for Windows, Office 2010 and Office 2013 you could add the following lines to vlmcsd.ini: + +.SM "55c92734\-d682\-4d71\-983e\-d6ec3f16059f\ =\ 55041\-00206\-184\-207146\-03\-1062\-6002.0000\-3322013" +.br +.SM "59a52881\-a989\-479d\-af46\-f275c6370663\ =\ 55041\-00096\-216\-598637\-03\-17418\-6002.0000\-3312013" +.br +.SM "0ff1ce15\-a989\-479d\-af46\-f275c6370663\ =\ 55041\-00206-234\-742099\-03\-9217\-6002.0000\-2942013" + +The ePID is currently a comment only. You can specify any string up to 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs that were used in KMSv5 versions of the "ratiborus virtual machine". Microsoft has given up on blacklisting when KMS emulators appeared in the wild. + +Even if you can use "Activated by cool hacker guys" as an ePID, you may wish to use ePIDs that cannot be detected as non-MS ePIDs. If you don't know how these "valid" ePIDs look like exactly, do not use GUIDS in vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid ePIDs. + +If you use non-ASCII characters in your ePID (you shouldn't do anyway), these must be in UTF-8 format. This is especially important when you run vlmcsd on Windows or cygwin because UTF-8 is not the default encoding for most editors. + +If you are specifying an optional HWID it follows the same syntax as in the \fB\-H\fR option in \fBvlmcsd\fR(8) ecxept that you must not enclose a HWID in quotes even if it contains spaces. + +.SH FILES +.IP "\fBvlmcsd.ini\fR(5)" + +.SH AUTHOR +\fBvlmcsd\fR(8) was written by crony12, Hotbird64 and vityan666. With contributions from DougQaid. + +.SH CREDITS +Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Ratiborus, ... + +.SH SEE ALSO +\fBvlmcsd\fR(8), \fBvlmcsd\fR(7), \fBvlmcs\fR(1), \fBvlmcsdmulti\fR(1) diff --git a/vlmcsd.ini.5.dos.txt b/vlmcsd.ini.5.dos.txt new file mode 100644 index 00000000..e7637422 --- /dev/null +++ b/vlmcsd.ini.5.dos.txt @@ -0,0 +1,268 @@ +VLMCSD.INI(5) KMS Activation Manual VLMCSD.INI(5) + + + +NAME + vlmcsd.ini - vlmcsd KMS emulator configuration file + + +SYNOPSIS + vlmcsd.ini + + +DESCRIPTION + vlmcsd.ini (or simply called the "ini file") is a configuration file + for vlmcsd(8). By default vlmcsd does not use a configuration file. It + is completely optional and for advanced users only. You must use the -i + option on the vlmcsd command line to use an ini file. There is no + default name or default location for the ini file. + + Everything, that can be configured in the ini file, may also be speci‐ + fied on the command line. Any configuration option specified on the + command line takes precedence over the respective configuration line in + the ini file. + + Benefits of a configuration file + + While you can use the configuration file to simply modify the default + behavior of vlmcsd, it can also be used to change the configuration of + vlmcsd after you sent a HUP signal(7). Whenever you send SIGHUP, the + configuration file will be re-read. Any changes you made to the ini + file will be reflected after vlmcsd received the hangup signal. + + Differences between command line and configuration file + + If you specify an illegal option or option argument on the command + line, vlmcsd displays help and exits. If you specify an incorrect key‐ + word or argument in the ini file, vlmcsd displays a warning with some + information, ignores the respective line and continues. This is inten‐ + tional and prevents vlmcsd from aborting after a SIGHUP if the configu‐ + ration was modified incorrectly. + + +SYNTAX + vlmcsd.ini is a UTF-8 encoded text file with each line being in the + format keyword = argument. The keyword is not case-sensitive. The argu‐ + ment is treated literally. It is neither required nor allowed to + enclose the argument in any form of quote characters except when quote + characters are part of the argument itself. Whitespace characters are + ignored only + + - at the beginning of a line + - between the keyword and '=' + - between '=' and the argument + + Lines, that start with '#' or ';' are treated as comments. Empty lines + are ignored as well. If a keyword is repeated in another line, vlmcsd + will use the argument of the last occurence of the keyword. An excep‐ + tion to this is the Listen keyword which can be specified multiple + times and causes vlmcsd to listen on more than one IP address and/or + port. + + Some arguments are binary arguments that need to be either TRUE or + FALSE. You can use "Yes", "On" or "1" as an alias for TRUE and "No", + "Off" or "0" as an alias for FALSE. Binary arguments are case-insensi‐ + tive. + + +KEYWORDS + The following keywords are defined: + + + Listen This defines on what combinations of IP addresses and ports vlm‐ + csd should listen. Listen can be specified more than once. The + argument has the form ipaddress[:port]. If you omit the port, + the default port of 1688 is used. If the ipaddress contains + colons and a port is used, you must enclose the ipaddress in + brackets. The default is to listen to 0.0.0.0:1688 and [::]:1688 + which means listen to all IPv4 and all IPv6 addresses. See the + -L option in vlmcsd(8) for more info about the syntax. If you + use -L, -P, -4 or -6 on the command line, all Listen keywords in + the ini file will be ignored. The Listen keyword cannot be used + on Windows and Cygwin if vlmcsd has been compiled to use Micro‐ + soft RPC. + + Examples: + + Listen = 192.168.1.123:1688 + Listen = 0.0.0.0:1234 + Listen = [fe80::1721:12ff:fe81:d36b%eth0]:1688 + + + Port Can only be used on Windows and Cygwin if vlmcsd has been com‐ + piled to use Microsoft RPC. Causes vlmcsd to listen on that port + instead of 1688. On all non-Windows operating systems or if vlm‐ + csd has been compiled to use its own RPC implementation, you + must use Listen instead. + + + UseNDR64 + Can be TRUE or FALSE. Specifies whether you want to use the + NDR64 transfer syntax. See options -n0 and -n1 in vlmcsd(8). The + default is TRUE. + + + UseBTFN + Can be TRUE or FALSE. Specifies whether you want to use bind + time feature negotiation in RPC. See options -b0 and -b1 in vlm‐ + csd(8). The default is TRUE. + + + RandomizationLevel + The argument must 0, 1 or 2. This specifies the ePID randomiza‐ + tion level. See options -r0, -r1 and -r2 in vlmcsd(8). The + default randomization level is 1. + + + LCID Use a specific culture id (LCID) even if the ePID is randomized. + The argument must be a number between 1 and 32767. While any + number in that range is valid, you should use an offcial LCID. A + list of assigned LCIDs can be found at http://msdn.micro‐ + soft.com/en-us/goglobal/bb964664.aspx. On the command line you + control this setting with option -C. + + + MaxWorkers + The argument specifies the maximum number of worker processes or + threads that will be used to serve activation requests concur‐ + rently. This is the same as specifying -m on the command line. + Minimum is 1. The maximum is platform specific and is at least + 32767 but is likely to be greater on most systems. The default + is no limit. + + + ConnectionTimeout + Used to control when the vlmcsd disconnects idle TPC connec‐ + tions. The default is 30 seconds. This is the same setting as -t + on the command line. + + + DisconnectClientsImmediately + Set this to TRUE to disconnect a client after it got an activa‐ + tion response regardless whether a timeout has occured or not. + The default is FALSE. Setting this to TRUE is non-standard + behavior. Use only if you are experiencing DoS or DDoS attacks. + On the command line you control this behavior with options -d + and -k. + + + PidFile + Write a pid file. The argument is the full pathname of a pid + file. The pid file contains is single line containing the + process id of the vlmcsd process. It can be used to stop + (SIGTERM) or restart (SIGHUP) vlmcsd. This directive can be + overriden using -p on the command line. + + + LogFile + Write a log file. The argument is the full pathname of a log + file. On a unixoid OS and with Cygwin you can use the special + filename 'syslog' to log to the syslog facility. This is the + same as specifying -l on the command line. + + + LogVerbose + Set this to either TRUE or FALSE. The default is FALSE. If set + to TRUE, more details of each activation will be logged. You use + -v and -q in the command line to control this setting. LogVer‐ + bose has an effect only if you specify a log file or redirect + logging to stdout(3). + + + ActivationInterval + This is the same as specifying -A on the command line. See vlm‐ + csd(8) for details. The default is 2 hours. Example: Activation‐ + Interval = 1h + + + RenewalInterval + This is the same as specifying -R on the command line. See vlm‐ + csd(8) for details. The default is 7 days. Example: Activation‐ + Interval = 3h. Please note that the KMS client decides itself + when to renew activation. Even though vlmcsd sends the renewal + interval you specify, it is no more than some kind of recommen‐ + dation to the client. Older KMS clients did follow the recommen‐ + dation from a KMS server or emulator. Newer clients do not. + + + User Run vlmcsd as another, preferrably less privileged, user. The + argument can be a user name or a numeric user id. You must have + the required privileges (capabilities on Linux) to change the + security context of a process without providing any credentials + (a password in most cases). On most unixoid OSses 'root' is the + only user who has these privileges in the default configuration. + This setting is not available in the native Windows version of + vlmcsd. See -u in vlmcsd(8). This setting cannot be changed on + the fly by sending SIGHUP to vlmcsd. + + + Group Run vlmcsd as another, preferrably less privileged, group. The + argument can be a group name or a numeric group id. You must + have the required privileges (capabilities on Linux) to change + the security context of a process without providing any creden‐ + tials (a password in most cases). On most unixoid OSses 'root' + is the only user who has these privileges in the default config‐ + uration. This setting is not available in the native Windows + version of vlmcsd. See -g in vlmcsd(8). This setting cannot be + changed on the fly by sending SIGHUP to vlmcsd. + + +SPECIAL KEYWORDS + Any valid GUID is being treated as a special keyword in the ini file. + It is used to select a specfic ePID and HwId for an application GUID. + The argument has the form ePID [ / HwId ]. KMS currently knows only 3 + application GUIDs: + + 55c92734-d682-4d71-983e-d6ec3f16059f (Windows) + 59a52881-a989-479d-af46-f275c6370663 (Office 2010) + 0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013) + + To use specific ePIDs for Windows, Office 2010 and Office 2013 you + could add the following lines to vlmcsd.ini: + + 55c92734-d682-4d71-983e-d6ec3f16059f = 55041-00206-184-207146-03-1062-6002.0000-3322013 + 59a52881-a989-479d-af46-f275c6370663 = 55041-00096-216-598637-03-17418-6002.0000-3312013 + 0ff1ce15-a989-479d-af46-f275c6370663 = 55041-00206-234-742099-03-9217-6002.0000-2942013 + + The ePID is currently a comment only. You can specify any string up to + 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs + that were used in KMSv5 versions of the "ratiborus virtual machine". + Microsoft has given up on blacklisting when KMS emulators appeared in + the wild. + + Even if you can use "Activated by cool hacker guys" as an ePID, you may + wish to use ePIDs that cannot be detected as non-MS ePIDs. If you don't + know how these "valid" ePIDs look like exactly, do not use GUIDS in + vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid + ePIDs. + + If you use non-ASCII characters in your ePID (you shouldn't do anyway), + these must be in UTF-8 format. This is especially important when you + run vlmcsd on Windows or cygwin because UTF-8 is not the default encod‐ + ing for most editors. + + If you are specifying an optional HWID it follows the same syntax as in + the -H option in vlmcsd(8) ecxept that you must not enclose a HWID in + quotes even if it contains spaces. + + +FILES + vlmcsd.ini(5) + + +AUTHOR + vlmcsd(8) was written by crony12, Hotbird64 and vityan666. With contri‐ + butions from DougQaid. + + +CREDITS + Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐ + borus, ... + + +SEE ALSO + vlmcsd(8), vlmcsd(7), vlmcs(1), vlmcsdmulti(1) + + + +Hotbird64 February 2015 VLMCSD.INI(5) diff --git a/vlmcsd.ini.5.html b/vlmcsd.ini.5.html new file mode 100644 index 00000000..827351ad --- /dev/null +++ b/vlmcsd.ini.5.html @@ -0,0 +1,460 @@ + + + + + + + + + +VLMCSD.INI + + + + +

VLMCSD.INI

+ +NAME
+SYNOPSIS
+DESCRIPTION
+SYNTAX
+KEYWORDS
+SPECIAL KEYWORDS
+FILES
+AUTHOR
+CREDITS
+SEE ALSO
+ +
+ + +

NAME + +

+ + + +

vlmcsd.ini +− vlmcsd KMS emulator configuration file

+ +

SYNOPSIS + +

+ + + +

vlmcsd.ini

+ +

DESCRIPTION + +

+ + + +

vlmcsd.ini +(or simply called the "ini file") is a +configuration file for vlmcsd(8). By default vlmcsd +does not use a configuration file. It is completely optional +and for advanced users only. You must use the -i +option on the vlmcsd command line to use an ini file. There +is no default name or default location for the ini file.

+ +

Everything, +that can be configured in the ini file, may also be +specified on the command line. Any configuration option +specified on the command line takes precedence over the +respective configuration line in the ini file.

+ +

Benefits of +a configuration file

+ +

While you can +use the configuration file to simply modify the default +behavior of vlmcsd, it can also be used to change the +configuration of vlmcsd after you sent a HUP +signal(7). Whenever you send SIGHUP, the +configuration file will be re-read. Any changes you made to +the ini file will be reflected after vlmcsd received the +hangup signal.

+ +

Differences +between command line and configuration file

+ +

If you specify +an illegal option or option argument on the command line, +vlmcsd displays help and exits. If you specify an incorrect +keyword or argument in the ini file, vlmcsd +displays a warning with some information, ignores the +respective line and continues. This is intentional and +prevents vlmcsd from aborting after a SIGHUP if the +configuration was modified incorrectly.

+ +

SYNTAX + +

+ + +

vlmcsd.ini is a +UTF-8 encoded text file with each line being in the format +keyword = argument. The keyword is not +case-sensitive. The argument is treated literally. It +is neither required nor allowed to enclose the +argument in any form of quote characters except when +quote characters are part of the argument itself. Whitespace +characters are ignored only

+ +

- at the +beginning of a line
+- between the keyword and ’=’
+- between ’=’ and the argument

+ +

Lines, that +start with ’#’ or ’;’ are treated as +comments. Empty lines are ignored as well. If a +keyword is repeated in another line, vlmcsd will use +the argument of the last occurence of the +keyword. An exception to this is the Listen +keyword which can be specified multiple times and +causes vlmcsd to listen on more than one IP address and/or +port.

+ +

Some +arguments are binary arguments that need to be either +TRUE or FALSE. You can use "Yes", "On" +or "1" as an alias for TRUE and "No", +"Off" or "0" as an alias for FALSE. +Binary arguments are case-insensitive.

+ +

KEYWORDS + +

+ + +

The following +keywords are defined:

+ + + + + + + +
+ + +

Listen

+ + +

This defines on what combinations of IP addresses and +ports vlmcsd should listen. Listen can be specified +more than once. The argument has the form +ipaddress[:port]. If you omit the port, +the default port of 1688 is used. If the ipaddress +contains colons and a port is used, you must enclose +the ipaddress in brackets. The default is to listen +to 0.0.0.0:1688 and [::]:1688 which means listen to all IPv4 +and all IPv6 addresses. See the -L option in +vlmcsd(8) for more info about the syntax. If you use +-L, -P, -4 or -6 on the command +line, all Listen keywords in the ini file will be +ignored. The Listen keyword cannot be used on Windows +and Cygwin if vlmcsd has been compiled to use Microsoft +RPC.

+ +

Examples:

+ +

Listen = +192.168.1.123:1688
+Listen = 0.0.0.0:1234
+Listen = [fe80::1721:12ff:fe81:d36b%eth0]:1688

+ + + + + + + +
+ + +

Port

+ + +

Can only be used on Windows and +Cygwin if vlmcsd has been compiled to use Microsoft RPC. +Causes vlmcsd to listen on that port instead of 1688. On all +non-Windows operating systems or if vlmcsd has been compiled +to use its own RPC implementation, you must use +Listen instead.

+ +

UseNDR64

+ +

Can be TRUE or FALSE. Specifies +whether you want to use the NDR64 transfer syntax. See +options -n0 and -n1 in vlmcsd(8). The +default is TRUE.

+ +

UseBTFN

+ +

Can be TRUE or FALSE. Specifies +whether you want to use bind time feature negotiation in +RPC. See options -b0 and -b1 in +vlmcsd(8). The default is TRUE.

+ +

RandomizationLevel

+ +

The argument must 0, 1 +or 2. This specifies the ePID randomization level. See +options -r0, -r1 and -r2 in +vlmcsd(8). The default randomization level is 1.

+ + + + + + + +
+ + +

LCID

+ + +

Use a specific culture id (LCID) even if the ePID is +randomized. The argument must be a number between 1 +and 32767. While any number in that range is valid, you +should use an offcial LCID. A list of assigned LCIDs can be +found at +http://msdn.microsoft.com/en−us/goglobal/bb964664.aspx. +On the command line you control this setting with option +-C.

+ +

MaxWorkers

+ +

The argument specifies +the maximum number of worker processes or threads that will +be used to serve activation requests concurrently. This is +the same as specifying -m on the command line. +Minimum is 1. The maximum is platform specific and is at +least 32767 but is likely to be greater on most systems. The +default is no limit.

+ +

ConnectionTimeout

+ +

Used to control when the vlmcsd +disconnects idle TPC connections. The default is 30 seconds. +This is the same setting as -t on the command +line.

+ + +

DisconnectClientsImmediately

+ +

Set this to TRUE to disconnect +a client after it got an activation response regardless +whether a timeout has occured or not. The default is FALSE. +Setting this to TRUE is non-standard behavior. Use only if +you are experiencing DoS or DDoS attacks. On the command +line you control this behavior with options -d and +-k.

+ +

PidFile

+ +

Write a pid file. The +argument is the full pathname of a pid file. The pid +file contains is single line containing the process id of +the vlmcsd process. It can be used to stop (SIGTERM) or +restart (SIGHUP) vlmcsd. This directive can be overriden +using -p on the command line.

+ +

LogFile

+ +

Write a log file. The +argument is the full pathname of a log file. On a +unixoid OS and with Cygwin you can use the special filename +’syslog’ to log to the syslog facility. This is +the same as specifying -l on the command line.

+ +

LogVerbose

+ +

Set this to either TRUE or +FALSE. The default is FALSE. If set to TRUE, more details of +each activation will be logged. You use -v and +-q in the command line to control this setting. +LogVerbose has an effect only if you specify a log +file or redirect logging to stdout(3).

+ +

ActivationInterval

+ +

This is the same as specifying +-A on the command line. See vlmcsd(8) for +details. The default is 2 hours. Example: ActivationInterval += 1h

+ +

RenewalInterval

+ +

This is the same as specifying +-R on the command line. See vlmcsd(8) for +details. The default is 7 days. Example: ActivationInterval += 3h. Please note that the KMS client decides itself when to +renew activation. Even though vlmcsd sends the renewal +interval you specify, it is no more than some kind of +recommendation to the client. Older KMS clients did follow +the recommendation from a KMS server or emulator. Newer +clients do not.

+ + + + + + + + + + + + +
+ + +

User

+ + +

Run vlmcsd as another, preferrably less privileged, +user. The argument can be a user name or a numeric +user id. You must have the required privileges (capabilities +on Linux) to change the security context of a process +without providing any credentials (a password in most +cases). On most unixoid OSses ’root’ is the only +user who has these privileges in the default configuration. +This setting is not available in the native Windows version +of vlmcsd. See -u in vlmcsd(8). This setting +cannot be changed on the fly by sending SIGHUP to +vlmcsd.

+ + +

Group

+ + +

Run vlmcsd as another, preferrably less privileged, +group. The argument can be a group name or a numeric +group id. You must have the required privileges +(capabilities on Linux) to change the security context of a +process without providing any credentials (a password in +most cases). On most unixoid OSses ’root’ is the +only user who has these privileges in the default +configuration. This setting is not available in the native +Windows version of vlmcsd. See -g in +vlmcsd(8). This setting cannot be changed on the fly +by sending SIGHUP to vlmcsd.

+ +

SPECIAL KEYWORDS + +

+ + +

Any valid GUID +is being treated as a special keyword in the ini +file. It is used to select a specfic ePID and HwId for an +application GUID. The argument has the form +ePID [ / HwId ]. KMS currently knows only 3 +application GUIDs:

+ + +

55c92734−d682−4d71−983e−d6ec3f16059f (Windows) +
+ +59a52881−a989−479d−af46−f275c6370663 (Office +2010)
+ +0ff1ce15−a989−479d−af46−f275c6370663 (Office +2013)

+ +

To use specific +ePIDs for Windows, Office 2010 and Office 2013 you could add +the following lines to vlmcsd.ini:

+ + +

55c92734−d682−4d71−983e−d6ec3f16059f = 55041−00206−184−207146−03−1062−6002.0000−3322013 +
+ +59a52881−a989−479d−af46−f275c6370663 = 55041−00096−216−598637−03−17418−6002.0000−3312013 +
+ +0ff1ce15−a989−479d−af46−f275c6370663 = 55041−00206-234−742099−03−9217−6002.0000−2942013

+ +

The ePID is +currently a comment only. You can specify any string up to +63 bytes. In Windows 7 Microsoft has blacklisted few ( < +10 ) ePIDs that were used in KMSv5 versions of the +"ratiborus virtual machine". Microsoft has given +up on blacklisting when KMS emulators appeared in the +wild.

+ +

Even if you can +use "Activated by cool hacker guys" as an ePID, +you may wish to use ePIDs that cannot be detected as non-MS +ePIDs. If you don’t know how these "valid" +ePIDs look like exactly, do not use GUIDS in vlmcsd.ini. +vlmcsd provides internal mechanisms to generate valid +ePIDs.

+ +

If you use +non-ASCII characters in your ePID (you shouldn’t do +anyway), these must be in UTF-8 format. This is especially +important when you run vlmcsd on Windows or cygwin because +UTF-8 is not the default encoding for most editors.

+ +

If you are +specifying an optional HWID it follows the same syntax as in +the −H option in vlmcsd(8) ecxept that +you must not enclose a HWID in quotes even if it contains +spaces.

+ +

FILES + +

+ + + +

vlmcsd.ini(5)

+ +

AUTHOR + +

+ + + +

vlmcsd(8) +was written by crony12, Hotbird64 and vityan666. With +contributions from DougQaid.

+ +

CREDITS + +

+ + +

Thanks to +CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, +Ratiborus, ...

+ +

SEE ALSO + +

+ + + +

vlmcsd(8), +vlmcsd(7), vlmcs(1), vlmcsdmulti(1)

+
+ + diff --git a/vlmcsd.ini.5.pdf b/vlmcsd.ini.5.pdf new file mode 100644 index 00000000..dc78cfb0 Binary files /dev/null and b/vlmcsd.ini.5.pdf differ diff --git a/vlmcsd.ini.5.unix.txt b/vlmcsd.ini.5.unix.txt new file mode 100644 index 00000000..25fe1611 --- /dev/null +++ b/vlmcsd.ini.5.unix.txt @@ -0,0 +1,268 @@ +VLMCSD.INI(5) KMS Activation Manual VLMCSD.INI(5) + + + +NAME + vlmcsd.ini - vlmcsd KMS emulator configuration file + + +SYNOPSIS + vlmcsd.ini + + +DESCRIPTION + vlmcsd.ini (or simply called the "ini file") is a configuration file + for vlmcsd(8). By default vlmcsd does not use a configuration file. It + is completely optional and for advanced users only. You must use the -i + option on the vlmcsd command line to use an ini file. There is no + default name or default location for the ini file. + + Everything, that can be configured in the ini file, may also be speci‐ + fied on the command line. Any configuration option specified on the + command line takes precedence over the respective configuration line in + the ini file. + + Benefits of a configuration file + + While you can use the configuration file to simply modify the default + behavior of vlmcsd, it can also be used to change the configuration of + vlmcsd after you sent a HUP signal(7). Whenever you send SIGHUP, the + configuration file will be re-read. Any changes you made to the ini + file will be reflected after vlmcsd received the hangup signal. + + Differences between command line and configuration file + + If you specify an illegal option or option argument on the command + line, vlmcsd displays help and exits. If you specify an incorrect key‐ + word or argument in the ini file, vlmcsd displays a warning with some + information, ignores the respective line and continues. This is inten‐ + tional and prevents vlmcsd from aborting after a SIGHUP if the configu‐ + ration was modified incorrectly. + + +SYNTAX + vlmcsd.ini is a UTF-8 encoded text file with each line being in the + format keyword = argument. The keyword is not case-sensitive. The argu‐ + ment is treated literally. It is neither required nor allowed to + enclose the argument in any form of quote characters except when quote + characters are part of the argument itself. Whitespace characters are + ignored only + + - at the beginning of a line + - between the keyword and '=' + - between '=' and the argument + + Lines, that start with '#' or ';' are treated as comments. Empty lines + are ignored as well. If a keyword is repeated in another line, vlmcsd + will use the argument of the last occurence of the keyword. An excep‐ + tion to this is the Listen keyword which can be specified multiple + times and causes vlmcsd to listen on more than one IP address and/or + port. + + Some arguments are binary arguments that need to be either TRUE or + FALSE. You can use "Yes", "On" or "1" as an alias for TRUE and "No", + "Off" or "0" as an alias for FALSE. Binary arguments are case-insensi‐ + tive. + + +KEYWORDS + The following keywords are defined: + + + Listen This defines on what combinations of IP addresses and ports vlm‐ + csd should listen. Listen can be specified more than once. The + argument has the form ipaddress[:port]. If you omit the port, + the default port of 1688 is used. If the ipaddress contains + colons and a port is used, you must enclose the ipaddress in + brackets. The default is to listen to 0.0.0.0:1688 and [::]:1688 + which means listen to all IPv4 and all IPv6 addresses. See the + -L option in vlmcsd(8) for more info about the syntax. If you + use -L, -P, -4 or -6 on the command line, all Listen keywords in + the ini file will be ignored. The Listen keyword cannot be used + on Windows and Cygwin if vlmcsd has been compiled to use Micro‐ + soft RPC. + + Examples: + + Listen = 192.168.1.123:1688 + Listen = 0.0.0.0:1234 + Listen = [fe80::1721:12ff:fe81:d36b%eth0]:1688 + + + Port Can only be used on Windows and Cygwin if vlmcsd has been com‐ + piled to use Microsoft RPC. Causes vlmcsd to listen on that port + instead of 1688. On all non-Windows operating systems or if vlm‐ + csd has been compiled to use its own RPC implementation, you + must use Listen instead. + + + UseNDR64 + Can be TRUE or FALSE. Specifies whether you want to use the + NDR64 transfer syntax. See options -n0 and -n1 in vlmcsd(8). The + default is TRUE. + + + UseBTFN + Can be TRUE or FALSE. Specifies whether you want to use bind + time feature negotiation in RPC. See options -b0 and -b1 in vlm‐ + csd(8). The default is TRUE. + + + RandomizationLevel + The argument must 0, 1 or 2. This specifies the ePID randomiza‐ + tion level. See options -r0, -r1 and -r2 in vlmcsd(8). The + default randomization level is 1. + + + LCID Use a specific culture id (LCID) even if the ePID is randomized. + The argument must be a number between 1 and 32767. While any + number in that range is valid, you should use an offcial LCID. A + list of assigned LCIDs can be found at http://msdn.micro‐ + soft.com/en-us/goglobal/bb964664.aspx. On the command line you + control this setting with option -C. + + + MaxWorkers + The argument specifies the maximum number of worker processes or + threads that will be used to serve activation requests concur‐ + rently. This is the same as specifying -m on the command line. + Minimum is 1. The maximum is platform specific and is at least + 32767 but is likely to be greater on most systems. The default + is no limit. + + + ConnectionTimeout + Used to control when the vlmcsd disconnects idle TPC connec‐ + tions. The default is 30 seconds. This is the same setting as -t + on the command line. + + + DisconnectClientsImmediately + Set this to TRUE to disconnect a client after it got an activa‐ + tion response regardless whether a timeout has occured or not. + The default is FALSE. Setting this to TRUE is non-standard + behavior. Use only if you are experiencing DoS or DDoS attacks. + On the command line you control this behavior with options -d + and -k. + + + PidFile + Write a pid file. The argument is the full pathname of a pid + file. The pid file contains is single line containing the + process id of the vlmcsd process. It can be used to stop + (SIGTERM) or restart (SIGHUP) vlmcsd. This directive can be + overriden using -p on the command line. + + + LogFile + Write a log file. The argument is the full pathname of a log + file. On a unixoid OS and with Cygwin you can use the special + filename 'syslog' to log to the syslog facility. This is the + same as specifying -l on the command line. + + + LogVerbose + Set this to either TRUE or FALSE. The default is FALSE. If set + to TRUE, more details of each activation will be logged. You use + -v and -q in the command line to control this setting. LogVer‐ + bose has an effect only if you specify a log file or redirect + logging to stdout(3). + + + ActivationInterval + This is the same as specifying -A on the command line. See vlm‐ + csd(8) for details. The default is 2 hours. Example: Activation‐ + Interval = 1h + + + RenewalInterval + This is the same as specifying -R on the command line. See vlm‐ + csd(8) for details. The default is 7 days. Example: Activation‐ + Interval = 3h. Please note that the KMS client decides itself + when to renew activation. Even though vlmcsd sends the renewal + interval you specify, it is no more than some kind of recommen‐ + dation to the client. Older KMS clients did follow the recommen‐ + dation from a KMS server or emulator. Newer clients do not. + + + User Run vlmcsd as another, preferrably less privileged, user. The + argument can be a user name or a numeric user id. You must have + the required privileges (capabilities on Linux) to change the + security context of a process without providing any credentials + (a password in most cases). On most unixoid OSses 'root' is the + only user who has these privileges in the default configuration. + This setting is not available in the native Windows version of + vlmcsd. See -u in vlmcsd(8). This setting cannot be changed on + the fly by sending SIGHUP to vlmcsd. + + + Group Run vlmcsd as another, preferrably less privileged, group. The + argument can be a group name or a numeric group id. You must + have the required privileges (capabilities on Linux) to change + the security context of a process without providing any creden‐ + tials (a password in most cases). On most unixoid OSses 'root' + is the only user who has these privileges in the default config‐ + uration. This setting is not available in the native Windows + version of vlmcsd. See -g in vlmcsd(8). This setting cannot be + changed on the fly by sending SIGHUP to vlmcsd. + + +SPECIAL KEYWORDS + Any valid GUID is being treated as a special keyword in the ini file. + It is used to select a specfic ePID and HwId for an application GUID. + The argument has the form ePID [ / HwId ]. KMS currently knows only 3 + application GUIDs: + + 55c92734-d682-4d71-983e-d6ec3f16059f (Windows) + 59a52881-a989-479d-af46-f275c6370663 (Office 2010) + 0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013) + + To use specific ePIDs for Windows, Office 2010 and Office 2013 you + could add the following lines to vlmcsd.ini: + + 55c92734-d682-4d71-983e-d6ec3f16059f = 55041-00206-184-207146-03-1062-6002.0000-3322013 + 59a52881-a989-479d-af46-f275c6370663 = 55041-00096-216-598637-03-17418-6002.0000-3312013 + 0ff1ce15-a989-479d-af46-f275c6370663 = 55041-00206-234-742099-03-9217-6002.0000-2942013 + + The ePID is currently a comment only. You can specify any string up to + 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs + that were used in KMSv5 versions of the "ratiborus virtual machine". + Microsoft has given up on blacklisting when KMS emulators appeared in + the wild. + + Even if you can use "Activated by cool hacker guys" as an ePID, you may + wish to use ePIDs that cannot be detected as non-MS ePIDs. If you don't + know how these "valid" ePIDs look like exactly, do not use GUIDS in + vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid + ePIDs. + + If you use non-ASCII characters in your ePID (you shouldn't do anyway), + these must be in UTF-8 format. This is especially important when you + run vlmcsd on Windows or cygwin because UTF-8 is not the default encod‐ + ing for most editors. + + If you are specifying an optional HWID it follows the same syntax as in + the -H option in vlmcsd(8) ecxept that you must not enclose a HWID in + quotes even if it contains spaces. + + +FILES + vlmcsd.ini(5) + + +AUTHOR + vlmcsd(8) was written by crony12, Hotbird64 and vityan666. With contri‐ + butions from DougQaid. + + +CREDITS + Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐ + borus, ... + + +SEE ALSO + vlmcsd(8), vlmcsd(7), vlmcs(1), vlmcsdmulti(1) + + + +Hotbird64 February 2015 VLMCSD.INI(5) diff --git a/vlmcsd_all.c b/vlmcsd_all.c new file mode 100644 index 00000000..8440b6ab --- /dev/null +++ b/vlmcsd_all.c @@ -0,0 +1,6009 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if defined(USE_MSRPC) && !defined(_WIN32) && !defined(__CYGWIN__) +#error Microsoft RPC is only available on Windows and Cygwin +#endif + +#if defined(NO_SOCKETS) && defined(USE_MSRPC) +#error Cannot use inetd mode with Microsoft RPC +#endif + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#include +#include + +#if !defined(NO_LIMIT) && !__minix__ +#include +#if !__ANDROID__ +#include +#else // __ANDROID__ +#include +#endif // __ANDROID__ +#endif // !defined(NO_LIMIT) && !__minix__ + +#include +#include +#include +#include +#include +#endif // !_WIN32 + +#if __APPLE__ +#include +#endif // __APPLE__ + +#if __linux__ && defined(USE_AUXV) +#include +#endif + +#if __FreeBSD__ +#include +#endif + +#include "vlmcsd.h" +#include "endian.h" +#include "shared_globals.h" +#include "output.h" +#ifndef USE_MSRPC +#include "network.h" +#else // USE_MSRPC +#include "msrpc-server.h" +#endif // USE_MSRPC +#include "ntservice.h" +#include "helpers.h" + + +static const char* const optstring = "N:B:m:t:w:0:3:H:A:R:u:g:L:p:i:P:l:r:U:W:C:SsfeDd46VvIdqkZ"; + +#if !defined(NO_SOCKETS) +#if !defined(USE_MSRPC) +static uint_fast8_t maxsockets = 0; +static int_fast8_t haveIPv6Stack = 0; +static int_fast8_t haveIPv4Stack = 0; +static int_fast8_t v6required = 0; +static int_fast8_t v4required = 0; +#endif // !defined(USE_MSRPC) +#endif // !defined(NO_SOCKETS) + +#ifdef _NTSERVICE +static int_fast8_t installService = 0; +static const char *restrict ServiceUser = NULL; +static const char *restrict ServicePassword = ""; +#endif + +#ifndef NO_PID_FILE +static const char *fn_pid = NULL; +#endif + +#ifndef NO_INI_FILE + +#ifdef INI_FILE +static const char *fn_ini = INI_FILE; +#else // !INI_FILE +static const char *fn_ini = NULL; +#endif // !INI_FILE + +static const char* IniFileErrorMessage = ""; +char* IniFileErrorBuffer = NULL; +#define INIFILE_ERROR_BUFFERSIZE 256 + +static IniFileParameter_t IniFileParameterList[] = +{ +# ifndef NO_RANDOM_EPID + { "RandomizationLevel", INI_PARAM_RANDOMIZATION_LEVEL }, + { "LCID", INI_PARAM_LCID }, +# endif // NO_RANDOM_EPID +# ifdef USE_MSRPC + { "Port", INI_PARAM_PORT }, +# endif // USE_MSRPC +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + { "Listen", INI_PARAM_LISTEN }, +# if !defined(NO_LIMIT) && !__minix__ + { "MaxWorkers", INI_PARAM_MAX_WORKERS }, +# endif // !defined(NO_LIMIT) && !__minix__ +# endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) +# if !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC) + { "ConnectionTimeout", INI_PARAM_CONNECTION_TIMEOUT }, +# endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC) +# ifndef USE_MSRPC + { "DisconnectClientsImmediately", INI_PARAM_DISCONNECT_IMMEDIATELY }, + { "UseNDR64", INI_PARAM_RPC_NDR64 }, + { "UseBTFN", INI_PARAM_RPC_BTFN }, +# endif // USE_MSRPC +# ifndef NO_PID_FILE + { "PIDFile", INI_PARAM_PID_FILE }, +# endif // NO_PID_FILE +# ifndef NO_LOG + { "LogFile", INI_PARAM_LOG_FILE }, +# ifndef NO_VERBOSE_LOG + { "LogVerbose", INI_PARAM_LOG_VERBOSE }, +# endif // NO_VERBOSE_LOG +# endif // NO_LOG +# ifndef NO_CUSTOM_INTERVALS + {"ActivationInterval", INI_PARAM_ACTIVATION_INTERVAL }, + {"RenewalInterval", INI_PARAM_RENEWAL_INTERVAL }, +# endif // NO_CUSTOM_INTERVALS +# if !defined(NO_USER_SWITCH) && !defined(_WIN32) + { "user", INI_PARAM_UID }, + { "group", INI_PARAM_GID}, +# endif // !defined(NO_USER_SWITCH) && !defined(_WIN32) +}; + +#endif // NO_INI_FILE + + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#if !defined(USE_THREADS) && !defined(CYGWIN) && !defined(USE_MSRPC) +static int shmid = -1; +#endif + +#if __ANDROID__ && !defined(USE_THREADS) // Bionic does not wrap these syscalls (willingly because Google fears, developers don't know how to use it) + +#ifdef __NR_shmget +static int shmget(key_t key, size_t size, int shmflg) +{ + return syscall(__NR_shmget, key, size, shmflg); +} +#endif // __NR_shmget + +#ifdef __NR_shmat +static void *shmat(int shmid, const void *shmaddr, int shmflg) +{ + return (void *)syscall(__NR_shmat, shmid, shmaddr, shmflg); +} +#endif // __NR_shmat + +#ifdef __NR_shmdt +static int shmdt(const void *shmaddr) +{ + return syscall(__NR_shmdt, shmaddr); +} +#endif // __NR_shmdt + +#ifdef __NR_shmctl +static int shmctl(int shmid, int cmd, /*struct shmid_ds*/void *buf) +{ + return syscall(__NR_shmctl, shmid, cmd, buf); +} +#endif // __NR_shmctl + +#endif // __ANDROID__ && !defined(USE_THREADS) + +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_USER_SWITCH +#ifndef _WIN32 + +static const char *uname = NULL, *gname = NULL; +static gid_t gid = INVALID_GID; +static uid_t uid = INVALID_UID; + +// Get Numeric id of user/group +static char GetNumericId(gid_t *restrict id, const char *const c) +{ + char* endptr; + gid_t temp; + + temp = (gid_t)strtoll(c, &endptr, 10); + + if (!*endptr) *id = temp; + + return *endptr; +} + + +// Get group id from option argument +static char GetGid() +{ + struct group *g; + + if ((g = getgrnam(optarg))) + gid = g->gr_gid; + else + return GetNumericId(&gid, optarg); + + return 0; +} + + +// Get user id from option argument +static char GetUid() +{ + struct passwd *u; + + ////PORTABILITY: Assumes uid_t and gid_t are of same size (shouldn't be a problem) + if ((u = getpwnam(optarg))) + uid = u->pw_uid; + else + return GetNumericId((gid_t*)&uid, optarg); + + return 0; +} +#endif // _WIN32 +#endif //NO_USER_SWITCH + +#ifdef NO_HELP +static __noreturn void usage() +{ + printerrorf("Incorrect parameters\n\n"); + exit(!0); +} +#else // HELP + + +static __noreturn void usage() +{ + printerrorf("vlmcsd %s\n" + "\nUsage:\n" + " %s [ options ]\n\n" + "Where:\n" + #ifndef NO_CL_PIDS + " -w always use for Windows\n" + " -0 always use for Office2010\n" + " -3 always use for Office2013\n" + " -H always use hardware Id \n" + #endif // NO_CL_PIDS + #if !defined(_WIN32) && !defined(NO_USER_SWITCH) + " -u set uid to \n" + " -g set gid to \n" + #endif // !defined(_WIN32) && !defined(NO_USER_SWITCH) + #ifndef NO_RANDOM_EPID + " -r 0|1|2\t\tset ePID randomization level (default 1)\n" + " -C \t\tuse fixed in random ePIDs\n" + #endif // NO_RANDOM_EPID + #ifndef NO_SOCKETS + #ifndef USE_MSRPC + " -4\t\t\tuse IPv4\n" + " -6\t\t\tuse IPv6\n" + " -L
[:]\tlisten on IP address
with optional \n" + " -P \t\tset TCP port for subsequent -L statements (default 1688)\n" + #else // USE_MSRPC + " -P \t\tuse TCP port (default 1688)\n" + #endif // USE_MSRPC + #if !defined(NO_LIMIT) && !__minix__ + " -m \t\tHandle max. simultaneously (default no limit)\n" + #endif // !defined(NO_LIMIT) && !__minix__ + #ifdef _NTSERVICE + " -s install vlmcsd as an NT service. Ignores -e" + #ifndef _WIN32 + ", -f and -D" + #endif // _WIN32 + "\n" + " -S remove vlmcsd service. Ignores all other options\n" + " -U run NT service as . Must be used with -s\n" + " -W optional for -U. Must be used with -s\n" + #endif // _NTSERVICE + #ifndef NO_LOG + " -e log to stdout\n" + #endif // NO_LOG + #ifndef _WIN32 // + " -D run in foreground\n" + " -f run in foreground" + #ifndef NO_LOG + " and log to stdout" + #endif // NO_LOG + "\n" + #endif // _WIN32 + #endif // NO_SOCKETS + #ifndef USE_MSRPC + #if !defined(NO_TIMEOUT) && !__minix__ + " -t \t\tdisconnect clients after of inactivity (default 30)\n" + #endif // !defined(NO_TIMEOUT) && !__minix__ + " -d\t\t\tdisconnect clients after each request\n" + " -k\t\t\tdon't disconnect clients after each request (default)\n" + " -N0, -N1\t\tdisable/enable NDR64\n" + " -B0, -B1\t\tdisable/enable bind time feature negotiation\n" + #endif // USE_MSRPC + #ifndef NO_PID_FILE + " -p write pid to \n" + #endif // NO_PID_FILE + #ifndef NO_INI_FILE + " -i \t\tuse config file \n" + #endif // NO_INI_FILE + #ifndef NO_CUSTOM_INTERVALS + " -R renew activation every (default 1w)\n" + " -A retry activation every (default 2h)\n" + #endif // NO_CUSTOM_INTERVALS + #ifndef NO_LOG + #ifndef _WIN32 + " -l syslog log to syslog\n" + #endif // _WIN32 + " -l log to \n" + #ifndef NO_VERBOSE_LOG + " -v\t\t\tlog verbose\n" + " -q\t\t\tdon't log verbose (default)\n" + #endif // NO_VERBOSE_LOG + #endif // NO_LOG + " -V display version information and exit" + "\n", + Version, global_argv[0]); + + exit(!0); +} +#endif // HELP + + +#ifndef NO_CUSTOM_INTERVALS + +// Convert time span strings (e.g. "2h", "5w") to minutes +__pure static DWORD timeSpanString2Minutes(const char *const restrict argument) +{ + char *unitId; + + long long val = strtoll(argument, &unitId, 10); + + switch(toupper((int)*unitId)) + { + case 0: + case 'M': + break; + case 'H': + val *= 60; + break; + case 'D': + val *= 60 * 24; + break; + case 'W': + val *= 60 * 24 * 7; + break; + case 'S': + val /= 60; + break; + default: + return 0; + } + + if (val < 1) val = 1; + if (val > UINT_MAX) val = UINT_MAX; + + return (DWORD)val; +} + + +#ifndef NO_INI_FILE +__pure static BOOL getTimeSpanFromIniFile(DWORD* result, const char *const restrict argument) +{ + DWORD val = timeSpanString2Minutes(argument); + if (!val) + { + IniFileErrorMessage = "Incorrect time span."; + return FALSE; + } + + *result = val; + return TRUE; +} +#endif // NO_INI_FILE + + +__pure static DWORD getTimeSpanFromCommandLine(const char *const restrict optarg, const char optchar) +{ + long long val = timeSpanString2Minutes(optarg); + + if (!val) + { + printerrorf("Fatal: No valid time span specified in option -%c.\n", optchar); + exit (!0); + } + + return (DWORD)val; +} + +#endif // NO_CUSTOM_INTERVALS + + +#ifndef NO_INI_FILE +static void ignoreIniFileParameter(uint_fast8_t iniFileParameterId) +{ + uint_fast8_t i; + + for (i = 0; i < _countof(IniFileParameterList); i++) + { + if (IniFileParameterList[i].Id != iniFileParameterId) continue; + IniFileParameterList[i].Id = 0; + break; + } +} +#else // NO_INI_FILE +#define ignoreIniFileParameter(x) +#endif // NO_INI_FILE + + +#ifndef NO_INI_FILE +static BOOL getIniFileArgumentBool(int_fast8_t *result, const char *const argument) +{ + IniFileErrorMessage = "Argument must be true/on/yes/1 or false/off/no/0"; + return getArgumentBool(result, argument); +} + + +static BOOL getIniFileArgumentInt(unsigned int *result, const char *const argument, const unsigned int min, const unsigned int max) +{ + unsigned int tempResult; + + if (!stringToInt(argument, min, max, &tempResult)) + { + snprintf(IniFileErrorBuffer, INIFILE_ERROR_BUFFERSIZE, "Must be integer between %u and %u", min, max); + IniFileErrorMessage = IniFileErrorBuffer; + return FALSE; + } + + *result = tempResult; + return TRUE; +} + + +static char* allocateStringArgument(const char *const argument) +{ + char* result = (char*)vlmcsd_malloc(strlen(argument) + 1); + strcpy(result, argument); + return result; +} + + +static BOOL setIniFileParameter(uint_fast8_t id, const char *const iniarg) +{ + unsigned int result; + BOOL success = TRUE; + + switch(id) + { +# if !defined(NO_USER_SWITCH) && !defined(_WIN32) + + case INI_PARAM_GID: + { + struct group *g; + IniFileErrorMessage = "Invalid group id or name"; + if (!(gname = allocateStringArgument(iniarg))) return FALSE; + + if ((g = getgrnam(iniarg))) + gid = g->gr_gid; + else + success = !GetNumericId(&gid, iniarg); + break; + } + + case INI_PARAM_UID: + { + struct passwd *p; + IniFileErrorMessage = "Invalid user id or name"; + if (!(uname = allocateStringArgument(iniarg))) return FALSE; + + if ((p = getpwnam(iniarg))) + uid = p->pw_uid; + else + success = !GetNumericId(&uid, iniarg); + break; + } + +# endif // !defined(NO_USER_SWITCH) && !defined(_WIN32) + +# ifndef NO_RANDOM_EPID + + case INI_PARAM_LCID: + success = getIniFileArgumentInt(&result, iniarg, 0, 32767); + if (success) Lcid = (uint16_t)result; + break; + + case INI_PARAM_RANDOMIZATION_LEVEL: + success = getIniFileArgumentInt(&result, iniarg, 0, 2); + if (success) RandomizationLevel = (int_fast8_t)result; + break; + +# endif // NO_RANDOM_EPID + +# ifdef USE_MSRPC + + case INI_PARAM_PORT: + defaultport = allocateStringArgument(iniarg); + break; + +# endif // USE_MSRPC + +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + case INI_PARAM_LISTEN: + maxsockets++; + return TRUE; + +# if !defined(NO_LIMIT) && !__minix__ + + case INI_PARAM_MAX_WORKERS: +# ifdef USE_MSRPC + success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT); +# else // !USE_MSRPC + success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, SEM_VALUE_MAX); +# endif // !USE_MSRPC + break; + +# endif // !defined(NO_LIMIT) && !__minix__ +# endif // NO_SOCKETS + +# ifndef NO_PID_FILE + + case INI_PARAM_PID_FILE: + fn_pid = allocateStringArgument(iniarg); + break; + +# endif // NO_PID_FILE + +# ifndef NO_LOG + + case INI_PARAM_LOG_FILE: + fn_log = allocateStringArgument(iniarg); + break; + +# ifndef NO_VERBOSE_LOG + case INI_PARAM_LOG_VERBOSE: + success = getIniFileArgumentBool(&logverbose, iniarg); + break; + +# endif // NO_VERBOSE_LOG +# endif // NO_LOG + +# ifndef NO_CUSTOM_INTERVALS + + case INI_PARAM_ACTIVATION_INTERVAL: + success = getTimeSpanFromIniFile(&VLActivationInterval, iniarg); + break; + + case INI_PARAM_RENEWAL_INTERVAL: + success = getTimeSpanFromIniFile(&VLRenewalInterval, iniarg); + break; + +# endif // NO_CUSTOM_INTERVALS + +# ifndef USE_MSRPC + +# if !defined(NO_TIMEOUT) && !__minix__ + + case INI_PARAM_CONNECTION_TIMEOUT: + success = getIniFileArgumentInt(&result, iniarg, 1, 600); + if (success) ServerTimeout = (DWORD)result; + break; + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + case INI_PARAM_DISCONNECT_IMMEDIATELY: + success = getIniFileArgumentBool(&DisconnectImmediately, iniarg); + break; + + case INI_PARAM_RPC_NDR64: + success = getIniFileArgumentBool(&UseRpcNDR64, iniarg); + break; + + case INI_PARAM_RPC_BTFN: + success = getIniFileArgumentBool(&UseRpcBTFN, iniarg); + break; + +# endif // USE_MSRPC + + default: + return FALSE; + } + + return success; +} + + +static __pure int isControlCharOrSlash(const char c) +{ + if ((unsigned char)c < '!') return !0; + if (c == '/') return !0; + return 0; +} + + +static void iniFileLineNextWord(const char **s) +{ + while ( **s && isspace((int)**s) ) (*s)++; +} + + +static BOOL setHwIdFromIniFileLine(const char **s, const ProdListIndex_t index) +{ + iniFileLineNextWord(s); + + if (**s == '/') + { + if (KmsResponseParameters[index].HwId) return TRUE; + + BYTE* HwId = (BYTE*)vlmcsd_malloc(sizeof(((RESPONSE_V6 *)0)->HwId)); + hex2bin(HwId, *s + 1, sizeof(((RESPONSE_V6 *)0)->HwId)); + KmsResponseParameters[index].HwId = HwId; + } + + return TRUE; +} + + +static BOOL checkGuidInIniFileLine(const char **s, ProdListIndex_t *const index) +{ + GUID AppGuid; + + if (!string2Uuid(*s, &AppGuid)) return FALSE; + + (*s) += GUID_STRING_LENGTH; + getProductNameHE(&AppGuid, AppList, index); + + if (*index > getAppListSize() - 2) + { + IniFileErrorMessage = "Unknown App Guid."; + return FALSE; + } + + iniFileLineNextWord(s); + if ( *(*s)++ != '=' ) return FALSE; + + return TRUE; +} + + +static BOOL setEpidFromIniFileLine(const char **s, const ProdListIndex_t index) +{ + iniFileLineNextWord(s); + const char *savedPosition = *s; + uint_fast16_t i; + + for (i = 0; !isControlCharOrSlash(**s); i++) + { + if (utf8_to_ucs2_char((const unsigned char*)*s, (const unsigned char**)s) == (WCHAR)~0) + { + return FALSE; + } + } + + if (i < 1 || i >= PID_BUFFER_SIZE) return FALSE; + if (KmsResponseParameters[index].Epid) return TRUE; + + size_t size = *s - savedPosition + 1; + + char* epidbuffer = (char*)vlmcsd_malloc(size); + memcpy(epidbuffer, savedPosition, size - 1); + epidbuffer[size - 1] = 0; + + KmsResponseParameters[index].Epid = epidbuffer; + + #ifndef NO_LOG + KmsResponseParameters[index].EpidSource = fn_ini; + #endif //NO_LOG + + return TRUE; +} + + +static BOOL getIniFileArgument(const char **s) +{ + while (!isspace((int)**s) && **s != '=' && **s) (*s)++; + iniFileLineNextWord(s); + + if (*((*s)++) != '=') + { + IniFileErrorMessage = "'=' required after keyword."; + return FALSE; + } + + iniFileLineNextWord(s); + + if (!**s) + { + IniFileErrorMessage = "missing argument after '='."; + return FALSE; + } + + return TRUE; +} + + +static BOOL handleIniFileParameter(const char *s) +{ + uint_fast8_t i; + + for (i = 0; i < _countof(IniFileParameterList); i++) + { + if (strncasecmp(IniFileParameterList[i].Name, s, strlen(IniFileParameterList[i].Name))) continue; + if (!IniFileParameterList[i].Id) return TRUE; + + if (!getIniFileArgument(&s)) return FALSE; + + return setIniFileParameter(IniFileParameterList[i].Id, s); + } + + IniFileErrorMessage = "Unknown keyword."; + return FALSE; +} + + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +static BOOL setupListeningSocketsFromIniFile(const char *s) +{ + if (!maxsockets) return TRUE; + if (strncasecmp("Listen", s, 6)) return TRUE; + if (!getIniFileArgument(&s)) return TRUE; + + snprintf(IniFileErrorBuffer, INIFILE_ERROR_BUFFERSIZE, "Cannot listen on %s.", s); + IniFileErrorMessage = IniFileErrorBuffer; + return addListeningSocket(s); +} +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + +static BOOL readIniFile(const uint_fast8_t pass) +{ + char line[256]; + const char *s; + ProdListIndex_t appIndex; + unsigned int lineNumber; + uint_fast8_t lineParseError; + + FILE *restrict f; + BOOL result = TRUE; + + IniFileErrorBuffer = (char*)vlmcsd_malloc(INIFILE_ERROR_BUFFERSIZE); + + if ( !(f = fopen(fn_ini, "r") )) return FALSE; + + for (lineNumber = 1; (s = fgets(line, sizeof(line), f)); lineNumber++) + { + line[strlen(line) - 1] = 0; + + iniFileLineNextWord(&s); + if (*s == ';' || *s == '#' || !*s) continue; + +# ifndef NO_SOCKETS + if (pass == INI_FILE_PASS_1) +# endif // NO_SOCKETS + { + if (handleIniFileParameter(s)) continue; + + lineParseError = !checkGuidInIniFileLine(&s, &appIndex) || + !setEpidFromIniFileLine(&s, appIndex) || + !setHwIdFromIniFileLine(&s, appIndex); + } +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + else if (pass == INI_FILE_PASS_2) + { + lineParseError = !setupListeningSocketsFromIniFile(s); + } + else + { + return FALSE; + } +# endif // NO_SOCKETS + + if (lineParseError) + { + printerrorf("Warning: %s line %u: \"%s\". %s\n", fn_ini, lineNumber, line, IniFileErrorMessage); + continue; + } + } + + if (ferror(f)) result = FALSE; + + free(IniFileErrorBuffer); + fclose(f); + +# if !defined(NO_SOCKETS) && !defined(NO_LOG) + + if (pass == INI_FILE_PASS_1 && !InetdMode && result) + { +# ifdef _NTSERVICE + if (!installService) +# endif // _NTSERVICE + logger("Read ini file %s\n", fn_ini); + } + +# endif // !defined(NO_SOCKETS) && !defined(NO_LOG) + + return result; +} +#endif // NO_INI_FILE + + +#if !defined(NO_SOCKETS) +#if !defined(_WIN32) +#if !defined(NO_SIGHUP) +static void exec_self(char** argv) +{ +# if __linux__ && defined(USE_AUXV) + + char *execname_ptr = (char*)getauxval(AT_EXECFN); + if (execname_ptr) execv(execname_ptr, argv); + +# elif (__linux__ || __CYGWIN__) && !defined(NO_PROCFS) + + execv(realpath("/proc/self/exe", NULL), argv); + +# elif (__FreeBSD__) && !defined(NO_PROCFS) + + int mib[4]; + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PATHNAME; + mib[3] = -1; + char path[PATH_MAX + 1]; + size_t cb = sizeof(path); + if (!sysctl(mib, 4, path, &cb, NULL, 0)) execv(path, argv); + +# elif (__DragonFly__) && !defined(NO_PROCFS) + + execv(realpath("/proc/curproc/file", NULL), argv); + +# elif __NetBSD__ && !defined(NO_PROCFS) + + execv(realpath("/proc/curproc/exe", NULL), argv); + +# elif __sun__ + + const char* exename = getexecname(); + if (exename) execv(exename, argv); + +# elif __APPLE__ + + char path[PATH_MAX + 1]; + uint32_t size = sizeof(path); + if (_NSGetExecutablePath(path, &size) == 0) execv(path, argv); + +# else + + execvp(argv[0], argv); + +# endif +} + + +static void HangupHandler(const int signal_unused) +{ + int i; + int_fast8_t daemonize_protection = TRUE; + CARGV argv_in = multi_argv == NULL ? global_argv : multi_argv; + int argc_in = multi_argc == 0 ? global_argc : multi_argc; + const char** argv_out = (const char**)vlmcsd_malloc((argc_in + 2) * sizeof(char**)); + + for (i = 0; i < argc_in; i++) + { + if (!strcmp(argv_in[i], "-Z")) daemonize_protection = FALSE; + argv_out[i] = argv_in[i]; + } + + argv_out[argc_in] = argv_out[argc_in + 1] = NULL; + if (daemonize_protection) argv_out[argc_in] = (char*) "-Z"; + + exec_self((char**)argv_out); + +# ifndef NO_LOG + logger("Fatal: Unable to restart on SIGHUP: %s\n", strerror(errno)); +# endif + +# ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); +# endif // NO_PID_FILE + exit(errno); +} +#endif // NO_SIGHUP + + +static void terminationHandler(const int signal_unused) +{ + cleanup(); + exit(0); +} + + +#if defined(CHILD_HANDLER) || __minix__ +static void childHandler(const int signal) +{ + waitpid(-1, NULL, WNOHANG); +} +#endif // defined(CHILD_HANDLER) || __minix__ + + +static int daemonizeAndSetSignalAction() +{ + struct sigaction sa; + sigemptyset(&sa.sa_mask); + +# ifndef NO_LOG + if ( !nodaemon) if (daemon(!0, logstdout)) +# else // NO_LOG + if ( !nodaemon) if (daemon(!0, 0)) +# endif // NO_LOG + { + printerrorf("Fatal: Could not daemonize to background.\n"); + return(errno); + } + + if (!InetdMode) + { +# ifndef USE_THREADS + +# if defined(CHILD_HANDLER) || __minix__ + sa.sa_handler = childHandler; +# else // !(defined(CHILD_HANDLER) || __minix__) + sa.sa_handler = SIG_IGN; +# endif // !(defined(CHILD_HANDLER) || __minix__) + sa.sa_flags = SA_NOCLDWAIT; + + if (sigaction(SIGCHLD, &sa, NULL)) + return(errno); + +# endif // !USE_THREADS + + sa.sa_handler = terminationHandler; + sa.sa_flags = 0; + + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + +# ifndef NO_SIGHUP + sa.sa_handler = HangupHandler; + sa.sa_flags = SA_NODEFER; + sigaction(SIGHUP, &sa, NULL); +# endif // NO_SIGHUP + } + + return 0; +} + + +#else // _WIN32 + +static BOOL terminationHandler(const DWORD fdwCtrlType) +{ + // What a lame substitute for Unix signal handling + switch(fdwCtrlType) + { + case CTRL_C_EVENT: + case CTRL_CLOSE_EVENT: + case CTRL_BREAK_EVENT: + case CTRL_LOGOFF_EVENT: + case CTRL_SHUTDOWN_EVENT: + cleanup(); + exit(0); + default: + return FALSE; + } +} + + +static DWORD daemonizeAndSetSignalAction() +{ + if(!SetConsoleCtrlHandler( (PHANDLER_ROUTINE) terminationHandler, TRUE )) + { + #ifndef NO_LOG + DWORD rc = GetLastError(); + logger("Warning: Could not register Windows signal handler: Error %u\n", rc); + #endif // NO_LOG + } + + return ERROR_SUCCESS; +} +#endif // _WIN32 +#endif // !defined(NO_SOCKETS) + + +// Workaround for Cygwin fork bug (only affects cygwin processes that are Windows services) +// Best is to compile for Cygwin with threads. fork() is slow and unreliable on Cygwin +#if !defined(NO_INI_FILE) || !defined(NO_LOG) || !defined(NO_CL_PIDS) +__pure static char* getCommandLineArg(char *const restrict optarg) +{ + #if !defined (__CYGWIN__) || defined(USE_THREADS) || defined(NO_SOCKETS) + return optarg; + #else + if (!IsNTService) return optarg; + + return allocateStringArgument(optarg); + #endif +} +#endif // !defined(NO_INI_FILE) || !defined(NO_LOG) || !defined(NO_CL_PIDS) + + +static void parseGeneralArguments() { + int o; + + #ifndef NO_CL_PIDS + BYTE* HwId; + #endif // NO_CL_PIDS + + for (opterr = 0; ( o = getopt(global_argc, (char* const*)global_argv, optstring) ) > 0; ) switch (o) + { + #if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + case 'Z': + IsRestarted = TRUE; + nodaemon = TRUE; + break; + #endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + + #ifndef NO_CL_PIDS + case 'w': + KmsResponseParameters[APP_ID_WINDOWS].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_WINDOWS].EpidSource = "command line"; + #endif // NO_LOG + break; + + case '0': + KmsResponseParameters[APP_ID_OFFICE2010].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_OFFICE2010].EpidSource = "command line"; + #endif // NO_LOG + break; + + case '3': + KmsResponseParameters[APP_ID_OFFICE2013].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_OFFICE2013].EpidSource = "command line"; + #endif // NO_LOG + break; + + case 'H': + HwId = (BYTE*)vlmcsd_malloc(sizeof(((RESPONSE_V6 *)0)->HwId)); + + hex2bin(HwId, optarg, sizeof(((RESPONSE_V6 *)0)->HwId)); + + KmsResponseParameters[APP_ID_WINDOWS].HwId = HwId; + KmsResponseParameters[APP_ID_OFFICE2010].HwId = HwId; + KmsResponseParameters[APP_ID_OFFICE2013].HwId = HwId; + break; + #endif // NO_CL_PIDS + + #ifndef NO_SOCKETS + + #ifndef USE_MSRPC + case '4': + case '6': + case 'P': + ignoreIniFileParameter(INI_PARAM_LISTEN); + break; + #else // USE_MSRPC + case 'P': + defaultport = optarg; + ignoreIniFileParameter(INI_PARAM_PORT); + break; + #endif // USE_MSRPC + + #if !defined(NO_LIMIT) && !__minix__ + + case 'm': + #ifdef USE_MSRPC + MaxTasks = getOptionArgumentInt(o, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT); + #else // !USE_MSRPC + MaxTasks = getOptionArgumentInt(o, 1, SEM_VALUE_MAX); + #endif // !USE_MSRPC + ignoreIniFileParameter(INI_PARAM_MAX_WORKERS); + break; + + #endif // !defined(NO_LIMIT) && !__minix__ + #endif // NO_SOCKETS + + #if !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) + case 't': + ServerTimeout = getOptionArgumentInt(o, 1, 600); + ignoreIniFileParameter(INI_PARAM_CONNECTION_TIMEOUT); + break; + #endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) + + #ifndef NO_PID_FILE + case 'p': + fn_pid = getCommandLineArg(optarg); + ignoreIniFileParameter(INI_PARAM_PID_FILE); + break; + #endif + + #ifndef NO_INI_FILE + case 'i': + fn_ini = getCommandLineArg(optarg); + if (!strcmp(fn_ini, "-")) fn_ini = NULL; + break; + #endif + + #ifndef NO_LOG + case 'l': + fn_log = getCommandLineArg(optarg); + ignoreIniFileParameter(INI_PARAM_LOG_FILE); + break; + + #ifndef NO_VERBOSE_LOG + case 'v': + case 'q': + logverbose = o == 'v'; + ignoreIniFileParameter(INI_PARAM_LOG_VERBOSE); + break; + + #endif // NO_VERBOSE_LOG + #endif // NO_LOG + + #ifndef NO_SOCKETS + #ifndef USE_MSRPC + case 'L': + maxsockets++; + ignoreIniFileParameter(INI_PARAM_LISTEN); + break; + #endif // USE_MSRPC + + case 'f': + nodaemon = 1; + #ifndef NO_LOG + logstdout = 1; + #endif + break; + + #ifdef _NTSERVICE + case 'U': + ServiceUser = optarg; + break; + + case 'W': + ServicePassword = optarg; + break; + + case 's': + #ifndef USE_MSRPC + if (InetdMode) usage(); + #endif // USE_MSRPC + if (!IsNTService) installService = 1; // Install + break; + + case 'S': + if (!IsNTService) installService = 2; // Remove + break; + #endif // _NTSERVICE + + case 'D': + nodaemon = 1; + break; + + #ifndef NO_LOG + case 'e': + logstdout = 1; + break; + #endif // NO_LOG + #endif // NO_SOCKETS + + #ifndef _WIN32 + case 'I': // Backward compatibility with svn681 and earlier + break; + #endif // _WIN32 + + #ifndef NO_RANDOM_EPID + case 'r': + RandomizationLevel = (int_fast8_t)getOptionArgumentInt(o, 0, 2); + ignoreIniFileParameter(INI_PARAM_RANDOMIZATION_LEVEL); + break; + + case 'C': + Lcid = (uint16_t)getOptionArgumentInt(o, 0, 32767); + + ignoreIniFileParameter(INI_PARAM_LCID); + + #ifdef _PEDANTIC + if (!IsValidLcid(Lcid)) + { + printerrorf("Warning: %s is not a valid LCID.\n", optarg); + } + #endif // _PEDANTIC + + break; + #endif // NO_RANDOM_PID + + #if !defined(NO_USER_SWITCH) && !defined(_WIN32) + case 'g': + gname = optarg; + ignoreIniFileParameter(INI_PARAM_GID); + #ifndef NO_SIGHUP + if (!IsRestarted) + #endif // NO_SIGHUP + if (GetGid()) + { + printerrorf("Fatal: setgid for %s failed.\n", optarg); + exit(!0); + } + break; + + case 'u': + uname = optarg; + ignoreIniFileParameter(INI_PARAM_UID); + #ifndef NO_SIGHUP + if (!IsRestarted) + #endif // NO_SIGHUP + if (GetUid()) + { + printerrorf("Fatal: setuid for %s failed.\n", optarg); + exit(!0); + } + break; + #endif // NO_USER_SWITCH && !_WIN32 + + #ifndef NO_CUSTOM_INTERVALS + case 'R': + VLRenewalInterval = getTimeSpanFromCommandLine(optarg, o); + ignoreIniFileParameter(INI_PARAM_RENEWAL_INTERVAL); + break; + + case 'A': + VLActivationInterval = getTimeSpanFromCommandLine(optarg, o); + ignoreIniFileParameter(INI_PARAM_ACTIVATION_INTERVAL); + break; + #endif + + #ifndef USE_MSRPC + case 'd': + case 'k': + DisconnectImmediately = o == 'd'; + ignoreIniFileParameter(INI_PARAM_DISCONNECT_IMMEDIATELY); + break; + + case 'N': + if (!getArgumentBool(&UseRpcNDR64, optarg)) usage(); + ignoreIniFileParameter(INI_PARAM_RPC_NDR64); + break; + + case 'B': + if (!getArgumentBool(&UseRpcBTFN, optarg)) usage(); + ignoreIniFileParameter(INI_PARAM_RPC_BTFN); + break; + #endif // !USE_MSRPC + + case 'V': + #ifdef _NTSERVICE + if (IsNTService) break; + #endif + printf("vlmcsd %s\n", Version); + exit(0); + + default: + usage(); + } + + // Do not allow non-option arguments + if (optind != global_argc) + usage(); + + #ifdef _NTSERVICE + // -U and -W must be used with -s + if ((ServiceUser || *ServicePassword) && installService != 1) usage(); + #endif // _NTSERVICE +} + + +#ifndef NO_PID_FILE +static void writePidFile() +{ +# ifndef NO_SIGHUP + if (IsRestarted) return; +# endif // NO_SIGHUP + + if (fn_pid && !InetdMode) + { + FILE *_f = fopen(fn_pid, "w"); + + if ( _f ) + { + fprintf(_f, "%u", (uint32_t)getpid()); + fclose(_f); + } + + #ifndef NO_LOG + else + { + logger("Warning: Cannot write pid file '%s'. %s.\n", fn_pid, strerror(errno)); + } + #endif // NO_LOG + } +} +#else +#define writePidFile(x) +#endif // NO_PID_FILE + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + +void cleanup() +{ + + if (!InetdMode) + { + #ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); + #endif // NO_PID_FILE + closeAllListeningSockets(); + + #if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !defined(_WIN32) && !__minix__ + sem_unlink("/vlmcsd"); + #if !defined(USE_THREADS) && !defined(CYGWIN) + if (shmid >= 0) + { + if (Semaphore != (sem_t*)-1) shmdt(Semaphore); + shmctl(shmid, IPC_RMID, NULL); + } + #endif // !defined(USE_THREADS) && !defined(CYGWIN) + #endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !defined(_WIN32) && !__minix__ + + #ifndef NO_LOG + logger("vlmcsd %s was shutdown\n", Version); + #endif // NO_LOG + } + +} + +#elif defined(USE_MSRPC) + +void cleanup() +{ +# ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); +# endif // NO_PID_FILE + +# ifndef NO_LOG + logger("vlmcsd %s was shutdown\n", Version); +# endif // NO_LOG +} + +#else // Neither Sockets nor RPC + +__pure void cleanup() {} + +#endif // Neither Sockets nor RPC + + +#if !defined(USE_MSRPC) && !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ +// Get a semaphore for limiting the maximum concurrent tasks +static void allocateSemaphore(void) +{ + #ifdef USE_THREADS + #define sharemode 0 + #else + #define sharemode 1 + #endif + + #ifndef _WIN32 + sem_unlink("/vlmcsd"); + #endif + + if(MaxTasks < SEM_VALUE_MAX && !InetdMode) + { + #ifndef _WIN32 + + #if !defined(USE_THREADS) && !defined(CYGWIN) + + if ((Semaphore = sem_open("/vlmcsd", O_CREAT /*| O_EXCL*/, 0700, MaxTasks)) == SEM_FAILED) // fails on many systems + { + // We didn't get a named Semaphore (/dev/shm on Linux) so let's try our own shared page + + if ( + ( shmid = shmget(IPC_PRIVATE, sizeof(sem_t), IPC_CREAT | 0600) ) < 0 || + ( Semaphore = (sem_t*)shmat(shmid, NULL, 0) ) == (sem_t*)-1 || + sem_init(Semaphore, 1, MaxTasks) < 0 + ) + { + int errno_save = errno; + if (Semaphore != (sem_t*)-1) shmdt(Semaphore); + if (shmid >= 0) shmctl(shmid, IPC_RMID, NULL); + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(errno_save)); + MaxTasks = SEM_VALUE_MAX; + } + } + + #else // THREADS or CYGWIN + + Semaphore = (sem_t*)vlmcsd_malloc(sizeof(sem_t)); + + if (sem_init(Semaphore, sharemode, MaxTasks) < 0) // sem_init is not implemented on Darwin (returns ENOSYS) + { + free(Semaphore); + + if ((Semaphore = sem_open("/vlmcsd", O_CREAT /*| O_EXCL*/, 0700, MaxTasks)) == SEM_FAILED) + { + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(errno)); + MaxTasks = SEM_VALUE_MAX; + } + } + + #endif // THREADS or CYGWIN + + #else // _WIN32 + + if (!(Semaphore = CreateSemaphoreA(NULL, MaxTasks, MaxTasks, NULL))) + { + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(GetLastError())); + MaxTasks = SEM_VALUE_MAX; + } + + #endif // _WIN32 + } +} +#endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ + + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +int setupListeningSockets() +{ + int o; + uint_fast8_t allocsockets = maxsockets ? maxsockets : 2; + + SocketList = (SOCKET*)vlmcsd_malloc((size_t)allocsockets * sizeof(SOCKET)); + + haveIPv4Stack = checkProtocolStack(AF_INET); + haveIPv6Stack = checkProtocolStack(AF_INET6); + + // Reset getopt since we've alread used it + optReset(); + + for (opterr = 0; ( o = getopt(global_argc, (char* const*)global_argv, optstring) ) > 0; ) switch (o) + { + case '4': + + if (!haveIPv4Stack) + { + printerrorf("Fatal: Your system does not support %s.\n", cIPv4); + return !0; + } + v4required = 1; + break; + + case '6': + + if (!haveIPv6Stack) + { + printerrorf("Fatal: Your system does not support %s.\n", cIPv6); + return !0; + } + v6required = 1; + break; + + case 'L': + + addListeningSocket(optarg); + break; + + case 'P': + + defaultport = optarg; + break; + + default: + + break; + } + + +# ifndef NO_INI_FILE + if (maxsockets && !numsockets) + { + if (fn_ini && !readIniFile(INI_FILE_PASS_2)) + { + #ifdef INI_FILE + if (strcmp(fn_ini, INI_FILE)) + #endif // INI_FILE + printerrorf("Warning: Can't read %s: %s\n", fn_ini, strerror(errno)); + } + } +# endif + + // if -L hasn't been specified on the command line, use default sockets (all IP addresses) + // maxsocket results from first pass parsing the arguments + if (!maxsockets) + { + if (haveIPv6Stack && (v6required || !v4required)) addListeningSocket("::"); + if (haveIPv4Stack && (v4required || !v6required)) addListeningSocket("0.0.0.0"); + } + + if (!numsockets) + { + printerrorf("Fatal: Could not listen on any socket.\n"); + return(!0); + } + + return 0; +} +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + +int server_main(int argc, CARGV argv) +{ + #if !defined(_NTSERVICE) && !defined(NO_SOCKETS) + int error; + #endif // !defined(_NTSERVICE) && !defined(NO_SOCKETS) + + // Initialize ePID / HwId parameters + memset(KmsResponseParameters, 0, sizeof(KmsResponseParameters)); + + global_argc = argc; + global_argv = argv; + + #ifdef _NTSERVICE // #endif is in newmain() + DWORD lasterror = ERROR_SUCCESS; + + if (!StartServiceCtrlDispatcher(NTServiceDispatchTable) && (lasterror = GetLastError()) == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) + { + IsNTService = FALSE; + return newmain(); + } + + return lasterror; +} + + +int newmain() +{ + int error; + + // Initialize thread synchronization objects for Windows and Cygwin + #ifdef USE_THREADS + + #ifndef NO_LOG + // Initialize the Critical Section for proper logging + InitializeCriticalSection(&logmutex); + #endif // NO_LOG + + #endif // USE_THREADS + + #ifdef _WIN32 + + #ifndef USE_MSRPC + // Windows Sockets must be initialized + WSADATA wsadata; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + printerrorf("Fatal: Could not initialize Windows sockets (Error: %d).\n", error); + return error; + } + #endif // USE_MSRPC + + // Windows can never daemonize + nodaemon = 1; + + #else // __CYGWIN__ + + // Do not daemonize if we are a Windows service + if (IsNTService) nodaemon = 1; + + #endif // _WIN32 / __CYGWIN__ + #endif // _NTSERVICE ( #ifdef is main(int argc, CARGV argv) ) + + parseGeneralArguments(); // Does not return if an error occurs + + #if !defined(_WIN32) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + struct stat statbuf; + fstat(STDIN_FILENO, &statbuf); + if (S_ISSOCK(statbuf.st_mode)) + { + InetdMode = 1; + nodaemon = 1; + maxsockets = 0; + #ifndef NO_LOG + logstdout = 0; + #endif // NO_LOG + } + #endif // !defined(_WIN32) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + #ifndef NO_INI_FILE + if (fn_ini && !readIniFile(INI_FILE_PASS_1)) + { + #ifdef INI_FILE + if (strcmp(fn_ini, INI_FILE)) + #endif // INI_FILE + printerrorf("Warning: Can't read %s: %s\n", fn_ini, strerror(errno)); + } + #endif // NO_INI_FILE + + #if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ && !defined(USE_MSRPC) + allocateSemaphore(); + #endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && __minix__ + + #ifdef _NTSERVICE + if (installService) + return NtServiceInstallation(installService, ServiceUser, ServicePassword); + #endif // _NTSERVICE + + #if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + if (!InetdMode) + { + if ((error = setupListeningSockets())) return error; + } + #endif // NO_SOCKETS + + // After sockets have been set up, we may switch to a lower privileged user + #if !defined(_WIN32) && !defined(NO_USER_SWITCH) + + #ifndef NO_SIGHUP + if (!IsRestarted) + { + #endif // NO_SIGHUP + if (gid != INVALID_GID && setgid(gid)) + { + printerrorf("Fatal: setgid for %s failed.\n", gname); + return !0; + } + + if (uid != INVALID_UID && setuid(uid)) + { + printerrorf("Fatal: setuid for %s failed.\n", uname); + return !0; + } + #ifndef NO_SIGHUP + } + #endif // NO_SIGHUP + + #endif // !defined(_WIN32) && !defined(NO_USER_SWITCH) + + randomNumberInit(); + + // Randomization Level 1 means generate ePIDs at startup and use them during + // the lifetime of the process. So we generate them now + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 1) randomPidInit(); + #endif + + #if !defined(NO_SOCKETS) + #ifdef _WIN32 + if (!IsNTService) + #endif // _WIN32 + if ((error = daemonizeAndSetSignalAction())) return error; + #endif // !defined(NO_SOCKETS) + + writePidFile(); + + #if !defined(NO_LOG) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + if (!InetdMode) + logger("vlmcsd %s started successfully\n", Version); + #endif // !defined(NO_LOG) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + #if defined(_NTSERVICE) && !defined(USE_MSRPC) + if (IsNTService) ReportServiceStatus(SERVICE_RUNNING, NO_ERROR, 200); + #endif // defined(_NTSERVICE) && !defined(USE_MSRPC) + + int rc; + rc = runServer(); + + // Clean up things and exit + #ifdef _NTSERVICE + if (!ServiceShutdown) + #endif + cleanup(); + #ifdef _NTSERVICE + else + ReportServiceStatus(SERVICE_STOPPED, NO_ERROR, 0); + #endif + + return rc; +} +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "crypto.h" +#include "endian.h" +#include + +const BYTE AesKeyV4[] = { + 0x05, 0x3D, 0x83, 0x07, 0xF9, 0xE5, 0xF0, 0x88, 0xEB, 0x5E, 0xA6, 0x68, 0x6C, 0xF0, 0x37, 0xC7, 0xE4, 0xEF, 0xD2, 0xD6}; + +const BYTE AesKeyV5[] = { + 0xCD, 0x7E, 0x79, 0x6F, 0x2A, 0xB2, 0x5D, 0xCB, 0x55, 0xFF, 0xC8, 0xEF, 0x83, 0x64, 0xC4, 0x70 }; + +const BYTE AesKeyV6[] = { + 0xA9, 0x4A, 0x41, 0x95, 0xE2, 0x01, 0x43, 0x2D, 0x9B, 0xCB, 0x46, 0x04, 0x05, 0xD8, 0x4A, 0x21 }; + +static const BYTE SBox[] = { + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16 +}; + + +void XorBlock(const BYTE *const in, const BYTE *out) // Ensure that this is always 32 bit aligned +{ + /*UAA64( out, 0 ) ^= UAA64( in, 0 ); + UAA64( out, 1 ) ^= UAA64( in, 1 );*/ + + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_WORDS; i++) + { + ((DWORD*)out)[i] ^= ((DWORD*)in)[i]; + } +} + +#define AddRoundKey(d, rk) XorBlock((const BYTE *)rk, (const BYTE *)d) + +#define Mul2(word) (((word & 0x7f7f7f7f) << 1) ^ (((word & 0x80808080) >> 7) * 0x1b)) +#define Mul3(word) (Mul2(word) ^ word) +#define Mul4(word) (Mul2(Mul2(word))) +#define Mul8(word) (Mul2(Mul2(Mul2(word)))) +#define Mul9(word) (Mul8(word) ^ word) +#define MulB(word) (Mul8(word) ^ Mul3(word)) +#define MulD(word) (Mul8(word) ^ Mul4(word) ^ word) +#define MulE(word) (Mul8(word) ^ Mul4(word) ^ Mul2(word)) + +//32 bit Galois Multiplication (generates bigger code than Macros) +/*static DWORD Mul(DWORD x, DWORD y) +{ + DWORD result = x, yTemp = y, log2; + + if (!y) return 0; + + for (log2 = 0; yTemp >>= 1; log2++ ) + { + result = Mul2(result); + } + + return result ^ Mul(x, y - (1 << log2)); +}*/ + + +void MixColumnsR(BYTE *restrict state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + #if defined(_CRYPTO_OPENSSL) && defined(_OPENSSL_SOFTWARE) && defined(_USE_AES_FROM_OPENSSL) //Always byte swap regardless of endianess + DWORD word = BS32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = BS32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #else + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #endif + } +} + + +static DWORD SubDword(DWORD v) +{ + BYTE *b = (BYTE *)&v; + uint_fast8_t i = 0; + + for (; i < sizeof(DWORD); i++) b[i] = SBox[b[i]]; + + return v; +} + + +void AesInitKey(AesCtx *Ctx, const BYTE *Key, int_fast8_t IsV6, int RijndaelKeyBytes) +{ + int RijndaelKeyDwords = RijndaelKeyBytes / sizeof(DWORD); + Ctx->rounds = (uint_fast8_t)(RijndaelKeyDwords + 6); + + static const DWORD RCon[] = { + 0x00000000, 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000 }; + + uint_fast8_t i; + DWORD temp; + + memcpy(Ctx->Key, Key, RijndaelKeyBytes); + + for ( i = RijndaelKeyDwords; i < ( Ctx->rounds + 1 ) << 2; i++ ) + { + temp = Ctx->Key[ i - 1 ]; + + if ( ( i % RijndaelKeyDwords ) == 0 ) + temp = BE32( SubDword( ROR32( BE32(temp), 24) ) ^ RCon[ i / RijndaelKeyDwords ] ); + + Ctx->Key[ i ] = Ctx->Key[ i - RijndaelKeyDwords ] ^ temp; + } + + if ( IsV6 ) + { + BYTE *_p = (BYTE *)Ctx->Key; + + _p[ 4 * 16 ] ^= 0x73; + _p[ 6 * 16 ] ^= 0x09; + _p[ 8 * 16 ] ^= 0xE4; + } +} + + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) || defined(_OPENSSL_SOFTWARE) +static void SubBytes(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBox[ block[i] ]; +} + + +static void ShiftRows(BYTE *state) +{ + BYTE bIn[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(bIn, state, AES_BLOCK_BYTES); + for (i = 0; i < AES_BLOCK_BYTES; i++) + { + state[i] = bIn[(i + ((i & 3) << 2)) & 0xf]; + } +}; + + +static void MixColumns(BYTE *state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(Mul2(word) ^ ROR32(Mul3(word), 8) ^ ROR32(word, 16) ^ ROR32(word, 24)); + } +} + + +void AesEncryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + for ( i = 0 ;; i += 4 ) + { + AddRoundKey(block, &Ctx->Key[ i ]); + SubBytes(block); + ShiftRows(block); + + if ( i >= ( Ctx->rounds - 1 ) << 2 ) break; + + MixColumns(block); + } + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); +} + + +void AesCmacV4(BYTE *Message, size_t MessageSize, BYTE *MacOut) +{ + size_t i; + BYTE mac[AES_BLOCK_BYTES]; + AesCtx Ctx; + + AesInitKey(&Ctx, AesKeyV4, FALSE, V4_KEY_BYTES); + + memset(mac, 0, sizeof(mac)); + memset(Message + MessageSize, 0, AES_BLOCK_BYTES); + Message[MessageSize] = 0x80; + + for (i = 0; i <= MessageSize; i += AES_BLOCK_BYTES) + { + XorBlock(Message + i, mac); + AesEncryptBlock(&Ctx, mac); + } + + memcpy(MacOut, mac, AES_BLOCK_BYTES); +} +#endif + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) + +static const BYTE SBoxR[] = { + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D +}; + + +static void ShiftRowsR(BYTE *state) +{ + BYTE b[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(b, state, AES_BLOCK_BYTES); + + for (i = 0; i < AES_BLOCK_BYTES; i++) + state[i] = b[(i - ((i & 0x3) << 2)) & 0xf]; +} + + +static void SubBytesR(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBoxR[ block[i] ]; +} + + +void AesEncryptCbc(const AesCtx *const Ctx, BYTE *restrict iv, BYTE *restrict data, size_t *restrict len) +{ + // Pad up to blocksize inclusive + size_t i; + uint_fast8_t pad = (~*len & (AES_BLOCK_BYTES - 1)) + 1; + + #if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 8) // gcc 4.8 memset bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56977 + for (i = 0; i < pad; i++) data[*len + i] = pad; + #else + memset(data + *len, pad, pad); + #endif + *len += pad; + + if ( iv ) XorBlock(iv, data); + AesEncryptBlock(Ctx, data); + + for (i = *len - AES_BLOCK_BYTES; i; i -= AES_BLOCK_BYTES) + { + XorBlock(data, data + AES_BLOCK_BYTES); + data += AES_BLOCK_BYTES; + AesEncryptBlock(Ctx, data); + } +} + + +void AesDecryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); + + for ( i = ( Ctx->rounds - 1 ) << 2 ;; i -= 4 ) + { + ShiftRowsR(block); + SubBytesR(block); + AddRoundKey(block, &Ctx->Key[ i ]); + + if ( i == 0 ) break; + + MixColumnsR(block); + } +} + + +void AesDecryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t len) +{ + BYTE *cc; + + for (cc = data + len - AES_BLOCK_BYTES; cc > data; cc -= AES_BLOCK_BYTES) + { + AesDecryptBlock(Ctx, cc); + XorBlock(cc - AES_BLOCK_BYTES, cc); + } + + AesDecryptBlock(Ctx, cc); + if ( iv ) XorBlock(iv, cc); +} +#endif // _CRYPTO_OPENSSL || OPENSSL_VERSION_NUMBER < 0x10000000L +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif + +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "kms.h" +#include "shared_globals.h" +#include "helpers.h" + +#define FRIENDLY_NAME_WINDOWS "Windows" +#define FRIENDLY_NAME_OFFICE2010 "Office 2010" +#define FRIENDLY_NAME_OFFICE2013 "Office" + +#ifndef NO_BASIC_PRODUCT_LIST +// Do not change the order of this list. Append items as necessary +const KmsIdList ProductList[] = { + /* 000 */ { { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } /*"212a64dc-43b1-4d3d-a30c-2fc69d2095c6"*/, "Vista", EPID_WINDOWS, 4, 25 }, + /* 001 */ { { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } /*"7fde5219-fbfa-484a-82c9-34d1ad53e856"*/, "Windows 7", EPID_WINDOWS, 4, 25 }, + /* 002 */ { { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } /*"3c40b358-5948-45af-923b-53d21fcc7e79"*/, "Windows 8 VL", EPID_WINDOWS, 5, 25 }, + /* 003 */ { { 0x5f94a0bb, 0xd5a0, 0x4081, { 0xa6, 0x85, 0x58, 0x19, 0x41, 0x8b, 0x2f, 0xe0 } } /*"5f94a0bb-d5a0-4081-a685-5819418b2fe0"*/, "Windows Preview", EPID_WINDOWS, 6, 25 }, + /* 004 */ { { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } /*"bbb97b3b-8ca4-4a28-9717-89fabd42c4ac"*/, "Windows 8 Retail", EPID_WINDOWS, 5, 25 }, + /* 005 */ { { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } /*"cb8fc780-2c05-495a-9710-85afffc904d7"*/, "Windows 8.1 VL", EPID_WINDOWS, 6, 25 }, + /* 006 */ { { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } /*"6d646890-3606-461a-86ab-598bb84ace82"*/, "Windows 8.1 Retail", EPID_WINDOWS, 6, 25 }, + /* 007 */ { { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } /*"33e156e4-b76f-4a52-9f91-f641dd95ac48"*/, "Windows 2008 A", EPID_WINDOWS, 4, 5 }, + /* 008 */ { { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } /*"8fe53387-3087-4447-8985-f75132215ac9"*/, "Windows 2008 B", EPID_WINDOWS, 4, 5 }, + /* 009 */ { { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } /*"8a21fdf3-cbc5-44eb-83f3-fe284e6680a7"*/, "Windows 2008 C", EPID_WINDOWS, 4, 5 }, + /* 010 */ { { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } /*"0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed"*/, "Windows 2008 R2 A", EPID_WINDOWS, 4, 5 }, + /* 011 */ { { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } /*"ca87f5b6-cd46-40c0-b06d-8ecd57a4373f"*/, "Windows 2008 R2 B", EPID_WINDOWS, 4, 5 }, + /* 012 */ { { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } /*"b2ca2689-a9a8-42d7-938d-cf8e9f201958"*/, "Windows 2008 R2 C", EPID_WINDOWS, 4, 5 }, + /* 013 */ { { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } /*"8665cb71-468c-4aa3-a337-cb9bc9d5eaac"*/, "Windows 2012", EPID_WINDOWS, 5, 5 }, + /* 014 */ { { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } /*"8456EFD3-0C04-4089-8740-5B7238535A65"*/, "Windows 2012 R2", EPID_WINDOWS, 6, 5 }, + /* 015 */ { { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } /*"e85af946-2e25-47b7-83e1-bebcebeac611"*/, "Office 2010", EPID_OFFICE2010, 4, 5 }, + /* 016 */ { { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } /*"e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0"*/, "Office 2013", EPID_OFFICE2013, 6, 5 }, + /* 017 */ { { 0x6d5f5270, 0x31ac, 0x433e, { 0xb9, 0x0a, 0x39, 0x89, 0x29, 0x23, 0xc6, 0x57 } } /*"6d5f5270-31ac-433e-b90a-39892923c657"*/, "Windows Server Preview", EPID_WINDOWS, 6, 5 }, + /* 018 */ { { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } /*"85b5f61b-320b-4be3-814a-b76b2bfafc82"*/, "Office 2016", EPID_OFFICE2013, 6, 5 }, + /* 019 */ { { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } /*"58e2134f-8e11-4d17-9cb2-91069c151148"*/, "Windows 10 VL", EPID_WINDOWS, 6, 25 }, + /* 020 */ { { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } /*"e1c51358-fe3e-4203-a4a2-3b6b20c9734e"*/, "Windows 10 Retail", EPID_WINDOWS, 6, 25 }, + /* 021 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; +#endif + +// Application ID is used by KMS server to count KeyManagementServiceCurrentCount +// Do not change the order of this list. Append items as necessary +const KmsIdList AppList[] = { + /* 000 */ { { 0x55c92734, 0xd682, 0x4d71, { 0x98, 0x3e, 0xd6, 0xec, 0x3f, 0x16, 0x05, 0x9f } } /*"55C92734-D682-4D71-983E-D6EC3F16059F"*/, FRIENDLY_NAME_WINDOWS, EPID_WINDOWS, 0, 0}, + /* 001 */ { { 0x59A52881, 0xa989, 0x479d, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"59A52881-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2010, EPID_OFFICE2010, 0, 0}, + /* 002 */ { { 0x0FF1CE15, 0xA989, 0x479D, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"0FF1CE15-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2013, EPID_OFFICE2013, 0, 0}, + /* 003 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + +#ifndef NO_EXTENDED_PRODUCT_LIST +const KmsIdList ExtendedProductList [] = { + + // Windows Server + + { { 0xad2542d4, 0x9154, 0x4c6d, { 0x8a, 0x44, 0x30, 0xf1, 0x1e, 0xe9, 0x69, 0x89, } } /*ad2542d4-9154-4c6d-8a44-30f11ee96989*/, "Windows Server 2008 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x2401e3d0, 0xc50a, 0x4b58, { 0x87, 0xb2, 0x7e, 0x79, 0x4b, 0x7d, 0x26, 0x07, } } /*2401e3d0-c50a-4b58-87b2-7e794b7d2607*/, "Windows Server 2008 Standard V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } } /*68b6e220-cf09-466b-92d3-45cd964b9509*/, "Windows Server 2008 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xfd09ef77, 0x5647, 0x4eff, { 0x80, 0x9c, 0xaf, 0x2b, 0x64, 0x65, 0x9a, 0x45, } } /*fd09ef77-5647-4eff-809c-af2b64659a45*/, "Windows Server 2008 Datacenter V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } } /*c1af4d90-d1bc-44ca-85d4-003ba33db3b9*/, "Windows Server 2008 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0x8198490a, 0xadd0, 0x47b2, { 0xb3, 0xba, 0x31, 0x6b, 0x12, 0xd6, 0x47, 0xb4, } } /*8198490a-add0-47b2-b3ba-316b12d647b4*/, "Windows Server 2008 Enterprise V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } } /*ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b*/, "Windows Server 2008 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x7afb1156, 0x2c1d, 0x40fc, { 0xb2, 0x60, 0xaa, 0xb7, 0x44, 0x2b, 0x62, 0xfe, } } /*7afb1156-2c1d-40fc-b260-aab7442b62fe*/, "Windows Server 2008 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0x68531fb9, 0x5511, 0x4989, { 0x97, 0xbe, 0xd1, 0x1a, 0x0f, 0x55, 0x63, 0x3f, } } /*68531fb9-5511-4989-97be-d11a0f55633f*/, "Windows Server 2008 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } } /*7482e61b-c589-4b7f-8ecc-46d455ac3b87*/, "Windows Server 2008 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } } /*620e2b3d-09e7-42fd-802a-17a13652fe7a*/, "Windows Server 2008 R2 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B }, + { { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } } /*a78b8bd9-8017-4df5-b86a-09f756affa7c*/, "Windows Server 2008 R2 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0xcda18cf3, 0xc196, 0x46ad, { 0xb2, 0x89, 0x60, 0xc0, 0x72, 0x86, 0x99, 0x94, } } /*cda18cf3-c196-46ad-b289-60c072869994*/, "Windows Server 2008 R2 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0xd3643d60, 0x0c42, 0x412d, { 0xa7, 0xd6, 0x52, 0xe6, 0x63, 0x53, 0x27, 0xf6, } } /*d3643d60-0c42-412d-a7d6-52e6635327f6*/, "Windows Server 2012 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } } /*f0f5ec41-0d55-4732-af02-440a44a3cf0f*/, "Windows Server 2012 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x95fd1c83, 0x7df5, 0x494a, { 0xbe, 0x8b, 0x13, 0x00, 0xe1, 0xc9, 0xd1, 0xcd, } } /*95fd1c83-7df5-494a-be8b-1300e1c9d1cd*/, "Windows Server 2012 MultiPoint Premium", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x7d5486c7, 0xe120, 0x4771, { 0xb7, 0xf1, 0x7b, 0x56, 0xc6, 0xd3, 0x17, 0x0c, } } /*7d5486c7-e120-4771-b7f1-7b56c6d3170c*/, "Windows Server 2012 MultiPoint Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } } /*00091344-1ea4-4f37-b789-01750ba6988c*/, "Windows Server 2012 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb3ca044e, 0xa358, 0x4d68, { 0x98, 0x83, 0xaa, 0xa2, 0x94, 0x1a, 0xca, 0x99, } } /*b3ca044e-a358-4d68-9883-aaa2941aca99*/, "Windows Server 2012 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb743a2be, 0x68d4, 0x4dd3, { 0xaf, 0x32, 0x92, 0x42, 0x5b, 0x7b, 0xb6, 0x23, } } /*b743a2be-68d4-4dd3-af32-92425b7bb623*/, "Windows Server 2012 R2 Cloud Storage", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0x21db6ba4, 0x9a7b, 0x4a14, { 0x9e, 0x29, 0x64, 0xa6, 0x0c, 0x59, 0x30, 0x1d, } } /*21db6ba4-9a7b-4a14-9e29-64a60c59301d*/, "Windows Server 2012 R2 Essentials", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xba947c44, 0xd19d, 0x4786, { 0xb6, 0xae, 0x22, 0x77, 0x0b, 0xc9, 0x4c, 0x54, } } /*ba947c44-d19d-4786-b6ae-22770bc94c54*/, "Windows Server 2016 Datacenter Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_SRV_BETA }, + + + // Windows 10 Preview +# ifdef INCLUDE_BETAS + { { 0x6496e59d, 0x89dc, 0x49eb, { 0xa3, 0x53, 0x09, 0xce, 0xb9, 0x40, 0x48, 0x45, } } /*6496e59d-89dc-49eb-a353-09ceb9404845*/, "Windows 10 Core Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xa4383e6b, 0xdada, 0x423d, { 0xa4, 0x3d, 0xf2, 0x56, 0x78, 0x42, 0x96, 0x76, } } /*a4383e6b-dada-423d-a43d-f25678429676*/, "Windows 10 Professional Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcf59a07b, 0x1a2a, 0x4be0, { 0xbf, 0xe0, 0x42, 0x3b, 0x58, 0x23, 0xe6, 0x63, } } /*cf59a07b-1a2a-4be0-bfe0-423b5823e663*/, "Windows 10 Professional WMC Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcde952c7, 0x2f96, 0x4d9d, { 0x8f, 0x2b, 0x2d, 0x34, 0x9f, 0x64, 0xfc, 0x51, } } /*cde952c7-2f96-4d9d-8f2b-2d349f64fc51*/, "Windows 10 Enterprise Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + + + // Windows 10 + + { { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } } /*73111121-5638-40f6-bc11-f1d7b0d64300*/, "Windows 10 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xe272e3e2, 0x732f, 0x4c65, { 0xa8, 0xf0, 0x48, 0x47, 0x47, 0xd0, 0xd9, 0x47, } } /*e272e3e2-732f-4c65-a8f0-484747d0d947*/, "Windows 10 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x7b51a46c, 0x0c04, 0x4e8f, { 0x9a, 0xf4, 0x84, 0x96, 0xcc, 0xa9, 0x0d, 0x5e, } } /*7b51a46c-0c04-4e8f-9af4-8496cca90d5e*/, "Windows 10 Enterprise LTSB", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x87b838b7, 0x41b6, 0x4590, { 0x83, 0x18, 0x57, 0x97, 0x95, 0x1d, 0x85, 0x29, } } /*87b838b7-41b6-4590-8318-5797951d8529*/, "Windows 10 Enterprise LTSB N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0xe0c42288, 0x980c, 0x4788, { 0xa0, 0x14, 0xc0, 0x80, 0xd2, 0xe1, 0x92, 0x6e, } } /*e0c42288-980c-4788-a014-c080d2e1926e*/, "Windows 10 Education", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x3c102355, 0xd027, 0x42c6, { 0xad, 0x23, 0x2e, 0x7e, 0xf8, 0xa0, 0x25, 0x85, } } /*3c102355-d027-42c6-ad23-2e7ef8a02585*/, "Windows 10 Education N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x2de67392, 0xb7a7, 0x462a, { 0xb1, 0xca, 0x10, 0x8d, 0xd1, 0x89, 0xf5, 0x88, } } /*2de67392-b7a7-462a-b1ca-108dd189f588*/, "Windows 10 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xa80b5abf, 0x75ad, 0x428b, { 0xb0, 0x5d, 0xa4, 0x7d, 0x2d, 0xff, 0xee, 0xbf, } } /*a80b5abf-76ad-428b-b05d-a47d2dffeebf*/, "Windows 10 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } } /*58e97c99-f377-4ef1-81d5-4ad5522b5fd8*/, "Windows 10 Home", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0x7b9e1751, 0xa8da, 0x4f75, { 0x95, 0x60, 0x5f, 0xad, 0xfe, 0x3d, 0x8e, 0x38, } } /*7b9e1751-a8da-4f75-9560-5fadfe3d8e38*/, "Windows 10 Home N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xcd918a57, 0xa41b, 0x4c82, { 0x8d, 0xce, 0x1a, 0x53, 0x8e, 0x22, 0x1a, 0x83, } } /*cd918a57-a41b-4c82-8dce-1a538e221a83*/, "Windows 10 Home Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xa9107544, 0xf4a0, 0x4053, { 0xa9, 0x6a, 0x14, 0x79, 0xab, 0xde, 0xf9, 0x12, } } /*a9107544-f4a0-4053-a96a-1479abdef912*/, "Windows 10 Home Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + + + // Windows 8.x + +# ifdef INCLUDE_BETAS + { { 0x2B9C337F, 0x7A1D, 0x4271, { 0x90, 0xA3, 0xC6, 0x85, 0x5A, 0x2B, 0x8A, 0x1C, } } /*2B9C337F-7A1D-4271-90A3-C6855A2B8A1C*/, "Windows 8.x Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0x631EAD72, 0xA8AB, 0x4DF8, { 0xBB, 0xDF, 0x37, 0x20, 0x29, 0x98, 0x9B, 0xDD, } } /*631EAD72-A8AB-4DF8-BBDF-372029989BDD*/, "Windows 8.x Preview ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + { { 0x81671aaf, 0x79d1, 0x4eb1, { 0xb0, 0x04, 0x8c, 0xbb, 0xe1, 0x73, 0xaf, 0xea, } } /*81671aaf-79d1-4eb1-b004-8cbbe173afea*/, "Windows 8.1 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x113e705c, 0xfa49, 0x48a4, { 0xbe, 0xea, 0x7d, 0xd8, 0x79, 0xb4, 0x6b, 0x14, } } /*113e705c-fa49-48a4-beea-7dd879b46b14*/, "Windows 8.1 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x096ce63d, 0x4fac, 0x48a9, { 0x82, 0xa9, 0x61, 0xae, 0x9e, 0x80, 0x0e, 0x5f, } } /*096ce63d-4fac-48a9-82a9-61ae9e800e5f*/, "Windows 8.1 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } } /*c06b6981-d7fd-4a35-b7b4-054742b7af67*/, "Windows 8.1 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x7476d79f, 0x8e48, 0x49b4, { 0xab, 0x63, 0x4d, 0x0b, 0x81, 0x3a, 0x16, 0xe4, } } /*7476d79f-8e48-49b4-ab63-4d0b813a16e4*/, "Windows 8.1 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } } /*fe1c3238-432a-43a1-8e25-97e7d1ef10f3*/, "Windows 8.1 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0x78558a64, 0xdc19, 0x43fe, { 0xa0, 0xd0, 0x80, 0x75, 0xb2, 0xa3, 0x70, 0xa3, } } /*78558a64-dc19-43fe-a0d0-8075b2a370a3*/, "Windows 8.1 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xffee456a, 0xcd87, 0x4390, { 0x8e, 0x07, 0x16, 0x14, 0x6c, 0x67, 0x2f, 0xd0, } } /*ffee456a-cd87-4390-8e07-16146c672fd0*/, "Windows 8.1 Core ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc72c6a1d, 0xf252, 0x4e7e, { 0xbd, 0xd1, 0x3f, 0xca, 0x34, 0x2a, 0xcb, 0x35, } } /*c72c6a1d-f252-4e7e-bdd1-3fca342acb35*/, "Windows 8.1 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xdb78b74f, 0xef1c, 0x4892, { 0xab, 0xfe, 0x1e, 0x66, 0xb8, 0x23, 0x1d, 0xf6, } } /*db78b74f-ef1c-4892-abfe-1e66b8231df6*/, "Windows 8.1 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xe9942b32, 0x2e55, 0x4197, { 0xb0, 0xbd, 0x5f, 0xf5, 0x8c, 0xba, 0x88, 0x60, } } /*e9942b32-2e55-4197-b0bd-5ff58cba8860*/, "Windows 8.1 Core Connected", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xc6ddecd6, 0x2354, 0x4c19, { 0x90, 0x9b, 0x30, 0x6a, 0x30, 0x58, 0x48, 0x4e, } } /*c6ddecd6-2354-4c19-909b-306a3058484e*/, "Windows 8.1 Core Connected N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xb8f5e3a3, 0xed33, 0x4608, { 0x81, 0xe1, 0x37, 0xd6, 0xc9, 0xdc, 0xfd, 0x9c, } } /*b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c*/, "Windows 8.1 Core Connected Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xba998212, 0x460a, 0x44db, { 0xbf, 0xb5, 0x71, 0xbf, 0x09, 0xd1, 0xc6, 0x8b, } } /*ba998212-460a-44db-bfb5-71bf09d1c68b*/, "Windows 8.1 Core Connected Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xe58d87b5, 0x8126, 0x4580, { 0x80, 0xfb, 0x86, 0x1b, 0x22, 0xf7, 0x92, 0x96, } } /*e58d87b5-8126-4580-80fb-861b22f79296*/, "Windows 8.1 Professional Student", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xcab491c7, 0xa918, 0x4f60, { 0xb5, 0x02, 0xda, 0xb7, 0x5e, 0x33, 0x4f, 0x40, } } /*cab491c7-a918-4f60-b502-dab75e334f40*/, "Windows 8.1 Professional Student N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xa00018a3, 0xf20f, 0x4632, { 0xbf, 0x7c, 0x8d, 0xaa, 0x53, 0x51, 0xc9, 0x14, } } /*a00018a3-f20f-4632-bf7c-8daa5351c914*/, "Windows 8 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } } /*a98bcd6d-5343-4603-8afe-5908e4611112*/, "Windows 8 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xebf245c1, 0x29a8, 0x4daf, { 0x9c, 0xb1, 0x38, 0xdf, 0xc6, 0x08, 0xa8, 0xc8, } } /*ebf245c1-29a8-4daf-9cb1-38dfc608a8c8*/, "Windows 8 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0x458e1bec, 0x837a, 0x45f6, { 0xb9, 0xd5, 0x92, 0x5e, 0xd5, 0xd2, 0x99, 0xde, } } /*458e1bec-837a-45f6-b9d5-925ed5d299de*/, "Windows 8 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xe14997e7, 0x800a, 0x4cf7, { 0xad, 0x10, 0xde, 0x4b, 0x45, 0xb5, 0x78, 0xdb, } } /*e14997e7-800a-4cf7-ad10-de4b45b578db*/, "Windows 8 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } } /*c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60*/, "Windows 8 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x197390a0, 0x65f6, 0x4a95, { 0xbd, 0xc4, 0x55, 0xd5, 0x8a, 0x3b, 0x02, 0x53, } } /*197390a0-65f6-4a95-bdc4-55d58a3b0253*/, "Windows 8 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x9d5584a2, 0x2d85, 0x419a, { 0x98, 0x2c, 0xa0, 0x08, 0x88, 0xbb, 0x9d, 0xdf, } } /*9d5584a2-2d85-419a-982c-a00888bb9ddf*/, "Windows 8 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x8860fcd4, 0xa77b, 0x4a20, { 0x90, 0x45, 0xa1, 0x50, 0xff, 0x11, 0xd6, 0x09, } } /*8860fcd4-a77b-4a20-9045-a150ff11d609*/, "Windows 8 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + + + // Windows 7 + + { { 0xae2ee509, 0x1b34, 0x41c0, { 0xac, 0xb7, 0x6d, 0x46, 0x50, 0x16, 0x89, 0x15, } } /*ae2ee509-1b34-41c0-acb7-6d4650168915*/, "Windows 7 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x1cb6d605, 0x11b3, 0x4e14, { 0xbb, 0x30, 0xda, 0x91, 0xc8, 0xe3, 0x98, 0x3a, } } /*1cb6d605-11b3-4e14-bb30-da91c8e3983a*/, "Windows 7 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } } /*b92e9980-b9d5-4821-9c94-140f632f6312*/, "Windows 7 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x54a09a0d, 0xd57b, 0x4c10, { 0x8b, 0x69, 0xa8, 0x42, 0xd6, 0x59, 0x0a, 0xd5, } } /*54a09a0d-d57b-4c10-8b69-a842d6590ad5*/, "Windows 7 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + + + // Windows Vista + + { { 0xcfd8ff08, 0xc0d7, 0x452b, { 0x9f, 0x60, 0xef, 0x5c, 0x70, 0xc3, 0x20, 0x94, } } /*cfd8ff08-c0d7-452b-9f60-ef5c70c32094*/, "Windows Vista Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0xd4f54950, 0x26f2, 0x4fb4, { 0xba, 0x21, 0xff, 0xab, 0x16, 0xaf, 0xca, 0xde, } } /*d4f54950-26f2-4fb4-ba21-ffab16afcade*/, "Windows Vista Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } } /*4f3d1606-3fea-4c01-be3c-8d671c401e3b*/, "Windows Vista Business", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x2c682dc2, 0x8b68, 0x4f63, { 0xa1, 0x65, 0xae, 0x29, 0x1d, 0x4c, 0xf1, 0x38, } } /*2c682dc2-8b68-4f63-a165-ae291d4cf138*/, "Windows Vista Business N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + + + // Windows Embedded + + { { 0xaa6dd3aa, 0xc2b4, 0x40e2, { 0xa5, 0x44, 0xa6, 0xbb, 0xb3, 0xf5, 0xc3, 0x95, } } /*aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395*/, "Windows ThinPC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xdb537896, 0x376f, 0x48ae, { 0xa4, 0x92, 0x53, 0xd0, 0x54, 0x77, 0x73, 0xd0, } } /*db537896-376f-48ae-a492-53d0547773d0*/, "Windows Embedded POSReady 7", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x0ab82d54, 0x47f4, 0x4acb, { 0x81, 0x8c, 0xcc, 0x5b, 0xf0, 0xec, 0xb6, 0x49, } } /*0ab82d54-47f4-4acb-818c-cc5bf0ecb649*/, "Windows Embedded Industry 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xcd4e2d9f, 0x5059, 0x4a50, { 0xa9, 0x2d, 0x05, 0xd5, 0xbb, 0x12, 0x67, 0xc7, } } /*cd4e2d9f-5059-4a50-a92d-05d5bb1267c7*/, "Windows Embedded Industry E 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xf7e88590, 0xdfc7, 0x4c78, { 0xbc, 0xcb, 0x6f, 0x38, 0x65, 0xb9, 0x9d, 0x1a, } } /*f7e88590-dfc7-4c78-bccb-6f3865b99d1a*/, "Windows Embedded Industry A 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + + // Office 2010 + + { { 0x8ce7e872, 0x188c, 0x4b98, { 0x9d, 0x90, 0xf8, 0xf9, 0x0b, 0x7a, 0xad, 0x02, } } /*8ce7e872-188c-4b98-9d90-f8f90b7aad02*/, "Office Access 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xcee5d470, 0x6e3b, 0x4fcc, { 0x8c, 0x2b, 0xd1, 0x74, 0x28, 0x56, 0x8a, 0x9f, } } /*cee5d470-6e3b-4fcc-8c2b-d17428568a9f*/, "Office Excel 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x8947d0b8, 0xc33b, 0x43e1, { 0x8c, 0x56, 0x9b, 0x67, 0x4c, 0x05, 0x28, 0x32, } } /*8947d0b8-c33b-43e1-8c56-9b674c052832*/, "Office Groove 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xca6b6639, 0x4ad6, 0x40ae, { 0xa5, 0x75, 0x14, 0xde, 0xe0, 0x7f, 0x64, 0x30, } } /*ca6b6639-4ad6-40ae-a575-14dee07f6430*/, "Office InfoPath 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x09ed9640, 0xf020, 0x400a, { 0xac, 0xd8, 0xd7, 0xd8, 0x67, 0xdf, 0xd9, 0xc2, } } /*09ed9640-f020-400a-acd8-d7d867dfd9c2*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xef3d4e49, 0xa53d, 0x4d81, { 0xa2, 0xb1, 0x2c, 0xa6, 0xc2, 0x55, 0x6b, 0x2c, } } /*ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xab586f5c, 0x5256, 0x4632, { 0x96, 0x2f, 0xfe, 0xfd, 0x8b, 0x49, 0xe6, 0xf4, } } /*ab586f5c-5256-4632-962f-fefd8b49e6f4*/, "Office OneNote 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xecb7c192, 0x73ab, 0x4ded, { 0xac, 0xf4, 0x23, 0x99, 0xb0, 0x95, 0xd0, 0xcc, } } /*ecb7c192-73ab-4ded-acf4-2399b095d0cc*/, "Office OutLook 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x45593b1d, 0xdfb1, 0x4e91, { 0xbb, 0xfb, 0x2d, 0x5d, 0x0c, 0xe2, 0x22, 0x7a, } } /*45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a*/, "Office PowerPoint 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xdf133ff7, 0xbf14, 0x4f95, { 0xaf, 0xe3, 0x7b, 0x48, 0xe7, 0xe3, 0x31, 0xef, } } /*df133ff7-bf14-4f95-afe3-7b48e7e331ef*/, "Office Project Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x5dc7bf61, 0x5ec9, 0x4996, { 0x9c, 0xcb, 0xdf, 0x80, 0x6a, 0x2d, 0x0e, 0xfe, } } /*5dc7bf61-5ec9-4996-9ccb-df806a2d0efe*/, "Office Project Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xb50c4f75, 0x599b, 0x43e8, { 0x8d, 0xcd, 0x10, 0x81, 0xa7, 0x96, 0x72, 0x41, } } /*b50c4f75-599b-43e8-8dcd-1081a7967241*/, "Office Publisher 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x92236105, 0xbb67, 0x494f, { 0x94, 0xc7, 0x7f, 0x7a, 0x60, 0x79, 0x29, 0xbd, } } /*92236105-bb67-494f-94c7-7f7a607929bd*/, "Office Visio Premium 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xe558389c, 0x83c3, 0x4b29, { 0xad, 0xfe, 0x5e, 0x4d, 0x7f, 0x46, 0xc3, 0x58, } } /*e558389c-83c3-4b29-adfe-5e4d7f46c358*/, "Office Visio Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9ed833ff, 0x4f92, 0x4f36, { 0xb3, 0x70, 0x86, 0x83, 0xa4, 0xf1, 0x32, 0x75, } } /*9ed833ff-4f92-4f36-b370-8683a4f13275*/, "Office Visio Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x2d0882e7, 0xa4e7, 0x423b, { 0x8c, 0xcc, 0x70, 0xd9, 0x1e, 0x01, 0x58, 0xb1, } } /*2d0882e7-a4e7-423b-8ccc-70d91e0158b1*/, "Office Word 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } } /*6f327760-8c5c-417c-9b61-836a98287e0c*/, "Office Professional Plus 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9da2a678, 0xfb6b, 0x4e67, { 0xab, 0x84, 0x60, 0xdd, 0x6a, 0x9c, 0x81, 0x9a, } } /*9da2a678-fb6b-4e67-ab84-60dd6a9c819a*/, "Office Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xea509e87, 0x07a1, 0x4a45, { 0x9e, 0xdc, 0xeb, 0xa5, 0xa3, 0x9f, 0x36, 0xaf, } } /*ea509e87-07a1-4a45-9edc-eba5a39f36af*/, "Office Small Business Basics 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + + // Office 2013 + + { { 0x6ee7622c, 0x18d8, 0x4005, { 0x9f, 0xb7, 0x92, 0xdb, 0x64, 0x4a, 0x27, 0x9b, } } /*6ee7622c-18d8-4005-9fb7-92db644a279b*/, "Office Access 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xf7461d52, 0x7c2b, 0x43b2, { 0x87, 0x44, 0xea, 0x95, 0x8e, 0x0b, 0xd0, 0x9a, } } /*f7461d52-7c2b-43b2-8744-ea958e0bd09a*/, "Office Excel 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xa30b8040, 0xd68a, 0x423f, { 0xb0, 0xb5, 0x9c, 0xe2, 0x92, 0xea, 0x5a, 0x8f, } } /*a30b8040-d68a-423f-b0b5-9ce292ea5a8f*/, "Office InfoPath 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x1b9f11e3, 0xc85c, 0x4e1b, { 0xbb, 0x29, 0x87, 0x9a, 0xd2, 0xc9, 0x09, 0xe3, } } /*1b9f11e3-c85c-4e1b-bb29-879ad2c909e3*/, "Office Lync 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xdc981c6b, 0xfc8e, 0x420f, { 0xaa, 0x43, 0xf8, 0xf3, 0x3e, 0x5c, 0x09, 0x23, } } /*dc981c6b-fc8e-420f-aa43-f8f33e5c0923*/, "Office Mondo 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xefe1f3e6, 0xaea2, 0x4144, { 0xa2, 0x08, 0x32, 0xaa, 0x87, 0x2b, 0x65, 0x45, } } /*efe1f3e6-aea2-4144-a208-32aa872b6545*/, "Office OneNote 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x771c3afa, 0x50c5, 0x443f, { 0xb1, 0x51, 0xff, 0x25, 0x46, 0xd8, 0x63, 0xa0, } } /*771c3afa-50c5-443f-b151-ff2546d863a0*/, "Office OutLook 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x8c762649, 0x97d1, 0x4953, { 0xad, 0x27, 0xb7, 0xe2, 0xc2, 0x5b, 0x97, 0x2e, } } /*8c762649-97d1-4953-ad27-b7e2c25b972e*/, "Office PowerPoint 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x4a5d124a, 0xe620, 0x44ba, { 0xb6, 0xff, 0x65, 0x89, 0x61, 0xb3, 0x3b, 0x9a, } } /*4a5d124a-e620-44ba-b6ff-658961b33b9a*/, "Office Project Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x427a28d1, 0xd17c, 0x4abf, { 0xb7, 0x17, 0x32, 0xc7, 0x80, 0xba, 0x6f, 0x07, } } /*427a28d1-d17c-4abf-b717-32c780ba6f07*/, "Office Project Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x00c79ff1, 0x6850, 0x443d, { 0xbf, 0x61, 0x71, 0xcd, 0xe0, 0xde, 0x30, 0x5f, } } /*00c79ff1-6850-443d-bf61-71cde0de305f*/, "Office Publisher 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xac4efaf0, 0xf81f, 0x4f61, { 0xbd, 0xf7, 0xea, 0x32, 0xb0, 0x2a, 0xb1, 0x17, } } /*ac4efaf0-f81f-4f61-bdf7-ea32b02ab117*/, "Office Visio Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xe13ac10e, 0x75d0, 0x4aff, { 0xa0, 0xcd, 0x76, 0x49, 0x82, 0xcf, 0x54, 0x1c, } } /*e13ac10e-75d0-4aff-a0cd-764982cf541c*/, "Office Visio Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xd9f5b1c6, 0x5386, 0x495a, { 0x88, 0xf9, 0x9a, 0xd6, 0xb4, 0x1a, 0xc9, 0xb3, } } /*d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3*/, "Office Word 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } } /*b322da9c-a2e2-4058-9e4e-f59a6970bd69*/, "Office Professional Plus 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb13afb38, 0xcd79, 0x4ae5, { 0x9f, 0x7f, 0xee, 0xd0, 0x58, 0xd7, 0x50, 0xca, } } /*b13afb38-cd79-4ae5-9f7f-eed058d750ca*/, "Office Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + + // Office 2016 + + { { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } } /*d450596f-894d-49e0-966a-fd39ed4c4c64*/, "Office Professional Plus 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x4f414197, 0x0fc2, 0x4c01, { 0xb6, 0x8a, 0x86, 0xcb, 0xb9, 0xac, 0x25, 0x4c, } } /*4f414197-0fc2-4c01-b68a-86cbb9ac254c*/, "Office Project Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x6bf301c1, 0xb94a, 0x43e9, { 0xba, 0x31, 0xd4, 0x94, 0x59, 0x8c, 0x47, 0xfb, } } /*6bf301c1-b94a-43e9-ba31-d494598c47fb*/, "Office Visio Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x041a06cb, 0xc5b8, 0x4772, { 0x80, 0x9f, 0x41, 0x6d, 0x03, 0xd1, 0x66, 0x54, } } /*041a06cb-c5b8-4772-809f-416d03d16654*/, "Office Publisher 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x67c0fc0c, 0xdeba, 0x401b, { 0xbf, 0x8b, 0x9c, 0x8a, 0xd8, 0x39, 0x58, 0x04, } } /*67c0fc0c-deba-401b-bf8b-9c8ad8395804*/, "Office Access 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x83e04ee1, 0xfa8d, 0x436d, { 0x89, 0x94, 0xd3, 0x1a, 0x86, 0x2c, 0xab, 0x77, } } /*83e04ee1-fa8d-436d-8994-d31a862cab77*/, "Office Skype for Business 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x9caabccb, 0x61b1, 0x4b4b, { 0x8b, 0xec, 0xd1, 0x0a, 0x3c, 0x3a, 0xc2, 0xce, } } /*9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce*/, "Office Mondo 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xaa2a7821, 0x1827, 0x4c2c, { 0x8f, 0x1d, 0x45, 0x13, 0xa3, 0x4d, 0xda, 0x97, } } /*aa2a7821-1827-4c2c-8f1d-4513a34dda97*/, "Office Visio Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xbb11badf, 0xd8aa, 0x470e, { 0x93, 0x11, 0x20, 0xea, 0xf8, 0x0f, 0xe5, 0xcc, } } /*bb11badf-d8aa-470e-9311-20eaf80fe5cc*/, "Office Word 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xc3e65d36, 0x141f, 0x4d2f, { 0xa3, 0x03, 0xa8, 0x42, 0xee, 0x75, 0x6a, 0x29, } } /*c3e65d36-141f-4d2f-a303-a842ee756a29*/, "Office Excel 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd70b1bba, 0xb893, 0x4544, { 0x96, 0xe2, 0xb7, 0xa3, 0x18, 0x09, 0x1c, 0x33, } } /*d70b1bba-b893-4544-96e2-b7a318091c33*/, "Office Powerpoint 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd8cace59, 0x33d2, 0x4ac7, { 0x9b, 0x1b, 0x9b, 0x72, 0x33, 0x9c, 0x51, 0xc8, } } /*d8cace59-33d2-4ac7-9b1b-9b72339c51c8*/, "Office OneNote 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xda7ddabc, 0x3fbe, 0x4447, { 0x9e, 0x01, 0x6a, 0xb7, 0x44, 0x0b, 0x4c, 0xd4, } } /*da7ddabc-3fbe-4447-9e01-6ab7440b4cd4*/, "Office Project Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xdedfa23d, 0x6ed1, 0x45a6, { 0x85, 0xdc, 0x63, 0xca, 0xe0, 0x54, 0x6d, 0xe6, } } /*dedfa23d-6ed1-45a6-85dc-63cae0546de6*/, "Office Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xe914ea6e, 0xa5fa, 0x4439, { 0xa3, 0x94, 0xa9, 0xbb, 0x32, 0x93, 0xca, 0x09, } } /*e914ea6e-a5fa-4439-a394-a9bb3293ca09*/, "Office Mondo R 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xec9d9265, 0x9d1e, 0x4ed0, { 0x83, 0x8a, 0xcd, 0xc2, 0x0f, 0x25, 0x51, 0xa1, } } /*ec9d9265-9d1e-4ed0-838a-cdc20f2551a1*/, "Office Outlook 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + + // End marker (necessity should be removed when time permits) + + { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + + +// necessary because other .c files cannot access _countof() +__pure ProdListIndex_t getExtendedProductListSize(void) +{ + return _countof(ExtendedProductList) - 1; +} + +__pure ProdListIndex_t getAppListSize(void) +{ + return _countof(AppList); +} + +#endif + +#ifndef NO_RANDOM_EPID +// HostType and OSBuild +static const struct KMSHostOS { uint16_t Type; uint16_t Build; } HostOS[] = +{ + { 55041, 6002 }, // Windows Server 2008 SP2 + { 55041, 7601 }, // Windows Server 2008 R2 SP1 + { 5426, 9200 }, // Windows Server 2012 + { 6401, 9600 }, // Windows Server 2012 R2 + { 3612, 10240}, // Windows Server 2016 +}; + +// GroupID and PIDRange +static const struct PKEYCONFIG { uint16_t GroupID; uint32_t RangeMin; uint32_t RangeMax; } pkeyconfig[] = { + { 206, 152000000, 191999999 }, // Windows Server 2012 KMS Host pkeyconfig + { 206, 271000000, 310999999 }, // Windows Server 2012 R2 KMS Host pkeyconfig + { 96, 199000000, 217999999 }, // Office2010 KMS Host pkeyconfig + { 206, 234000000, 255999999 }, // Office2013 KMS Host pkeyconfig +}; + +// Valid language identifiers to be used in the ePID +static const uint16_t LcidList[] = { + 1078, 1052, 1025, 2049, 3073, 4097, 5121, 6145, 7169, 8193, 9217, 10241, 11265, 12289, 13313, 14337, 15361, 16385, + 1067, 1068, 2092, 1069, 1059, 1093, 5146, 1026, 1027, 1028, 2052, 3076, 4100, 5124, 1050, 4122, 1029, 1030, 1125, 1043, 2067, + 1033, 2057, 3081, 4105, 5129, 6153, 7177, 8201, 9225, 10249, 11273, 12297, 13321, 1061, 1080, 1065, 1035, 1036, 2060, + 3084, 4108, 5132, 6156, 1079, 1110, 1031, 2055, 3079, 4103, 5127, 1032, 1095, 1037, 1081, 1038, 1039, 1057, 1040, 2064, 1041, 1099, + 1087, 1111, 1042, 1088, 1062, 1063, 1071, 1086, 2110, 1100, 1082, 1153, 1102, 1104, 1044, 2068, 1045, 1046, 2070, + 1094, 1131, 2155, 3179, 1048, 1049, 9275, 4155, 5179, 3131, 1083, 2107, 8251, 6203, 7227, 1103, 2074, 6170, 3098, + 7194, 1051, 1060, 1034, 2058, 3082, 4106, 5130, 6154, 7178, 8202, 9226, 10250, 11274, 12298, 13322, 14346, 15370, 16394, + 17418, 18442, 19466, 20490, 1089, 1053, 2077, 1114, 1097, 1092, 1098, 1054, 1074, 1058, 1056, 1091, 2115, 1066, 1106, 1076, 1077 +}; + + +#ifdef _PEDANTIC +uint16_t IsValidLcid(const uint16_t Lcid) +{ + uint16_t i; + + for (i = 0; i < _countof(LcidList); i++) + { + if (Lcid == LcidList[i]) return Lcid; + } + + return 0; +} +#endif // _PEDANTIC +#endif // NO_RANDOM_EPID + + +// Unix time is seconds from 1970-01-01. Should be 64 bits to avoid Year 2035 overflow bug. +// FILETIME is 100 nanoseconds from 1601-01-01. Must be 64 bits. +void getUnixTimeAsFileTime(FILETIME *const ts) +{ + int64_t unixtime = (int64_t)time(NULL); + int64_t *filetime = (int64_t*)ts; + + *filetime = LE64( (unixtime + 11644473600LL) * 10000000LL ); +} + +__pure int64_t fileTimeToUnixTime(const FILETIME *const ts) +{ + return LE64( *((const int64_t *const)ts) ) / 10000000LL - 11644473600LL; +} + + +/* + * Get's a product name with a GUID in host-endian order. + * List can be any list defined above. + */ +const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + for (*i = 0; List[*i].name != NULL; (*i)++) + { + if (IsEqualGUID(guid, &List[*i].guid)) + return List[*i].name; + } + + return "Unknown"; +} + + +/* + * same as getProductnameHE except GUID is in little-endian (network) order + */ +const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + GUID HeGUID; + LEGUID(&HeGUID, guid); + return getProductNameHE(&HeGUID, List, i); + #else + return getProductNameHE(guid, List, i); + #endif +} + + +#ifndef NO_RANDOM_EPID +// formats an int with a fixed number of digits with leading zeros (helper for ePID generation) +static char* itoc(char *const c, const int i, uint_fast8_t digits) +{ + char formatString[8]; + if (digits > 9) digits = 0; + strcpy(formatString,"%"); + + if (digits) + { + formatString[1] = '0'; + formatString[2] = digits | 0x30; + formatString[3] = 0; + } + + strcat(formatString, "u"); + sprintf(c, formatString, i); + return c; +} + +static int getRandomServerType() +{ +# ifndef USE_MSRPC + if (!UseRpcBTFN) +# endif // USE_MSRPC + { + // This isn't possible at all, e.g. KMS host on XP + return rand() % (int)_countof(HostOS); + } +# ifndef USE_MSRPC + else + { + // return 9200/9600/10240 if NDR64 is in use, otherwise 6002/7601 + if (UseRpcNDR64) return (rand() % 3) + 2; + return (rand() % 2); + } +# endif // USE_MSRPC +} + + +/* + * Generates a random ePID + */ +static void generateRandomPid(const int index, char *const szPid, int serverType, int16_t lang) +{ + int clientApp; + char numberBuffer[12]; + + if (serverType < 0 || serverType >= (int)_countof(HostOS)) + { + serverType = getRandomServerType(); + } + + strcpy(szPid, itoc(numberBuffer, HostOS[serverType].Type, 5)); + strcat(szPid, "-"); + + if (index == 2) + clientApp = 3; + else if (index == 1) + clientApp = 2; + else + clientApp = serverType == 3 /*change if HostOS changes*/ ? 1 : 0; + + strcat(szPid, itoc(numberBuffer, pkeyconfig[clientApp].GroupID, 5)); + strcat(szPid, "-"); + + int keyId = (rand32() % (pkeyconfig[clientApp].RangeMax - pkeyconfig[clientApp].RangeMin)) + pkeyconfig[clientApp].RangeMin; + strcat(szPid, itoc(numberBuffer, keyId / 1000000, 3)); + strcat(szPid, "-"); + strcat(szPid, itoc(numberBuffer, keyId % 1000000, 6)); + strcat(szPid, "-03-"); + + if (lang < 0) lang = LcidList[rand() % _countof(LcidList)]; + strcat(szPid, itoc(numberBuffer, lang, 0)); + strcat(szPid, "-"); + + strcat(szPid, itoc(numberBuffer, HostOS[serverType].Build, 0)); + strcat(szPid, ".0000-"); + +# define minTime ((time_t)1436958000) // Release Date Windows 10 RTM Escrow + + time_t maxTime, kmsTime; + time(&maxTime); + + if (maxTime < minTime) // Just in case the system time is < 07/15/2015 1:00 pm + maxTime = (time_t)BUILD_TIME; + + kmsTime = (rand32() % (maxTime - minTime)) + minTime; +# undef minTime + + struct tm *pidTime; + pidTime = gmtime(&kmsTime); + + strcat(szPid, itoc(numberBuffer, pidTime->tm_yday, 3)); + strcat(szPid, itoc(numberBuffer, pidTime->tm_year + 1900, 4)); +} + + +/* + * Generates random ePIDs and stores them if not already read from ini file. + * For use with randomization level 1 + */ +void randomPidInit() +{ + ProdListIndex_t i; + + int serverType = getRandomServerType(); + int16_t lang = Lcid ? Lcid : LcidList[rand() % _countof(LcidList)]; + + for (i = 0; i < _countof(AppList) - 1; i++) + { + if (KmsResponseParameters[i].Epid) continue; + + char Epid[PID_BUFFER_SIZE]; + + generateRandomPid(i, Epid, serverType, lang); + KmsResponseParameters[i].Epid = (const char*)vlmcsd_malloc(strlen(Epid) + 1); + + strcpy((char*)KmsResponseParameters[i].Epid, Epid); + + #ifndef NO_LOG + KmsResponseParameters[i].EpidSource = "randomized at program start"; + #endif // NO_LOG + } +} + +#endif // NO_RANDOM_EPID + + +#ifndef NO_LOG +/* + * Logs a Request + */ +static void logRequest(const REQUEST *const baseRequest) +{ + const char *productName; + char clientname[64]; + ProdListIndex_t index; + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->ActID, ExtendedProductList, &index); + if (++index >= (int)_countof(ExtendedProductList)) + #endif // NO_EXTENDED_PRODUCT_LIST + { + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->KMSID, ProductList, &index); + if (++index >= (int)_countof(ProductList)) + #endif // NO_BASIC_PRODUCT_LIST + { + productName = getProductNameLE(&baseRequest->AppID, AppList, &index); + } + } + + #ifndef NO_VERBOSE_LOG + if (logverbose) + { + logger("<<< Incoming KMS request\n"); + logRequestVerbose(baseRequest, &logger); + } + else + { + #endif // NO_VERBOSE_LOG + ucs2_to_utf8(baseRequest->WorkstationName, clientname, 64, 64); + logger("KMS v%i.%i request from %s for %s\n", LE16(baseRequest->MajorVer), LE16(baseRequest->MinorVer), clientname, productName); + #ifndef NO_VERBOSE_LOG + } + #endif // NO_VERBOSE_LOG +} +#endif // NO_LOG + + +/* + * Converts a utf-8 ePID string to UCS-2 and writes it to a RESPONSE struct + */ +static void getEpidFromString(RESPONSE *const Response, const char *const pid) +{ + size_t length = utf8_to_ucs2(Response->KmsPID, pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + Response->PIDSize = LE32(((unsigned int )length + 1) << 1); +} + + +/* + * get ePID from appropriate source + */ +static void getEpid(RESPONSE *const baseResponse, const char** EpidSource, const ProdListIndex_t index, BYTE *const HwId) +{ + const char* pid; + if (KmsResponseParameters[index].Epid == NULL) + { + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 2) + { + char szPid[PID_BUFFER_SIZE]; + generateRandomPid(index, szPid, -1, Lcid ? Lcid : -1); + pid = szPid; + + #ifndef NO_LOG + *EpidSource = "randomized on every request"; + #endif // NO_LOG + } + else + #endif // NO_RANDOM_EPID + { + pid = AppList[index].pid; + #ifndef NO_LOG + *EpidSource = "vlmcsd default"; + #endif // NO_LOG + } + } + else + { + pid = KmsResponseParameters[index].Epid; + + if (HwId && KmsResponseParameters[index].HwId != NULL) + memcpy(HwId, KmsResponseParameters[index].HwId, sizeof(((RESPONSE_V6 *)0)->HwId)); + + #ifndef NO_LOG + *EpidSource = KmsResponseParameters[index].EpidSource; + #endif // NO_LOG + } + getEpidFromString(baseResponse, pid); +} + + +#if !defined(NO_LOG) && defined(_PEDANTIC) +static BOOL CheckVersion4Uuid(const GUID *const guid, const char *const szGuidName) +{ + if (LE16(guid->Data3) >> 12 != 4 || guid->Data4[0] >> 6 != 2) + { + logger("Warning: %s does not conform to version 4 UUID according to RFC 4122\n", szGuidName); + return FALSE; + } + return TRUE; +} + + +static void CheckRequest(const REQUEST *const Request) +{ + CheckVersion4Uuid(&Request->CMID, "Client machine ID"); + CheckVersion4Uuid(&Request->AppID, "Application ID"); + CheckVersion4Uuid(&Request->KMSID, "Server SKU ID"); + CheckVersion4Uuid(&Request->ActID, "Client SKU ID"); + + if (LE32(Request->IsClientVM) > 1) + logger("Warning: Virtual Machine field in request must be 0 or 1 but is %u\n", LE32(Request->IsClientVM)); + + if (LE32(Request->LicenseStatus) > 6 ) + logger("Warning: License status must be between 0 and 6 but is %u\n", LE32(Request->LicenseStatus)); +} +#endif // !defined(NO_LOG) && defined(_PEDANTIC) + + +#ifndef NO_LOG +/* + * Logs the Response + */ +static void logResponse(const RESPONSE *const baseResponse, const BYTE *const hwId, const char *const EpidSource) +{ + char utf8pid[PID_BUFFER_SIZE * 3]; + ucs2_to_utf8(baseResponse->KmsPID, utf8pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + + #ifndef NO_VERBOSE_LOG + if (!logverbose) + { + #endif // NO_VERBOSE_LOG + logger("Sending ePID (%s): %s\n", EpidSource, utf8pid); + #ifndef NO_VERBOSE_LOG + } + else + { + logger(">>> Sending response, ePID source = %s\n", EpidSource); + logResponseVerbose(utf8pid, hwId, baseResponse, &logger); + } + #endif // NO_VERBOSE_LOG + +} +#endif + + +/* + * Creates the unencrypted base response + */ +static BOOL __stdcall CreateResponseBaseCallback(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr) +{ + const char* EpidSource; + #ifndef NO_LOG + logRequest(baseRequest); + #ifdef _PEDANTIC + CheckRequest(baseRequest); + #endif // _PEDANTIC + #endif // NO_LOG + + ProdListIndex_t index; + + getProductNameLE(&baseRequest->AppID, AppList, &index); + + if (index >= _countof(AppList) - 1) index = 0; //default to Windows + + getEpid(baseResponse, &EpidSource, index, hwId); + + baseResponse->Version = baseRequest->Version; + + memcpy(&baseResponse->CMID, &baseRequest->CMID, sizeof(GUID)); + memcpy(&baseResponse->ClientTime, &baseRequest->ClientTime, sizeof(FILETIME)); + + baseResponse->Count = LE32(LE32(baseRequest->N_Policy) << 1); + baseResponse->VLActivationInterval = LE32(VLActivationInterval); + baseResponse->VLRenewalInterval = LE32(VLRenewalInterval); + + #ifndef NO_LOG + logResponse(baseResponse, hwId, EpidSource); + #endif // NO_LOG + + return !0; +} + +RequestCallback_t CreateResponseBase = &CreateResponseBaseCallback; + +////TODO: Move to helpers.c +void get16RandomBytes(void* ptr) +{ + int i; + for (i = 0; i < 4; i++) ((DWORD*)ptr)[i] = rand32(); +} + + +/* + * Creates v4 response + */ +size_t CreateResponseV4(REQUEST_V4 *const request_v4, BYTE *const responseBuffer, const char* const ipstr) +{ + RESPONSE_V4* Response = (RESPONSE_V4*)responseBuffer; + + if ( !CreateResponseBase(&request_v4->RequestBase, &Response->ResponseBase, NULL, ipstr) ) return 0; + + DWORD pidSize = LE32(Response->ResponseBase.PIDSize); + BYTE* postEpidPtr = responseBuffer + V4_PRE_EPID_SIZE + pidSize; + memmove(postEpidPtr, &Response->ResponseBase.CMID, V4_POST_EPID_SIZE); + + size_t encryptSize = V4_PRE_EPID_SIZE + V4_POST_EPID_SIZE + pidSize; + AesCmacV4(responseBuffer, encryptSize, responseBuffer + encryptSize); + + return encryptSize + sizeof(Response->MAC); +} + +/* +// Workaround for buggy GCC 4.2/4.3 +#if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +__attribute__((noinline)) +#endif +__pure static uint64_t TimestampInterval(void *ts) +{ + return ( GET_UA64LE(ts) / TIME_C1 ) * TIME_C2 + TIME_C3; +}*/ + + +/* + * Creates the HMAC for v6 + */ +static int_fast8_t CreateV6Hmac(BYTE *const encrypt_start, const size_t encryptSize, int_fast8_t tolerance) +{ + BYTE hash[32]; +# define halfHashSize (sizeof(hash) >> 1) + uint64_t timeSlot; + BYTE *responseEnd = encrypt_start + encryptSize; + + // This is the time from the response + FILETIME* ft = (FILETIME*)(responseEnd - V6_POST_EPID_SIZE + sizeof(((RESPONSE*)0)->CMID)); + + // Generate a time slot that changes every 4.11 hours. + // Request and repsonse time must match +/- 1 slot. + // When generating a response tolerance must be 0. + // If verifying the hash, try tolerance -1, 0 and +1. One of them must match. + + timeSlot = LE64( (GET_UA64LE(ft) / TIME_C1 * TIME_C2 + TIME_C3) + (tolerance * TIME_C1) ); + + // The time slot is hashed with SHA256 so it is not so obvious that it is time + Sha256((BYTE*) &timeSlot, sizeof(timeSlot), hash); + + // The last 16 bytes of the hashed time slot are the actual HMAC key + if (!Sha256Hmac + ( + hash + halfHashSize, // Use last 16 bytes of SHA256 as HMAC key + encrypt_start, // hash only the encrypted part of the v6 response + encryptSize - sizeof(((RESPONSE_V6*)0)->HMAC), // encryptSize minus the HMAC itself + hash // use same buffer for resulting hash where the key came from + )) + { + return FALSE; + } + + memcpy(responseEnd - sizeof(((RESPONSE_V6*)0)->HMAC), hash + halfHashSize, halfHashSize); + return TRUE; +# undef halfHashSize +} + + +/* + * Creates v5 or v6 response + */ +size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuffer, const char* const ipstr) +{ + // The response will be created in a fixed sized struct to + // avoid unaligned access macros and packed structs on RISC systems + // which largely increase code size. + // + // The fixed sized struct with 64 WCHARs for the ePID will be converted + // to a variable sized struct later and requires unaligned access macros. + + RESPONSE_V6* Response = (RESPONSE_V6*)responseBuffer; + RESPONSE* baseResponse = &Response->ResponseBase; + + #ifdef _DEBUG + RESPONSE_V6_DEBUG* xxx = (RESPONSE_V6_DEBUG*)responseBuffer; + #endif + + static const BYTE DefaultHwid[8] = { HWID }; + int_fast8_t v6 = LE16(request_v6->MajorVer) > 5; + AesCtx aesCtx; + + AesInitKey(&aesCtx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&aesCtx, NULL, request_v6->IV, V6_DECRYPT_SIZE); + + // get random salt and SHA256 it + get16RandomBytes(Response->RandomXoredIVs); + Sha256(Response->RandomXoredIVs, sizeof(Response->RandomXoredIVs), Response->Hash); + + if (v6) // V6 specific stuff + { + // In v6 a random IV is generated + Response->Version = request_v6->Version; + get16RandomBytes(Response->IV); + + // pre-fill with default HwId (not required for v5) + memcpy(Response->HwId, DefaultHwid, sizeof(Response->HwId)); + + // Just copy decrypted request IV (using Null IV) here. Note this is identical + // to XORing non-decrypted request and reponse IVs + memcpy(Response->XoredIVs, request_v6->IV, sizeof(Response->XoredIVs)); + } + else // V5 specific stuff + { + // In v5 IVs of request and response must be identical (MS client checks this) + // The following memcpy copies Version and IVs at once + memcpy(Response, request_v6, V6_UNENCRYPTED_SIZE); + } + + // Xor Random bytes with decrypted request IV + XorBlock(request_v6->IV, Response->RandomXoredIVs); + + // Get the base response + if ( !CreateResponseBase(&request_v6->RequestBase, baseResponse, Response->HwId, ipstr) ) return 0; + + // Convert the fixed sized struct into variable sized + DWORD pidSize = LE32(baseResponse->PIDSize); + BYTE* postEpidPtr = responseBuffer + V6_PRE_EPID_SIZE + pidSize; + size_t post_epid_size = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + + memmove(postEpidPtr, &baseResponse->CMID, post_epid_size); + + // number of bytes to encrypt + size_t encryptSize = + V6_PRE_EPID_SIZE + - sizeof(Response->Version) + + pidSize + + post_epid_size; + + //AesDecryptBlock(&aesCtx, Response->IV); + if (v6 && !CreateV6Hmac(Response->IV, encryptSize, 0)) return 0; + + // Padding auto handled by encryption func + AesEncryptCbc(&aesCtx, NULL, Response->IV, &encryptSize); + + return encryptSize + sizeof(Response->Version); +} + + +// Create Hashed KMS Client Request Data for KMS Protocol Version 4 +BYTE *CreateRequestV4(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V4); + + // Build a proper KMS client request data + BYTE *request = (BYTE *)vlmcsd_malloc(sizeof(REQUEST_V4)); + + // Temporary Pointer for access to REQUEST_V4 structure + REQUEST_V4 *request_v4 = (REQUEST_V4 *)request; + + // Set KMS Client Request Base + memcpy(&request_v4->RequestBase, requestBase, sizeof(REQUEST)); + + // Generate Hash Signature + AesCmacV4(request, sizeof(REQUEST), request_v4->MAC); + + // Return Request Data + return request; +} + + +// Create Encrypted KMS Client Request Data for KMS Protocol Version 6 +BYTE* CreateRequestV6(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V6); + + // Temporary Pointer for access to REQUEST_V5 structure + REQUEST_V6 *request = (REQUEST_V6 *)vlmcsd_malloc(sizeof(REQUEST_V6)); + + // KMS Protocol Version + request->Version = requestBase->Version; + + // Initialize the IV + get16RandomBytes(request->IV); + + // Set KMS Client Request Base + memcpy(&request->RequestBase, requestBase, sizeof(REQUEST)); + + // Encrypt KMS Client Request + size_t encryptSize = sizeof(request->RequestBase); + AesCtx Ctx; + int_fast8_t v6 = LE16(request->MajorVer) > 5; + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, 16); + AesEncryptCbc(&Ctx, request->IV, (BYTE*)(&request->RequestBase), &encryptSize); + + // Return Proper Request Data + return (BYTE*)request; +} + + +/* + * Checks whether Length of ePID is valid + */ +static uint8_t checkPidLength(const RESPONSE *const responseBase) +{ + unsigned int i; + + if (LE32(responseBase->PIDSize) > (PID_BUFFER_SIZE << 1)) return FALSE; + if (responseBase->KmsPID[(LE32(responseBase->PIDSize) >> 1) - 1]) return FALSE; + + for (i = 0; i < (LE32(responseBase->PIDSize) >> 1) - 2; i++) + { + if (!responseBase->KmsPID[i]) return FALSE; + } + + return TRUE; +} + + +/* + * "Decrypts" a KMS v4 response. Actually just copies to a fixed size buffer + */ +RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSize, BYTE* const rawResponse, const BYTE* const rawRequest) +{ + int copySize = + V4_PRE_EPID_SIZE + + (LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) <= PID_BUFFER_SIZE << 1 ? + LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) : + PID_BUFFER_SIZE << 1); + + int messageSize = copySize + V4_POST_EPID_SIZE; + + memcpy(response_v4, rawResponse, copySize); + memcpy(&response_v4->ResponseBase.CMID, rawResponse + copySize, responseSize - copySize); + + // ensure PID is null terminated + response_v4->ResponseBase.KmsPID[PID_BUFFER_SIZE-1] = 0; + + uint8_t* mac = rawResponse + messageSize; + AesCmacV4(rawResponse, messageSize, mac); + + REQUEST_V4* request_v4 = (REQUEST_V4*)rawRequest; + RESPONSE_RESULT result; + + result.mask = (DWORD)~0; + result.PidLengthOK = checkPidLength((RESPONSE*)rawResponse); + result.VersionOK = response_v4->ResponseBase.Version == request_v4->RequestBase.Version; + result.HashOK = !memcmp(&response_v4->MAC, mac, sizeof(response_v4->MAC)); + result.TimeStampOK = !memcmp(&response_v4->ResponseBase.ClientTime, &request_v4->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = !memcmp(&response_v4->ResponseBase.CMID, &request_v4->RequestBase.CMID, sizeof(GUID)); + result.effectiveResponseSize = responseSize; + result.correctResponseSize = sizeof(RESPONSE_V4) - sizeof(response_v4->ResponseBase.KmsPID) + LE32(response_v4->ResponseBase.PIDSize); + + return result; +} + + +static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ctx, RESPONSE_V6* response_v6, REQUEST_V6* request_v6, BYTE* const rawResponse) +{ + // Check IVs + result.IVsOK = !memcmp // In V6 the XoredIV is actually the request IV + ( + response_v6->XoredIVs, + request_v6->IV, + sizeof(response_v6->XoredIVs) + ); + + result.IVnotSuspicious = !!memcmp // If IVs are identical, it is obviously an emulator + ( + request_v6->IV, + response_v6->IV, + sizeof(request_v6->IV) + ); + + // Check Hmac + int_fast8_t tolerance; + BYTE OldHmac[sizeof(response_v6->HMAC)]; + + result.HmacSha256OK = FALSE; + + memcpy // Save received HMAC to compare with calculated HMAC later + ( + OldHmac, + response_v6->HMAC, + sizeof(response_v6->HMAC) + ); + + //AesEncryptBlock(Ctx, Response_v6->IV); // CreateV6Hmac needs original IV as received over the network + + for (tolerance = -1; tolerance < 2; tolerance++) + { + CreateV6Hmac + ( + rawResponse + sizeof(response_v6->Version), // Pointer to start of the encrypted part of the response + (size_t)result.correctResponseSize - V6_UNENCRYPTED_SIZE, // size of the encrypted part + tolerance // tolerance -1, 0, or +1 + ); + + if + (( + result.HmacSha256OK = !memcmp // Compare both HMACs + ( + OldHmac, + rawResponse + (size_t)result.correctResponseSize - sizeof(response_v6->HMAC), + sizeof(OldHmac) + ) + )) + { + break; + } + } + return result; +} + + +static RESPONSE_RESULT VerifyResponseV5(RESPONSE_RESULT result, REQUEST_V5* request_v5, RESPONSE_V5* response_v5) +{ + // Check IVs: in V5 (and only v5) request and response IVs must match + result.IVsOK = !memcmp(request_v5->IV, response_v5->IV, sizeof(request_v5->IV)); + + // V5 has no Hmac, always set to TRUE + result.HmacSha256OK = TRUE; + + return result; +} + + +/* + * Decrypts a KMS v5 or v6 response received from a server. + * hwid must supply a valid 16 byte buffer for v6. hwid is ignored in v5 + */ +RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BYTE* const response, const BYTE* const rawRequest, BYTE* hwid) +{ + RESPONSE_RESULT result; + result.mask = ~0; // Set all bits in the results mask to 1. Assume success first. + result.effectiveResponseSize = responseSize; + + int copySize1 = + sizeof(response_v6->Version); + + // Decrypt KMS Server Response (encrypted part starts after RequestIV) + responseSize -= copySize1; + + AesCtx Ctx; + int_fast8_t v6 = LE16(((RESPONSE_V6*)response)->MajorVer) > 5; + + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&Ctx, NULL, response + copySize1, responseSize); + + // Check padding + BYTE* lastPadByte = response + (size_t)result.effectiveResponseSize - 1; + + // Must be from 1 to 16 + if (!*lastPadByte || *lastPadByte > AES_BLOCK_BYTES) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Check if pad bytes are all the same + BYTE* padByte; + for (padByte = lastPadByte - *lastPadByte + 1; padByte < lastPadByte; padByte++) + if (*padByte != *lastPadByte) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Add size of Version, KmsPIDLen and variable size PID + DWORD pidSize = LE32(((RESPONSE_V6*) response)->ResponseBase.PIDSize); + + copySize1 += + V6_UNENCRYPTED_SIZE + + sizeof(response_v6->ResponseBase.PIDSize) + + (pidSize <= PID_BUFFER_SIZE << 1 ? pidSize : PID_BUFFER_SIZE << 1); + + // Copy part 1 of response up to variable sized PID + memcpy(response_v6, response, copySize1); + + // ensure PID is null terminated + response_v6->ResponseBase.KmsPID[PID_BUFFER_SIZE - 1] = 0; + + // Copy part 2 + size_t copySize2 = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + memcpy(&response_v6->ResponseBase.CMID, response + copySize1, copySize2); + + // Decrypting the response is finished here. Now we check the results for validity + // A basic client doesn't need the stuff below this comment but we want to use vlmcs + // as a debug tool for KMS emulators. + + REQUEST_V6* request_v6 = (REQUEST_V6*) rawRequest; + DWORD decryptSize = sizeof(request_v6->IV) + sizeof(request_v6->RequestBase) + sizeof(request_v6->Pad); + + AesDecryptCbc(&Ctx, NULL, request_v6->IV, decryptSize); + + // Check that all version informations are the same + result.VersionOK = + request_v6->Version == response_v6->ResponseBase.Version && + request_v6->Version == response_v6->Version && + request_v6->Version == request_v6->RequestBase.Version; + + // Check Base Request + result.PidLengthOK = checkPidLength(&((RESPONSE_V6*) response)->ResponseBase); + result.TimeStampOK = !memcmp(&response_v6->ResponseBase.ClientTime, &request_v6->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = IsEqualGUID(&response_v6->ResponseBase.CMID, &request_v6->RequestBase.CMID); + + // Rebuild Random Key and Sha256 Hash + BYTE HashVerify[sizeof(response_v6->Hash)]; + BYTE RandomKey[sizeof(response_v6->RandomXoredIVs)]; + + memcpy(RandomKey, request_v6->IV, sizeof(RandomKey)); + XorBlock(response_v6->RandomXoredIVs, RandomKey); + Sha256(RandomKey, sizeof(RandomKey), HashVerify); + + result.HashOK = !memcmp(response_v6->Hash, HashVerify, sizeof(HashVerify)); + + // size before encryption (padding not included) + result.correctResponseSize = + (v6 ? sizeof(RESPONSE_V6) : sizeof(RESPONSE_V5)) + - sizeof(response_v6->ResponseBase.KmsPID) + + LE32(response_v6->ResponseBase.PIDSize); + + // Version specific stuff + if (v6) + { + // Copy the HwId + memcpy(hwid, response_v6->HwId, sizeof(response_v6->HwId)); + + // Verify the V6 specific part of the response + result = VerifyResponseV6(result, &Ctx, response_v6, request_v6, response); + } + else // V5 + { + // Verify the V5 specific part of the response + result = VerifyResponseV5(result, request_v6, (RESPONSE_V5*)response_v6); + } + + // padded size after encryption + result.correctResponseSize += (~(result.correctResponseSize - sizeof(response_v6->ResponseBase.Version)) & 0xf) + 1; + + return result; +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "endian.h" + +#if defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN) \ + && defined(BS16) && defined(BS32) && defined(BS64) + +#else // ! defined(__BYTE_ORDER) + +void PUT_UAA64BE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v >> 56; + _p[ 1 ] = v >> 48; + _p[ 2 ] = v >> 40; + _p[ 3 ] = v >> 32; + _p[ 4 ] = v >> 24; + _p[ 5 ] = v >> 16; + _p[ 6 ] = v >> 8; + _p[ 7 ] = v; +} + +void PUT_UAA32BE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v >> 24; + _p[ 1 ] = v >> 16; + _p[ 2 ] = v >> 8; + _p[ 3 ] = v; +} + +void PUT_UAA16BE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v >> 8; + _p[ 1 ] = v; +} + + +void PUT_UAA64LE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; + _p[ 4 ] = v >> 32; + _p[ 5 ] = v >> 40; + _p[ 6 ] = v >> 48; + _p[ 7 ] = v >> 56; +} + +void PUT_UAA32LE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; +} + +void PUT_UAA16LE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; +} + + +unsigned long long GET_UAA64BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] << 56 | + (unsigned long long)_p[ 1 ] << 48 | + (unsigned long long)_p[ 2 ] << 40 | + (unsigned long long)_p[ 3 ] << 32 | + (unsigned long long)_p[ 4 ] << 24 | + (unsigned long long)_p[ 5 ] << 16 | + (unsigned long long)_p[ 6 ] << 8 | + (unsigned long long)_p[ 7 ]; + +} + +unsigned int GET_UAA32BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] << 24 | + (unsigned int)_p[ 1 ] << 16 | + (unsigned int)_p[ 2 ] << 8 | + (unsigned int)_p[ 3 ]; +} + +unsigned short GET_UAA16BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] << 8 | + (unsigned short)_p[ 1 ]; +} + + +unsigned long long GET_UAA64LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] | + (unsigned long long)_p[ 1 ] << 8 | + (unsigned long long)_p[ 2 ] << 16 | + (unsigned long long)_p[ 3 ] << 24 | + (unsigned long long)_p[ 4 ] << 32 | + (unsigned long long)_p[ 5 ] << 40 | + (unsigned long long)_p[ 6 ] << 48 | + (unsigned long long)_p[ 7 ] << 56; + +} + +unsigned int GET_UAA32LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] | + (unsigned int)_p[ 1 ] << 8 | + (unsigned int)_p[ 2 ] << 16 | + (unsigned int)_p[ 3 ] << 24; +} + +unsigned short GET_UAA16LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] | + (unsigned short)_p[ 1 ] << 8; +} + + +unsigned short BE16(unsigned short x) +{ + return GET_UAA16BE(&x, 0); +} + +unsigned short LE16(unsigned short x) +{ + return GET_UAA16LE(&x, 0); +} + +unsigned int BE32(unsigned int x) +{ + return GET_UAA32BE(&x, 0); +} + +unsigned int LE32(unsigned int x) +{ + return GET_UAA32LE(&x, 0); +} + +unsigned long long BE64(unsigned long long x) +{ + return GET_UAA64BE(&x, 0); +} + +inline unsigned long long LE64(unsigned long long x) +{ + return GET_UAA64LE(&x, 0); +} + +#endif // defined(__BYTE_ORDER) +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "output.h" +#include "shared_globals.h" +#include "endian.h" +#include "helpers.h" + +#ifndef NO_LOG +static void vlogger(const char *message, va_list args) +{ + FILE *log; + + #ifdef _NTSERVICE + if (!IsNTService && logstdout) log = stdout; + #else + if (logstdout) log = stdout; + #endif + else + { + if (fn_log == NULL) return; + + #ifndef _WIN32 + if (!strcmp(fn_log, "syslog")) + { + openlog("vlmcsd", LOG_CONS | LOG_PID, LOG_USER); + + ////PORTABILITY: vsyslog is not in Posix but virtually all Unixes have it + vsyslog(LOG_INFO, message, args); + + closelog(); + return; + } + #endif // _WIN32 + + log = fopen(fn_log, "a"); + if ( !log ) return; + } + + time_t now = time(0); + + #ifdef USE_THREADS + char mbstr[2048]; + #else + char mbstr[24]; + #endif + + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", localtime(&now)); + + #ifndef USE_THREADS + + fprintf(log, "%s: ", mbstr); + vfprintf(log, message, args); + fflush(log); + + #else // USE_THREADS + + // We write everything to a string before we really log inside the critical section + // so formatting the output can be concurrent + strcat(mbstr, ": "); + int len = strlen(mbstr); + vsnprintf(mbstr + len, sizeof(mbstr) - len, message, args); + + lock_mutex(&logmutex); + fputs(mbstr, log); + fflush(log); + unlock_mutex(&logmutex); + + #endif // USE_THREADS + if (log != stdout) fclose(log); +} + + +// Always sends to log output +int logger(const char *const fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vlogger(fmt, args); + va_end(args); + return 0; +} + +#endif //NO_LOG + + +// Output to stderr if it is available or to log otherwise (e.g. if running as daemon/service) +void printerrorf(const char *const fmt, ...) +{ + va_list arglist; + + va_start(arglist, fmt); + + #ifndef NO_LOG + #ifdef _NTSERVICE + if (InetdMode || IsNTService) + #else // !_NTSERVICE + if (InetdMode) + #endif // NTSERVIICE + vlogger(fmt, arglist); + else + #endif //NO_LOG + { + vfprintf(stderr, fmt, arglist); + fflush(stderr); + } + + va_end(arglist); +} + + +// Always output to stderr +int errorout(const char* fmt, ...) +{ + va_list args; + + va_start(args, fmt); + int i = vfprintf(stderr, fmt, args); + va_end(args); + fflush(stderr); + + return i; +} + + +static const char *LicenseStatusText[] = +{ + "Unlicensed", "Licensed", "OOB grace", "OOT grace", "Non-Genuine", "Notification", "Extended grace" +}; + + +void uuid2StringLE(const GUID *const guid, char *const string) +{ + sprintf(string, + #ifdef _WIN32 + "%08x-%04x-%04x-%04x-%012I64x", + #else + "%08x-%04x-%04x-%04x-%012llx", + #endif + (unsigned int)LE32( guid->Data1 ), + (unsigned int)LE16( guid->Data2 ), + (unsigned int)LE16( guid->Data3 ), + (unsigned int)BE16( *(uint16_t*)guid->Data4 ), + (unsigned long long)BE64(*(uint64_t*)(guid->Data4)) & 0xffffffffffffLL + ); +} + + +void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + char WorkstationBuffer[3 * WORKSTATION_NAME_BUFFER]; + const char *productName; + ProdListIndex_t index; + + p("Protocol version : %u.%u\n", LE16(Request->MajorVer), LE16(Request->MinorVer)); + p("Client is a virtual machine : %s\n", LE32(Request->VMInfo) ? "Yes" : "No"); + p("Licensing status : %u (%s)\n", (uint32_t)LE32(Request->LicenseStatus), LE32(Request->LicenseStatus) < _countof(LicenseStatusText) ? LicenseStatusText[LE32(Request->LicenseStatus)] : "Unknown"); + p("Remaining time (0 = forever) : %i minutes\n", (uint32_t)LE32(Request->BindingExpiration)); + + uuid2StringLE(&Request->AppID, guidBuffer); + productName = getProductNameLE(&Request->AppID, AppList, &index); + p("Application ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->ActID, guidBuffer); + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&Request->ActID, ExtendedProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Activation ID (Product) : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->KMSID, guidBuffer); + + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&Request->KMSID, ProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Key Management Service ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + uuid2StringLE(&Request->CMID_prev, guidBuffer); + p("Previous client machine ID : %s\n", guidBuffer); + + + char mbstr[64]; + time_t st; + st = fileTimeToUnixTime(&Request->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + ucs2_to_utf8(Request->WorkstationName, WorkstationBuffer, WORKSTATION_NAME_BUFFER, sizeof(WorkstationBuffer)); + + p("Workstation name : %s\n", WorkstationBuffer); + p("N count policy (minimum clients): %u\n", (uint32_t)LE32(Request->N_Policy)); +} + + +void logResponseVerbose(const char *const ePID, const BYTE *const hwid, const RESPONSE *const response, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + //SYSTEMTIME st; + + p("Protocol version : %u.%u\n", (uint32_t)LE16(response->MajorVer), (uint32_t)LE16(response->MinorVer)); + p("KMS host extended PID : %s\n", ePID); + if (LE16(response->MajorVer) > 5) +# ifndef _WIN32 + p("KMS host Hardware ID : %016llX\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + p("KMS host Hardware ID : %016I64X\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // WIN32 + + uuid2StringLE(&response->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + char mbstr[64]; + time_t st; + + st = fileTimeToUnixTime(&response->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + p("KMS host current active clients : %u\n", (uint32_t)LE32(response->Count)); + p("Renewal interval policy : %u\n", (uint32_t)LE32(response->VLRenewalInterval)); + p("Activation interval policy : %u\n", (uint32_t)LE32(response->VLActivationInterval)); +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "shared_globals.h" + +int global_argc, multi_argc = 0; +CARGV global_argv, multi_argv = NULL; +const char *const Version = VERSION; +DWORD VLActivationInterval = 60 * 2; // 2 hours +DWORD VLRenewalInterval = 60 * 24 * 7; // 7 days +int_fast8_t DisconnectImmediately = FALSE; +const char *const cIPv4 = "IPv4"; +const char *const cIPv6 = "IPv6"; + +#ifndef USE_MSRPC +int_fast8_t UseMultiplexedRpc = TRUE; +int_fast8_t UseRpcNDR64 = TRUE; +int_fast8_t UseRpcBTFN = TRUE; +#endif // USE_MSRPC + +#ifndef NO_SOCKETS +const char *defaultport = "1688"; +#endif // NO_SOCKETS + +KmsResponseParam_t KmsResponseParameters[MAX_KMSAPPS]; + +#if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) +int_fast8_t IsRestarted = FALSE; +#endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + +#if !defined(NO_TIMEOUT) && !__minix__ +DWORD ServerTimeout = 30; +#endif // !defined(NO_TIMEOUT) && !__minix__ + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ +#ifdef USE_MSRPC +uint32_t MaxTasks = RPC_C_LISTEN_MAX_CALLS_DEFAULT; +#else // !USE_MSRPC +uint32_t MaxTasks = SEM_VALUE_MAX; +#endif // !USE_MSRPC +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_LOG +char *fn_log = NULL; +int_fast8_t logstdout = 0; +#ifndef NO_VERBOSE_LOG +int_fast8_t logverbose = 0; +#endif // NO_VERBOSE_LOG +#endif // NO_LOG + +#ifndef NO_SOCKETS +int_fast8_t nodaemon = 0; +int_fast8_t InetdMode = 0; +#else +int_fast8_t nodaemon = 1; +int_fast8_t InetdMode = 1; +#endif + +#ifndef NO_RANDOM_EPID +int_fast8_t RandomizationLevel = 1; +uint16_t Lcid = 0; +#endif + +#ifndef NO_SOCKETS +SOCKET *SocketList; +int numsockets = 0; + +#if !defined(NO_LIMIT) && !__minix__ +#ifndef _WIN32 // Posix +sem_t *Semaphore; +#else // _WIN32 +HANDLE Semaphore; +#endif // _WIN32 + +#endif // !defined(NO_LIMIT) && !__minix__ +#endif // NO_SOCKETS + +#ifdef _NTSERVICE +int_fast8_t IsNTService = TRUE; +int_fast8_t ServiceShutdown = FALSE; +#endif // _NTSERVICE + +#ifndef NO_LOG +#ifdef USE_THREADS +#if !defined(_WIN32) && !defined(__CYGWIN__) +pthread_mutex_t logmutex = PTHREAD_MUTEX_INITIALIZER; +#else +CRITICAL_SECTION logmutex; +#endif // !defined(_WIN32) && !defined(__CYGWIN__) +#endif // USE_THREADS +#endif // NO_LOG + + + + + +/* + * Helper functions used by other modules + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _WIN32 +#include +#endif // _WIN32 +#include +#include +#include +#include +#include "helpers.h" +#include "output.h" +#include "endian.h" +#include "shared_globals.h" + + +/* + * UCS2 <-> UTF-8 functions + * All functions use little endian UCS2 since we only need it to communicate with Windows via RPC + */ + +// Convert one character from UTF-8 to UCS2 +// Returns 0xffff, if utf-8 evaluates to > 0xfffe (outside basic multilingual pane) +WCHAR utf8_to_ucs2_char (const unsigned char *input, const unsigned char **end_ptr) +{ + *end_ptr = input; + if (input[0] == 0) + return ~0; + + if (input[0] < 0x80) { + *end_ptr = input + 1; + return LE16(input[0]); + } + + if ((input[0] & 0xE0) == 0xE0) { + + if (input[1] == 0 || input[2] == 0) + return ~0; + + *end_ptr = input + 3; + + return + LE16((input[0] & 0x0F)<<12 | + (input[1] & 0x3F)<<6 | + (input[2] & 0x3F)); + } + + if ((input[0] & 0xC0) == 0xC0) { + if (input[1] == 0) + return ~0; + + *end_ptr = input + 2; + + return + LE16((input[0] & 0x1F)<<6 | + (input[1] & 0x3F)); + } + return ~0; +} + +// Convert one character from UCS2 to UTF-8 +// Returns length of UTF-8 char (1, 2 or 3) or -1 on error (UTF-16 outside UCS2) +// char *utf8 must be large enough to hold 3 bytes +int ucs2_to_utf8_char (const WCHAR ucs2_le, char *utf8) +{ + const WCHAR ucs2 = LE16(ucs2_le); + + if (ucs2 < 0x80) { + utf8[0] = ucs2; + utf8[1] = '\0'; + return 1; + } + + if (ucs2 >= 0x80 && ucs2 < 0x800) { + utf8[0] = (ucs2 >> 6) | 0xC0; + utf8[1] = (ucs2 & 0x3F) | 0x80; + utf8[2] = '\0'; + return 2; + } + + if (ucs2 >= 0x800 && ucs2 < 0xFFFF) { + + if (ucs2 >= 0xD800 && ucs2 <= 0xDFFF) { + /* Ill-formed (UTF-16 ouside of BMP) */ + return -1; + } + + utf8[0] = ((ucs2 >> 12) ) | 0xE0; + utf8[1] = ((ucs2 >> 6 ) & 0x3F) | 0x80; + utf8[2] = ((ucs2 ) & 0x3F) | 0x80; + utf8[3] = '\0'; + return 3; + } + + return -1; +} + + +// Converts UTF8 to UCS2. Returns size in bytes of the converted string or -1 on error +size_t utf8_to_ucs2(WCHAR* const ucs2_le, const char* const utf8, const size_t maxucs2, const size_t maxutf8) +{ + const unsigned char* current_utf8 = (unsigned char*)utf8; + WCHAR* current_ucs2_le = ucs2_le; + + for (; *current_utf8; current_ucs2_le++) + { + size_t size = (char*)current_utf8 - utf8; + + if (size >= maxutf8) return (size_t)-1; + if (((*current_utf8 & 0xc0) == 0xc0) && (size >= maxutf8 - 1)) return (size_t)-1; + if (((*current_utf8 & 0xe0) == 0xe0) && (size >= maxutf8 - 2)) return (size_t)-1; + if (current_ucs2_le - ucs2_le >= (intptr_t)maxucs2 - 1) return (size_t)-1; + + *current_ucs2_le = utf8_to_ucs2_char(current_utf8, ¤t_utf8); + current_ucs2_le[1] = 0; + + if (*current_ucs2_le == (WCHAR)-1) return (size_t)-1; + } + return current_ucs2_le - ucs2_le; +} + +// Converts UCS2 to UTF-8. Return TRUE or FALSE +BOOL ucs2_to_utf8(const WCHAR* const ucs2_le, char* utf8, size_t maxucs2, size_t maxutf8) +{ + char utf8_char[4]; + const WCHAR* current_ucs2 = ucs2_le; + unsigned int index_utf8 = 0; + + for(*utf8 = 0; *current_ucs2; current_ucs2++) + { + if (current_ucs2 - ucs2_le > (intptr_t)maxucs2) return FALSE; + int len = ucs2_to_utf8_char(*current_ucs2, utf8_char); + if (index_utf8 + len > maxutf8) return FALSE; + strncat(utf8, utf8_char, len); + index_utf8+=len; + } + + return TRUE; +} + +/* End of UTF-8 <-> UCS2 conversion */ + + +// Checks, whether a string is a valid integer number between min and max. Returns TRUE or FALSE. Puts int value in *value +BOOL stringToInt(const char *const szValue, const unsigned int min, const unsigned int max, unsigned int *const value) +{ + char *nextchar; + + errno = 0; + long long result = strtoll(szValue, &nextchar, 10); + + if (errno || result < (long long)min || result > (long long)max || *nextchar) + { + return FALSE; + } + + *value = (unsigned int)result; + return TRUE; +} + + +//Converts a String Guid to a host binary guid in host endianess +int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict guid) +{ + int i; + + if (strlen(input) < GUID_STRING_LENGTH) return FALSE; + if (input[8] != '-' || input[13] != '-' || input[18] != '-' || input[23] != '-') return FALSE; + + for (i = 0; i < GUID_STRING_LENGTH; i++) + { + if (i == 8 || i == 13 || i == 18 || i == 23) continue; + + const char c = toupper((int)input[i]); + + if (c < '0' || c > 'F' || (c > '9' && c < 'A')) return FALSE; + } + + char inputCopy[GUID_STRING_LENGTH + 1]; + strncpy(inputCopy, input, GUID_STRING_LENGTH + 1); + inputCopy[8] = inputCopy[13] = inputCopy[18] = 0; + + hex2bin((BYTE*)&guid->Data1, inputCopy, 8); + hex2bin((BYTE*)&guid->Data2, inputCopy + 9, 4); + hex2bin((BYTE*)&guid->Data3, inputCopy + 14, 4); + hex2bin(guid->Data4, input + 19, 16); + + guid->Data1 = BE32(guid->Data1); + guid->Data2 = BE16(guid->Data2); + guid->Data3 = BE16(guid->Data3); + return TRUE; +} + + +// convert GUID to little-endian +void LEGUID(GUID *const restrict out, const GUID* const restrict in) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + out->Data1 = LE32(in->Data1); + out->Data2 = LE16(in->Data2); + out->Data3 = LE16(in->Data3); + memcpy(out->Data4, in->Data4, sizeof(out->Data4)); + #else + memcpy(out, in, sizeof(GUID)); + #endif +} + + +//Checks a command line argument if it is numeric and between min and max. Returns the numeric value or exits on error +__pure unsigned int getOptionArgumentInt(const char o, const unsigned int min, const unsigned int max) +{ + unsigned int result; + + if (!stringToInt(optarg, min, max, &result)) + { + printerrorf("Fatal: Option \"-%c\" must be numeric between %u and %u.\n", o, min, max); + exit(!0); + } + + return result; +} + + +// Resets getopt() to start parsing from the beginning +void optReset(void) +{ + #if __minix__ || defined(__BSD__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) + optind = 1; + optreset = 1; // Makes newer BSD getopt happy + #elif defined(__UCLIBC__) // uClibc headers also define __GLIBC__ so be careful here + optind = 0; // uClibc seeks compatibility with GLIBC + #elif defined(__GLIBC__) + optind = 0; // Makes GLIBC getopt happy + #else // Standard for most systems + optind = 1; + #endif +} + + +#if defined(_WIN32) || defined(USE_MSRPC) + +// Returns a static message buffer containing text for a given Win32 error. Not thread safe (same as strerror) +char* win_strerror(const int message) +{ + #define STRERROR_BUFFER_SIZE 256 + static char buffer[STRERROR_BUFFER_SIZE]; + + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, message, 0, buffer, STRERROR_BUFFER_SIZE, NULL); + return buffer; +} + +#endif // defined(_WIN32) || defined(USE_MSRPC) + + +/* + * parses an address in the form host:[port] in addr + * returns host and port in seperate strings + */ +void parseAddress(char *const addr, char** szHost, char** szPort) +{ + *szHost = addr; + +# ifndef NO_SOCKETS + *szPort = (char*)defaultport; +# else // NO_SOCKETS + *szPort = "1688"; +# endif // NO_SOCKETS + + char *lastcolon = strrchr(addr, ':'); + char *firstcolon = strchr(addr, ':'); + char *closingbracket = strrchr(addr, ']'); + + if (*addr == '[' && closingbracket) //Address in brackets + { + *closingbracket = 0; + (*szHost)++; + + if (closingbracket[1] == ':') + *szPort = closingbracket + 2; + } + else if (firstcolon && firstcolon == lastcolon) //IPv4 address or hostname with port + { + *firstcolon = 0; + *szPort = firstcolon + 1; + } +} + + +// Initialize random generator (needs to be done in each thread) +void randomNumberInit() +{ + struct timeval tv; + gettimeofday(&tv, NULL); + srand((unsigned int)(tv.tv_sec ^ tv.tv_usec)); +} + + +// We always exit immediately if any OOM condition occurs +__noreturn void OutOfMemory(void) +{ + errorout("Fatal: Out of memory"); + exit(!0); +} + + +void* vlmcsd_malloc(size_t len) +{ + void* buf = malloc(len); + if (!buf) OutOfMemory(); + return buf; +} + + +/* + * Converts hex digits to bytes in big-endian order. + * Ignores any non-hex characters + */ +void hex2bin(BYTE *const bin, const char *hex, const size_t maxbin) +{ + static const char *const hexdigits = "0123456789ABCDEF"; + char* nextchar; + size_t i; + + for (i = 0; (i < 16) && utf8_to_ucs2_char((const unsigned char*)hex, (const unsigned char**)&nextchar) != (WCHAR)-1; hex = nextchar) + { + const char* pos = strchr(hexdigits, toupper((int)*hex)); + if (!pos) continue; + + if (!(i & 1)) bin[i >> 1] = 0; + bin[i >> 1] |= (char)(pos - hexdigits); + if (!(i & 1)) bin[i >> 1] <<= 4; + i++; + if (i >> 1 > maxbin) break; + } +} + + +__pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument) +{ + if ( + !strncasecmp(argument, "true", 4) || + !strncasecmp(argument, "on", 4) || + !strncasecmp(argument, "yes", 3) || + !strncasecmp(argument, "1", 1) + ) + { + *result = TRUE; + return TRUE; + } + else if ( + !strncasecmp(argument, "false", 5) || + !strncasecmp(argument, "off", 3) || + !strncasecmp(argument, "no", 2) || + !strncasecmp(argument, "0", 1) + ) + { + *result = FALSE; + return TRUE; + } + + return FALSE; +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +#endif // WIN32 + +#include "network.h" +#include "endian.h" +#include "output.h" +#include "helpers.h" +#include "shared_globals.h" +#include "rpc.h" + + +#ifndef _WIN32 +typedef ssize_t (*sendrecv_t)(int, void*, size_t, int); +#else +typedef int (WINAPI *sendrecv_t)(SOCKET, void*, int, int); +#endif + + +// Send or receive a fixed number of bytes regardless if received in one or more chunks +int_fast8_t sendrecv(SOCKET sock, BYTE *data, int len, int_fast8_t do_send) +{ + int n; + sendrecv_t f = do_send + ? (sendrecv_t) send + : (sendrecv_t) recv; + + do + { + n = f(sock, data, len, 0); + } + while ( + ( n < 0 && socket_errno == VLMCSD_EINTR ) || ( n > 0 && ( data += n, (len -= n) > 0 ) )); + + return ! len; +} + + +static int_fast8_t ip2str(char *restrict result, const size_t resultLength, const struct sockaddr *const restrict socketAddress, const socklen_t socketLength) +{ + static const char *const fIPv4 = "%s:%s"; + static const char *const fIPv6 = "[%s]:%s"; + char ipAddress[64], portNumber[8]; + + if (getnameinfo + ( + socketAddress, + socketLength, + ipAddress, + sizeof(ipAddress), + portNumber, + sizeof(portNumber), + NI_NUMERICHOST | NI_NUMERICSERV + )) + { + return FALSE; + } + + if ((unsigned int)snprintf(result, resultLength, socketAddress->sa_family == AF_INET6 ? fIPv6 : fIPv4, ipAddress, portNumber) > resultLength) return FALSE; + return TRUE; +} + + +static int_fast8_t getSocketList(struct addrinfo **saList, const char *const addr, const int flags, const int AddressFamily) +{ + int status; + char *szHost, *szPort; + size_t len = strlen(addr) + 1; + + // Don't alloca too much + if (len > 264) return FALSE; + + char *addrcopy = (char*)alloca(len); + memcpy(addrcopy, addr, len); + + parseAddress(addrcopy, &szHost, &szPort); + + struct addrinfo hints; + + memset(&hints, 0, sizeof(struct addrinfo)); + + hints.ai_family = AddressFamily; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + hints.ai_flags = flags; + + if ((status = getaddrinfo(szHost, szPort, &hints, saList))) + { + printerrorf("Warning: %s: %s\n", addr, gai_strerror(status)); + return FALSE; + } + + return TRUE; +} + + +static int_fast8_t setBlockingEnabled(SOCKET fd, int_fast8_t blocking) +{ + if (fd == INVALID_SOCKET) return FALSE; + + #ifdef _WIN32 + + unsigned long mode = blocking ? 0 : 1; + return (ioctlsocket(fd, FIONBIO, &mode) == 0) ? TRUE : FALSE; + + #else // POSIX + + int flags = fcntl(fd, F_GETFL, 0); + + if (flags < 0) return FALSE; + + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + return (fcntl(fd, F_SETFL, flags) == 0) ? TRUE : FALSE; + + #endif // POSIX +} + + +int_fast8_t isDisconnected(const SOCKET s) +{ + char buffer[1]; + + if (!setBlockingEnabled(s, FALSE)) return TRUE; + + int n = recv(s, buffer, 1, MSG_PEEK); + + if (!setBlockingEnabled(s, TRUE)) return TRUE; + if (n == 0) return TRUE; + + return FALSE; +} + + +// Connect to TCP address addr (e.g. "kms.example.com:1688") and return an +// open socket for the connection if successful or INVALID_SOCKET otherwise +SOCKET connectToAddress(const char *const addr, const int AddressFamily, int_fast8_t showHostName) +{ + struct addrinfo *saList, *sa; + SOCKET s = INVALID_SOCKET; + char szAddr[128]; + + if (!getSocketList(&saList, addr, 0, AddressFamily)) return INVALID_SOCKET; + + for (sa = saList; sa; sa = sa->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (ip2str(szAddr, sizeof(szAddr), sa->ai_addr, sa->ai_addrlen)) + { + if (showHostName) + printf("Connecting to %s (%s) ... ", addr, szAddr); + else + printf("Connecting to %s ... ", szAddr); + + fflush(stdout); + } + + s = socket(sa->ai_family, SOCK_STREAM, IPPROTO_TCP); + +# if !defined(NO_TIMEOUT) && !__minix__ +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = 10; + to.tv_usec = 0; + +# else // Windows requires a DWORD with milliseconds + + DWORD to = 10000; + +# endif // _WIN32 + + setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); +# endif // !defined(NO_TIMEOUT) && !__minix__ + + if (!connect(s, sa->ai_addr, sa->ai_addrlen)) + { + printf("successful\n"); + break; + } + + errorout("%s\n", socket_errno == VLMCSD_EINPROGRESS ? "Timed out" : vlmcsd_strerror(socket_errno)); + + socketclose(s); + s = INVALID_SOCKET; + } + + freeaddrinfo(saList); + return s; +} + + +#ifndef NO_SOCKETS + +// Create a Listening socket for addrinfo sa and return socket s +// szHost and szPort are for logging only +static int listenOnAddress(const struct addrinfo *const ai, SOCKET *s) +{ + int error; + char ipstr[64]; + + ip2str(ipstr, sizeof(ipstr), ai->ai_addr, ai->ai_addrlen); + + //*s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + *s = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); + + if (*s == INVALID_SOCKET) + { + error = socket_errno; + printerrorf("Warning: %s error. %s\n", ai->ai_family == AF_INET6 ? cIPv6 : cIPv4, vlmcsd_strerror(error)); + return error; + } + +# if !defined(_WIN32) && !defined(NO_SIGHUP) + + int flags = fcntl(*s, F_GETFD, 0); + + if (flags != -1) + { + flags |= FD_CLOEXEC; + fcntl(*s, F_SETFD, flags); + } +# ifdef _PEDANTIC + else + { + printerrorf("Warning: Could not set FD_CLOEXEC flag on %s: %s\n", ipstr, vlmcsd_strerror(errno)); + } +# endif // _PEDANTIC + +# endif // !defined(_WIN32) && !defined(NO_SIGHUP) + + BOOL socketOption = TRUE; + + // fix for lame tomato toolchain +# ifndef IPV6_V6ONLY +# ifdef __linux__ +# define IPV6_V6ONLY (26) +# endif // __linux__ +# endif // IPV6_V6ONLY + +# ifdef IPV6_V6ONLY + if (ai->ai_family == AF_INET6) setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + +# ifndef _WIN32 + setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + + if (bind(*s, ai->ai_addr, ai->ai_addrlen) || listen(*s, SOMAXCONN)) + { + error = socket_errno; + printerrorf("Warning: %s: %s\n", ipstr, vlmcsd_strerror(error)); + socketclose(*s); + return error; + } + +# ifndef NO_LOG + logger("Listening on %s\n", ipstr); +# endif + + return 0; +} + + +// Adds a listening socket for an address string, +// e.g. 127.0.0.1:1688 or [2001:db8:dead:beef::1]:1688 +BOOL addListeningSocket(const char *const addr) +{ + struct addrinfo *aiList, *ai; + int result = FALSE; + SOCKET *s = SocketList + numsockets; + + if (getSocketList(&aiList, addr, AI_PASSIVE | AI_NUMERICHOST, AF_UNSPEC)) + { + for (ai = aiList; ai; ai = ai->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (numsockets >= FD_SETSIZE) + { + #ifdef _PEDANTIC // Do not report this error in normal builds to keep file size low + printerrorf("Warning: Cannot listen on %s. Your OS only supports %u listening sockets in an FD_SET.\n", addr, FD_SETSIZE); + #endif + break; + } + + if (!listenOnAddress(ai, s)) + { + numsockets++; + result = TRUE; + } + } + + freeaddrinfo(aiList); + } + return result; +} + + +// Just create some dummy sockets to see if we have a specific protocol (IPv4 or IPv6) +__pure int_fast8_t checkProtocolStack(const int addressfamily) +{ + SOCKET s; // = INVALID_SOCKET; + + s = socket(addressfamily, SOCK_STREAM, 0); + int_fast8_t success = (s != INVALID_SOCKET); + + socketclose(s); + return success; +} + + +// Build an fd_set of all listening socket then use select to wait for an incoming connection +static SOCKET network_accept_any() +{ + fd_set ListeningSocketsList; + SOCKET maxSocket, sock; + int i; + int status; + + FD_ZERO(&ListeningSocketsList); + maxSocket = 0; + + for (i = 0; i < numsockets; i++) + { + FD_SET(SocketList[i], &ListeningSocketsList); + if (SocketList[i] > maxSocket) maxSocket = SocketList[i]; + } + + status = select(maxSocket + 1, &ListeningSocketsList, NULL, NULL, NULL); + + if (status < 0) return INVALID_SOCKET; + + sock = INVALID_SOCKET; + + for (i = 0; i < numsockets; i++) + { + if (FD_ISSET(SocketList[i], &ListeningSocketsList)) + { + sock = SocketList[i]; + break; + } + } + + if (sock == INVALID_SOCKET) + return INVALID_SOCKET; + else + return accept(sock, NULL, NULL); +} + + +void closeAllListeningSockets() +{ + int i; + + for (i = 0; i < numsockets; i++) + { + shutdown(SocketList[i], VLMCSD_SHUT_RDWR); + socketclose(SocketList[i]); + } +} +#endif // NO_SOCKETS + + +static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup) +{ +# if !defined(NO_TIMEOUT) && !__minix__ + +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = ServerTimeout; + to.tv_usec = 0; + + #else // Windows requires a DWORD with milliseconds + + DWORD to = ServerTimeout * 1000; + +# endif // _WIN32 + +# if !defined(NO_LOG) && defined(_PEDANTIC) + + int result = + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)) || + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + + if (result) logger("Warning: Set timeout failed: %s\n", vlmcsd_strerror(socket_errno)); + +# else // !(!defined(NO_LOG) && defined(_PEDANTIC)) + + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + +# endif // !(!defined(NO_LOG) && defined(_PEDANTIC)) + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + char ipstr[64]; + socklen_t len; + struct sockaddr_storage addr; + + len = sizeof addr; + + if (getpeername(s_client, (struct sockaddr*)&addr, &len) || + !ip2str(ipstr, sizeof(ipstr), (struct sockaddr*)&addr, len)) + { +# if !defined(NO_LOG) && defined(_PEDANTIC) + logger("Fatal: Cannot determine client's IP address: %s\n", vlmcsd_strerror(errno)); +# endif // !defined(NO_LOG) && defined(_PEDANTIC) + socketclose(s_client); + return; + } + + +# ifndef NO_LOG + const char *const connection_type = addr.ss_family == AF_INET6 ? cIPv6 : cIPv4; + static const char *const cAccepted = "accepted"; + static const char *const cClosed = "closed"; + static const char *const fIP = "%s connection %s: %s.\n"; + + logger(fIP, connection_type, cAccepted, ipstr); + #endif // NO_LOG + + rpcServer(s_client, RpcAssocGroup, ipstr); + +# ifndef NO_LOG + logger(fIP, connection_type, cClosed, ipstr); +# endif // NO_LOG + + socketclose(s_client); +} + + +#ifndef NO_SOCKETS +static void post_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_post(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} + + +static void wait_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_wait(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} +#endif // NO_SOCKETS + +#if defined(USE_THREADS) && !defined(NO_SOCKETS) + +#if defined(_WIN32) || defined(__CYGWIN__) // Win32 Threads +static DWORD WINAPI serveClientThreadProc(PCLDATA clData) +#else // Posix threads +static void *serveClientThreadProc (PCLDATA clData) +#endif // Thread proc is identical in WIN32 and Posix threads +{ + serveClient(clData->socket, clData->RpcAssocGroup); + free(clData); + post_sem(); + + return 0; +} + +#endif // USE_THREADS + + +#ifndef NO_SOCKETS + +#if defined(USE_THREADS) && (defined(_WIN32) || defined(__CYGWIN__)) // Windows Threads +static int serveClientAsyncWinThreads(const PCLDATA thr_CLData) +{ + wait_sem(); + + HANDLE h = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)serveClientThreadProc, thr_CLData, 0, NULL); + + if (h) + CloseHandle(h); + else + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return GetLastError(); + } + + return NO_ERROR; +} +#endif // defined(USE_THREADS) && defined(_WIN32) // Windows Threads + + +#if defined(USE_THREADS) && !defined(_WIN32) && !defined(__CYGWIN__) // Posix Threads +static int ServeClientAsyncPosixThreads(const PCLDATA thr_CLData) +{ + pthread_t p_thr; + pthread_attr_t attr; + + wait_sem(); + + // Must set detached state to avoid memory leak + if (pthread_attr_init(&attr) || + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) || + pthread_create(&p_thr, &attr, (void * (*)(void *))serveClientThreadProc, thr_CLData)) + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return !0; + } + + return 0; +} +#endif // defined(USE_THREADS) && !defined(_WIN32) // Posix Threads + +#ifndef USE_THREADS // fork() implementation +static void ChildSignalHandler(const int signal) +{ + if (signal == SIGHUP) return; + + post_sem(); + + #ifndef NO_LOG + logger("Warning: Child killed/crashed by %s\n", strsignal(signal)); + #endif // NO_LOG + + exit(!0); +} + +static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + int pid; + wait_sem(); + + if ((pid = fork()) < 0) + { + return errno; + } + else if ( pid ) + { + // Parent process + socketclose(s_client); + return 0; + } + else + { + // Child process + + // Setup a Child Handler for most common termination signals + struct sigaction sa; + + sa.sa_flags = 0; + sa.sa_handler = ChildSignalHandler; + + static int signallist[] = { SIGHUP, SIGINT, SIGTERM, SIGSEGV, SIGILL, SIGFPE, SIGBUS }; + + if (!sigemptyset(&sa.sa_mask)) + { + uint_fast8_t i; + + for (i = 0; i < _countof(signallist); i++) + { + sigaction(signallist[i], &sa, NULL); + } + } + + serveClient(s_client, RpcAssocGroup); + post_sem(); + exit(0); + } +} +#endif + + +int serveClientAsync(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + #ifndef USE_THREADS // fork() implementation + + return ServeClientAsyncFork(s_client, RpcAssocGroup); + + #else // threads implementation + + PCLDATA thr_CLData = (PCLDATA)vlmcsd_malloc(sizeof(CLDATA)); + thr_CLData->socket = s_client; + thr_CLData->RpcAssocGroup = RpcAssocGroup; + + #if defined(_WIN32) || defined (__CYGWIN__) // Windows threads + + return serveClientAsyncWinThreads(thr_CLData); + + #else // Posix Threads + + return ServeClientAsyncPosixThreads(thr_CLData); + + #endif // Posix Threads + + #endif // USE_THREADS +} + +#endif // NO_SOCKETS + + +int runServer() +{ + DWORD RpcAssocGroup = rand32(); + + // If compiled for inetd-only mode just serve the stdin socket + #ifdef NO_SOCKETS + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + #else + // In inetd mode just handle the stdin socket + if (InetdMode) + { + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + } + + // Standalone mode + for (;;) + { + int error; + SOCKET s_client; + + if ( (s_client = network_accept_any()) == INVALID_SOCKET ) + { + error = socket_errno; + + if (error == VLMCSD_EINTR || error == VLMCSD_ECONNABORTED) continue; + + #ifdef _NTSERVICE + if (ServiceShutdown) return 0; + #endif + + #ifndef NO_LOG + logger("Fatal: %s\n",vlmcsd_strerror(error)); + #endif + + return error; + } + + RpcAssocGroup++; + serveClientAsync(s_client, RpcAssocGroup); + } + #endif // NO_SOCKETS + + return 0; +} + +#endif // USE_MSRPC +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#include +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include "rpc.h" +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "helpers.h" +#include "network.h" +#include "shared_globals.h" + +/* Forwards */ + +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p); + + +/* Data definitions */ + +// All GUIDs are defined as BYTE[16] here. No big-endian/little-endian byteswapping required. +static const BYTE TransferSyntaxNDR32[] = { + 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11, 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60 +}; + +static const BYTE InterfaceUuid[] = { + 0x75, 0x21, 0xc8, 0x51, 0x4e, 0x84, 0x50, 0x47, 0xB0, 0xD8, 0xEC, 0x25, 0x55, 0x55, 0xBC, 0x06 +}; + +static const BYTE TransferSyntaxNDR64[] = { + 0x33, 0x05, 0x71, 0x71, 0xba, 0xbe, 0x37, 0x49, 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36 +}; + +static const BYTE BindTimeFeatureNegotiation[] = { + 0x2c, 0x1c, 0xb7, 0x6c, 0x12, 0x98, 0x40, 0x45, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +// +// Dispatch RPC payload to kms.c +// +typedef int (*CreateResponse_t)(const void *const, void *const, const char* const); + +static const struct { + unsigned int RequestSize; + CreateResponse_t CreateResponse; +} _Versions[] = { + { sizeof(REQUEST_V4), (CreateResponse_t) CreateResponseV4 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 } +}; + +RPC_FLAGS RpcFlags; +static int_fast8_t firstPacketSent; + +// +// RPC request (server) +// +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcRequest(const RPC_REQUEST64 *const Request, const unsigned int len, WORD* NdrCtx, WORD* Ndr64Ctx, WORD Ctx) +{ + uint_fast8_t kmsMajorVersion; + uint32_t requestSize = Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64); + + if (len < requestSize) + { + logger("Fatal: RPC request (including header) must be at least %i bytes but is only %i bytes.\n", + (int)(sizeof(RPC_HEADER) + requestSize), + (int)(len + sizeof(RPC_HEADER)) + ); + + return; + } + + if (len < requestSize + sizeof(DWORD)) + { + logger("Fatal: KMS Request too small to contain version info (less than 4 bytes).\n"); + return; + } + + if (Ctx != *Ndr64Ctx) + kmsMajorVersion = LE16(((WORD*)Request->Ndr.Data)[1]); + else + kmsMajorVersion = LE16(((WORD*)Request->Ndr64.Data)[1]); + + if (kmsMajorVersion > 6) + { + logger("Fatal: KMSv%u is not supported.\n", (unsigned int)kmsMajorVersion); + } + else + { + if (len >_Versions[kmsMajorVersion].RequestSize + requestSize) + logger("Warning: %u excess bytes in RPC request.\n", + len - _Versions[kmsMajorVersion].RequestSize + ); + } + + if (Ctx != *Ndr64Ctx && Ctx != *NdrCtx) + logger("Warning: Context id should be %u (NDR32) or %u (NDR64) but is %u.\n", + (unsigned int)*NdrCtx, + (unsigned int)*Ndr64Ctx, + Ctx + ); + + if (Request->Opnum) + logger("Warning: OpNum should be 0 but is %u.\n", + (unsigned int)LE16(Request->Opnum) + ); + + if (LE32(Request->AllocHint) != len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr)) + logger("Warning: Allocation hint should be %u but is %u.\n", + len + sizeof(Request->Ndr), + LE32(Request->AllocHint) + ); + + if (Ctx != *Ndr64Ctx) + { + if (LE32(Request->Ndr.DataLength) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataLength) + ); + + if (LE32(Request->Ndr.DataSizeIs) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataSizeIs) + ); + } + else + { + if (LE64(Request->Ndr64.DataLength) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr), + LE64(Request->Ndr64.DataLength) + ); + + if (LE64(Request->Ndr64.DataSizeIs) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST64), + LE64(Request->Ndr64.DataSizeIs) + ); + } +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + +/* + * check RPC request for (somewhat) correct size + * allow any size that does not cause CreateResponse to fail badly + */ +static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + WORD Ctx = LE16(Request->ContextId); + +# if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcRequest(Request, requestSize, NdrCtx, Ndr64Ctx, Ctx); +# endif // defined(_PEDANTIC) && !defined(NO_LOG) + + // Anything that is smaller than a v4 request is illegal + if (requestSize < sizeof(REQUEST_V4) + (Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64))) return 0; + + // Get KMS major version + uint_fast16_t _v; + + if (Ctx != *Ndr64Ctx) + _v = LE16(((WORD*)Request->Ndr.Data)[1]) - 4; + else + _v = LE16(((WORD*)Request->Ndr64.Data)[1]) - 4; + + // Only KMS v4, v5 and v6 are supported + if (_v >= vlmcsd_countof(_Versions)) + { +# ifndef NO_LOG + logger("Fatal: KMSv%i unsupported\n", _v + 4); +# endif // NO_LOG + return 0; + } + + // Could check for equality but allow bigger requests to support buggy RPC clients (e.g. wine) + // Buffer overrun is check by caller. + return (requestSize >= _Versions[_v].RequestSize); +} + + +/* + * Handles the actual KMS request from the client. + * Calls KMS functions (CreateResponseV4 or CreateResponseV6) in kms.c + * Returns size of the KMS response packet or 0 on failure. + * + * The RPC packet size (excluding header) is actually in Response->AllocHint + */ +static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const Response, const DWORD RpcAssocGroup_unused, const SOCKET sock_unused, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr) +{ + uint_fast16_t _v; + int ResponseSize; + WORD Ctx = LE16(Request->ContextId); + BYTE* requestData; + BYTE* responseData; + BYTE* pRpcReturnCode; + int len; + + if (Ctx != *Ndr64Ctx) + { + requestData = (BYTE*)&Request->Ndr.Data; + responseData = (BYTE*)&Response->Ndr.Data; + } + else + { + requestData = (BYTE*)&Request->Ndr64.Data; + responseData = (BYTE*)&Response->Ndr64.Data; + } + + _v = LE16(((WORD*)requestData)[1]) - 4; + + if (!(ResponseSize = _Versions[_v].CreateResponse(requestData, responseData, ipstr))) + { + return 0; + } + + if (Ctx != *Ndr64Ctx) + { + Response->Ndr.DataSizeMax = LE32(0x00020000); + Response->Ndr.DataLength = Response->Ndr.DataSizeIs = LE32(ResponseSize); + len = ResponseSize + sizeof(Response->Ndr); + } + else + { + Response->Ndr64.DataSizeMax = LE64(0x00020000ULL); + Response->Ndr64.DataLength = Response->Ndr64.DataSizeIs = LE64((uint64_t)ResponseSize); + len = ResponseSize + sizeof(Response->Ndr64); + } + + pRpcReturnCode = ((BYTE*)&Response->Ndr) + len; + UA32(pRpcReturnCode) = 0; //LE32 not needed for 0 + len += sizeof(DWORD); + + // Pad zeros to 32-bit align (seems not neccassary but Windows RPC does it this way) + int pad = ((~len & 3) + 1) & 3; + memset(pRpcReturnCode + sizeof(DWORD), 0, pad); + len += pad; + + Response->AllocHint = LE32(len); + Response->ContextId = Request->ContextId; + + *((WORD*)&Response->CancelCount) = 0; // CancelCount + Pad1 + + return len + 8; +} + + +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcBindRequest(const RPC_BIND_REQUEST *const Request, const unsigned int len) +{ + uint_fast8_t i, HasTransferSyntaxNDR32 = FALSE; + char guidBuffer1[GUID_STRING_LENGTH + 1], guidBuffer2[GUID_STRING_LENGTH + 1]; + + uint32_t CapCtxItems = (len - sizeof(*Request) + sizeof(Request->CtxItems)) / sizeof(Request->CtxItems); + DWORD NumCtxItems = LE32(Request->NumCtxItems); + + if (NumCtxItems < CapCtxItems) // Can't be too small because already handled by RpcBindSize + logger("Warning: Excess bytes in RPC bind request.\n"); + + for (i = 0; i < NumCtxItems; i++) + { + if (!IsEqualGUID(&Request->CtxItems[i].InterfaceUUID, InterfaceUuid)) + { + uuid2StringLE((GUID*)&Request->CtxItems[i].InterfaceUUID, guidBuffer1); + uuid2StringLE((GUID*)InterfaceUuid, guidBuffer2); + logger("Warning: Interface UUID is %s but should be %s in Ctx item %u.\n", guidBuffer1, guidBuffer2, (unsigned int)i); + } + + if (Request->CtxItems[i].NumTransItems != LE16(1)) + logger("Fatal: %u NDR32 transfer items detected in Ctx item %u, but only one is supported.\n", + (unsigned int)LE16(Request->CtxItems[i].NumTransItems), (unsigned int)i + ); + + if (Request->CtxItems[i].InterfaceVerMajor != LE16(1) || Request->CtxItems[i].InterfaceVerMinor != 0) + logger("Warning: NDR32 Interface version is %u.%u but should be 1.0.\n", + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMajor), + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMinor) + ); + + if (Request->CtxItems[i].ContextId != LE16((WORD)i)) + logger("Warning: context id of Ctx item %u is %u.\n", (unsigned int)i, (unsigned int)Request->CtxItems[i].ContextId); + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + HasTransferSyntaxNDR32 = TRUE; + + if (Request->CtxItems[i].SyntaxVersion != LE32(2)) + logger("NDR32 transfer syntax version is %u but should be 2.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("NDR64 transfer syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if (!memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8)) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("BTFN syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + } + + if (!HasTransferSyntaxNDR32) + logger("Warning: RPC bind request has no NDR32 CtxItem.\n"); +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + + +/* + * Check, if we receive enough bytes to return a valid RPC bind response + */ +static unsigned int checkRpcBindSize(const RPC_BIND_REQUEST *const Request, const unsigned int RequestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + if ( RequestSize < sizeof(RPC_BIND_REQUEST) ) return FALSE; + + unsigned int _NumCtxItems = LE32(Request->NumCtxItems); + + if ( RequestSize < sizeof(RPC_BIND_REQUEST) - sizeof(Request->CtxItems[0]) + _NumCtxItems * sizeof(Request->CtxItems[0]) ) return FALSE; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcBindRequest(Request, RequestSize); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + return TRUE; +} + + +/* + * Accepts a bind or alter context request from the client and composes the bind response. + * Needs the socket because the tcp port number is part of the response. + * len is not used here. + * + * Returns TRUE on success. + */ +static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Response, const DWORD RpcAssocGroup, const SOCKET sock, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr_unused) +{ + unsigned int i, _st = FALSE; + DWORD numCtxItems = LE32(Request->NumCtxItems); + int_fast8_t IsNDR64possible = FALSE; + uint_fast8_t portNumberSize; + + socklen_t socklen; + struct sockaddr_storage addr; + + // M$ RPC does not do this. Pad bytes contain apparently random data + // memset(Response->SecondaryAddress, 0, sizeof(Response->SecondaryAddress)); + + socklen = sizeof addr; + + if ( + packetType == RPC_PT_ALTERCONTEXT_REQ || + getsockname(sock, (struct sockaddr*)&addr, &socklen) || + getnameinfo((struct sockaddr*)&addr, socklen, NULL, 0, (char*)Response->SecondaryAddress, sizeof(Response->SecondaryAddress), NI_NUMERICSERV)) + { + portNumberSize = Response->SecondaryAddressLength = 0; + } + else + { + portNumberSize = strlen((char*)Response->SecondaryAddress) + 1; + Response->SecondaryAddressLength = LE16(portNumberSize); + } + + Response->MaxXmitFrag = Request->MaxXmitFrag; + Response->MaxRecvFrag = Request->MaxRecvFrag; + Response->AssocGroup = LE32(RpcAssocGroup); + + // This is really ugly (but efficient) code to support padding after the secondary address field + if (portNumberSize < 3) + { + Response = (RPC_BIND_RESPONSE*)((BYTE*)Response - 4); + } + + Response->NumResults = Request->NumCtxItems; + + if (UseRpcNDR64) + { + for (i = 0; i < numCtxItems; i++) + { + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + /*if (packetType == RPC_PT_BIND_REQ)*/ + *NdrCtx = LE16(Request->CtxItems[i].ContextId); + } + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + IsNDR64possible = TRUE; + + /*if (packetType == RPC_PT_BIND_REQ)*/ + *Ndr64Ctx = LE16(Request->CtxItems[i].ContextId); + } + } + } + + for (i = 0; i < numCtxItems; i++) + { + memset(&Response->Results[i].TransferSyntax, 0, sizeof(GUID)); + + if ( !IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(2); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + _st = TRUE; + } + else if ( IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(1); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + + _st = TRUE; + } + else if ( UseRpcBTFN && !memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8) ) + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = RPC_BIND_ACK; + + // Features requested are actually encoded in the GUID + Response->Results[i].AckReason = + ((WORD*)(&Request->CtxItems[i].TransferSyntax))[4] & + (RPC_BTFN_SEC_CONTEXT_MULTIPLEX | RPC_BTFN_KEEP_ORPHAN); + } + else + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_NACK; // Unsupported + } + } + + if ( !_st ) return 0; + + return sizeof(RPC_BIND_RESPONSE) + numCtxItems * sizeof(((RPC_BIND_RESPONSE *)0)->Results[0]) - (portNumberSize < 3 ? 4 : 0); +} + + +// +// Main RPC handling routine +// +typedef unsigned int (*GetResponseSize_t)(const void *const request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx); +typedef int (*GetResponse_t)(const void* const request, void* response, const DWORD rpcAssocGroup, const SOCKET socket, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr); + +static const struct { + BYTE ResponsePacketType; + GetResponseSize_t CheckRequestSize; + GetResponse_t GetResponse; +} +_Actions[] = { + { RPC_PT_BIND_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, + { RPC_PT_RESPONSE, (GetResponseSize_t)checkRpcRequestSize, (GetResponse_t) rpcRequest }, + { RPC_PT_ALTERCONTEXT_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, +}; + + +/* + * This is the main RPC server loop. Returns after KMS request has been serviced + * or a timeout has occured. + */ +void rpcServer(const SOCKET sock, const DWORD RpcAssocGroup, const char* const ipstr) +{ + RPC_HEADER rpcRequestHeader; + WORD NdrCtx = INVALID_NDR_CTX, Ndr64Ctx = INVALID_NDR_CTX; + + randomNumberInit(); + + while (_recv(sock, &rpcRequestHeader, sizeof(rpcRequestHeader))) + { + //int_fast8_t _st; + unsigned int request_len, response_len; + uint_fast8_t _a; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + checkRpcHeader(&rpcRequestHeader, rpcRequestHeader.PacketType, &logger); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + switch (rpcRequestHeader.PacketType) + { + case RPC_PT_BIND_REQ: _a = 0; break; + case RPC_PT_REQUEST: _a = 1; break; + case RPC_PT_ALTERCONTEXT_REQ: _a = 2; break; + default: return; + } + + request_len = LE16(rpcRequestHeader.FragLength) - sizeof(rpcRequestHeader); + + BYTE requestBuffer[MAX_REQUEST_SIZE + sizeof(RPC_RESPONSE64)]; + BYTE responseBuffer[MAX_RESPONSE_SIZE + sizeof(RPC_HEADER) + sizeof(RPC_RESPONSE64)]; + + RPC_HEADER *rpcResponseHeader = (RPC_HEADER *)responseBuffer; + RPC_RESPONSE* rpcResponse = (RPC_RESPONSE*)(responseBuffer + sizeof(rpcRequestHeader)); + + // The request is larger than the buffer size + if (request_len > MAX_REQUEST_SIZE + sizeof(RPC_REQUEST64)) return; + + // Unable to receive the complete request + if (!_recv(sock, requestBuffer, request_len)) return; + + // Request is invalid + if (!_Actions[_a].CheckRequestSize(requestBuffer, request_len, &NdrCtx, &Ndr64Ctx)) return; + + // Unable to create a valid response from request + if (!(response_len = _Actions[_a].GetResponse(requestBuffer, rpcResponse, RpcAssocGroup, sock, &NdrCtx, &Ndr64Ctx, rpcRequestHeader.PacketType, ipstr))) return; + + response_len += sizeof(RPC_HEADER); + + memcpy(rpcResponseHeader, &rpcRequestHeader, sizeof(RPC_HEADER)); + + rpcResponseHeader->FragLength = LE16(response_len); + rpcResponseHeader->PacketType = _Actions[_a].ResponsePacketType; + + if (rpcResponseHeader->PacketType == RPC_PT_ALTERCONTEXT_ACK) + rpcResponseHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + + if (!_send(sock, responseBuffer, response_len)) return; + + if (DisconnectImmediately && rpcResponseHeader->PacketType == RPC_PT_RESPONSE) + shutdown(sock, VLMCSD_SHUT_RDWR); + } +} + + +/* RPC client functions */ + +static DWORD CallId = 2; // M$ starts with CallId 2. So we do the same. + + +/* + * Checks RPC header. Returns 0 on success. + * This is mainly for debugging a non Microsoft KMS server that uses its own RPC code. + */ +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p) +{ + int status = 0; + + if (Header->PacketType != desiredPacketType) + { + p("Fatal: Received wrong RPC packet type. Expected %u but got %u\n", + (uint32_t)desiredPacketType, + Header->PacketType + ); + status = !0; + } + + if (Header->DataRepresentation != BE32(0x10000000)) + { + p("Fatal: RPC response does not conform to Microsoft's limited support of DCE RPC\n"); + status = !0; + } + + if (Header->AuthLength != 0) + { + p("Fatal: RPC response requests authentication\n"); + status = !0; + } + + // vlmcsd does not support fragmented packets (not yet neccassary) + if ( (Header->PacketFlags & (RPC_PF_FIRST | RPC_PF_LAST)) != (RPC_PF_FIRST | RPC_PF_LAST) ) + { + p("Fatal: RPC packet flags RPC_PF_FIRST and RPC_PF_LAST are not both set.\n"); + status = !0; + } + + if (Header->PacketFlags & RPC_PF_CANCEL_PENDING) p("Warning: %s should not be set\n", "RPC_PF_CANCEL_PENDING"); + if (Header->PacketFlags & RPC_PF_RESERVED) p("Warning: %s should not be set\n", "RPC_PF_RESERVED"); + if (Header->PacketFlags & RPC_PF_NOT_EXEC) p("Warning: %s should not be set\n", "RPC_PF_NOT_EXEC"); + if (Header->PacketFlags & RPC_PF_MAYBE) p("Warning: %s should not be set\n", "RPC_PF_MAYBE"); + if (Header->PacketFlags & RPC_PF_OBJECT) p("Warning: %s should not be set\n", "RPC_PF_OBJECT"); + + if (Header->VersionMajor != 5 || Header->VersionMinor != 0) + { + p("Fatal: Expected RPC version 5.0 and got %u.%u\n", Header->VersionMajor, Header->VersionMinor); + status = !0; + } + + return status; +} + + +/* + * Checks an RPC response header. Does basic header checks by calling checkRpcHeader() + * and then does additional checks if response header complies with the respective request header. + * PRINTFUNC p can be anything that has the same prototype as printf. + * Returns 0 on success. + */ +static int checkRpcResponseHeader(const RPC_HEADER *const ResponseHeader, const RPC_HEADER *const RequestHeader, const BYTE desiredPacketType, const PRINTFUNC p) +{ + static int_fast8_t WineBugDetected = FALSE; + int status = checkRpcHeader(ResponseHeader, desiredPacketType, p); + + if (desiredPacketType == RPC_PT_BIND_ACK) + { + if ((ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) != (RequestHeader->PacketFlags & RPC_PF_MULTIPLEX)) + { + p("Warning: RPC_PF_MULTIPLEX of RPC request and response should match\n"); + } + } + else + { + if (ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) + { + p("Warning: %s should not be set\n", "RPC_PF_MULTIPLEX"); + } + } + + if (!status && ResponseHeader->CallId == LE32(1)) + { + if (!WineBugDetected) + { + p("Warning: Buggy RPC of Wine detected. Call Id of Response is always 1\n"); + WineBugDetected = TRUE; + } + } + else if (ResponseHeader->CallId != RequestHeader->CallId) + { + p("Fatal: Sent Call Id %u but received answer for Call Id %u\n", + (uint32_t)LE32(RequestHeader->CallId), + (uint32_t)LE32(ResponseHeader->CallId) + ); + + status = !0; + } + + return status; +} + +/* + * Initializes an RPC request header as needed for KMS, i.e. packet always fits in one fragment. + * size cannot be greater than fragment length negotiated during RPC bind. + */ +static void createRpcRequestHeader(RPC_HEADER* RequestHeader, BYTE packetType, WORD size) +{ + RequestHeader->PacketType = packetType; + RequestHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + RequestHeader->VersionMajor = 5; + RequestHeader->VersionMinor = 0; + RequestHeader->AuthLength = 0; + RequestHeader->DataRepresentation = BE32(0x10000000); // Little endian, ASCII charset, IEEE floating point + RequestHeader->CallId = LE32(CallId); + RequestHeader->FragLength = LE16(size); +} + + +/* + * Sends a KMS request via RPC and receives a response. + * Parameters are raw (encrypted) reqeuests / responses. + * Returns 0 on success. + */ +RpcStatus rpcSendRequest(const RpcCtx sock, const BYTE *const KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t *const responseSize) +{ + #define MAX_EXCESS_BYTES 16 + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_REQUEST64 *RpcRequest; + RPC_RESPONSE64 _Response; + int status = 0; + int_fast8_t useNdr64 = UseRpcNDR64 && firstPacketSent; + size_t size = sizeof(RPC_HEADER) + (useNdr64 ? sizeof(RPC_REQUEST64) : sizeof(RPC_REQUEST)) + requestSize; + size_t responseSize2; + + *KmsResponse = NULL; + + BYTE *_Request = (BYTE*)vlmcsd_malloc(size); + + RequestHeader = (RPC_HEADER*)_Request; + RpcRequest = (RPC_REQUEST64*)(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, RPC_PT_REQUEST, size); + + // Increment CallId for next Request + CallId++; + + RpcRequest->Opnum = 0; + + if (useNdr64) + { + RpcRequest->ContextId = LE16(1); // We negotiate NDR64 always as context 1 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr64)); + RpcRequest->Ndr64.DataLength = LE64((uint64_t)requestSize); + RpcRequest->Ndr64.DataSizeIs = LE64((uint64_t)requestSize); + memcpy(RpcRequest->Ndr64.Data, KmsRequest, requestSize); + } + else + { + RpcRequest->ContextId = 0; // We negotiate NDR32 always as context 0 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr)); + RpcRequest->Ndr.DataLength = LE32(requestSize); + RpcRequest->Ndr.DataSizeIs = LE32(requestSize); + memcpy(RpcRequest->Ndr.Data, KmsRequest, requestSize); + } + + for(;;) + { + int bytesread; + + if (!_send(sock, _Request, size)) + { + errorout("\nFatal: Could not send RPC request\n"); + status = !0; + break; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: No RPC response received from server\n"); + status = !0; + break; + } + + if ((status = checkRpcResponseHeader(&ResponseHeader, RequestHeader, RPC_PT_RESPONSE, &errorout))) break; + + size = useNdr64 ? sizeof(RPC_RESPONSE64) : sizeof(RPC_RESPONSE); + + if (size > LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader)) + size = LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader); + + if (!_recv(sock, &_Response, size)) + { + errorout("\nFatal: RPC response is incomplete\n"); + status = !0; + break; + } + + if (_Response.CancelCount != 0) + { + errorout("\nFatal: RPC response cancel count is not 0\n"); + status = !0; + } + + if (_Response.ContextId != (useNdr64 ? LE16(1) : 0)) + { + errorout("\nFatal: RPC response context id %u is not bound\n", (unsigned int)LE16(_Response.ContextId)); + status = !0; + } + + int_fast8_t sizesMatch; + + if (useNdr64) + { + *responseSize = (size_t)LE64(_Response.Ndr64.DataLength); + responseSize2 = (size_t)LE64(_Response.Ndr64.DataSizeIs); + + if (!*responseSize || !_Response.Ndr64.DataSizeMax) + { + status = (int)LE32(_Response.Ndr64.status); + break; + } + + sizesMatch = (size_t)LE64(_Response.Ndr64.DataLength) == responseSize2; + } + else + { + *responseSize = (size_t)LE32(_Response.Ndr.DataLength); + responseSize2 = (size_t)LE32(_Response.Ndr.DataSizeIs); + + if (!*responseSize || !_Response.Ndr.DataSizeMax) + { + status = (int)LE32(_Response.Ndr.status); + break; + } + + sizesMatch = (size_t)LE32(_Response.Ndr.DataLength) == responseSize2; + } + + if (!sizesMatch) + { + errorout("\nFatal: NDR data length (%u) does not match NDR data size (%u)\n", + (uint32_t)*responseSize, + (uint32_t)LE32(_Response.Ndr.DataSizeIs) + ); + + status = !0; + } + + *KmsResponse = (BYTE*)vlmcsd_malloc(*responseSize + MAX_EXCESS_BYTES); + + // If RPC stub is too short, assume missing bytes are zero (same ill behavior as MS RPC) + memset(*KmsResponse, 0, *responseSize + MAX_EXCESS_BYTES); + + // Read up to 16 bytes more than bytes expected to detect faulty KMS emulators + if ((bytesread = recv(sock, (char*)*KmsResponse, *responseSize + MAX_EXCESS_BYTES, 0)) < (int)*responseSize) + { + errorout("\nFatal: No or incomplete KMS response received. Required %u bytes but only got %i\n", + (uint32_t)*responseSize, + (int32_t)(bytesread < 0 ? 0 : bytesread) + ); + + status = !0; + break; + } + + DWORD *pReturnCode; + + size_t len = *responseSize + (useNdr64 ? sizeof(_Response.Ndr64) : sizeof(_Response.Ndr)) + sizeof(*pReturnCode); + size_t pad = ((~len & 3) + 1) & 3; + + if (len + pad != LE32(_Response.AllocHint)) + { + errorout("\nWarning: RPC stub size is %u, should be %u (probably incorrect padding)\n", (uint32_t)LE32(_Response.AllocHint), (uint32_t)(len + pad)); + } + else + { + size_t i; + for (i = 0; i < pad; i++) + { + if (*(*KmsResponse + *responseSize + sizeof(*pReturnCode) + i)) + { + errorout("\nWarning: RPC stub data not padded to zeros according to Microsoft standard\n"); + break; + } + } + } + + pReturnCode = (DWORD*)(*KmsResponse + *responseSize + pad); + status = LE32(UA32(pReturnCode)); + + if (status) errorout("\nWarning: RPC stub data reported Error %u\n", (uint32_t)status); + + break; + } + + free(_Request); + firstPacketSent = TRUE; + return status; + #undef MAX_EXCESS_BYTES +} + + +static int_fast8_t IsNullGuid(BYTE* guidPtr) +{ + int_fast8_t i; + + for (i = 0; i < 16; i++) + { + if (guidPtr[i]) return FALSE; + } + + return TRUE; +} + +/* + * Perform RPC client bind. Accepts a connected client socket. + * Returns 0 on success. RPC binding is required before any payload can be + * exchanged. It negotiates about protocol details. + */ +RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const int_fast8_t verbose) +{ + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_BIND_REQUEST *bindRequest; + RPC_BIND_RESPONSE *bindResponse; + int status; + WORD ctxItems = 1 + (packetType == RPC_PT_BIND_REQ ? UseRpcNDR64 + UseRpcBTFN : 0); + size_t rpcBindSize = (sizeof(RPC_HEADER) + sizeof(RPC_BIND_REQUEST) + (ctxItems - 1) * sizeof(bindRequest->CtxItems[0])); + WORD ctxIndex = 0; + WORD i; + WORD CtxBTFN = (WORD)~0, CtxNDR64 = (WORD)~0; + BYTE _Request[rpcBindSize]; + + RequestHeader = (RPC_HEADER*)_Request; + bindRequest = (RPC_BIND_REQUEST* )(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, packetType, rpcBindSize); + RequestHeader->PacketFlags |= UseMultiplexedRpc ? RPC_PF_MULTIPLEX : 0; + + bindRequest->AssocGroup = 0; + bindRequest->MaxRecvFrag = bindRequest->MaxXmitFrag = LE16(5840); + bindRequest->NumCtxItems = LE32(ctxItems); + + // data that is identical in all Ctx items + for (i = 0; i < ctxItems; i++) + { + bindRequest->CtxItems[i].ContextId = LE16(i); + bindRequest->CtxItems[i].InterfaceVerMajor = LE16(1); + bindRequest->CtxItems[i].InterfaceVerMinor = 0; + bindRequest->CtxItems[i].NumTransItems = LE16(1); + bindRequest->CtxItems[i].SyntaxVersion = i ? LE32(1) : LE32(2); + + memcpy(&bindRequest->CtxItems[i].InterfaceUUID, InterfaceUuid, sizeof(GUID)); + } + + memcpy(&bindRequest->CtxItems[0].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + if (UseRpcNDR64 && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + CtxNDR64 = ctxIndex; + } + + if (UseRpcBTFN && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, BindTimeFeatureNegotiation, sizeof(GUID)); + CtxBTFN = ctxIndex; + } + + if (!_send(sock, _Request, rpcBindSize)) + { + errorout("\nFatal: Sending RPC bind request failed\n"); + return !0; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: Did not receive a response from server\n"); + return !0; + } + + if ((status = checkRpcResponseHeader + ( + &ResponseHeader, + RequestHeader, + packetType == RPC_PT_BIND_REQ ? RPC_PT_BIND_ACK : RPC_PT_ALTERCONTEXT_ACK, + &errorout + ))) + { + return status; + } + + bindResponse = (RPC_BIND_RESPONSE*)vlmcsd_malloc(LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER)); + BYTE* bindResponseBytePtr = (BYTE*)bindResponse; + + if (!_recv(sock, bindResponse, LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER))) + { + errorout("\nFatal: Incomplete RPC bind acknowledgement received\n"); + free(bindResponseBytePtr); + return !0; + } + else + { + /* + * checking, whether a bind or alter context response is as expected. + * This check is very strict and checks whether a KMS emulator behaves exactly the same way + * as Microsoft's RPC does. + */ + status = 0; + + if (bindResponse->SecondaryAddressLength < LE16(3)) + bindResponse = (RPC_BIND_RESPONSE*)(bindResponseBytePtr - 4); + + if (bindResponse->NumResults != bindRequest->NumCtxItems) + { + errorout("\nFatal: Expected %u CTX items but got %u\n", + (uint32_t)LE32(bindRequest->NumCtxItems), + (uint32_t)LE32(bindResponse->NumResults) + ); + + status = !0; + } + + for (i = 0; i < ctxItems; i++) + { + const char* transferSyntaxName = + i == CtxBTFN ? "BTFN" : i == CtxNDR64 ? "NDR64" : "NDR32"; + + if (bindResponse->Results[i].AckResult == RPC_BIND_NACK) // transfer syntax was declined + { + if (!IsNullGuid((BYTE*)&bindResponse->Results[i].TransferSyntax)) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return NULL Guid\n", + transferSyntaxName + ); + } + + if (bindResponse->Results[i].SyntaxVersion) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return syntax version 0 but %u\n", + transferSyntaxName, + LE32(bindResponse->Results[i].SyntaxVersion) + ); + } + + if (bindResponse->Results[i].AckReason == RPC_ABSTRACTSYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Transfer syntax %s does not support KMS activation\n", + transferSyntaxName + ); + } + else if (bindResponse->Results[i].AckReason != RPC_SYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return ack reason RPC_SYNTAX_UNSUPPORTED\n", + transferSyntaxName + ); + } + + continue; + } + + if (i == CtxBTFN) // BTFN + { + if (bindResponse->Results[i].AckResult != RPC_BIND_ACK) + { + errorout("\nWarning: BTFN did not respond with RPC_BIND_ACK or RPC_BIND_NACK\n"); + } + + if (bindResponse->Results[i].AckReason != LE16(3)) + { + errorout("\nWarning: BTFN did not return expected feature mask 0x3 but 0x%X\n", (unsigned int)LE16(bindResponse->Results[i].AckReason)); + } + + if (verbose) printf("... BTFN "); + RpcFlags.HasBTFN = TRUE; + + continue; + } + + // NDR32 or NDR64 Ctx + if (bindResponse->Results[i].AckResult != RPC_BIND_ACCEPT) + { + errorout( + "\nFatal: transfer syntax %s returned an invalid status, neither RPC_BIND_ACCEPT nor RPC_BIND_NACK\n", + transferSyntaxName + ); + + status = !0; + } + + if (!IsEqualGUID(&bindResponse->Results[i].TransferSyntax, &bindRequest->CtxItems[i].TransferSyntax)) + { + errorout( + "\nFatal: Transfer syntax of RPC bind request and response does not match\n" + ); + + status = !0; + } + + if (bindResponse->Results[i].SyntaxVersion != bindRequest->CtxItems[i].SyntaxVersion) + { + errorout("\nFatal: Expected transfer syntax version %u for %s but got %u\n", + (uint32_t)LE32(bindRequest->CtxItems[0].SyntaxVersion), + transferSyntaxName, + (uint32_t)LE32(bindResponse->Results[0].SyntaxVersion) + ); + + status = !0; + } + + // The ack reason field is actually undefined here but Microsoft sets this to 0 + if (bindResponse->Results[i].AckReason != 0) + { + errorout( + "\nWarning: Ack reason should be 0 but is %u\n", + LE16(bindResponse->Results[i].AckReason) + ); + } + + if (!status) + { + if (i == CtxNDR64) + { + RpcFlags.HasNDR64 = TRUE; + if (verbose) printf("... NDR64 "); + } + if (!i) + { + RpcFlags.HasNDR32 = TRUE; + if (verbose) printf("... NDR32 "); + } + + } + } + } + + free(bindResponseBytePtr); + + if (!RpcFlags.HasNDR64 && !RpcFlags.HasNDR32) + { + errorout("\nFatal: Could neither negotiate NDR32 nor NDR64 with the RPC server\n"); + status = !0; + } + + return status; +} + +RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose) +{ + firstPacketSent = FALSE; + RpcFlags.mask = 0; + + RpcStatus status = + rpcBindOrAlterClientContext(sock, RPC_PT_BIND_REQ, verbose); + + if (status) return status; + + if (!RpcFlags.HasNDR32) + status = rpcBindOrAlterClientContext(sock, RPC_PT_ALTERCONTEXT_REQ, verbose); + + return status; +} + +#endif // USE_MSRPC +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if !defined(_CRYPTO_OPENSSL) && !defined(_CRYPTO_POLARSSL) && !defined(_CRYPTO_WINDOWS) +#include "crypto_internal.h" +#include "endian.h" + +#define F0(x, y, z) ( ((x) & (y)) | (~(x) & (z)) ) +#define F1(x, y, z) ( ((x) & (y)) | ((x) & (z)) | ((y) & (z)) ) + +#define SI1(x) ( ROR32(x, 2 ) ^ ROR32(x, 13) ^ ROR32(x, 22) ) +#define SI2(x) ( ROR32(x, 6 ) ^ ROR32(x, 11) ^ ROR32(x, 25) ) +#define SI3(x) ( ROR32(x, 7 ) ^ ROR32(x, 18) ^ ((x) >> 3 ) ) +#define SI4(x) ( ROR32(x, 17) ^ ROR32(x, 19) ^ ((x) >> 10) ) + +static const DWORD k[] = { + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, + 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, + 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, + 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, + 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, + 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +}; + + +static void Sha256Init(Sha256Ctx *Ctx) +{ + Ctx->State[0] = 0x6A09E667; + Ctx->State[1] = 0xBB67AE85; + Ctx->State[2] = 0x3C6EF372; + Ctx->State[3] = 0xA54FF53A; + Ctx->State[4] = 0x510E527F; + Ctx->State[5] = 0x9B05688C; + Ctx->State[6] = 0x1F83D9AB; + Ctx->State[7] = 0x5BE0CD19; + Ctx->Len = 0; +} + + +static void Sha256ProcessBlock(Sha256Ctx *Ctx, BYTE *block) +{ + unsigned int i; + DWORD w[64], temp1, temp2; + DWORD a = Ctx->State[0]; + DWORD b = Ctx->State[1]; + DWORD c = Ctx->State[2]; + DWORD d = Ctx->State[3]; + DWORD e = Ctx->State[4]; + DWORD f = Ctx->State[5]; + DWORD g = Ctx->State[6]; + DWORD h = Ctx->State[7]; + + for (i = 0; i < 16; i++) + //w[ i ] = GET_UAA32BE(block, i); + w[i] = BE32(((DWORD*)block)[i]); + + for (i = 16; i < 64; i++) + w[ i ] = SI4(w[ i - 2 ]) + w[ i - 7 ] + SI3(w[ i - 15 ]) + w[ i - 16 ]; + + for (i = 0; i < 64; i++) + { + temp1 = h + SI2(e) + F0(e, f, g) + k[ i ] + w[ i ]; + temp2 = SI1(a) + F1(a, b, c); + + h = g; + g = f; + f = e; + e = d + temp1; + d = c; + c = b; + b = a; + a = temp1 + temp2; + } + + Ctx->State[0] += a; + Ctx->State[1] += b; + Ctx->State[2] += c; + Ctx->State[3] += d; + Ctx->State[4] += e; + Ctx->State[5] += f; + Ctx->State[6] += g; + Ctx->State[7] += h; +} + + +static void Sha256Update(Sha256Ctx *Ctx, BYTE *data, size_t len) +{ + unsigned int b_len = Ctx->Len & 63, + r_len = (b_len ^ 63) + 1; + + Ctx->Len += len; + + if ( len < r_len ) + { + memcpy(Ctx->Buffer + b_len, data, len); + return; + } + + if ( r_len < 64 ) + { + memcpy(Ctx->Buffer + b_len, data, r_len); + len -= r_len; + data += r_len; + Sha256ProcessBlock(Ctx, Ctx->Buffer); + } + + for (; len >= 64; len -= 64, data += 64) + Sha256ProcessBlock(Ctx, data); + + if ( len ) memcpy(Ctx->Buffer, data, len); +} + + +static void Sha256Finish(Sha256Ctx *Ctx, BYTE *hash) +{ + unsigned int i, b_len = Ctx->Len & 63; + + Ctx->Buffer[ b_len ] = 0x80; + if ( b_len ^ 63 ) memset(Ctx->Buffer + b_len + 1, 0, b_len ^ 63); + + if ( b_len >= 56 ) + { + Sha256ProcessBlock(Ctx, Ctx->Buffer); + memset(Ctx->Buffer, 0, 56); + } + + //PUT_UAA64BE(Ctx->Buffer, (unsigned long long)(Ctx->Len * 8), 7); + ((uint64_t*)Ctx->Buffer)[7] = BE64((uint64_t)Ctx->Len << 3); + Sha256ProcessBlock(Ctx, Ctx->Buffer); + + for (i = 0; i < 8; i++) + //PUT_UAA32BE(hash, Ctx->State[i], i); + ((DWORD*)hash)[i] = BE32(Ctx->State[i]); + +} + + +void Sha256(BYTE *data, size_t len, BYTE *hash) +{ + Sha256Ctx Ctx; + + Sha256Init(&Ctx); + Sha256Update(&Ctx, data, len); + Sha256Finish(&Ctx, hash); +} + + +static void _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen) +{ + BYTE IPad[64]; + unsigned int i; + + memset(IPad, 0x36, sizeof(IPad)); + memset(Ctx->OPad, 0x5C, sizeof(Ctx->OPad)); + + if ( klen > 64 ) + { + BYTE *temp = (BYTE*)alloca(32); + Sha256(key, klen, temp); + klen = 32; + key = temp; + } + + for (i = 0; i < klen; i++) + { + IPad[ i ] ^= key[ i ]; + Ctx->OPad[ i ] ^= key[ i ]; + } + + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, IPad, sizeof(IPad)); +} + + +static void _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len) +{ + Sha256Update(&Ctx->ShaCtx, data, len); +} + + +static void _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac) +{ + BYTE temp[32]; + + Sha256Finish(&Ctx->ShaCtx, temp); + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, Ctx->OPad, sizeof(Ctx->OPad)); + Sha256Update(&Ctx->ShaCtx, temp, sizeof(temp)); + Sha256Finish(&Ctx->ShaCtx, hmac); +} + + + +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ + Sha256HmacCtx Ctx; + _Sha256HmacInit(&Ctx, key, 16); + _Sha256HmacUpdate(&Ctx, data, len); + _Sha256HmacFinish(&Ctx, hmac); + return TRUE; +} + + +#endif // No external Crypto + diff --git a/vlmcsdmulti.1 b/vlmcsdmulti.1 new file mode 100644 index 00000000..9ea05ece --- /dev/null +++ b/vlmcsdmulti.1 @@ -0,0 +1,53 @@ +.TH VLMCSDMULTI 1 "February 2015" "Hotbird64" "KMS Activation Manual" +.LO 1 + +.SH NAME +vlmcsdmulti \- a multi-call binary containing \fBvlmcs\fR(1) and \fBvlmcsd\fR(8) + +.SH SYNOPSIS +\fBvlmcsdmulti\fR vlmcs [ \fIoptions\fR ] [ \fIhostname\fR|\fIip-address\fR[:\fIport\fR] ] [ \fIoptions\fR ] | vlmcsd [ \fIoptions\fR ] + +.SH DESCRIPTION +\fBvlmcsdmulti\fR is a multi-call binary that contains \fBvlmcs\fR(1) and \fBvlmcsd\fR(8) in a single binary. Since both programs share a lot of code and data, the combined binary is significantly smaller than the sum of both files. +.PP +\fBvlmcsdmulti\fR should not be called directly. Instead you may want to create symbolic links named vlmcs and vlmcsd which point to \fBvlmcsdmulti\fR. You then use these links to call the respective program. You may however call \fBvlmcsdmulti\fR followed by a complete command line of either \fBvlmcs\fR(1) or \fBvlmcsd\fR(8). +.SS Creating symbolic links in unixoid operating systems +cd to the directory containing \fBvlmcsdmulti\fR and type +.PP +ln -s vlmcsdmulti vlmcsd +.br +ln -s vlmcsdmulti vlmcs +.PP +You may use a destination directory, e.g. +.PP +ln -s vlmcsdmulti /usr/local/sbin/vlmcsd +.br +ln -s vlmcsdmulti /usr/local/bin/vlmcs +.PP +Ensure that \fBvlmcsdmulti\fR has execute permissions. You can do that by typing "chmod 755 vlmcsdmulti". See \fBchmod\fR(1) for details. +.SS Creating symbolic links in Windows (Vista and higher only) +cd to the directory containing \fBvlmcsdmulti\fR and type +.PP +mklink vlmcsd.exe vlmcsdmulti.exe +.br +mklink vlmcs.exe vlmcsdmulti.exe +.PP +You may use a destination directory, e.g. +.PP +mklink C:\\tools\\vlmcsd.exe vlmcsdmulti.exe +.br +mklink C:\\tools\\vlmcs.exe vlmcsdmulti.exe +.SS Memory considerations +While you definitely save disk space by using \fBvlmcsdmulti\fR you will need more RAM when you run \fBvlmcsdmulti\fR as a daemon (KMS server) instead of vlmcsd. You should consider running \fBvlmcsdmulti\fR via an internet superserver like \fBinetd\fR(8) or \fBxinetd\fR(8). + +.SH BUGS +\fBvlmcsdmulti\fR has the same bugs as \fBvlmcs\fR(1) and \fBvlmcsd\fR(8). + +.SH AUTHOR +Written by Hotbird64 + +.SH CREDITS +Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nosferati87, qad, vityan666, ... + +.SH SEE ALSO +\fBvlmcs\fR(1)\fB, vlmcsd\fR(8)\fB, vlmcsd\fR(7) diff --git a/vlmcsdmulti.1.dos.txt b/vlmcsdmulti.1.dos.txt new file mode 100644 index 00000000..fd693c14 --- /dev/null +++ b/vlmcsdmulti.1.dos.txt @@ -0,0 +1,76 @@ +VLMCSDMULTI(1) KMS Activation Manual VLMCSDMULTI(1) + + + +NAME + vlmcsdmulti - a multi-call binary containing vlmcs(1) and vlmcsd(8) + + +SYNOPSIS + vlmcsdmulti vlmcs [ options ] [ hostname|ip-address[:port] ] [ options + ] | vlmcsd [ options ] + + +DESCRIPTION + vlmcsdmulti is a multi-call binary that contains vlmcs(1) and vlmcsd(8) + in a single binary. Since both programs share a lot of code and data, + the combined binary is significantly smaller than the sum of both + files. + + vlmcsdmulti should not be called directly. Instead you may want to cre‐ + ate symbolic links named vlmcs and vlmcsd which point to vlmcsdmulti. + You then use these links to call the respective program. You may how‐ + ever call vlmcsdmulti followed by a complete command line of either + vlmcs(1) or vlmcsd(8). + + Creating symbolic links in unixoid operating systems + cd to the directory containing vlmcsdmulti and type + + ln -s vlmcsdmulti vlmcsd + ln -s vlmcsdmulti vlmcs + + You may use a destination directory, e.g. + + ln -s vlmcsdmulti /usr/local/sbin/vlmcsd + ln -s vlmcsdmulti /usr/local/bin/vlmcs + + Ensure that vlmcsdmulti has execute permissions. You can do that by + typing "chmod 755 vlmcsdmulti". See chmod(1) for details. + + Creating symbolic links in Windows (Vista and higher only) + cd to the directory containing vlmcsdmulti and type + + mklink vlmcsd.exe vlmcsdmulti.exe + mklink vlmcs.exe vlmcsdmulti.exe + + You may use a destination directory, e.g. + + mklink C:\tools\vlmcsd.exe vlmcsdmulti.exe + mklink C:\tools\vlmcs.exe vlmcsdmulti.exe + + Memory considerations + While you definitely save disk space by using vlmcsdmulti you will need + more RAM when you run vlmcsdmulti as a daemon (KMS server) instead of + vlmcsd. You should consider running vlmcsdmulti via an internet super‐ + server like inetd(8) or xinetd(8). + + +BUGS + vlmcsdmulti has the same bugs as vlmcs(1) and vlmcsd(8). + + +AUTHOR + Written by Hotbird64 + + +CREDITS + Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nos‐ + ferati87, qad, vityan666, ... + + +SEE ALSO + vlmcs(1), vlmcsd(8), vlmcsd(7) + + + +Hotbird64 February 2015 VLMCSDMULTI(1) diff --git a/vlmcsdmulti.1.html b/vlmcsdmulti.1.html new file mode 100644 index 00000000..169045a9 --- /dev/null +++ b/vlmcsdmulti.1.html @@ -0,0 +1,158 @@ + + + + + + + + + +VLMCSDMULTI + + + + +

VLMCSDMULTI

+ +NAME
+SYNOPSIS
+DESCRIPTION
+BUGS
+AUTHOR
+CREDITS
+SEE ALSO
+ +
+ + +

NAME + +

+ + +

vlmcsdmulti +− a multi-call binary containing vlmcs(1) and +vlmcsd(8)

+ +

SYNOPSIS + +

+ + + +

vlmcsdmulti +vlmcs [ options ] [ +hostname|ip-address[:port] ] [ +options ] | vlmcsd [ options ]

+ +

DESCRIPTION + +

+ + + +

vlmcsdmulti +is a multi-call binary that contains vlmcs(1) and +vlmcsd(8) in a single binary. Since both programs +share a lot of code and data, the combined binary is +significantly smaller than the sum of both files.

+ + +

vlmcsdmulti +should not be called directly. Instead you may want to +create symbolic links named vlmcs and vlmcsd which point to +vlmcsdmulti. You then use these links to call the +respective program. You may however call vlmcsdmulti +followed by a complete command line of either +vlmcs(1) or vlmcsd(8).

+ +

Creating +symbolic links in unixoid operating systems
+cd to the directory containing vlmcsdmulti and +type

+ +

ln -s +vlmcsdmulti vlmcsd
+ln -s vlmcsdmulti vlmcs

+ +

You may use a +destination directory, e.g.

+ +

ln -s +vlmcsdmulti /usr/local/sbin/vlmcsd
+ln -s vlmcsdmulti /usr/local/bin/vlmcs

+ +

Ensure that +vlmcsdmulti has execute permissions. You can do that +by typing "chmod 755 vlmcsdmulti". See +chmod(1) for details.

+ +

Creating +symbolic links in Windows (Vista and higher only)
+cd to the directory containing vlmcsdmulti and +type

+ +

mklink +vlmcsd.exe vlmcsdmulti.exe
+mklink vlmcs.exe vlmcsdmulti.exe

+ +

You may use a +destination directory, e.g.

+ +

mklink +C:\tools\vlmcsd.exe vlmcsdmulti.exe
+mklink C:\tools\vlmcs.exe vlmcsdmulti.exe

+ +

Memory +considerations
+While you definitely save disk space by using +vlmcsdmulti you will need more RAM when you run +vlmcsdmulti as a daemon (KMS server) instead of +vlmcsd. You should consider running vlmcsdmulti via +an internet superserver like inetd(8) or +xinetd(8).

+ +

BUGS + +

+ + + +

vlmcsdmulti +has the same bugs as vlmcs(1) and +vlmcsd(8).

+ +

AUTHOR + +

+ + +

Written by +Hotbird64

+ +

CREDITS + +

+ + +

Thanks to +CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, +nosferati87, qad, vityan666, ...

+ +

SEE ALSO + +

+ + + +

vlmcs(1), +vlmcsd(8), vlmcsd(7)

+
+ + diff --git a/vlmcsdmulti.1.pdf b/vlmcsdmulti.1.pdf new file mode 100644 index 00000000..8f4bd1ea Binary files /dev/null and b/vlmcsdmulti.1.pdf differ diff --git a/vlmcsdmulti.1.unix.txt b/vlmcsdmulti.1.unix.txt new file mode 100644 index 00000000..244ba12c --- /dev/null +++ b/vlmcsdmulti.1.unix.txt @@ -0,0 +1,76 @@ +VLMCSDMULTI(1) KMS Activation Manual VLMCSDMULTI(1) + + + +NAME + vlmcsdmulti - a multi-call binary containing vlmcs(1) and vlmcsd(8) + + +SYNOPSIS + vlmcsdmulti vlmcs [ options ] [ hostname|ip-address[:port] ] [ options + ] | vlmcsd [ options ] + + +DESCRIPTION + vlmcsdmulti is a multi-call binary that contains vlmcs(1) and vlmcsd(8) + in a single binary. Since both programs share a lot of code and data, + the combined binary is significantly smaller than the sum of both + files. + + vlmcsdmulti should not be called directly. Instead you may want to cre‐ + ate symbolic links named vlmcs and vlmcsd which point to vlmcsdmulti. + You then use these links to call the respective program. You may how‐ + ever call vlmcsdmulti followed by a complete command line of either + vlmcs(1) or vlmcsd(8). + + Creating symbolic links in unixoid operating systems + cd to the directory containing vlmcsdmulti and type + + ln -s vlmcsdmulti vlmcsd + ln -s vlmcsdmulti vlmcs + + You may use a destination directory, e.g. + + ln -s vlmcsdmulti /usr/local/sbin/vlmcsd + ln -s vlmcsdmulti /usr/local/bin/vlmcs + + Ensure that vlmcsdmulti has execute permissions. You can do that by + typing "chmod 755 vlmcsdmulti". See chmod(1) for details. + + Creating symbolic links in Windows (Vista and higher only) + cd to the directory containing vlmcsdmulti and type + + mklink vlmcsd.exe vlmcsdmulti.exe + mklink vlmcs.exe vlmcsdmulti.exe + + You may use a destination directory, e.g. + + mklink C:\tools\vlmcsd.exe vlmcsdmulti.exe + mklink C:\tools\vlmcs.exe vlmcsdmulti.exe + + Memory considerations + While you definitely save disk space by using vlmcsdmulti you will need + more RAM when you run vlmcsdmulti as a daemon (KMS server) instead of + vlmcsd. You should consider running vlmcsdmulti via an internet super‐ + server like inetd(8) or xinetd(8). + + +BUGS + vlmcsdmulti has the same bugs as vlmcs(1) and vlmcsd(8). + + +AUTHOR + Written by Hotbird64 + + +CREDITS + Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nos‐ + ferati87, qad, vityan666, ... + + +SEE ALSO + vlmcs(1), vlmcsd(8), vlmcsd(7) + + + +Hotbird64 February 2015 VLMCSDMULTI(1) diff --git a/vlmcsdmulti.c b/vlmcsdmulti.c new file mode 100644 index 00000000..6e47d500 --- /dev/null +++ b/vlmcsdmulti.c @@ -0,0 +1,64 @@ +/* Multi-Call Binary for vlmcs and vlmcsd */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if MULTI_CALL_BINARY < 1 +#error "Please define MULTI_CALL_BINARY=1 when compiling this file." +#endif + +#include +#include + +#include "vlmcs.h" +#include "vlmcsd.h" +#include "types.h" +#include "shared_globals.h" +#include "output.h" + +#if (defined(_WIN32) || defined(__CYGWIN__)) +#define compare strcasecmp // Best for case-preserving (but otherwise case-insensitive) filesystems +#else // native Unix +#define compare strcmp // for case-sensitive filesystems +#endif // native Unix + +int main(int argc, CARGV argv) +{ + multi_argv = argv; + multi_argc = argc; + + if (!compare(basename((char*)*argv), "vlmcsd")) + return server_main(argc, argv); + + if (!compare(basename((char*)*argv), "vlmcs")) + return client_main(argc, argv); + + #ifdef _WIN32 + if (!compare(basename((char*)*argv), "vlmcsd.exe")) + return server_main(argc, argv); + + if (!compare(basename((char*)*argv), "vlmcs.exe")) + return client_main(argc, argv); + #endif // _WIN32 + + if (argc > 1) + { + if (!strcmp((char*)argv[1],"vlmcsd")) + return server_main(argc - 1, argv + 1); + + if (!strcmp((char*)argv[1],"vlmcs")) + return client_main(argc - 1, argv + 1); + } + + errorout( + "vlmcsdmulti %s\n\n" + "Usage:\n" + "\t%s vlmcsd []\n" + "\t%s vlmcs []\n\n", + Version, *argv, *argv + ); + + return !0; +} diff --git a/vlmcsdmulti_all.c b/vlmcsdmulti_all.c new file mode 100644 index 00000000..1646e09c --- /dev/null +++ b/vlmcsdmulti_all.c @@ -0,0 +1,8274 @@ +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if defined(USE_MSRPC) && !defined(_WIN32) && !defined(__CYGWIN__) +#error Microsoft RPC is only available on Windows and Cygwin +#endif + +#if defined(NO_SOCKETS) && defined(USE_MSRPC) +#error Cannot use inetd mode with Microsoft RPC +#endif + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#include +#include + +#if !defined(NO_LIMIT) && !__minix__ +#include +#if !__ANDROID__ +#include +#else // __ANDROID__ +#include +#endif // __ANDROID__ +#endif // !defined(NO_LIMIT) && !__minix__ + +#include +#include +#include +#include +#include +#endif // !_WIN32 + +#if __APPLE__ +#include +#endif // __APPLE__ + +#if __linux__ && defined(USE_AUXV) +#include +#endif + +#if __FreeBSD__ +#include +#endif + +#include "vlmcsd.h" +#include "endian.h" +#include "shared_globals.h" +#include "output.h" +#ifndef USE_MSRPC +#include "network.h" +#else // USE_MSRPC +#include "msrpc-server.h" +#endif // USE_MSRPC +#include "ntservice.h" +#include "helpers.h" + + +static const char* const optstring = "N:B:m:t:w:0:3:H:A:R:u:g:L:p:i:P:l:r:U:W:C:SsfeDd46VvIdqkZ"; + +#if !defined(NO_SOCKETS) +#if !defined(USE_MSRPC) +static uint_fast8_t maxsockets = 0; +static int_fast8_t haveIPv6Stack = 0; +static int_fast8_t haveIPv4Stack = 0; +static int_fast8_t v6required = 0; +static int_fast8_t v4required = 0; +#endif // !defined(USE_MSRPC) +#endif // !defined(NO_SOCKETS) + +#ifdef _NTSERVICE +static int_fast8_t installService = 0; +static const char *restrict ServiceUser = NULL; +static const char *restrict ServicePassword = ""; +#endif + +#ifndef NO_PID_FILE +static const char *fn_pid = NULL; +#endif + +#ifndef NO_INI_FILE + +#ifdef INI_FILE +static const char *fn_ini = INI_FILE; +#else // !INI_FILE +static const char *fn_ini = NULL; +#endif // !INI_FILE + +static const char* IniFileErrorMessage = ""; +char* IniFileErrorBuffer = NULL; +#define INIFILE_ERROR_BUFFERSIZE 256 + +static IniFileParameter_t IniFileParameterList[] = +{ +# ifndef NO_RANDOM_EPID + { "RandomizationLevel", INI_PARAM_RANDOMIZATION_LEVEL }, + { "LCID", INI_PARAM_LCID }, +# endif // NO_RANDOM_EPID +# ifdef USE_MSRPC + { "Port", INI_PARAM_PORT }, +# endif // USE_MSRPC +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + { "Listen", INI_PARAM_LISTEN }, +# if !defined(NO_LIMIT) && !__minix__ + { "MaxWorkers", INI_PARAM_MAX_WORKERS }, +# endif // !defined(NO_LIMIT) && !__minix__ +# endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) +# if !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC) + { "ConnectionTimeout", INI_PARAM_CONNECTION_TIMEOUT }, +# endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC) +# ifndef USE_MSRPC + { "DisconnectClientsImmediately", INI_PARAM_DISCONNECT_IMMEDIATELY }, + { "UseNDR64", INI_PARAM_RPC_NDR64 }, + { "UseBTFN", INI_PARAM_RPC_BTFN }, +# endif // USE_MSRPC +# ifndef NO_PID_FILE + { "PIDFile", INI_PARAM_PID_FILE }, +# endif // NO_PID_FILE +# ifndef NO_LOG + { "LogFile", INI_PARAM_LOG_FILE }, +# ifndef NO_VERBOSE_LOG + { "LogVerbose", INI_PARAM_LOG_VERBOSE }, +# endif // NO_VERBOSE_LOG +# endif // NO_LOG +# ifndef NO_CUSTOM_INTERVALS + {"ActivationInterval", INI_PARAM_ACTIVATION_INTERVAL }, + {"RenewalInterval", INI_PARAM_RENEWAL_INTERVAL }, +# endif // NO_CUSTOM_INTERVALS +# if !defined(NO_USER_SWITCH) && !defined(_WIN32) + { "user", INI_PARAM_UID }, + { "group", INI_PARAM_GID}, +# endif // !defined(NO_USER_SWITCH) && !defined(_WIN32) +}; + +#endif // NO_INI_FILE + + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#if !defined(USE_THREADS) && !defined(CYGWIN) && !defined(USE_MSRPC) +static int shmid = -1; +#endif + +#if __ANDROID__ && !defined(USE_THREADS) // Bionic does not wrap these syscalls (willingly because Google fears, developers don't know how to use it) + +#ifdef __NR_shmget +static int shmget(key_t key, size_t size, int shmflg) +{ + return syscall(__NR_shmget, key, size, shmflg); +} +#endif // __NR_shmget + +#ifdef __NR_shmat +static void *shmat(int shmid, const void *shmaddr, int shmflg) +{ + return (void *)syscall(__NR_shmat, shmid, shmaddr, shmflg); +} +#endif // __NR_shmat + +#ifdef __NR_shmdt +static int shmdt(const void *shmaddr) +{ + return syscall(__NR_shmdt, shmaddr); +} +#endif // __NR_shmdt + +#ifdef __NR_shmctl +static int shmctl(int shmid, int cmd, /*struct shmid_ds*/void *buf) +{ + return syscall(__NR_shmctl, shmid, cmd, buf); +} +#endif // __NR_shmctl + +#endif // __ANDROID__ && !defined(USE_THREADS) + +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_USER_SWITCH +#ifndef _WIN32 + +static const char *uname = NULL, *gname = NULL; +static gid_t gid = INVALID_GID; +static uid_t uid = INVALID_UID; + +// Get Numeric id of user/group +static char GetNumericId(gid_t *restrict id, const char *const c) +{ + char* endptr; + gid_t temp; + + temp = (gid_t)strtoll(c, &endptr, 10); + + if (!*endptr) *id = temp; + + return *endptr; +} + + +// Get group id from option argument +static char GetGid() +{ + struct group *g; + + if ((g = getgrnam(optarg))) + gid = g->gr_gid; + else + return GetNumericId(&gid, optarg); + + return 0; +} + + +// Get user id from option argument +static char GetUid() +{ + struct passwd *u; + + ////PORTABILITY: Assumes uid_t and gid_t are of same size (shouldn't be a problem) + if ((u = getpwnam(optarg))) + uid = u->pw_uid; + else + return GetNumericId((gid_t*)&uid, optarg); + + return 0; +} +#endif // _WIN32 +#endif //NO_USER_SWITCH + +#ifdef NO_HELP +static __noreturn void usage() +{ + printerrorf("Incorrect parameters\n\n"); + exit(!0); +} +#else // HELP + + +static __noreturn void usage() +{ + printerrorf("vlmcsd %s\n" + "\nUsage:\n" + " %s [ options ]\n\n" + "Where:\n" + #ifndef NO_CL_PIDS + " -w always use for Windows\n" + " -0 always use for Office2010\n" + " -3 always use for Office2013\n" + " -H always use hardware Id \n" + #endif // NO_CL_PIDS + #if !defined(_WIN32) && !defined(NO_USER_SWITCH) + " -u set uid to \n" + " -g set gid to \n" + #endif // !defined(_WIN32) && !defined(NO_USER_SWITCH) + #ifndef NO_RANDOM_EPID + " -r 0|1|2\t\tset ePID randomization level (default 1)\n" + " -C \t\tuse fixed in random ePIDs\n" + #endif // NO_RANDOM_EPID + #ifndef NO_SOCKETS + #ifndef USE_MSRPC + " -4\t\t\tuse IPv4\n" + " -6\t\t\tuse IPv6\n" + " -L
[:]\tlisten on IP address
with optional \n" + " -P \t\tset TCP port for subsequent -L statements (default 1688)\n" + #else // USE_MSRPC + " -P \t\tuse TCP port (default 1688)\n" + #endif // USE_MSRPC + #if !defined(NO_LIMIT) && !__minix__ + " -m \t\tHandle max. simultaneously (default no limit)\n" + #endif // !defined(NO_LIMIT) && !__minix__ + #ifdef _NTSERVICE + " -s install vlmcsd as an NT service. Ignores -e" + #ifndef _WIN32 + ", -f and -D" + #endif // _WIN32 + "\n" + " -S remove vlmcsd service. Ignores all other options\n" + " -U run NT service as . Must be used with -s\n" + " -W optional for -U. Must be used with -s\n" + #endif // _NTSERVICE + #ifndef NO_LOG + " -e log to stdout\n" + #endif // NO_LOG + #ifndef _WIN32 // + " -D run in foreground\n" + " -f run in foreground" + #ifndef NO_LOG + " and log to stdout" + #endif // NO_LOG + "\n" + #endif // _WIN32 + #endif // NO_SOCKETS + #ifndef USE_MSRPC + #if !defined(NO_TIMEOUT) && !__minix__ + " -t \t\tdisconnect clients after of inactivity (default 30)\n" + #endif // !defined(NO_TIMEOUT) && !__minix__ + " -d\t\t\tdisconnect clients after each request\n" + " -k\t\t\tdon't disconnect clients after each request (default)\n" + " -N0, -N1\t\tdisable/enable NDR64\n" + " -B0, -B1\t\tdisable/enable bind time feature negotiation\n" + #endif // USE_MSRPC + #ifndef NO_PID_FILE + " -p write pid to \n" + #endif // NO_PID_FILE + #ifndef NO_INI_FILE + " -i \t\tuse config file \n" + #endif // NO_INI_FILE + #ifndef NO_CUSTOM_INTERVALS + " -R renew activation every (default 1w)\n" + " -A retry activation every (default 2h)\n" + #endif // NO_CUSTOM_INTERVALS + #ifndef NO_LOG + #ifndef _WIN32 + " -l syslog log to syslog\n" + #endif // _WIN32 + " -l log to \n" + #ifndef NO_VERBOSE_LOG + " -v\t\t\tlog verbose\n" + " -q\t\t\tdon't log verbose (default)\n" + #endif // NO_VERBOSE_LOG + #endif // NO_LOG + " -V display version information and exit" + "\n", + Version, global_argv[0]); + + exit(!0); +} +#endif // HELP + + +#ifndef NO_CUSTOM_INTERVALS + +// Convert time span strings (e.g. "2h", "5w") to minutes +__pure static DWORD timeSpanString2Minutes(const char *const restrict argument) +{ + char *unitId; + + long long val = strtoll(argument, &unitId, 10); + + switch(toupper((int)*unitId)) + { + case 0: + case 'M': + break; + case 'H': + val *= 60; + break; + case 'D': + val *= 60 * 24; + break; + case 'W': + val *= 60 * 24 * 7; + break; + case 'S': + val /= 60; + break; + default: + return 0; + } + + if (val < 1) val = 1; + if (val > UINT_MAX) val = UINT_MAX; + + return (DWORD)val; +} + + +#ifndef NO_INI_FILE +__pure static BOOL getTimeSpanFromIniFile(DWORD* result, const char *const restrict argument) +{ + DWORD val = timeSpanString2Minutes(argument); + if (!val) + { + IniFileErrorMessage = "Incorrect time span."; + return FALSE; + } + + *result = val; + return TRUE; +} +#endif // NO_INI_FILE + + +__pure static DWORD getTimeSpanFromCommandLine(const char *const restrict optarg, const char optchar) +{ + long long val = timeSpanString2Minutes(optarg); + + if (!val) + { + printerrorf("Fatal: No valid time span specified in option -%c.\n", optchar); + exit (!0); + } + + return (DWORD)val; +} + +#endif // NO_CUSTOM_INTERVALS + + +#ifndef NO_INI_FILE +static void ignoreIniFileParameter(uint_fast8_t iniFileParameterId) +{ + uint_fast8_t i; + + for (i = 0; i < _countof(IniFileParameterList); i++) + { + if (IniFileParameterList[i].Id != iniFileParameterId) continue; + IniFileParameterList[i].Id = 0; + break; + } +} +#else // NO_INI_FILE +#define ignoreIniFileParameter(x) +#endif // NO_INI_FILE + + +#ifndef NO_INI_FILE +static BOOL getIniFileArgumentBool(int_fast8_t *result, const char *const argument) +{ + IniFileErrorMessage = "Argument must be true/on/yes/1 or false/off/no/0"; + return getArgumentBool(result, argument); +} + + +static BOOL getIniFileArgumentInt(unsigned int *result, const char *const argument, const unsigned int min, const unsigned int max) +{ + unsigned int tempResult; + + if (!stringToInt(argument, min, max, &tempResult)) + { + snprintf(IniFileErrorBuffer, INIFILE_ERROR_BUFFERSIZE, "Must be integer between %u and %u", min, max); + IniFileErrorMessage = IniFileErrorBuffer; + return FALSE; + } + + *result = tempResult; + return TRUE; +} + + +static char* allocateStringArgument(const char *const argument) +{ + char* result = (char*)vlmcsd_malloc(strlen(argument) + 1); + strcpy(result, argument); + return result; +} + + +static BOOL setIniFileParameter(uint_fast8_t id, const char *const iniarg) +{ + unsigned int result; + BOOL success = TRUE; + + switch(id) + { +# if !defined(NO_USER_SWITCH) && !defined(_WIN32) + + case INI_PARAM_GID: + { + struct group *g; + IniFileErrorMessage = "Invalid group id or name"; + if (!(gname = allocateStringArgument(iniarg))) return FALSE; + + if ((g = getgrnam(iniarg))) + gid = g->gr_gid; + else + success = !GetNumericId(&gid, iniarg); + break; + } + + case INI_PARAM_UID: + { + struct passwd *p; + IniFileErrorMessage = "Invalid user id or name"; + if (!(uname = allocateStringArgument(iniarg))) return FALSE; + + if ((p = getpwnam(iniarg))) + uid = p->pw_uid; + else + success = !GetNumericId(&uid, iniarg); + break; + } + +# endif // !defined(NO_USER_SWITCH) && !defined(_WIN32) + +# ifndef NO_RANDOM_EPID + + case INI_PARAM_LCID: + success = getIniFileArgumentInt(&result, iniarg, 0, 32767); + if (success) Lcid = (uint16_t)result; + break; + + case INI_PARAM_RANDOMIZATION_LEVEL: + success = getIniFileArgumentInt(&result, iniarg, 0, 2); + if (success) RandomizationLevel = (int_fast8_t)result; + break; + +# endif // NO_RANDOM_EPID + +# ifdef USE_MSRPC + + case INI_PARAM_PORT: + defaultport = allocateStringArgument(iniarg); + break; + +# endif // USE_MSRPC + +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + case INI_PARAM_LISTEN: + maxsockets++; + return TRUE; + +# if !defined(NO_LIMIT) && !__minix__ + + case INI_PARAM_MAX_WORKERS: +# ifdef USE_MSRPC + success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT); +# else // !USE_MSRPC + success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, SEM_VALUE_MAX); +# endif // !USE_MSRPC + break; + +# endif // !defined(NO_LIMIT) && !__minix__ +# endif // NO_SOCKETS + +# ifndef NO_PID_FILE + + case INI_PARAM_PID_FILE: + fn_pid = allocateStringArgument(iniarg); + break; + +# endif // NO_PID_FILE + +# ifndef NO_LOG + + case INI_PARAM_LOG_FILE: + fn_log = allocateStringArgument(iniarg); + break; + +# ifndef NO_VERBOSE_LOG + case INI_PARAM_LOG_VERBOSE: + success = getIniFileArgumentBool(&logverbose, iniarg); + break; + +# endif // NO_VERBOSE_LOG +# endif // NO_LOG + +# ifndef NO_CUSTOM_INTERVALS + + case INI_PARAM_ACTIVATION_INTERVAL: + success = getTimeSpanFromIniFile(&VLActivationInterval, iniarg); + break; + + case INI_PARAM_RENEWAL_INTERVAL: + success = getTimeSpanFromIniFile(&VLRenewalInterval, iniarg); + break; + +# endif // NO_CUSTOM_INTERVALS + +# ifndef USE_MSRPC + +# if !defined(NO_TIMEOUT) && !__minix__ + + case INI_PARAM_CONNECTION_TIMEOUT: + success = getIniFileArgumentInt(&result, iniarg, 1, 600); + if (success) ServerTimeout = (DWORD)result; + break; + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + case INI_PARAM_DISCONNECT_IMMEDIATELY: + success = getIniFileArgumentBool(&DisconnectImmediately, iniarg); + break; + + case INI_PARAM_RPC_NDR64: + success = getIniFileArgumentBool(&UseRpcNDR64, iniarg); + break; + + case INI_PARAM_RPC_BTFN: + success = getIniFileArgumentBool(&UseRpcBTFN, iniarg); + break; + +# endif // USE_MSRPC + + default: + return FALSE; + } + + return success; +} + + +static __pure int isControlCharOrSlash(const char c) +{ + if ((unsigned char)c < '!') return !0; + if (c == '/') return !0; + return 0; +} + + +static void iniFileLineNextWord(const char **s) +{ + while ( **s && isspace((int)**s) ) (*s)++; +} + + +static BOOL setHwIdFromIniFileLine(const char **s, const ProdListIndex_t index) +{ + iniFileLineNextWord(s); + + if (**s == '/') + { + if (KmsResponseParameters[index].HwId) return TRUE; + + BYTE* HwId = (BYTE*)vlmcsd_malloc(sizeof(((RESPONSE_V6 *)0)->HwId)); + hex2bin(HwId, *s + 1, sizeof(((RESPONSE_V6 *)0)->HwId)); + KmsResponseParameters[index].HwId = HwId; + } + + return TRUE; +} + + +static BOOL checkGuidInIniFileLine(const char **s, ProdListIndex_t *const index) +{ + GUID AppGuid; + + if (!string2Uuid(*s, &AppGuid)) return FALSE; + + (*s) += GUID_STRING_LENGTH; + getProductNameHE(&AppGuid, AppList, index); + + if (*index > getAppListSize() - 2) + { + IniFileErrorMessage = "Unknown App Guid."; + return FALSE; + } + + iniFileLineNextWord(s); + if ( *(*s)++ != '=' ) return FALSE; + + return TRUE; +} + + +static BOOL setEpidFromIniFileLine(const char **s, const ProdListIndex_t index) +{ + iniFileLineNextWord(s); + const char *savedPosition = *s; + uint_fast16_t i; + + for (i = 0; !isControlCharOrSlash(**s); i++) + { + if (utf8_to_ucs2_char((const unsigned char*)*s, (const unsigned char**)s) == (WCHAR)~0) + { + return FALSE; + } + } + + if (i < 1 || i >= PID_BUFFER_SIZE) return FALSE; + if (KmsResponseParameters[index].Epid) return TRUE; + + size_t size = *s - savedPosition + 1; + + char* epidbuffer = (char*)vlmcsd_malloc(size); + memcpy(epidbuffer, savedPosition, size - 1); + epidbuffer[size - 1] = 0; + + KmsResponseParameters[index].Epid = epidbuffer; + + #ifndef NO_LOG + KmsResponseParameters[index].EpidSource = fn_ini; + #endif //NO_LOG + + return TRUE; +} + + +static BOOL getIniFileArgument(const char **s) +{ + while (!isspace((int)**s) && **s != '=' && **s) (*s)++; + iniFileLineNextWord(s); + + if (*((*s)++) != '=') + { + IniFileErrorMessage = "'=' required after keyword."; + return FALSE; + } + + iniFileLineNextWord(s); + + if (!**s) + { + IniFileErrorMessage = "missing argument after '='."; + return FALSE; + } + + return TRUE; +} + + +static BOOL handleIniFileParameter(const char *s) +{ + uint_fast8_t i; + + for (i = 0; i < _countof(IniFileParameterList); i++) + { + if (strncasecmp(IniFileParameterList[i].Name, s, strlen(IniFileParameterList[i].Name))) continue; + if (!IniFileParameterList[i].Id) return TRUE; + + if (!getIniFileArgument(&s)) return FALSE; + + return setIniFileParameter(IniFileParameterList[i].Id, s); + } + + IniFileErrorMessage = "Unknown keyword."; + return FALSE; +} + + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +static BOOL setupListeningSocketsFromIniFile(const char *s) +{ + if (!maxsockets) return TRUE; + if (strncasecmp("Listen", s, 6)) return TRUE; + if (!getIniFileArgument(&s)) return TRUE; + + snprintf(IniFileErrorBuffer, INIFILE_ERROR_BUFFERSIZE, "Cannot listen on %s.", s); + IniFileErrorMessage = IniFileErrorBuffer; + return addListeningSocket(s); +} +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + +static BOOL readIniFile(const uint_fast8_t pass) +{ + char line[256]; + const char *s; + ProdListIndex_t appIndex; + unsigned int lineNumber; + uint_fast8_t lineParseError; + + FILE *restrict f; + BOOL result = TRUE; + + IniFileErrorBuffer = (char*)vlmcsd_malloc(INIFILE_ERROR_BUFFERSIZE); + + if ( !(f = fopen(fn_ini, "r") )) return FALSE; + + for (lineNumber = 1; (s = fgets(line, sizeof(line), f)); lineNumber++) + { + line[strlen(line) - 1] = 0; + + iniFileLineNextWord(&s); + if (*s == ';' || *s == '#' || !*s) continue; + +# ifndef NO_SOCKETS + if (pass == INI_FILE_PASS_1) +# endif // NO_SOCKETS + { + if (handleIniFileParameter(s)) continue; + + lineParseError = !checkGuidInIniFileLine(&s, &appIndex) || + !setEpidFromIniFileLine(&s, appIndex) || + !setHwIdFromIniFileLine(&s, appIndex); + } +# if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + else if (pass == INI_FILE_PASS_2) + { + lineParseError = !setupListeningSocketsFromIniFile(s); + } + else + { + return FALSE; + } +# endif // NO_SOCKETS + + if (lineParseError) + { + printerrorf("Warning: %s line %u: \"%s\". %s\n", fn_ini, lineNumber, line, IniFileErrorMessage); + continue; + } + } + + if (ferror(f)) result = FALSE; + + free(IniFileErrorBuffer); + fclose(f); + +# if !defined(NO_SOCKETS) && !defined(NO_LOG) + + if (pass == INI_FILE_PASS_1 && !InetdMode && result) + { +# ifdef _NTSERVICE + if (!installService) +# endif // _NTSERVICE + logger("Read ini file %s\n", fn_ini); + } + +# endif // !defined(NO_SOCKETS) && !defined(NO_LOG) + + return result; +} +#endif // NO_INI_FILE + + +#if !defined(NO_SOCKETS) +#if !defined(_WIN32) +#if !defined(NO_SIGHUP) +static void exec_self(char** argv) +{ +# if __linux__ && defined(USE_AUXV) + + char *execname_ptr = (char*)getauxval(AT_EXECFN); + if (execname_ptr) execv(execname_ptr, argv); + +# elif (__linux__ || __CYGWIN__) && !defined(NO_PROCFS) + + execv(realpath("/proc/self/exe", NULL), argv); + +# elif (__FreeBSD__) && !defined(NO_PROCFS) + + int mib[4]; + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PATHNAME; + mib[3] = -1; + char path[PATH_MAX + 1]; + size_t cb = sizeof(path); + if (!sysctl(mib, 4, path, &cb, NULL, 0)) execv(path, argv); + +# elif (__DragonFly__) && !defined(NO_PROCFS) + + execv(realpath("/proc/curproc/file", NULL), argv); + +# elif __NetBSD__ && !defined(NO_PROCFS) + + execv(realpath("/proc/curproc/exe", NULL), argv); + +# elif __sun__ + + const char* exename = getexecname(); + if (exename) execv(exename, argv); + +# elif __APPLE__ + + char path[PATH_MAX + 1]; + uint32_t size = sizeof(path); + if (_NSGetExecutablePath(path, &size) == 0) execv(path, argv); + +# else + + execvp(argv[0], argv); + +# endif +} + + +static void HangupHandler(const int signal_unused) +{ + int i; + int_fast8_t daemonize_protection = TRUE; + CARGV argv_in = multi_argv == NULL ? global_argv : multi_argv; + int argc_in = multi_argc == 0 ? global_argc : multi_argc; + const char** argv_out = (const char**)vlmcsd_malloc((argc_in + 2) * sizeof(char**)); + + for (i = 0; i < argc_in; i++) + { + if (!strcmp(argv_in[i], "-Z")) daemonize_protection = FALSE; + argv_out[i] = argv_in[i]; + } + + argv_out[argc_in] = argv_out[argc_in + 1] = NULL; + if (daemonize_protection) argv_out[argc_in] = (char*) "-Z"; + + exec_self((char**)argv_out); + +# ifndef NO_LOG + logger("Fatal: Unable to restart on SIGHUP: %s\n", strerror(errno)); +# endif + +# ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); +# endif // NO_PID_FILE + exit(errno); +} +#endif // NO_SIGHUP + + +static void terminationHandler(const int signal_unused) +{ + cleanup(); + exit(0); +} + + +#if defined(CHILD_HANDLER) || __minix__ +static void childHandler(const int signal) +{ + waitpid(-1, NULL, WNOHANG); +} +#endif // defined(CHILD_HANDLER) || __minix__ + + +static int daemonizeAndSetSignalAction() +{ + struct sigaction sa; + sigemptyset(&sa.sa_mask); + +# ifndef NO_LOG + if ( !nodaemon) if (daemon(!0, logstdout)) +# else // NO_LOG + if ( !nodaemon) if (daemon(!0, 0)) +# endif // NO_LOG + { + printerrorf("Fatal: Could not daemonize to background.\n"); + return(errno); + } + + if (!InetdMode) + { +# ifndef USE_THREADS + +# if defined(CHILD_HANDLER) || __minix__ + sa.sa_handler = childHandler; +# else // !(defined(CHILD_HANDLER) || __minix__) + sa.sa_handler = SIG_IGN; +# endif // !(defined(CHILD_HANDLER) || __minix__) + sa.sa_flags = SA_NOCLDWAIT; + + if (sigaction(SIGCHLD, &sa, NULL)) + return(errno); + +# endif // !USE_THREADS + + sa.sa_handler = terminationHandler; + sa.sa_flags = 0; + + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + +# ifndef NO_SIGHUP + sa.sa_handler = HangupHandler; + sa.sa_flags = SA_NODEFER; + sigaction(SIGHUP, &sa, NULL); +# endif // NO_SIGHUP + } + + return 0; +} + + +#else // _WIN32 + +static BOOL terminationHandler(const DWORD fdwCtrlType) +{ + // What a lame substitute for Unix signal handling + switch(fdwCtrlType) + { + case CTRL_C_EVENT: + case CTRL_CLOSE_EVENT: + case CTRL_BREAK_EVENT: + case CTRL_LOGOFF_EVENT: + case CTRL_SHUTDOWN_EVENT: + cleanup(); + exit(0); + default: + return FALSE; + } +} + + +static DWORD daemonizeAndSetSignalAction() +{ + if(!SetConsoleCtrlHandler( (PHANDLER_ROUTINE) terminationHandler, TRUE )) + { + #ifndef NO_LOG + DWORD rc = GetLastError(); + logger("Warning: Could not register Windows signal handler: Error %u\n", rc); + #endif // NO_LOG + } + + return ERROR_SUCCESS; +} +#endif // _WIN32 +#endif // !defined(NO_SOCKETS) + + +// Workaround for Cygwin fork bug (only affects cygwin processes that are Windows services) +// Best is to compile for Cygwin with threads. fork() is slow and unreliable on Cygwin +#if !defined(NO_INI_FILE) || !defined(NO_LOG) || !defined(NO_CL_PIDS) +__pure static char* getCommandLineArg(char *const restrict optarg) +{ + #if !defined (__CYGWIN__) || defined(USE_THREADS) || defined(NO_SOCKETS) + return optarg; + #else + if (!IsNTService) return optarg; + + return allocateStringArgument(optarg); + #endif +} +#endif // !defined(NO_INI_FILE) || !defined(NO_LOG) || !defined(NO_CL_PIDS) + + +static void parseGeneralArguments() { + int o; + + #ifndef NO_CL_PIDS + BYTE* HwId; + #endif // NO_CL_PIDS + + for (opterr = 0; ( o = getopt(global_argc, (char* const*)global_argv, optstring) ) > 0; ) switch (o) + { + #if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + case 'Z': + IsRestarted = TRUE; + nodaemon = TRUE; + break; + #endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + + #ifndef NO_CL_PIDS + case 'w': + KmsResponseParameters[APP_ID_WINDOWS].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_WINDOWS].EpidSource = "command line"; + #endif // NO_LOG + break; + + case '0': + KmsResponseParameters[APP_ID_OFFICE2010].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_OFFICE2010].EpidSource = "command line"; + #endif // NO_LOG + break; + + case '3': + KmsResponseParameters[APP_ID_OFFICE2013].Epid = getCommandLineArg(optarg); + #ifndef NO_LOG + KmsResponseParameters[APP_ID_OFFICE2013].EpidSource = "command line"; + #endif // NO_LOG + break; + + case 'H': + HwId = (BYTE*)vlmcsd_malloc(sizeof(((RESPONSE_V6 *)0)->HwId)); + + hex2bin(HwId, optarg, sizeof(((RESPONSE_V6 *)0)->HwId)); + + KmsResponseParameters[APP_ID_WINDOWS].HwId = HwId; + KmsResponseParameters[APP_ID_OFFICE2010].HwId = HwId; + KmsResponseParameters[APP_ID_OFFICE2013].HwId = HwId; + break; + #endif // NO_CL_PIDS + + #ifndef NO_SOCKETS + + #ifndef USE_MSRPC + case '4': + case '6': + case 'P': + ignoreIniFileParameter(INI_PARAM_LISTEN); + break; + #else // USE_MSRPC + case 'P': + defaultport = optarg; + ignoreIniFileParameter(INI_PARAM_PORT); + break; + #endif // USE_MSRPC + + #if !defined(NO_LIMIT) && !__minix__ + + case 'm': + #ifdef USE_MSRPC + MaxTasks = getOptionArgumentInt(o, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT); + #else // !USE_MSRPC + MaxTasks = getOptionArgumentInt(o, 1, SEM_VALUE_MAX); + #endif // !USE_MSRPC + ignoreIniFileParameter(INI_PARAM_MAX_WORKERS); + break; + + #endif // !defined(NO_LIMIT) && !__minix__ + #endif // NO_SOCKETS + + #if !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) + case 't': + ServerTimeout = getOptionArgumentInt(o, 1, 600); + ignoreIniFileParameter(INI_PARAM_CONNECTION_TIMEOUT); + break; + #endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) + + #ifndef NO_PID_FILE + case 'p': + fn_pid = getCommandLineArg(optarg); + ignoreIniFileParameter(INI_PARAM_PID_FILE); + break; + #endif + + #ifndef NO_INI_FILE + case 'i': + fn_ini = getCommandLineArg(optarg); + if (!strcmp(fn_ini, "-")) fn_ini = NULL; + break; + #endif + + #ifndef NO_LOG + case 'l': + fn_log = getCommandLineArg(optarg); + ignoreIniFileParameter(INI_PARAM_LOG_FILE); + break; + + #ifndef NO_VERBOSE_LOG + case 'v': + case 'q': + logverbose = o == 'v'; + ignoreIniFileParameter(INI_PARAM_LOG_VERBOSE); + break; + + #endif // NO_VERBOSE_LOG + #endif // NO_LOG + + #ifndef NO_SOCKETS + #ifndef USE_MSRPC + case 'L': + maxsockets++; + ignoreIniFileParameter(INI_PARAM_LISTEN); + break; + #endif // USE_MSRPC + + case 'f': + nodaemon = 1; + #ifndef NO_LOG + logstdout = 1; + #endif + break; + + #ifdef _NTSERVICE + case 'U': + ServiceUser = optarg; + break; + + case 'W': + ServicePassword = optarg; + break; + + case 's': + #ifndef USE_MSRPC + if (InetdMode) usage(); + #endif // USE_MSRPC + if (!IsNTService) installService = 1; // Install + break; + + case 'S': + if (!IsNTService) installService = 2; // Remove + break; + #endif // _NTSERVICE + + case 'D': + nodaemon = 1; + break; + + #ifndef NO_LOG + case 'e': + logstdout = 1; + break; + #endif // NO_LOG + #endif // NO_SOCKETS + + #ifndef _WIN32 + case 'I': // Backward compatibility with svn681 and earlier + break; + #endif // _WIN32 + + #ifndef NO_RANDOM_EPID + case 'r': + RandomizationLevel = (int_fast8_t)getOptionArgumentInt(o, 0, 2); + ignoreIniFileParameter(INI_PARAM_RANDOMIZATION_LEVEL); + break; + + case 'C': + Lcid = (uint16_t)getOptionArgumentInt(o, 0, 32767); + + ignoreIniFileParameter(INI_PARAM_LCID); + + #ifdef _PEDANTIC + if (!IsValidLcid(Lcid)) + { + printerrorf("Warning: %s is not a valid LCID.\n", optarg); + } + #endif // _PEDANTIC + + break; + #endif // NO_RANDOM_PID + + #if !defined(NO_USER_SWITCH) && !defined(_WIN32) + case 'g': + gname = optarg; + ignoreIniFileParameter(INI_PARAM_GID); + #ifndef NO_SIGHUP + if (!IsRestarted) + #endif // NO_SIGHUP + if (GetGid()) + { + printerrorf("Fatal: setgid for %s failed.\n", optarg); + exit(!0); + } + break; + + case 'u': + uname = optarg; + ignoreIniFileParameter(INI_PARAM_UID); + #ifndef NO_SIGHUP + if (!IsRestarted) + #endif // NO_SIGHUP + if (GetUid()) + { + printerrorf("Fatal: setuid for %s failed.\n", optarg); + exit(!0); + } + break; + #endif // NO_USER_SWITCH && !_WIN32 + + #ifndef NO_CUSTOM_INTERVALS + case 'R': + VLRenewalInterval = getTimeSpanFromCommandLine(optarg, o); + ignoreIniFileParameter(INI_PARAM_RENEWAL_INTERVAL); + break; + + case 'A': + VLActivationInterval = getTimeSpanFromCommandLine(optarg, o); + ignoreIniFileParameter(INI_PARAM_ACTIVATION_INTERVAL); + break; + #endif + + #ifndef USE_MSRPC + case 'd': + case 'k': + DisconnectImmediately = o == 'd'; + ignoreIniFileParameter(INI_PARAM_DISCONNECT_IMMEDIATELY); + break; + + case 'N': + if (!getArgumentBool(&UseRpcNDR64, optarg)) usage(); + ignoreIniFileParameter(INI_PARAM_RPC_NDR64); + break; + + case 'B': + if (!getArgumentBool(&UseRpcBTFN, optarg)) usage(); + ignoreIniFileParameter(INI_PARAM_RPC_BTFN); + break; + #endif // !USE_MSRPC + + case 'V': + #ifdef _NTSERVICE + if (IsNTService) break; + #endif + printf("vlmcsd %s\n", Version); + exit(0); + + default: + usage(); + } + + // Do not allow non-option arguments + if (optind != global_argc) + usage(); + + #ifdef _NTSERVICE + // -U and -W must be used with -s + if ((ServiceUser || *ServicePassword) && installService != 1) usage(); + #endif // _NTSERVICE +} + + +#ifndef NO_PID_FILE +static void writePidFile() +{ +# ifndef NO_SIGHUP + if (IsRestarted) return; +# endif // NO_SIGHUP + + if (fn_pid && !InetdMode) + { + FILE *_f = fopen(fn_pid, "w"); + + if ( _f ) + { + fprintf(_f, "%u", (uint32_t)getpid()); + fclose(_f); + } + + #ifndef NO_LOG + else + { + logger("Warning: Cannot write pid file '%s'. %s.\n", fn_pid, strerror(errno)); + } + #endif // NO_LOG + } +} +#else +#define writePidFile(x) +#endif // NO_PID_FILE + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + +void cleanup() +{ + + if (!InetdMode) + { + #ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); + #endif // NO_PID_FILE + closeAllListeningSockets(); + + #if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !defined(_WIN32) && !__minix__ + sem_unlink("/vlmcsd"); + #if !defined(USE_THREADS) && !defined(CYGWIN) + if (shmid >= 0) + { + if (Semaphore != (sem_t*)-1) shmdt(Semaphore); + shmctl(shmid, IPC_RMID, NULL); + } + #endif // !defined(USE_THREADS) && !defined(CYGWIN) + #endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !defined(_WIN32) && !__minix__ + + #ifndef NO_LOG + logger("vlmcsd %s was shutdown\n", Version); + #endif // NO_LOG + } + +} + +#elif defined(USE_MSRPC) + +void cleanup() +{ +# ifndef NO_PID_FILE + if (fn_pid) unlink(fn_pid); +# endif // NO_PID_FILE + +# ifndef NO_LOG + logger("vlmcsd %s was shutdown\n", Version); +# endif // NO_LOG +} + +#else // Neither Sockets nor RPC + +__pure void cleanup() {} + +#endif // Neither Sockets nor RPC + + +#if !defined(USE_MSRPC) && !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ +// Get a semaphore for limiting the maximum concurrent tasks +static void allocateSemaphore(void) +{ + #ifdef USE_THREADS + #define sharemode 0 + #else + #define sharemode 1 + #endif + + #ifndef _WIN32 + sem_unlink("/vlmcsd"); + #endif + + if(MaxTasks < SEM_VALUE_MAX && !InetdMode) + { + #ifndef _WIN32 + + #if !defined(USE_THREADS) && !defined(CYGWIN) + + if ((Semaphore = sem_open("/vlmcsd", O_CREAT /*| O_EXCL*/, 0700, MaxTasks)) == SEM_FAILED) // fails on many systems + { + // We didn't get a named Semaphore (/dev/shm on Linux) so let's try our own shared page + + if ( + ( shmid = shmget(IPC_PRIVATE, sizeof(sem_t), IPC_CREAT | 0600) ) < 0 || + ( Semaphore = (sem_t*)shmat(shmid, NULL, 0) ) == (sem_t*)-1 || + sem_init(Semaphore, 1, MaxTasks) < 0 + ) + { + int errno_save = errno; + if (Semaphore != (sem_t*)-1) shmdt(Semaphore); + if (shmid >= 0) shmctl(shmid, IPC_RMID, NULL); + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(errno_save)); + MaxTasks = SEM_VALUE_MAX; + } + } + + #else // THREADS or CYGWIN + + Semaphore = (sem_t*)vlmcsd_malloc(sizeof(sem_t)); + + if (sem_init(Semaphore, sharemode, MaxTasks) < 0) // sem_init is not implemented on Darwin (returns ENOSYS) + { + free(Semaphore); + + if ((Semaphore = sem_open("/vlmcsd", O_CREAT /*| O_EXCL*/, 0700, MaxTasks)) == SEM_FAILED) + { + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(errno)); + MaxTasks = SEM_VALUE_MAX; + } + } + + #endif // THREADS or CYGWIN + + #else // _WIN32 + + if (!(Semaphore = CreateSemaphoreA(NULL, MaxTasks, MaxTasks, NULL))) + { + printerrorf("Warning: Could not create semaphore: %s\n", vlmcsd_strerror(GetLastError())); + MaxTasks = SEM_VALUE_MAX; + } + + #endif // _WIN32 + } +} +#endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ + + +#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) +int setupListeningSockets() +{ + int o; + uint_fast8_t allocsockets = maxsockets ? maxsockets : 2; + + SocketList = (SOCKET*)vlmcsd_malloc((size_t)allocsockets * sizeof(SOCKET)); + + haveIPv4Stack = checkProtocolStack(AF_INET); + haveIPv6Stack = checkProtocolStack(AF_INET6); + + // Reset getopt since we've alread used it + optReset(); + + for (opterr = 0; ( o = getopt(global_argc, (char* const*)global_argv, optstring) ) > 0; ) switch (o) + { + case '4': + + if (!haveIPv4Stack) + { + printerrorf("Fatal: Your system does not support %s.\n", cIPv4); + return !0; + } + v4required = 1; + break; + + case '6': + + if (!haveIPv6Stack) + { + printerrorf("Fatal: Your system does not support %s.\n", cIPv6); + return !0; + } + v6required = 1; + break; + + case 'L': + + addListeningSocket(optarg); + break; + + case 'P': + + defaultport = optarg; + break; + + default: + + break; + } + + +# ifndef NO_INI_FILE + if (maxsockets && !numsockets) + { + if (fn_ini && !readIniFile(INI_FILE_PASS_2)) + { + #ifdef INI_FILE + if (strcmp(fn_ini, INI_FILE)) + #endif // INI_FILE + printerrorf("Warning: Can't read %s: %s\n", fn_ini, strerror(errno)); + } + } +# endif + + // if -L hasn't been specified on the command line, use default sockets (all IP addresses) + // maxsocket results from first pass parsing the arguments + if (!maxsockets) + { + if (haveIPv6Stack && (v6required || !v4required)) addListeningSocket("::"); + if (haveIPv4Stack && (v4required || !v6required)) addListeningSocket("0.0.0.0"); + } + + if (!numsockets) + { + printerrorf("Fatal: Could not listen on any socket.\n"); + return(!0); + } + + return 0; +} +#endif // !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + +int server_main(int argc, CARGV argv) +{ + #if !defined(_NTSERVICE) && !defined(NO_SOCKETS) + int error; + #endif // !defined(_NTSERVICE) && !defined(NO_SOCKETS) + + // Initialize ePID / HwId parameters + memset(KmsResponseParameters, 0, sizeof(KmsResponseParameters)); + + global_argc = argc; + global_argv = argv; + + #ifdef _NTSERVICE // #endif is in newmain() + DWORD lasterror = ERROR_SUCCESS; + + if (!StartServiceCtrlDispatcher(NTServiceDispatchTable) && (lasterror = GetLastError()) == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) + { + IsNTService = FALSE; + return newmain(); + } + + return lasterror; +} + + +int newmain() +{ + int error; + + // Initialize thread synchronization objects for Windows and Cygwin + #ifdef USE_THREADS + + #ifndef NO_LOG + // Initialize the Critical Section for proper logging + InitializeCriticalSection(&logmutex); + #endif // NO_LOG + + #endif // USE_THREADS + + #ifdef _WIN32 + + #ifndef USE_MSRPC + // Windows Sockets must be initialized + WSADATA wsadata; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + printerrorf("Fatal: Could not initialize Windows sockets (Error: %d).\n", error); + return error; + } + #endif // USE_MSRPC + + // Windows can never daemonize + nodaemon = 1; + + #else // __CYGWIN__ + + // Do not daemonize if we are a Windows service + if (IsNTService) nodaemon = 1; + + #endif // _WIN32 / __CYGWIN__ + #endif // _NTSERVICE ( #ifdef is main(int argc, CARGV argv) ) + + parseGeneralArguments(); // Does not return if an error occurs + + #if !defined(_WIN32) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + struct stat statbuf; + fstat(STDIN_FILENO, &statbuf); + if (S_ISSOCK(statbuf.st_mode)) + { + InetdMode = 1; + nodaemon = 1; + maxsockets = 0; + #ifndef NO_LOG + logstdout = 0; + #endif // NO_LOG + } + #endif // !defined(_WIN32) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + #ifndef NO_INI_FILE + if (fn_ini && !readIniFile(INI_FILE_PASS_1)) + { + #ifdef INI_FILE + if (strcmp(fn_ini, INI_FILE)) + #endif // INI_FILE + printerrorf("Warning: Can't read %s: %s\n", fn_ini, strerror(errno)); + } + #endif // NO_INI_FILE + + #if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__ && !defined(USE_MSRPC) + allocateSemaphore(); + #endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && __minix__ + + #ifdef _NTSERVICE + if (installService) + return NtServiceInstallation(installService, ServiceUser, ServicePassword); + #endif // _NTSERVICE + + #if !defined(NO_SOCKETS) && !defined(USE_MSRPC) + if (!InetdMode) + { + if ((error = setupListeningSockets())) return error; + } + #endif // NO_SOCKETS + + // After sockets have been set up, we may switch to a lower privileged user + #if !defined(_WIN32) && !defined(NO_USER_SWITCH) + + #ifndef NO_SIGHUP + if (!IsRestarted) + { + #endif // NO_SIGHUP + if (gid != INVALID_GID && setgid(gid)) + { + printerrorf("Fatal: setgid for %s failed.\n", gname); + return !0; + } + + if (uid != INVALID_UID && setuid(uid)) + { + printerrorf("Fatal: setuid for %s failed.\n", uname); + return !0; + } + #ifndef NO_SIGHUP + } + #endif // NO_SIGHUP + + #endif // !defined(_WIN32) && !defined(NO_USER_SWITCH) + + randomNumberInit(); + + // Randomization Level 1 means generate ePIDs at startup and use them during + // the lifetime of the process. So we generate them now + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 1) randomPidInit(); + #endif + + #if !defined(NO_SOCKETS) + #ifdef _WIN32 + if (!IsNTService) + #endif // _WIN32 + if ((error = daemonizeAndSetSignalAction())) return error; + #endif // !defined(NO_SOCKETS) + + writePidFile(); + + #if !defined(NO_LOG) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + if (!InetdMode) + logger("vlmcsd %s started successfully\n", Version); + #endif // !defined(NO_LOG) && !defined(NO_SOCKETS) && !defined(USE_MSRPC) + + #if defined(_NTSERVICE) && !defined(USE_MSRPC) + if (IsNTService) ReportServiceStatus(SERVICE_RUNNING, NO_ERROR, 200); + #endif // defined(_NTSERVICE) && !defined(USE_MSRPC) + + int rc; + rc = runServer(); + + // Clean up things and exit + #ifdef _NTSERVICE + if (!ServiceShutdown) + #endif + cleanup(); + #ifdef _NTSERVICE + else + ReportServiceStatus(SERVICE_STOPPED, NO_ERROR, 0); + #endif + + return rc; +} +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include "vlmcs.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include +#include +#else // _WIN32 +#endif // _WIN32 +#include "endian.h" +#include "shared_globals.h" +#include "output.h" +#ifndef USE_MSRPC +#include "network.h" +#include "rpc.h" +#else // USE_MSRPC +#include "msrpc-client.h" +#endif // USE_MSRPC +#include "kms.h" +#include "helpers.h" +#include "dns_srv.h" + + +#define VLMCS_OPTION_GRAB_INI 1 +#define VLMCS_OPTION_NO_GRAB_INI 2 + +#define kmsVersionMinor 0 // Currently constant. May change in future KMS versions + +// Function Prototypes +static void CreateRequestBase(REQUEST *Request); + + +// KMS Parameters +static int_fast8_t verbose = FALSE; +static int_fast8_t VMInfo = FALSE; +static int_fast8_t dnsnames = TRUE; +static int FixedRequests = 0; +static BYTE LicenseStatus = 0x02; +static const char *CMID = NULL; +static const char *CMID_prev = NULL; +static const char *WorkstationName = NULL; +static int BindingExpiration = 43200; //30 days +static const char *RemoteAddr; +static int_fast8_t ReconnectForEachRequest = FALSE; +static int AddressFamily = AF_UNSPEC; +static int_fast8_t incompatibleOptions = 0; +static const char* fn_ini_client = NULL; + +#ifndef NO_DNS +static int_fast8_t NoSrvRecordPriority = FALSE; +#endif // NO_DNS + + +// Structure for handling "License Packs" (e.g. Office2013v5 or WindowsVista) +typedef struct +{ + const char *names; //This is a list of strings. Terminate with additional Zero!!! + int N_Policy; + int kmsVersionMajor; + const GUID *AppID; + GUID ActID; + GUID KMSID; +} LicensePack; + + +typedef char iniFileEpidLines[3][256]; + +// Well known "license packs" +static const LicensePack LicensePackList[] = +{ + // List of names min lics version appID skuId KMSCountedID + /* 000 */ { "Vista\000W6\000" + "WindowsVista\000" + "Windows\000", 25, 4, PWINGUID, { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } }, { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } }, + /* 001 */ { "W7\000Windows7\000", 25, 4, PWINGUID, { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } }, { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } }, + /* 002 */ { "W8\000Windows8\000", 25, 5, PWINGUID, { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } }, { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } }, + /* 003 */ { "W8C\000Windows8C\000", 25, 5, PWINGUID, { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } }, { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } }, + /* 004 */ { "W81\000Windows81\000", 25, 6, PWINGUID, { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } }, { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } }, + /* 005 */ { "W81C\000Windows81C\000", 25, 6, PWINGUID, { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } }, { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } }, + /* 006 */ { "W10\000Windows10\000", 25, 6, PWINGUID, { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } }, { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } }, + /* 007 */ { "W10C\000Windows10C\000", 25, 6, PWINGUID, { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } }, { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } }, + /* 008 */ { "2008" "\0" "2008A\000", 5, 4, PWINGUID, { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } }, { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } }, + /* 009 */ { "2008B\000", 5, 4, PWINGUID, { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } }, { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } }, + /* 010 */ { "2008C\000", 5, 4, PWINGUID, { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } }, { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } }, + /* 011 */ { "2008R2" "\0" "2008R2A\000", 5, 4, PWINGUID, { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } }, { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } }, + /* 012 */ { "2008R2B\000", 5, 4, PWINGUID, { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } }, { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } }, + /* 013 */ { "2008R2C\000", 5, 4, PWINGUID, { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } }, { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } }, + /* 014 */ { "2012\000", 5, 5, PWINGUID, { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } }, { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } }, + /* 015 */ { "2012R2\000" "12R2\000", 5, 6, PWINGUID, { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } }, { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } }, + /* 016 */ { "Office2010\000O14\000", 5, 4, POFFICE2010GUID, { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } }, { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } }, + /* 017 */ { "Office2013\000O15\000", 5, 6, POFFICE2013GUID, { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } }, { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } }, + /* 018 */ { "Office2013V5\000", 5, 5, POFFICE2013GUID, { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } }, { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } }, + /* 019 */ { "Office2016\000" "O16\000", 5, 6, POFFICE2013GUID, { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } }, { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } }, + /* 020 */ { NULL, 0, 0, NULL, { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } } } +}; + + +typedef struct +{ + const char* first[16]; + const char* second[16]; + const char* tld[22]; +} DnsNames; + + +// Some names for the DNS name random generator +static DnsNames ClientDnsNames = +{ + { "www", "ftp", "kms", "hack-me", "smtp", "ns1", "mx1", "ns1", "pop3", "imap", "mail", "dns", "headquarter", "we-love", "_vlmcs._tcp", "ceo-laptop" }, + { ".microsoft", ".apple", ".amazon", ".samsung", ".adobe", ".google", ".yahoo", ".facebook", ".ubuntu", ".oracle", ".borland", ".htc", ".acer", ".windows", ".linux", ".sony" }, + { ".com", ".net", ".org", ".cn", ".co.uk", ".de", ".com.tw", ".us", ".fr", ".it", ".me", ".info", ".biz", ".co.jp", ".ua", ".at", ".es", ".pro", ".by", ".ru", ".pl", ".kr" } +}; + + +// This is the one, we are actually using. We use Vista, if user selects nothing +LicensePack ActiveLicensePack; + + +// Request Count Control Variables +static int RequestsToGo = 1; +static BOOL firstRequestSent = FALSE; + + +static void string2UuidOrExit(const char *const restrict input, GUID *const restrict guid) +{ + if (strlen(input) != GUID_STRING_LENGTH || !string2Uuid(input, guid)) + { + errorout("Fatal: Command line contains an invalid GUID.\n"); + exit(!0); + } +} + + +#ifndef NO_HELP + +__noreturn static void clientUsage(const char* const programName) +{ + errorout( + "vlmcs %s \n\n" +# ifndef NO_DNS + "Usage: %s [options] [ [:] | . | - ] [options]\n\n" +# else // DNS + "Usage: %s [options] [[:]] [options]\n\n" +# endif // DNS + + "Options:\n\n" + + " -v Be verbose\n" + " -l \n" + " -4 Force V4 protocol\n" + " -5 Force V5 protocol\n" + " -6 Force V6 protocol\n" +# ifndef USE_MSRPC + " -i Use IP protocol (4 or 6)\n" +# endif // USE_MSRPC + " -e Show some valid examples\n" + " -x Show valid Apps\n" + " -d no DNS names, use Netbios names (no effect if -w is used)\n\n" + + "Advanced options:\n\n" + + " -a Use custom Application GUID\n" + " -s Use custom Activation Configuration GUID\n" + " -k Use custom KMS GUID\n" + " -c Use custom Client GUID. Default: Use random\n" + " -o Use custom Prevoius Client GUID. Default: ZeroGUID\n" + " -w Use custom workstation name. Default: Use random\n" + " -r Fake required clients\n" + " -n Fixed # of requests (Default: Enough to charge)\n" + " -m Pretend to be a virtual machine\n" + " -G Get ePID/HwId data and write to . Can't be used with -l, -4, -5, -6, -a, -s, -k, -r and -n\n" +# ifndef USE_MSRPC + " -T Use a new TCP connection for each request.\n" + " -N <0|1> disable or enable NDR64. Default: 1\n" + " -B <0|1> disable or enable RPC bind time feature negotiation. Default: 1\n" +# endif // USE_MSRPC + " -t Use specfic license status (0 <= T <= 6)\n" + " -g Use a specfic binding expiration time in minutes. Default 43200\n" +# ifndef NO_DNS + " -P Ignore priority and weight in DNS SRV records\n" +# endif // NO_DNS +# ifndef USE_MSRPC + " -p Don't use multiplexed RPC bind\n" +# endif // USE_MSRPC + "\n" + + ":\t\tTCP port name of the KMS to use. Default 1688.\n" + ":\t\thost name of the KMS to use. Default 127.0.0.1\n" +# ifndef NO_DNS + ".:\tfind KMS server in via DNS\n" +# endif // NO_DNS + ":\t\t(Type %s -x to see a list of valid apps)\n\n", + Version, programName, programName + ); + + exit(!0); +} + +__pure static int getLineWidth(void) +{ + #ifdef TERMINAL_FIXED_WIDTH // For Toolchains that to not have winsize + return TERMINAL_FIXED_WIDTH; + #else // Can determine width of terminal + #ifndef _WIN32 + + struct winsize w; + + if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &w)) + { + return 80; // Return this if stdout is not a tty + } + + return w.ws_col; + + #else // _WIN32 + + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); + + if (!GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) + { + return 80; // Return this if stdout is not a Console + } + + return csbiInfo.srWindow.Right - csbiInfo.srWindow.Left; + + #endif // WIN32 + + #endif // Can determine width of terminal + +} + +__noreturn static void showProducts(PRINTFUNC p) +{ + int cols = getLineWidth(); + int itemsPerLine; + uint8_t i; + + p( + "The following " + #if !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + "aliases " + #else + "names " + #endif + "can be used with -l:\n\n" + ); + + const LicensePack* lp; + + itemsPerLine = cols / 20; + if (!itemsPerLine) itemsPerLine = 1; + + for (i = 1, lp = LicensePackList; lp->names; lp++) + { + const char* name; + + for (name = lp->names; *name; name += strlen(name) + 1, i++) + { + p("%-20s", name); + + if (!(i % itemsPerLine)) p("\n"); + } + } + + p("\n\n"); + + #if !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + + const KmsIdList* currentProduct; + uint_fast8_t longestString = 0; + uint8_t k, items = getExtendedProductListSize(); + + p("You may also use these product names or numbers:\n\n"); + + for (currentProduct = ExtendedProductList; currentProduct->name; currentProduct++) + { + uint_fast8_t len = strlen(currentProduct->name); + + if (len > longestString) + longestString = len; + } + + itemsPerLine = cols / (longestString + 10); + if (!itemsPerLine) itemsPerLine = 1; + uint8_t lines = items / itemsPerLine; + if (items % itemsPerLine) lines++; + + for (i = 0; i < lines; i++) + { + for (k = 0; k < itemsPerLine; k++) + { + uint8_t j; + uint8_t index = k * lines + i; + + if (index >= items) break; + + p("%3u = %s", index + 1, ExtendedProductList[index].name); + + for (j = 0; j < longestString + 4 - strlen(ExtendedProductList[index].name); j++) + { + p(" "); + } + } + + p("\n"); + } + + p("\n"); + + #endif // !defined(NO_EXTENDED_PRODUCT_LIST) && !defined(NO_BASIC_PRODUCT_LIST) + + exit(0); +} + +__noreturn static void examples(const char* const programName) +{ + printf( + "\nRequest activation for Office2013 using V4 protocol from 192.168.1.5:1688\n" + "\t%s -l O15 -4 192.168.1.5\n" + "\t%s -l O15 -4 192.168.1.5:1688\n\n" + + "Request activation for Windows Server 2012 using V4 protocol from localhost:1688\n" + "\t%s -4 -l Windows -k 8665cb71-468c-4aa3-a337-cb9bc9d5eaac\n" + "\t%s -4 -l 2012\n" + "\t%s -4 -l 2012 [::1]:1688\n" + "\t%s -4 -l 12 127.0.0.2:1688\n\n" + + "Send 100,000 requests to localhost:1688\n" + "\t%s -n 100000 -l Office2010\n\n" + + "Request Activation for Windows 8 from 10.0.0.1:4711 and pretend to be Steve Ballmer\n" + "\t%s -l Windows8 -w steveb1.redmond.microsoft.com 10.0.0.1:4711\n\n", + programName, programName, programName, programName, programName, programName, programName, programName + ); + + exit(0); +} + + +#else // NO_HELP + + +__noreturn static void clientUsage(const char* const programName) +{ + errorout("Incorrect parameter specified.\n"); + exit(!0); +} + + +#endif // NO_HELP + + +static BOOL findLicensePackByName(const char* const name, LicensePack* const lp) +{ + // Try to find a package in the short list first + + LicensePack *licensePack; + for (licensePack = (LicensePack*)&LicensePackList; licensePack->names; licensePack ++) + { + const char *currentName; + for (currentName = licensePack->names; *currentName; currentName += strlen(currentName) + 1) + { + if (!strcasecmp(name, currentName)) + { + *lp = *licensePack; + return TRUE; + } + } + } + + #if defined(NO_BASIC_PRODUCT_LIST) || defined(NO_EXTENDED_PRODUCT_LIST) + + return FALSE; + + #else // Both Lists are available + + // search extended product list + + uint8_t items = getExtendedProductListSize(); + unsigned int index; + + if (stringToInt(name, 1, items, &index)) + { + index--; + } + else + { + for (index = 0; index < items; index++) + { + if (!strcasecmp(ExtendedProductList[index].name, name)) break; + } + + if (index >= items) return FALSE; + } + + lp->AppID = &AppList[ExtendedProductList[index].AppIndex].guid; + lp->KMSID = ProductList[ExtendedProductList[index].KmsIndex].guid; + lp->ActID = ExtendedProductList[index].guid; + lp->N_Policy = ProductList[ExtendedProductList[index].KmsIndex].KMS_PARAM_REQUIREDCOUNT; + lp->kmsVersionMajor = ProductList[ExtendedProductList[index].KmsIndex].KMS_PARAM_MAJOR; + + return TRUE; + + #endif // Both Lists are available +} + +static const char* const client_optstring = "+N:B:i:l:a:s:k:c:w:r:n:t:g:G:o:pPTv456mexd"; + + +//First pass. We handle only "-l". Since -a -k -s -4 -5 and -6 are exceptions to -l, we process -l first +static void parseCommandLinePass1(const int argc, CARGV argv) +{ + int o; + optReset(); + + for (opterr = 0; ( o = getopt(argc, (char* const*)argv, client_optstring) ) > 0; ) switch (o) + { + case 'l': // Set "License Pack" and protocol version (e.g. Windows8, Office2013v5, ...) + + if (!findLicensePackByName(optarg, &ActiveLicensePack)) + { + errorout("Invalid client application. \"%s\" is not valid for -l.\n\n", optarg); + #ifndef NO_HELP + showProducts(&errorout); + #endif // !NO_HELP + } + + break; + + default: + break; + } +} + + +// Second Pass. Handle all options except "-l" +static void parseCommandLinePass2(const char *const programName, const int argc, CARGV argv) +{ + int o; + optReset(); + + for (opterr = 0; ( o = getopt(argc, (char* const*)argv, client_optstring) ) > 0; ) switch (o) + { + #ifndef NO_HELP + + case 'e': // Show examples + + examples(programName); + break; + + case 'x': // Show Apps + + showProducts(&printf); + break; + + #endif // NO_HELP + +# ifndef NO_DNS + + case 'P': + + NoSrvRecordPriority = TRUE; + break; + +# endif // NO_DNS + + case 'G': + + incompatibleOptions |= VLMCS_OPTION_GRAB_INI; + fn_ini_client = optarg; + break; + +# ifndef USE_MSRPC + + case 'N': + if (!getArgumentBool(&UseRpcNDR64, optarg)) clientUsage(programName); + break; + + case 'B': + if (!getArgumentBool(&UseRpcBTFN, optarg)) clientUsage(programName); + break; + + case 'i': + + switch(getOptionArgumentInt(o, 4, 6)) + { + case 4: + AddressFamily = AF_INET; + break; + case 6: + AddressFamily = AF_INET6; + break; + default: + errorout("IPv5 does not exist.\n"); + exit(!0); + break; + } + + break; + + case 'p': // Multiplexed RPC + + UseMultiplexedRpc = FALSE; + break; + +# endif // USE_MSRPC + + case 'n': // Fixed number of Requests (regardless, whether they are required) + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + FixedRequests = getOptionArgumentInt(o, 1, INT_MAX); + break; + + case 'r': // Fake minimum required client count + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.N_Policy = getOptionArgumentInt(o, 1, INT_MAX); + break; + + case 'c': // use a specific client GUID + + // If using a constant Client ID, send only one request unless /N= explicitly specified + if (!FixedRequests) FixedRequests = 1; + + CMID = optarg; + break; + + case 'o': // use a specific previous client GUID + + CMID_prev = optarg; + break; + + case 'a': // Set specific App Id + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.AppID = (GUID*)vlmcsd_malloc(sizeof(GUID)); + + string2UuidOrExit(optarg, (GUID*)ActiveLicensePack.AppID); + break; + + case 'g': // Set custom "grace" time in minutes (default 30 days) + + BindingExpiration = getOptionArgumentInt(o, 0, INT_MAX); + break; + + case 's': // Set specfic SKU ID + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + string2UuidOrExit(optarg, &ActiveLicensePack.ActID); + break; + + case 'k': // Set specific KMS ID + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + string2UuidOrExit(optarg, &ActiveLicensePack.KMSID); + break; + + case '4': // Force V4 protocol + case '5': // Force V5 protocol + case '6': // Force V5 protocol + + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + ActiveLicensePack.kmsVersionMajor = o - 0x30; + break; + + case 'd': // Don't use DNS names + + dnsnames = FALSE; + break; + + case 'v': // Be verbose + + verbose = TRUE; + break; + + case 'm': // Pretend to be a virtual machine + + VMInfo = TRUE; + break; + + case 'w': // WorkstationName (max. 63 chars) + + WorkstationName = optarg; + + if (strlen(WorkstationName) > 63) + { + errorout("\007WARNING! Truncating Workstation name to 63 characters (%s).\n", WorkstationName); + } + + break; + + case 't': + + LicenseStatus = getOptionArgumentInt(o, 0, 6) & 0xff; + break; + +# ifndef USE_MSRPC + + case 'T': + + ReconnectForEachRequest = TRUE; + break; + +# endif // USE_MSRPC + + case 'l': + incompatibleOptions |= VLMCS_OPTION_NO_GRAB_INI; + break; + + default: + clientUsage(programName); + } + if ((incompatibleOptions & (VLMCS_OPTION_NO_GRAB_INI | VLMCS_OPTION_GRAB_INI)) == (VLMCS_OPTION_NO_GRAB_INI | VLMCS_OPTION_GRAB_INI)) + clientUsage(programName); +} + + +/* + * Compares 2 GUIDs where one is host-endian and the other is little-endian (network byte order) + */ +int_fast8_t IsEqualGuidLEHE(const GUID* const guid1, const GUID* const guid2) +{ + GUID tempGuid; + LEGUID(&tempGuid, guid2); + return IsEqualGUID(guid1, &tempGuid); +} + + +#ifndef USE_MSRPC +static void checkRpcLevel(const REQUEST* request, RESPONSE* response) +{ + if (!RpcFlags.HasNDR32) + errorout("\nWARNING: Server's RPC protocol does not support NDR32.\n"); + + if (UseRpcBTFN && UseRpcNDR64 && RpcFlags.HasNDR64 && !RpcFlags.HasBTFN) + errorout("\nWARNING: Server's RPC protocol has NDR64 but no BTFN.\n"); + + if (!IsEqualGuidLEHE(&request->KMSID, &ProductList[15].guid) && UseRpcBTFN && !RpcFlags.HasBTFN) + errorout("\nWARNING: A server with pre-Vista RPC activated a product other than Office 2010.\n"); +} +#endif // USE_MSRPC + + +static void displayResponse(const RESPONSE_RESULT result, const REQUEST* request, RESPONSE* response, BYTE *hwid) +{ + fflush(stdout); + + if (!result.RpcOK) errorout("\n\007ERROR: Non-Zero RPC result code.\n"); + if (!result.DecryptSuccess) errorout("\n\007ERROR: Decryption of V5/V6 response failed.\n"); + if (!result.IVsOK) errorout("\n\007ERROR: AES CBC initialization vectors (IVs) of request and response do not match.\n"); + if (!result.PidLengthOK) errorout("\n\007ERROR: The length of the PID is not valid.\n"); + if (!result.HashOK) errorout("\n\007ERROR: Computed hash does not match hash in response.\n"); + if (!result.ClientMachineIDOK) errorout("\n\007ERROR: Client machine GUIDs of request and response do not match.\n"); + if (!result.TimeStampOK) errorout("\n\007ERROR: Time stamps of request and response do not match.\n"); + if (!result.VersionOK) errorout("\n\007ERROR: Protocol versions of request and response do not match.\n"); + if (!result.HmacSha256OK) errorout("\n\007ERROR: Keyed-Hash Message Authentication Code (HMAC) is incorrect.\n"); + if (!result.IVnotSuspicious) errorout("\nWARNING: Response uses an IV following KMSv5 rules in KMSv6 protocol.\n"); + + if (result.effectiveResponseSize != result.correctResponseSize) + { + errorout("\n\007WARNING: Size of RPC payload (KMS Message) should be %u but is %u.", result.correctResponseSize, result.effectiveResponseSize); + } + +# ifndef USE_MSRPC + checkRpcLevel(request, response); +# endif // USE_MSRPC + + if (!result.DecryptSuccess) return; // Makes no sense to display anything + + char ePID[3 * PID_BUFFER_SIZE]; + if (!ucs2_to_utf8(response->KmsPID, ePID, PID_BUFFER_SIZE, 3 * PID_BUFFER_SIZE)) + { + memset(ePID + 3 * PID_BUFFER_SIZE - 3, 0, 3); + } + + // Read KMSPID from Response + if (!verbose) + { + printf(" -> %s", ePID); + + if (LE16(response->MajorVer) > 5) + { +# ifndef _WIN32 + printf(" (%016llX)", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + printf(" (%016I64X)", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // _WIN32 + } + + printf("\n"); + } + else + { + printf( + "\n\nResponse from KMS server\n========================\n\n" + "Size of KMS Response : %u (0x%x)\n", result.effectiveResponseSize, result.effectiveResponseSize + ); + + logResponseVerbose(ePID, hwid, response, &printf); + printf("\n"); + } +} + + +static void connectRpc(RpcCtx *s) +{ +# ifdef NO_DNS + + *s = connectToAddress(RemoteAddr, AddressFamily, FALSE); + if (*s == INVALID_RPCCTX) + { + errorout("Fatal: Could not connect to %s\n", RemoteAddr); + exit(!0); + } + + if (verbose) + printf("\nPerforming RPC bind ...\n"); + + if (rpcBindClient(*s, verbose)) + { + errorout("Fatal: Could not bind RPC\n"); + exit(!0); + } + + if (verbose) printf("... successful\n"); + +# else // DNS + + static kms_server_dns_ptr* serverlist = NULL; + static int numServers = 0; + //static int_fast8_t ServerListAlreadyPrinted = FALSE; + int i; + + if (!strcmp(RemoteAddr, "-") || *RemoteAddr == '.') // Get KMS server via DNS SRV record + { + if (!serverlist) + numServers = getKmsServerList(&serverlist, RemoteAddr); + + if (numServers < 1) + { + errorout("Fatal: No KMS servers found\n"); + exit(!0); + } + + if (!NoSrvRecordPriority) sortSrvRecords(serverlist, numServers); + + if (verbose /*&& !ServerListAlreadyPrinted*/) + { + for (i = 0; i < numServers; i++) + { + printf( + "Found %-40s (priority: %hu, weight: %hu, randomized weight: %i)\n", + serverlist[i]->serverName, + serverlist[i]->priority, serverlist[i]->weight, + NoSrvRecordPriority ? 0 : serverlist[i]->random_weight + ); + } + + printf("\n"); + //ServerListAlreadyPrinted = TRUE; + } + } + else // Just use the server supplied on the command line + { + if (!serverlist) + { + serverlist = (kms_server_dns_ptr*)vlmcsd_malloc(sizeof(kms_server_dns_ptr)); + *serverlist = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + numServers = 1; + strncpy((*serverlist)->serverName, RemoteAddr, sizeof((*serverlist)->serverName)); + } + } + + for (i = 0; i < numServers; i++) + { + *s = connectToAddress(serverlist[i]->serverName, AddressFamily, (*RemoteAddr == '.' || *RemoteAddr == '-')); + + if (*s == INVALID_RPCCTX) continue; + + if (verbose) + printf("\nPerforming RPC bind ...\n"); + + if (rpcBindClient(*s, verbose)) + { + errorout("Warning: Could not bind RPC\n"); + continue; + } + + if (verbose) printf("... successful\n"); + + return; + } + + errorout("Fatal: Could not connect to any KMS server\n"); + exit(!0); + +# endif // DNS +} + + +static int SendActivationRequest(const RpcCtx sock, RESPONSE *baseResponse, REQUEST *baseRequest, RESPONSE_RESULT *result, BYTE *const hwid) +{ + size_t requestSize, responseSize; + BYTE *request, *response; + int status; + + result->mask = 0; + + if (LE16(baseRequest->MajorVer) == 4) + request = CreateRequestV4(&requestSize, baseRequest); + else + request = CreateRequestV6(&requestSize, baseRequest); + + if (!(status = rpcSendRequest(sock, request, requestSize, &response, &responseSize))) + { + if (LE16(((RESPONSE*)(response))->MajorVer) == 4) + { + RESPONSE_V4 response_v4; + *result = DecryptResponseV4(&response_v4, responseSize, response, request); + memcpy(baseResponse, &response_v4.ResponseBase, sizeof(RESPONSE)); + } + else + { + RESPONSE_V6 response_v6; + *result = DecryptResponseV6(&response_v6, responseSize, response, request, hwid); + memcpy(baseResponse, &response_v6.ResponseBase, sizeof(RESPONSE)); + } + + result->RpcOK = TRUE; + } + + if (response) free(response); + free(request); + return status; +} + + +static int sendRequest(RpcCtx *const s, REQUEST *const request, RESPONSE *const response, hwid_t hwid, RESPONSE_RESULT *const result) +{ + CreateRequestBase(request); + + if (*s == INVALID_RPCCTX ) + connectRpc(s); + else + { + // Check for lame KMS emulators that close the socket after each request + int_fast8_t disconnected = isDisconnected(*s); + + if (disconnected) + errorout("\nWarning: Server closed RPC connection (probably non-multitasked KMS emulator)\n"); + + if (ReconnectForEachRequest || disconnected) + { + closeRpc(*s); + connectRpc(s); + } + } + + printf("Sending activation request (KMS V%u) ", ActiveLicensePack.kmsVersionMajor); + fflush(stdout); + + return SendActivationRequest(*s, response, request, result, hwid); +} + + +static void displayRequestError(RpcCtx *const s, const int status, const int currentRequest, const int totalRequests) +{ + errorout("\nError 0x%08X while sending request %u of %u\n", status, currentRequest, RequestsToGo + totalRequests); + + switch(status) + { + case 0xC004F042: // not licensed + errorout("The server refused to activate the requested product\n"); + break; + + case 0x8007000D: // e.g. v6 protocol on a v5 server + errorout("The server didn't understand the request\n"); + break; + + case 1: + errorout("An RPC protocol error has occured\n"); + closeRpc(*s); + connectRpc(s); + break; + + default: + break; + } +} + + +static void newIniBackupFile(const char* const restrict fname) +{ + FILE *restrict f = fopen(fname, "wb"); + + if (!f) + { + errorout("Fatal: Cannot create %s: %s\n", fname, strerror(errno)); + exit(!0); + } + + if (fclose(f)) + { + errorout("Fatal: Cannot write to %s: %s\n", fname, strerror(errno)); + unlink(fname); + exit(!0); + } +} + + +static void updateIniFile(iniFileEpidLines* const restrict lines) +{ + int_fast8_t lineWritten[_countof(*lines)]; + struct stat statbuf; + uint_fast8_t i; + int_fast8_t iniFileExistedBefore = TRUE; + unsigned int lineNumber; + + memset(lineWritten, FALSE, sizeof(lineWritten)); + + char* restrict fn_bak = (char*)vlmcsd_malloc(strlen(fn_ini_client) + 2); + + strcpy(fn_bak, fn_ini_client); + strcat(fn_bak, "~"); + + if (stat(fn_ini_client, &statbuf)) + { + if (errno != ENOENT) + { + errorout("Fatal: %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + else + { + iniFileExistedBefore = FALSE; + newIniBackupFile(fn_bak); + } + } + else + { + unlink(fn_bak); // Required for Windows. Most Unix systems don't need it. + if (rename(fn_ini_client, fn_bak)) + { + errorout("Fatal: Cannot create %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + } + + printf("\n%s file %s\n", iniFileExistedBefore ? "Updating" : "Creating", fn_ini_client); + + FILE *restrict in, *restrict out; + + in = fopen(fn_bak, "rb"); + + if (!in) + { + errorout("Fatal: Cannot open %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + + out = fopen(fn_ini_client, "wb"); + + if (!out) + { + errorout("Fatal: Cannot create %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + + char sourceLine[256]; + + for (lineNumber = 1; fgets(sourceLine, sizeof(sourceLine), in); lineNumber++) + { + for (i = 0; i < _countof(*lines); i++) + { + if (*(*lines)[i] && !strncasecmp(sourceLine, (*lines)[i], GUID_STRING_LENGTH)) + { + if (lineWritten[i]) break; + + fprintf(out, "%s", (*lines)[i]); + printf("line %2i: %s", lineNumber, (*lines)[i]); + lineWritten[i] = TRUE; + break; + } + } + + if (i >= _countof(*lines)) + { + fprintf(out, "%s", sourceLine); + } + } + + if (ferror(in)) + { + errorout("Fatal: Cannot read from %s: %s\n", fn_bak, strerror(errno)); + exit(!0); + } + + fclose(in); + + for (i = 0; i < _countof(*lines); i++) + { + if (!lineWritten[i] && *(*lines)[i]) + { + fprintf(out, "%s", (*lines)[i]); + printf("line %2i: %s", lineNumber + i, (*lines)[i]); + } + } + + if (fclose(out)) + { + errorout("Fatal: Cannot write to %s: %s\n", fn_ini_client, strerror(errno)); + exit(!0); + } + + if (!iniFileExistedBefore) unlink(fn_bak); + + free(fn_bak); +} + +static void grabServerData() +{ + RpcCtx s = INVALID_RPCCTX; + WORD MajorVer = 6; + iniFileEpidLines lines; + int_fast8_t Licenses[_countof(lines)] = { 0, 15, 14 }; + uint_fast8_t i; + RESPONSE response; + RESPONSE_RESULT result; + REQUEST request; + hwid_t hwid; + int status; + size_t len; + + for (i = 0; i < _countof(lines); i++) *lines[i] = 0; + + for (i = 0; i < _countof(Licenses) && MajorVer > 3; i++) + { + ActiveLicensePack = LicensePackList[Licenses[i]]; + ActiveLicensePack.kmsVersionMajor = MajorVer; + status = sendRequest(&s, &request, &response, hwid, &result); + printf("%-11s", ActiveLicensePack.names); + + if (status) + { + displayRequestError(&s, status, i + 7 - MajorVer, 9 - MajorVer); + + if (status == 1) break; + + if ((status & 0xF0000000) == 0x80000000) + { + MajorVer--; + i--; + } + + continue; + } + + printf("%i of %i", (int)(i + 7 - MajorVer), (int)(9 - MajorVer)); + displayResponse(result, &request, &response, hwid); + + char guidBuffer[GUID_STRING_LENGTH + 1]; + char ePID[3 * PID_BUFFER_SIZE]; + + uuid2StringLE(&request.AppID, guidBuffer); + + if (!ucs2_to_utf8(response.KmsPID, ePID, PID_BUFFER_SIZE, 3 * PID_BUFFER_SIZE)) + { + memset(ePID + 3 * PID_BUFFER_SIZE - 3, 0, 3); + } + + snprintf(lines[i], sizeof(lines[0]), "%s = %s", guidBuffer, ePID); + + if (response.MajorVer > 5) + { + len = strlen(lines[i]); + snprintf (lines[i] + len, sizeof(lines[0]) - len, "/ %02X %02X %02X %02X %02X %02X %02X %02X", hwid[0], hwid[1], hwid[2], hwid[3], hwid[4], hwid[5], hwid[6], hwid[7]); + } + + len = strlen(lines[i]); + snprintf(lines[i] + len, sizeof(lines[0]) - len, "\n"); + + } + + if (strcmp(fn_ini_client, "-")) + { + updateIniFile(&lines); + } + else + { + printf("\n"); + for (i = 0; i < _countof(lines); i++) printf("%s", lines[i]); + } +} + + +int client_main(const int argc, CARGV argv) +{ + #if defined(_WIN32) && !defined(USE_MSRPC) + + // Windows Sockets must be initialized + + WSADATA wsadata; + int error; + + if ((error = WSAStartup(0x0202, &wsadata))) + { + printerrorf("Fatal: Could not initialize Windows sockets (Error: %d).\n", error); + return error; + } + + #endif // _WIN32 + + #ifdef _NTSERVICE + + // We are not a service + IsNTService = FALSE; + + // Set console output page to UTF-8 + // SetConsoleOutputCP(65001); + + #endif // _NTSERVICE + + randomNumberInit(); + ActiveLicensePack = *LicensePackList; //first license is Windows Vista + + parseCommandLinePass1(argc, argv); + + int_fast8_t useDefaultHost = FALSE; + + if (optind < argc) + RemoteAddr = argv[optind]; + else + useDefaultHost = TRUE; + + int hostportarg = optind; + + if (optind < argc - 1) + { + parseCommandLinePass1(argc - hostportarg, argv + hostportarg); + + if (optind < argc - hostportarg) + clientUsage(argv[0]); + } + + parseCommandLinePass2(argv[0], argc, argv); + + if (optind < argc - 1) + parseCommandLinePass2(argv[0], argc - hostportarg, argv + hostportarg); + + if (useDefaultHost) + RemoteAddr = AddressFamily == AF_INET6 ? "::1" : "127.0.0.1"; + + if (fn_ini_client != NULL) + grabServerData(); + else + { + int requests; + RpcCtx s = INVALID_RPCCTX; + + for (requests = 0, RequestsToGo = ActiveLicensePack.N_Policy - 1; RequestsToGo; requests++) + { + RESPONSE response; + REQUEST request; + RESPONSE_RESULT result; + hwid_t hwid; + + int status = sendRequest(&s, &request, &response, hwid, &result); + + if (FixedRequests) RequestsToGo = FixedRequests - requests - 1; + + if (status) + { + displayRequestError(&s, status, requests + 1, RequestsToGo + requests + 1); + if (!FixedRequests) RequestsToGo = 0; + } + else + { + if (!FixedRequests) + { + if (firstRequestSent && ActiveLicensePack.N_Policy - (int)response.Count >= RequestsToGo) + { + errorout("\nThe KMS server does not increment it's active clients. Aborting...\n"); + RequestsToGo = 0; + } + else + { + RequestsToGo = ActiveLicensePack.N_Policy - response.Count; + if (RequestsToGo < 0) RequestsToGo = 0; + } + } + + fflush(stderr); + printf("%i of %i ", requests + 1, RequestsToGo + requests + 1); + displayResponse(result, &request, &response, hwid); + firstRequestSent = TRUE; + } + } + } + + return 0; +} + + +// Create Base KMS Client Request +static void CreateRequestBase(REQUEST *Request) +{ + + Request->MinorVer = LE16((WORD)kmsVersionMinor); + Request->MajorVer = LE16((WORD)ActiveLicensePack.kmsVersionMajor); + Request->VMInfo = LE32(VMInfo); + Request->LicenseStatus = LE32(LicenseStatus); + Request->BindingExpiration = LE32(BindingExpiration); + LEGUID(&Request->AppID, ActiveLicensePack.AppID); + LEGUID(&Request->ActID, &ActiveLicensePack.ActID); + LEGUID(&Request->KMSID, &ActiveLicensePack.KMSID); + + getUnixTimeAsFileTime(&Request->ClientTime); + Request->N_Policy = LE32(ActiveLicensePack.N_Policy); + + { + GUID tempGUID; + + if (CMID) + { + string2UuidOrExit(CMID, &tempGUID); + LEGUID(&Request->CMID, &tempGUID); + } + else + { + get16RandomBytes(&Request->CMID); + + // Set reserved UUID bits + Request->CMID.Data4[0] &= 0x3F; + Request->CMID.Data4[0] |= 0x80; + + // Set UUID type 4 (random UUID) + Request->CMID.Data3 &= LE16(0xfff); + Request->CMID.Data3 |= LE16(0x4000); + } + + if (CMID_prev) + { + string2UuidOrExit(CMID_prev, &tempGUID); + LEGUID(&Request->CMID_prev, &tempGUID); + } + else + { + memset(&Request->CMID_prev, 0, sizeof(Request->CMID_prev)); + } + } + + static const char alphanum[] = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" /*"abcdefghijklmnopqrstuvwxyz" */; + + if (WorkstationName) + { + utf8_to_ucs2(Request->WorkstationName, WorkstationName, WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + } + else if (dnsnames) + { + int len, len2; + unsigned int index = rand() % _countof(ClientDnsNames.first); + len = utf8_to_ucs2(Request->WorkstationName, ClientDnsNames.first[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + + index = rand() % _countof(ClientDnsNames.second); + len2 = utf8_to_ucs2(Request->WorkstationName + len, ClientDnsNames.second[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + + index = rand() % _countof(ClientDnsNames.tld); + utf8_to_ucs2(Request->WorkstationName + len + len2, ClientDnsNames.tld[index], WORKSTATION_NAME_BUFFER, WORKSTATION_NAME_BUFFER * 3); + } + else + { + unsigned int size = (rand() % 14) + 1; + const unsigned char *dummy; + unsigned int i; + + for (i = 0; i < size; i++) + { + Request->WorkstationName[i] = utf8_to_ucs2_char((unsigned char*)alphanum + (rand() % (sizeof(alphanum) - 1)), &dummy); + } + + Request->WorkstationName[size] = 0; + } + + //Show Details + if (verbose) + { + printf("\nRequest Parameters\n==================\n\n"); + logRequestVerbose(Request, &printf); + printf("\n"); + } +} + + +/* Multi-Call Binary for vlmcs and vlmcsd */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if MULTI_CALL_BINARY < 1 +#error "Please define MULTI_CALL_BINARY=1 when compiling this file." +#endif + +#include +#include + +#include "vlmcs.h" +#include "vlmcsd.h" +#include "types.h" +#include "shared_globals.h" +#include "output.h" + +#if (defined(_WIN32) || defined(__CYGWIN__)) +#define compare strcasecmp // Best for case-preserving (but otherwise case-insensitive) filesystems +#else // native Unix +#define compare strcmp // for case-sensitive filesystems +#endif // native Unix + +int main(int argc, CARGV argv) +{ + multi_argv = argv; + multi_argc = argc; + + if (!compare(basename((char*)*argv), "vlmcsd")) + return server_main(argc, argv); + + if (!compare(basename((char*)*argv), "vlmcs")) + return client_main(argc, argv); + + #ifdef _WIN32 + if (!compare(basename((char*)*argv), "vlmcsd.exe")) + return server_main(argc, argv); + + if (!compare(basename((char*)*argv), "vlmcs.exe")) + return client_main(argc, argv); + #endif // _WIN32 + + if (argc > 1) + { + if (!strcmp((char*)argv[1],"vlmcsd")) + return server_main(argc - 1, argv + 1); + + if (!strcmp((char*)argv[1],"vlmcs")) + return client_main(argc - 1, argv + 1); + } + + errorout( + "vlmcsdmulti %s\n\n" + "Usage:\n" + "\t%s vlmcsd []\n" + "\t%s vlmcs []\n\n", + Version, *argv, *argv + ); + + return !0; +} +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "crypto.h" +#include "endian.h" +#include + +const BYTE AesKeyV4[] = { + 0x05, 0x3D, 0x83, 0x07, 0xF9, 0xE5, 0xF0, 0x88, 0xEB, 0x5E, 0xA6, 0x68, 0x6C, 0xF0, 0x37, 0xC7, 0xE4, 0xEF, 0xD2, 0xD6}; + +const BYTE AesKeyV5[] = { + 0xCD, 0x7E, 0x79, 0x6F, 0x2A, 0xB2, 0x5D, 0xCB, 0x55, 0xFF, 0xC8, 0xEF, 0x83, 0x64, 0xC4, 0x70 }; + +const BYTE AesKeyV6[] = { + 0xA9, 0x4A, 0x41, 0x95, 0xE2, 0x01, 0x43, 0x2D, 0x9B, 0xCB, 0x46, 0x04, 0x05, 0xD8, 0x4A, 0x21 }; + +static const BYTE SBox[] = { + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16 +}; + + +void XorBlock(const BYTE *const in, const BYTE *out) // Ensure that this is always 32 bit aligned +{ + /*UAA64( out, 0 ) ^= UAA64( in, 0 ); + UAA64( out, 1 ) ^= UAA64( in, 1 );*/ + + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_WORDS; i++) + { + ((DWORD*)out)[i] ^= ((DWORD*)in)[i]; + } +} + +#define AddRoundKey(d, rk) XorBlock((const BYTE *)rk, (const BYTE *)d) + +#define Mul2(word) (((word & 0x7f7f7f7f) << 1) ^ (((word & 0x80808080) >> 7) * 0x1b)) +#define Mul3(word) (Mul2(word) ^ word) +#define Mul4(word) (Mul2(Mul2(word))) +#define Mul8(word) (Mul2(Mul2(Mul2(word)))) +#define Mul9(word) (Mul8(word) ^ word) +#define MulB(word) (Mul8(word) ^ Mul3(word)) +#define MulD(word) (Mul8(word) ^ Mul4(word) ^ word) +#define MulE(word) (Mul8(word) ^ Mul4(word) ^ Mul2(word)) + +//32 bit Galois Multiplication (generates bigger code than Macros) +/*static DWORD Mul(DWORD x, DWORD y) +{ + DWORD result = x, yTemp = y, log2; + + if (!y) return 0; + + for (log2 = 0; yTemp >>= 1; log2++ ) + { + result = Mul2(result); + } + + return result ^ Mul(x, y - (1 << log2)); +}*/ + + +void MixColumnsR(BYTE *restrict state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + #if defined(_CRYPTO_OPENSSL) && defined(_OPENSSL_SOFTWARE) && defined(_USE_AES_FROM_OPENSSL) //Always byte swap regardless of endianess + DWORD word = BS32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = BS32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #else + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(MulE(word) ^ ROR32(MulB(word), 8) ^ ROR32(MulD(word), 16) ^ ROR32(Mul9(word), 24)); + #endif + } +} + + +static DWORD SubDword(DWORD v) +{ + BYTE *b = (BYTE *)&v; + uint_fast8_t i = 0; + + for (; i < sizeof(DWORD); i++) b[i] = SBox[b[i]]; + + return v; +} + + +void AesInitKey(AesCtx *Ctx, const BYTE *Key, int_fast8_t IsV6, int RijndaelKeyBytes) +{ + int RijndaelKeyDwords = RijndaelKeyBytes / sizeof(DWORD); + Ctx->rounds = (uint_fast8_t)(RijndaelKeyDwords + 6); + + static const DWORD RCon[] = { + 0x00000000, 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000 }; + + uint_fast8_t i; + DWORD temp; + + memcpy(Ctx->Key, Key, RijndaelKeyBytes); + + for ( i = RijndaelKeyDwords; i < ( Ctx->rounds + 1 ) << 2; i++ ) + { + temp = Ctx->Key[ i - 1 ]; + + if ( ( i % RijndaelKeyDwords ) == 0 ) + temp = BE32( SubDword( ROR32( BE32(temp), 24) ) ^ RCon[ i / RijndaelKeyDwords ] ); + + Ctx->Key[ i ] = Ctx->Key[ i - RijndaelKeyDwords ] ^ temp; + } + + if ( IsV6 ) + { + BYTE *_p = (BYTE *)Ctx->Key; + + _p[ 4 * 16 ] ^= 0x73; + _p[ 6 * 16 ] ^= 0x09; + _p[ 8 * 16 ] ^= 0xE4; + } +} + + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) || defined(_OPENSSL_SOFTWARE) +static void SubBytes(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBox[ block[i] ]; +} + + +static void ShiftRows(BYTE *state) +{ + BYTE bIn[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(bIn, state, AES_BLOCK_BYTES); + for (i = 0; i < AES_BLOCK_BYTES; i++) + { + state[i] = bIn[(i + ((i & 3) << 2)) & 0xf]; + } +}; + + +static void MixColumns(BYTE *state) +{ + uint_fast8_t i = 0; + for (; i < AES_BLOCK_WORDS; i++) + { + DWORD word = LE32(((DWORD *) state)[i]); + ((DWORD *) state)[i] = LE32(Mul2(word) ^ ROR32(Mul3(word), 8) ^ ROR32(word, 16) ^ ROR32(word, 24)); + } +} + + +void AesEncryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + for ( i = 0 ;; i += 4 ) + { + AddRoundKey(block, &Ctx->Key[ i ]); + SubBytes(block); + ShiftRows(block); + + if ( i >= ( Ctx->rounds - 1 ) << 2 ) break; + + MixColumns(block); + } + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); +} + + +void AesCmacV4(BYTE *Message, size_t MessageSize, BYTE *MacOut) +{ + size_t i; + BYTE mac[AES_BLOCK_BYTES]; + AesCtx Ctx; + + AesInitKey(&Ctx, AesKeyV4, FALSE, V4_KEY_BYTES); + + memset(mac, 0, sizeof(mac)); + memset(Message + MessageSize, 0, AES_BLOCK_BYTES); + Message[MessageSize] = 0x80; + + for (i = 0; i <= MessageSize; i += AES_BLOCK_BYTES) + { + XorBlock(Message + i, mac); + AesEncryptBlock(&Ctx, mac); + } + + memcpy(MacOut, mac, AES_BLOCK_BYTES); +} +#endif + +#if !defined(_CRYPTO_OPENSSL) || !defined(_USE_AES_FROM_OPENSSL) + +static const BYTE SBoxR[] = { + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D +}; + + +static void ShiftRowsR(BYTE *state) +{ + BYTE b[AES_BLOCK_BYTES]; + uint_fast8_t i; + + memcpy(b, state, AES_BLOCK_BYTES); + + for (i = 0; i < AES_BLOCK_BYTES; i++) + state[i] = b[(i - ((i & 0x3) << 2)) & 0xf]; +} + + +static void SubBytesR(BYTE *block) +{ + uint_fast8_t i; + + for (i = 0; i < AES_BLOCK_BYTES; i++) + block[i] = SBoxR[ block[i] ]; +} + + +void AesEncryptCbc(const AesCtx *const Ctx, BYTE *restrict iv, BYTE *restrict data, size_t *restrict len) +{ + // Pad up to blocksize inclusive + size_t i; + uint_fast8_t pad = (~*len & (AES_BLOCK_BYTES - 1)) + 1; + + #if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 8) // gcc 4.8 memset bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56977 + for (i = 0; i < pad; i++) data[*len + i] = pad; + #else + memset(data + *len, pad, pad); + #endif + *len += pad; + + if ( iv ) XorBlock(iv, data); + AesEncryptBlock(Ctx, data); + + for (i = *len - AES_BLOCK_BYTES; i; i -= AES_BLOCK_BYTES) + { + XorBlock(data, data + AES_BLOCK_BYTES); + data += AES_BLOCK_BYTES; + AesEncryptBlock(Ctx, data); + } +} + + +void AesDecryptBlock(const AesCtx *const Ctx, BYTE *block) +{ + uint_fast8_t i; + + AddRoundKey(block, &Ctx->Key[ Ctx->rounds << 2 ]); + + for ( i = ( Ctx->rounds - 1 ) << 2 ;; i -= 4 ) + { + ShiftRowsR(block); + SubBytesR(block); + AddRoundKey(block, &Ctx->Key[ i ]); + + if ( i == 0 ) break; + + MixColumnsR(block); + } +} + + +void AesDecryptCbc(const AesCtx *const Ctx, BYTE *iv, BYTE *data, size_t len) +{ + BYTE *cc; + + for (cc = data + len - AES_BLOCK_BYTES; cc > data; cc -= AES_BLOCK_BYTES) + { + AesDecryptBlock(Ctx, cc); + XorBlock(cc - AES_BLOCK_BYTES, cc); + } + + AesDecryptBlock(Ctx, cc); + if ( iv ) XorBlock(iv, cc); +} +#endif // _CRYPTO_OPENSSL || OPENSSL_VERSION_NUMBER < 0x10000000L +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif + +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "kms.h" +#include "shared_globals.h" +#include "helpers.h" + +#define FRIENDLY_NAME_WINDOWS "Windows" +#define FRIENDLY_NAME_OFFICE2010 "Office 2010" +#define FRIENDLY_NAME_OFFICE2013 "Office" + +#ifndef NO_BASIC_PRODUCT_LIST +// Do not change the order of this list. Append items as necessary +const KmsIdList ProductList[] = { + /* 000 */ { { 0x212a64dc, 0x43b1, 0x4d3d, { 0xa3, 0x0c, 0x2f, 0xc6, 0x9d, 0x20, 0x95, 0xc6 } } /*"212a64dc-43b1-4d3d-a30c-2fc69d2095c6"*/, "Vista", EPID_WINDOWS, 4, 25 }, + /* 001 */ { { 0x7fde5219, 0xfbfa, 0x484a, { 0x82, 0xc9, 0x34, 0xd1, 0xad, 0x53, 0xe8, 0x56 } } /*"7fde5219-fbfa-484a-82c9-34d1ad53e856"*/, "Windows 7", EPID_WINDOWS, 4, 25 }, + /* 002 */ { { 0x3c40b358, 0x5948, 0x45af, { 0x92, 0x3b, 0x53, 0xd2, 0x1f, 0xcc, 0x7e, 0x79 } } /*"3c40b358-5948-45af-923b-53d21fcc7e79"*/, "Windows 8 VL", EPID_WINDOWS, 5, 25 }, + /* 003 */ { { 0x5f94a0bb, 0xd5a0, 0x4081, { 0xa6, 0x85, 0x58, 0x19, 0x41, 0x8b, 0x2f, 0xe0 } } /*"5f94a0bb-d5a0-4081-a685-5819418b2fe0"*/, "Windows Preview", EPID_WINDOWS, 6, 25 }, + /* 004 */ { { 0xbbb97b3b, 0x8ca4, 0x4a28, { 0x97, 0x17, 0x89, 0xfa, 0xbd, 0x42, 0xc4, 0xac } } /*"bbb97b3b-8ca4-4a28-9717-89fabd42c4ac"*/, "Windows 8 Retail", EPID_WINDOWS, 5, 25 }, + /* 005 */ { { 0xcb8fc780, 0x2c05, 0x495a, { 0x97, 0x10, 0x85, 0xaf, 0xff, 0xc9, 0x04, 0xd7 } } /*"cb8fc780-2c05-495a-9710-85afffc904d7"*/, "Windows 8.1 VL", EPID_WINDOWS, 6, 25 }, + /* 006 */ { { 0x6d646890, 0x3606, 0x461a, { 0x86, 0xab, 0x59, 0x8b, 0xb8, 0x4a, 0xce, 0x82 } } /*"6d646890-3606-461a-86ab-598bb84ace82"*/, "Windows 8.1 Retail", EPID_WINDOWS, 6, 25 }, + /* 007 */ { { 0x33e156e4, 0xb76f, 0x4a52, { 0x9f, 0x91, 0xf6, 0x41, 0xdd, 0x95, 0xac, 0x48 } } /*"33e156e4-b76f-4a52-9f91-f641dd95ac48"*/, "Windows 2008 A", EPID_WINDOWS, 4, 5 }, + /* 008 */ { { 0x8fe53387, 0x3087, 0x4447, { 0x89, 0x85, 0xf7, 0x51, 0x32, 0x21, 0x5a, 0xc9 } } /*"8fe53387-3087-4447-8985-f75132215ac9"*/, "Windows 2008 B", EPID_WINDOWS, 4, 5 }, + /* 009 */ { { 0x8a21fdf3, 0xcbc5, 0x44eb, { 0x83, 0xf3, 0xfe, 0x28, 0x4e, 0x66, 0x80, 0xa7 } } /*"8a21fdf3-cbc5-44eb-83f3-fe284e6680a7"*/, "Windows 2008 C", EPID_WINDOWS, 4, 5 }, + /* 010 */ { { 0x0fc6ccaf, 0xff0e, 0x4fae, { 0x9d, 0x08, 0x43, 0x70, 0x78, 0x5b, 0xf7, 0xed } } /*"0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed"*/, "Windows 2008 R2 A", EPID_WINDOWS, 4, 5 }, + /* 011 */ { { 0xca87f5b6, 0xcd46, 0x40c0, { 0xb0, 0x6d, 0x8e, 0xcd, 0x57, 0xa4, 0x37, 0x3f } } /*"ca87f5b6-cd46-40c0-b06d-8ecd57a4373f"*/, "Windows 2008 R2 B", EPID_WINDOWS, 4, 5 }, + /* 012 */ { { 0xb2ca2689, 0xa9a8, 0x42d7, { 0x93, 0x8d, 0xcf, 0x8e, 0x9f, 0x20, 0x19, 0x58 } } /*"b2ca2689-a9a8-42d7-938d-cf8e9f201958"*/, "Windows 2008 R2 C", EPID_WINDOWS, 4, 5 }, + /* 013 */ { { 0x8665cb71, 0x468c, 0x4aa3, { 0xa3, 0x37, 0xcb, 0x9b, 0xc9, 0xd5, 0xea, 0xac } } /*"8665cb71-468c-4aa3-a337-cb9bc9d5eaac"*/, "Windows 2012", EPID_WINDOWS, 5, 5 }, + /* 014 */ { { 0x8456EFD3, 0x0C04, 0x4089, { 0x87, 0x40, 0x5b, 0x72, 0x38, 0x53, 0x5a, 0x65 } } /*"8456EFD3-0C04-4089-8740-5B7238535A65"*/, "Windows 2012 R2", EPID_WINDOWS, 6, 5 }, + /* 015 */ { { 0xe85af946, 0x2e25, 0x47b7, { 0x83, 0xe1, 0xbe, 0xbc, 0xeb, 0xea, 0xc6, 0x11 } } /*"e85af946-2e25-47b7-83e1-bebcebeac611"*/, "Office 2010", EPID_OFFICE2010, 4, 5 }, + /* 016 */ { { 0xe6a6f1bf, 0x9d40, 0x40c3, { 0xaa, 0x9f, 0xc7, 0x7b, 0xa2, 0x15, 0x78, 0xc0 } } /*"e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0"*/, "Office 2013", EPID_OFFICE2013, 6, 5 }, + /* 017 */ { { 0x6d5f5270, 0x31ac, 0x433e, { 0xb9, 0x0a, 0x39, 0x89, 0x29, 0x23, 0xc6, 0x57 } } /*"6d5f5270-31ac-433e-b90a-39892923c657"*/, "Windows Server Preview", EPID_WINDOWS, 6, 5 }, + /* 018 */ { { 0x85b5f61b, 0x320b, 0x4be3, { 0x81, 0x4a, 0xb7, 0x6b, 0x2b, 0xfa, 0xfc, 0x82 } } /*"85b5f61b-320b-4be3-814a-b76b2bfafc82"*/, "Office 2016", EPID_OFFICE2013, 6, 5 }, + /* 019 */ { { 0x58e2134f, 0x8e11, 0x4d17, { 0x9c, 0xb2, 0x91, 0x06, 0x9c, 0x15, 0x11, 0x48 } } /*"58e2134f-8e11-4d17-9cb2-91069c151148"*/, "Windows 10 VL", EPID_WINDOWS, 6, 25 }, + /* 020 */ { { 0xe1c51358, 0xfe3e, 0x4203, { 0xa4, 0xa2, 0x3b, 0x6b, 0x20, 0xc9, 0x73, 0x4e } } /*"e1c51358-fe3e-4203-a4a2-3b6b20c9734e"*/, "Windows 10 Retail", EPID_WINDOWS, 6, 25 }, + /* 021 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; +#endif + +// Application ID is used by KMS server to count KeyManagementServiceCurrentCount +// Do not change the order of this list. Append items as necessary +const KmsIdList AppList[] = { + /* 000 */ { { 0x55c92734, 0xd682, 0x4d71, { 0x98, 0x3e, 0xd6, 0xec, 0x3f, 0x16, 0x05, 0x9f } } /*"55C92734-D682-4D71-983E-D6EC3F16059F"*/, FRIENDLY_NAME_WINDOWS, EPID_WINDOWS, 0, 0}, + /* 001 */ { { 0x59A52881, 0xa989, 0x479d, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"59A52881-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2010, EPID_OFFICE2010, 0, 0}, + /* 002 */ { { 0x0FF1CE15, 0xA989, 0x479D, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"0FF1CE15-A989-479D-AF46-F275C6370663"*/, FRIENDLY_NAME_OFFICE2013, EPID_OFFICE2013, 0, 0}, + /* 003 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + +#ifndef NO_EXTENDED_PRODUCT_LIST +const KmsIdList ExtendedProductList [] = { + + // Windows Server + + { { 0xad2542d4, 0x9154, 0x4c6d, { 0x8a, 0x44, 0x30, 0xf1, 0x1e, 0xe9, 0x69, 0x89, } } /*ad2542d4-9154-4c6d-8a44-30f11ee96989*/, "Windows Server 2008 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x2401e3d0, 0xc50a, 0x4b58, { 0x87, 0xb2, 0x7e, 0x79, 0x4b, 0x7d, 0x26, 0x07, } } /*2401e3d0-c50a-4b58-87b2-7e794b7d2607*/, "Windows Server 2008 Standard V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } } /*68b6e220-cf09-466b-92d3-45cd964b9509*/, "Windows Server 2008 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xfd09ef77, 0x5647, 0x4eff, { 0x80, 0x9c, 0xaf, 0x2b, 0x64, 0x65, 0x9a, 0x45, } } /*fd09ef77-5647-4eff-809c-af2b64659a45*/, "Windows Server 2008 Datacenter V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } } /*c1af4d90-d1bc-44ca-85d4-003ba33db3b9*/, "Windows Server 2008 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0x8198490a, 0xadd0, 0x47b2, { 0xb3, 0xba, 0x31, 0x6b, 0x12, 0xd6, 0x47, 0xb4, } } /*8198490a-add0-47b2-b3ba-316b12d647b4*/, "Windows Server 2008 Enterprise V", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B }, + { { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } } /*ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b*/, "Windows Server 2008 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A }, + { { 0x7afb1156, 0x2c1d, 0x40fc, { 0xb2, 0x60, 0xaa, 0xb7, 0x44, 0x2b, 0x62, 0xfe, } } /*7afb1156-2c1d-40fc-b260-aab7442b62fe*/, "Windows Server 2008 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C }, + { { 0x68531fb9, 0x5511, 0x4989, { 0x97, 0xbe, 0xd1, 0x1a, 0x0f, 0x55, 0x63, 0x3f, } } /*68531fb9-5511-4989-97be-d11a0f55633f*/, "Windows Server 2008 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } } /*7482e61b-c589-4b7f-8ecc-46d455ac3b87*/, "Windows Server 2008 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } } /*620e2b3d-09e7-42fd-802a-17a13652fe7a*/, "Windows Server 2008 R2 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B }, + { { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } } /*a78b8bd9-8017-4df5-b86a-09f756affa7c*/, "Windows Server 2008 R2 Web", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A }, + { { 0xcda18cf3, 0xc196, 0x46ad, { 0xb2, 0x89, 0x60, 0xc0, 0x72, 0x86, 0x99, 0x94, } } /*cda18cf3-c196-46ad-b289-60c072869994*/, "Windows Server 2008 R2 Compute Cluster", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C }, + { { 0xd3643d60, 0x0c42, 0x412d, { 0xa7, 0xd6, 0x52, 0xe6, 0x63, 0x53, 0x27, 0xf6, } } /*d3643d60-0c42-412d-a7d6-52e6635327f6*/, "Windows Server 2012 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } } /*f0f5ec41-0d55-4732-af02-440a44a3cf0f*/, "Windows Server 2012 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x95fd1c83, 0x7df5, 0x494a, { 0xbe, 0x8b, 0x13, 0x00, 0xe1, 0xc9, 0xd1, 0xcd, } } /*95fd1c83-7df5-494a-be8b-1300e1c9d1cd*/, "Windows Server 2012 MultiPoint Premium", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x7d5486c7, 0xe120, 0x4771, { 0xb7, 0xf1, 0x7b, 0x56, 0xc6, 0xd3, 0x17, 0x0c, } } /*7d5486c7-e120-4771-b7f1-7b56c6d3170c*/, "Windows Server 2012 MultiPoint Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 }, + { { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } } /*00091344-1ea4-4f37-b789-01750ba6988c*/, "Windows Server 2012 R2 Datacenter", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb3ca044e, 0xa358, 0x4d68, { 0x98, 0x83, 0xaa, 0xa2, 0x94, 0x1a, 0xca, 0x99, } } /*b3ca044e-a358-4d68-9883-aaa2941aca99*/, "Windows Server 2012 R2 Standard", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xb743a2be, 0x68d4, 0x4dd3, { 0xaf, 0x32, 0x92, 0x42, 0x5b, 0x7b, 0xb6, 0x23, } } /*b743a2be-68d4-4dd3-af32-92425b7bb623*/, "Windows Server 2012 R2 Cloud Storage", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0x21db6ba4, 0x9a7b, 0x4a14, { 0x9e, 0x29, 0x64, 0xa6, 0x0c, 0x59, 0x30, 0x1d, } } /*21db6ba4-9a7b-4a14-9e29-64a60c59301d*/, "Windows Server 2012 R2 Essentials", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 }, + { { 0xba947c44, 0xd19d, 0x4786, { 0xb6, 0xae, 0x22, 0x77, 0x0b, 0xc9, 0x4c, 0x54, } } /*ba947c44-d19d-4786-b6ae-22770bc94c54*/, "Windows Server 2016 Datacenter Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_SRV_BETA }, + + + // Windows 10 Preview +# ifdef INCLUDE_BETAS + { { 0x6496e59d, 0x89dc, 0x49eb, { 0xa3, 0x53, 0x09, 0xce, 0xb9, 0x40, 0x48, 0x45, } } /*6496e59d-89dc-49eb-a353-09ceb9404845*/, "Windows 10 Core Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xa4383e6b, 0xdada, 0x423d, { 0xa4, 0x3d, 0xf2, 0x56, 0x78, 0x42, 0x96, 0x76, } } /*a4383e6b-dada-423d-a43d-f25678429676*/, "Windows 10 Professional Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcf59a07b, 0x1a2a, 0x4be0, { 0xbf, 0xe0, 0x42, 0x3b, 0x58, 0x23, 0xe6, 0x63, } } /*cf59a07b-1a2a-4be0-bfe0-423b5823e663*/, "Windows 10 Professional WMC Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0xcde952c7, 0x2f96, 0x4d9d, { 0x8f, 0x2b, 0x2d, 0x34, 0x9f, 0x64, 0xfc, 0x51, } } /*cde952c7-2f96-4d9d-8f2b-2d349f64fc51*/, "Windows 10 Enterprise Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + + + // Windows 10 + + { { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } } /*73111121-5638-40f6-bc11-f1d7b0d64300*/, "Windows 10 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xe272e3e2, 0x732f, 0x4c65, { 0xa8, 0xf0, 0x48, 0x47, 0x47, 0xd0, 0xd9, 0x47, } } /*e272e3e2-732f-4c65-a8f0-484747d0d947*/, "Windows 10 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x7b51a46c, 0x0c04, 0x4e8f, { 0x9a, 0xf4, 0x84, 0x96, 0xcc, 0xa9, 0x0d, 0x5e, } } /*7b51a46c-0c04-4e8f-9af4-8496cca90d5e*/, "Windows 10 Enterprise LTSB", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x87b838b7, 0x41b6, 0x4590, { 0x83, 0x18, 0x57, 0x97, 0x95, 0x1d, 0x85, 0x29, } } /*87b838b7-41b6-4590-8318-5797951d8529*/, "Windows 10 Enterprise LTSB N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0xe0c42288, 0x980c, 0x4788, { 0xa0, 0x14, 0xc0, 0x80, 0xd2, 0xe1, 0x92, 0x6e, } } /*e0c42288-980c-4788-a014-c080d2e1926e*/, "Windows 10 Education", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x3c102355, 0xd027, 0x42c6, { 0xad, 0x23, 0x2e, 0x7e, 0xf8, 0xa0, 0x25, 0x85, } } /*3c102355-d027-42c6-ad23-2e7ef8a02585*/, "Windows 10 Education N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x2de67392, 0xb7a7, 0x462a, { 0xb1, 0xca, 0x10, 0x8d, 0xd1, 0x89, 0xf5, 0x88, } } /*2de67392-b7a7-462a-b1ca-108dd189f588*/, "Windows 10 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL }, + { { 0xa80b5abf, 0x75ad, 0x428b, { 0xb0, 0x5d, 0xa4, 0x7d, 0x2d, 0xff, 0xee, 0xbf, } } /*a80b5abf-76ad-428b-b05d-a47d2dffeebf*/, "Windows 10 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL}, + { { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } } /*58e97c99-f377-4ef1-81d5-4ad5522b5fd8*/, "Windows 10 Home", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0x7b9e1751, 0xa8da, 0x4f75, { 0x95, 0x60, 0x5f, 0xad, 0xfe, 0x3d, 0x8e, 0x38, } } /*7b9e1751-a8da-4f75-9560-5fadfe3d8e38*/, "Windows 10 Home N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xcd918a57, 0xa41b, 0x4c82, { 0x8d, 0xce, 0x1a, 0x53, 0x8e, 0x22, 0x1a, 0x83, } } /*cd918a57-a41b-4c82-8dce-1a538e221a83*/, "Windows 10 Home Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + { { 0xa9107544, 0xf4a0, 0x4053, { 0xa9, 0x6a, 0x14, 0x79, 0xab, 0xde, 0xf9, 0x12, } } /*a9107544-f4a0-4053-a96a-1479abdef912*/, "Windows 10 Home Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL}, + + + // Windows 8.x + +# ifdef INCLUDE_BETAS + { { 0x2B9C337F, 0x7A1D, 0x4271, { 0x90, 0xA3, 0xC6, 0x85, 0x5A, 0x2B, 0x8A, 0x1C, } } /*2B9C337F-7A1D-4271-90A3-C6855A2B8A1C*/, "Windows 8.x Preview", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, + { { 0x631EAD72, 0xA8AB, 0x4DF8, { 0xBB, 0xDF, 0x37, 0x20, 0x29, 0x98, 0x9B, 0xDD, } } /*631EAD72-A8AB-4DF8-BBDF-372029989BDD*/, "Windows 8.x Preview ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA }, +# endif + { { 0x81671aaf, 0x79d1, 0x4eb1, { 0xb0, 0x04, 0x8c, 0xbb, 0xe1, 0x73, 0xaf, 0xea, } } /*81671aaf-79d1-4eb1-b004-8cbbe173afea*/, "Windows 8.1 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x113e705c, 0xfa49, 0x48a4, { 0xbe, 0xea, 0x7d, 0xd8, 0x79, 0xb4, 0x6b, 0x14, } } /*113e705c-fa49-48a4-beea-7dd879b46b14*/, "Windows 8.1 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x096ce63d, 0x4fac, 0x48a9, { 0x82, 0xa9, 0x61, 0xae, 0x9e, 0x80, 0x0e, 0x5f, } } /*096ce63d-4fac-48a9-82a9-61ae9e800e5f*/, "Windows 8.1 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } } /*c06b6981-d7fd-4a35-b7b4-054742b7af67*/, "Windows 8.1 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0x7476d79f, 0x8e48, 0x49b4, { 0xab, 0x63, 0x4d, 0x0b, 0x81, 0x3a, 0x16, 0xe4, } } /*7476d79f-8e48-49b4-ab63-4d0b813a16e4*/, "Windows 8.1 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } } /*fe1c3238-432a-43a1-8e25-97e7d1ef10f3*/, "Windows 8.1 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0x78558a64, 0xdc19, 0x43fe, { 0xa0, 0xd0, 0x80, 0x75, 0xb2, 0xa3, 0x70, 0xa3, } } /*78558a64-dc19-43fe-a0d0-8075b2a370a3*/, "Windows 8.1 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xffee456a, 0xcd87, 0x4390, { 0x8e, 0x07, 0x16, 0x14, 0x6c, 0x67, 0x2f, 0xd0, } } /*ffee456a-cd87-4390-8e07-16146c672fd0*/, "Windows 8.1 Core ARM", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xc72c6a1d, 0xf252, 0x4e7e, { 0xbd, 0xd1, 0x3f, 0xca, 0x34, 0x2a, 0xcb, 0x35, } } /*c72c6a1d-f252-4e7e-bdd1-3fca342acb35*/, "Windows 8.1 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xdb78b74f, 0xef1c, 0x4892, { 0xab, 0xfe, 0x1e, 0x66, 0xb8, 0x23, 0x1d, 0xf6, } } /*db78b74f-ef1c-4892-abfe-1e66b8231df6*/, "Windows 8.1 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xe9942b32, 0x2e55, 0x4197, { 0xb0, 0xbd, 0x5f, 0xf5, 0x8c, 0xba, 0x88, 0x60, } } /*e9942b32-2e55-4197-b0bd-5ff58cba8860*/, "Windows 8.1 Core Connected", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xc6ddecd6, 0x2354, 0x4c19, { 0x90, 0x9b, 0x30, 0x6a, 0x30, 0x58, 0x48, 0x4e, } } /*c6ddecd6-2354-4c19-909b-306a3058484e*/, "Windows 8.1 Core Connected N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xb8f5e3a3, 0xed33, 0x4608, { 0x81, 0xe1, 0x37, 0xd6, 0xc9, 0xdc, 0xfd, 0x9c, } } /*b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c*/, "Windows 8.1 Core Connected Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xba998212, 0x460a, 0x44db, { 0xbf, 0xb5, 0x71, 0xbf, 0x09, 0xd1, 0xc6, 0x8b, } } /*ba998212-460a-44db-bfb5-71bf09d1c68b*/, "Windows 8.1 Core Connected Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xe58d87b5, 0x8126, 0x4580, { 0x80, 0xfb, 0x86, 0x1b, 0x22, 0xf7, 0x92, 0x96, } } /*e58d87b5-8126-4580-80fb-861b22f79296*/, "Windows 8.1 Professional Student", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xcab491c7, 0xa918, 0x4f60, { 0xb5, 0x02, 0xda, 0xb7, 0x5e, 0x33, 0x4f, 0x40, } } /*cab491c7-a918-4f60-b502-dab75e334f40*/, "Windows 8.1 Professional Student N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL }, + { { 0xa00018a3, 0xf20f, 0x4632, { 0xbf, 0x7c, 0x8d, 0xaa, 0x53, 0x51, 0xc9, 0x14, } } /*a00018a3-f20f-4632-bf7c-8daa5351c914*/, "Windows 8 Professional WMC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } } /*a98bcd6d-5343-4603-8afe-5908e4611112*/, "Windows 8 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xebf245c1, 0x29a8, 0x4daf, { 0x9c, 0xb1, 0x38, 0xdf, 0xc6, 0x08, 0xa8, 0xc8, } } /*ebf245c1-29a8-4daf-9cb1-38dfc608a8c8*/, "Windows 8 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0x458e1bec, 0x837a, 0x45f6, { 0xb9, 0xd5, 0x92, 0x5e, 0xd5, 0xd2, 0x99, 0xde, } } /*458e1bec-837a-45f6-b9d5-925ed5d299de*/, "Windows 8 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xe14997e7, 0x800a, 0x4cf7, { 0xad, 0x10, 0xde, 0x4b, 0x45, 0xb5, 0x78, 0xdb, } } /*e14997e7-800a-4cf7-ad10-de4b45b578db*/, "Windows 8 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL }, + { { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } } /*c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60*/, "Windows 8 Core", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x197390a0, 0x65f6, 0x4a95, { 0xbd, 0xc4, 0x55, 0xd5, 0x8a, 0x3b, 0x02, 0x53, } } /*197390a0-65f6-4a95-bdc4-55d58a3b0253*/, "Windows 8 Core N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x9d5584a2, 0x2d85, 0x419a, { 0x98, 0x2c, 0xa0, 0x08, 0x88, 0xbb, 0x9d, 0xdf, } } /*9d5584a2-2d85-419a-982c-a00888bb9ddf*/, "Windows 8 Core Country Specific", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + { { 0x8860fcd4, 0xa77b, 0x4a20, { 0x90, 0x45, 0xa1, 0x50, 0xff, 0x11, 0xd6, 0x09, } } /*8860fcd4-a77b-4a20-9045-a150ff11d609*/, "Windows 8 Core Single Language", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL }, + + + // Windows 7 + + { { 0xae2ee509, 0x1b34, 0x41c0, { 0xac, 0xb7, 0x6d, 0x46, 0x50, 0x16, 0x89, 0x15, } } /*ae2ee509-1b34-41c0-acb7-6d4650168915*/, "Windows 7 Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x1cb6d605, 0x11b3, 0x4e14, { 0xbb, 0x30, 0xda, 0x91, 0xc8, 0xe3, 0x98, 0x3a, } } /*1cb6d605-11b3-4e14-bb30-da91c8e3983a*/, "Windows 7 Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } } /*b92e9980-b9d5-4821-9c94-140f632f6312*/, "Windows 7 Professional", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x54a09a0d, 0xd57b, 0x4c10, { 0x8b, 0x69, 0xa8, 0x42, 0xd6, 0x59, 0x0a, 0xd5, } } /*54a09a0d-d57b-4c10-8b69-a842d6590ad5*/, "Windows 7 Professional N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + + + // Windows Vista + + { { 0xcfd8ff08, 0xc0d7, 0x452b, { 0x9f, 0x60, 0xef, 0x5c, 0x70, 0xc3, 0x20, 0x94, } } /*cfd8ff08-c0d7-452b-9f60-ef5c70c32094*/, "Windows Vista Enterprise", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0xd4f54950, 0x26f2, 0x4fb4, { 0xba, 0x21, 0xff, 0xab, 0x16, 0xaf, 0xca, 0xde, } } /*d4f54950-26f2-4fb4-ba21-ffab16afcade*/, "Windows Vista Enterprise N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } } /*4f3d1606-3fea-4c01-be3c-8d671c401e3b*/, "Windows Vista Business", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + { { 0x2c682dc2, 0x8b68, 0x4f63, { 0xa1, 0x65, 0xae, 0x29, 0x1d, 0x4c, 0xf1, 0x38, } } /*2c682dc2-8b68-4f63-a165-ae291d4cf138*/, "Windows Vista Business N", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA }, + + + // Windows Embedded + + { { 0xaa6dd3aa, 0xc2b4, 0x40e2, { 0xa5, 0x44, 0xa6, 0xbb, 0xb3, 0xf5, 0xc3, 0x95, } } /*aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395*/, "Windows ThinPC", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0xdb537896, 0x376f, 0x48ae, { 0xa4, 0x92, 0x53, 0xd0, 0x54, 0x77, 0x73, 0xd0, } } /*db537896-376f-48ae-a492-53d0547773d0*/, "Windows Embedded POSReady 7", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 }, + { { 0x0ab82d54, 0x47f4, 0x4acb, { 0x81, 0x8c, 0xcc, 0x5b, 0xf0, 0xec, 0xb6, 0x49, } } /*0ab82d54-47f4-4acb-818c-cc5bf0ecb649*/, "Windows Embedded Industry 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xcd4e2d9f, 0x5059, 0x4a50, { 0xa9, 0x2d, 0x05, 0xd5, 0xbb, 0x12, 0x67, 0xc7, } } /*cd4e2d9f-5059-4a50-a92d-05d5bb1267c7*/, "Windows Embedded Industry E 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + { { 0xf7e88590, 0xdfc7, 0x4c78, { 0xbc, 0xcb, 0x6f, 0x38, 0x65, 0xb9, 0x9d, 0x1a, } } /*f7e88590-dfc7-4c78-bccb-6f3865b99d1a*/, "Windows Embedded Industry A 8.1", EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL }, + + // Office 2010 + + { { 0x8ce7e872, 0x188c, 0x4b98, { 0x9d, 0x90, 0xf8, 0xf9, 0x0b, 0x7a, 0xad, 0x02, } } /*8ce7e872-188c-4b98-9d90-f8f90b7aad02*/, "Office Access 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xcee5d470, 0x6e3b, 0x4fcc, { 0x8c, 0x2b, 0xd1, 0x74, 0x28, 0x56, 0x8a, 0x9f, } } /*cee5d470-6e3b-4fcc-8c2b-d17428568a9f*/, "Office Excel 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x8947d0b8, 0xc33b, 0x43e1, { 0x8c, 0x56, 0x9b, 0x67, 0x4c, 0x05, 0x28, 0x32, } } /*8947d0b8-c33b-43e1-8c56-9b674c052832*/, "Office Groove 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xca6b6639, 0x4ad6, 0x40ae, { 0xa5, 0x75, 0x14, 0xde, 0xe0, 0x7f, 0x64, 0x30, } } /*ca6b6639-4ad6-40ae-a575-14dee07f6430*/, "Office InfoPath 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x09ed9640, 0xf020, 0x400a, { 0xac, 0xd8, 0xd7, 0xd8, 0x67, 0xdf, 0xd9, 0xc2, } } /*09ed9640-f020-400a-acd8-d7d867dfd9c2*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xef3d4e49, 0xa53d, 0x4d81, { 0xa2, 0xb1, 0x2c, 0xa6, 0xc2, 0x55, 0x6b, 0x2c, } } /*ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c*/, "Office Mondo 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xab586f5c, 0x5256, 0x4632, { 0x96, 0x2f, 0xfe, 0xfd, 0x8b, 0x49, 0xe6, 0xf4, } } /*ab586f5c-5256-4632-962f-fefd8b49e6f4*/, "Office OneNote 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xecb7c192, 0x73ab, 0x4ded, { 0xac, 0xf4, 0x23, 0x99, 0xb0, 0x95, 0xd0, 0xcc, } } /*ecb7c192-73ab-4ded-acf4-2399b095d0cc*/, "Office OutLook 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x45593b1d, 0xdfb1, 0x4e91, { 0xbb, 0xfb, 0x2d, 0x5d, 0x0c, 0xe2, 0x22, 0x7a, } } /*45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a*/, "Office PowerPoint 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xdf133ff7, 0xbf14, 0x4f95, { 0xaf, 0xe3, 0x7b, 0x48, 0xe7, 0xe3, 0x31, 0xef, } } /*df133ff7-bf14-4f95-afe3-7b48e7e331ef*/, "Office Project Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x5dc7bf61, 0x5ec9, 0x4996, { 0x9c, 0xcb, 0xdf, 0x80, 0x6a, 0x2d, 0x0e, 0xfe, } } /*5dc7bf61-5ec9-4996-9ccb-df806a2d0efe*/, "Office Project Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xb50c4f75, 0x599b, 0x43e8, { 0x8d, 0xcd, 0x10, 0x81, 0xa7, 0x96, 0x72, 0x41, } } /*b50c4f75-599b-43e8-8dcd-1081a7967241*/, "Office Publisher 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x92236105, 0xbb67, 0x494f, { 0x94, 0xc7, 0x7f, 0x7a, 0x60, 0x79, 0x29, 0xbd, } } /*92236105-bb67-494f-94c7-7f7a607929bd*/, "Office Visio Premium 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xe558389c, 0x83c3, 0x4b29, { 0xad, 0xfe, 0x5e, 0x4d, 0x7f, 0x46, 0xc3, 0x58, } } /*e558389c-83c3-4b29-adfe-5e4d7f46c358*/, "Office Visio Pro 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9ed833ff, 0x4f92, 0x4f36, { 0xb3, 0x70, 0x86, 0x83, 0xa4, 0xf1, 0x32, 0x75, } } /*9ed833ff-4f92-4f36-b370-8683a4f13275*/, "Office Visio Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x2d0882e7, 0xa4e7, 0x423b, { 0x8c, 0xcc, 0x70, 0xd9, 0x1e, 0x01, 0x58, 0xb1, } } /*2d0882e7-a4e7-423b-8ccc-70d91e0158b1*/, "Office Word 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } } /*6f327760-8c5c-417c-9b61-836a98287e0c*/, "Office Professional Plus 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0x9da2a678, 0xfb6b, 0x4e67, { 0xab, 0x84, 0x60, 0xdd, 0x6a, 0x9c, 0x81, 0x9a, } } /*9da2a678-fb6b-4e67-ab84-60dd6a9c819a*/, "Office Standard 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + { { 0xea509e87, 0x07a1, 0x4a45, { 0x9e, 0xdc, 0xeb, 0xa5, 0xa3, 0x9f, 0x36, 0xaf, } } /*ea509e87-07a1-4a45-9edc-eba5a39f36af*/, "Office Small Business Basics 2010", EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 }, + + // Office 2013 + + { { 0x6ee7622c, 0x18d8, 0x4005, { 0x9f, 0xb7, 0x92, 0xdb, 0x64, 0x4a, 0x27, 0x9b, } } /*6ee7622c-18d8-4005-9fb7-92db644a279b*/, "Office Access 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xf7461d52, 0x7c2b, 0x43b2, { 0x87, 0x44, 0xea, 0x95, 0x8e, 0x0b, 0xd0, 0x9a, } } /*f7461d52-7c2b-43b2-8744-ea958e0bd09a*/, "Office Excel 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xa30b8040, 0xd68a, 0x423f, { 0xb0, 0xb5, 0x9c, 0xe2, 0x92, 0xea, 0x5a, 0x8f, } } /*a30b8040-d68a-423f-b0b5-9ce292ea5a8f*/, "Office InfoPath 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x1b9f11e3, 0xc85c, 0x4e1b, { 0xbb, 0x29, 0x87, 0x9a, 0xd2, 0xc9, 0x09, 0xe3, } } /*1b9f11e3-c85c-4e1b-bb29-879ad2c909e3*/, "Office Lync 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xdc981c6b, 0xfc8e, 0x420f, { 0xaa, 0x43, 0xf8, 0xf3, 0x3e, 0x5c, 0x09, 0x23, } } /*dc981c6b-fc8e-420f-aa43-f8f33e5c0923*/, "Office Mondo 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xefe1f3e6, 0xaea2, 0x4144, { 0xa2, 0x08, 0x32, 0xaa, 0x87, 0x2b, 0x65, 0x45, } } /*efe1f3e6-aea2-4144-a208-32aa872b6545*/, "Office OneNote 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x771c3afa, 0x50c5, 0x443f, { 0xb1, 0x51, 0xff, 0x25, 0x46, 0xd8, 0x63, 0xa0, } } /*771c3afa-50c5-443f-b151-ff2546d863a0*/, "Office OutLook 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x8c762649, 0x97d1, 0x4953, { 0xad, 0x27, 0xb7, 0xe2, 0xc2, 0x5b, 0x97, 0x2e, } } /*8c762649-97d1-4953-ad27-b7e2c25b972e*/, "Office PowerPoint 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x4a5d124a, 0xe620, 0x44ba, { 0xb6, 0xff, 0x65, 0x89, 0x61, 0xb3, 0x3b, 0x9a, } } /*4a5d124a-e620-44ba-b6ff-658961b33b9a*/, "Office Project Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x427a28d1, 0xd17c, 0x4abf, { 0xb7, 0x17, 0x32, 0xc7, 0x80, 0xba, 0x6f, 0x07, } } /*427a28d1-d17c-4abf-b717-32c780ba6f07*/, "Office Project Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0x00c79ff1, 0x6850, 0x443d, { 0xbf, 0x61, 0x71, 0xcd, 0xe0, 0xde, 0x30, 0x5f, } } /*00c79ff1-6850-443d-bf61-71cde0de305f*/, "Office Publisher 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xac4efaf0, 0xf81f, 0x4f61, { 0xbd, 0xf7, 0xea, 0x32, 0xb0, 0x2a, 0xb1, 0x17, } } /*ac4efaf0-f81f-4f61-bdf7-ea32b02ab117*/, "Office Visio Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xe13ac10e, 0x75d0, 0x4aff, { 0xa0, 0xcd, 0x76, 0x49, 0x82, 0xcf, 0x54, 0x1c, } } /*e13ac10e-75d0-4aff-a0cd-764982cf541c*/, "Office Visio Pro 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xd9f5b1c6, 0x5386, 0x495a, { 0x88, 0xf9, 0x9a, 0xd6, 0xb4, 0x1a, 0xc9, 0xb3, } } /*d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3*/, "Office Word 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } } /*b322da9c-a2e2-4058-9e4e-f59a6970bd69*/, "Office Professional Plus 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + { { 0xb13afb38, 0xcd79, 0x4ae5, { 0x9f, 0x7f, 0xee, 0xd0, 0x58, 0xd7, 0x50, 0xca, } } /*b13afb38-cd79-4ae5-9f7f-eed058d750ca*/, "Office Standard 2013", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 }, + + // Office 2016 + + { { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } } /*d450596f-894d-49e0-966a-fd39ed4c4c64*/, "Office Professional Plus 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x4f414197, 0x0fc2, 0x4c01, { 0xb6, 0x8a, 0x86, 0xcb, 0xb9, 0xac, 0x25, 0x4c, } } /*4f414197-0fc2-4c01-b68a-86cbb9ac254c*/, "Office Project Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x6bf301c1, 0xb94a, 0x43e9, { 0xba, 0x31, 0xd4, 0x94, 0x59, 0x8c, 0x47, 0xfb, } } /*6bf301c1-b94a-43e9-ba31-d494598c47fb*/, "Office Visio Pro 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x041a06cb, 0xc5b8, 0x4772, { 0x80, 0x9f, 0x41, 0x6d, 0x03, 0xd1, 0x66, 0x54, } } /*041a06cb-c5b8-4772-809f-416d03d16654*/, "Office Publisher 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x67c0fc0c, 0xdeba, 0x401b, { 0xbf, 0x8b, 0x9c, 0x8a, 0xd8, 0x39, 0x58, 0x04, } } /*67c0fc0c-deba-401b-bf8b-9c8ad8395804*/, "Office Access 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x83e04ee1, 0xfa8d, 0x436d, { 0x89, 0x94, 0xd3, 0x1a, 0x86, 0x2c, 0xab, 0x77, } } /*83e04ee1-fa8d-436d-8994-d31a862cab77*/, "Office Skype for Business 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0x9caabccb, 0x61b1, 0x4b4b, { 0x8b, 0xec, 0xd1, 0x0a, 0x3c, 0x3a, 0xc2, 0xce, } } /*9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce*/, "Office Mondo 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xaa2a7821, 0x1827, 0x4c2c, { 0x8f, 0x1d, 0x45, 0x13, 0xa3, 0x4d, 0xda, 0x97, } } /*aa2a7821-1827-4c2c-8f1d-4513a34dda97*/, "Office Visio Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xbb11badf, 0xd8aa, 0x470e, { 0x93, 0x11, 0x20, 0xea, 0xf8, 0x0f, 0xe5, 0xcc, } } /*bb11badf-d8aa-470e-9311-20eaf80fe5cc*/, "Office Word 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xc3e65d36, 0x141f, 0x4d2f, { 0xa3, 0x03, 0xa8, 0x42, 0xee, 0x75, 0x6a, 0x29, } } /*c3e65d36-141f-4d2f-a303-a842ee756a29*/, "Office Excel 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd70b1bba, 0xb893, 0x4544, { 0x96, 0xe2, 0xb7, 0xa3, 0x18, 0x09, 0x1c, 0x33, } } /*d70b1bba-b893-4544-96e2-b7a318091c33*/, "Office Powerpoint 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xd8cace59, 0x33d2, 0x4ac7, { 0x9b, 0x1b, 0x9b, 0x72, 0x33, 0x9c, 0x51, 0xc8, } } /*d8cace59-33d2-4ac7-9b1b-9b72339c51c8*/, "Office OneNote 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xda7ddabc, 0x3fbe, 0x4447, { 0x9e, 0x01, 0x6a, 0xb7, 0x44, 0x0b, 0x4c, 0xd4, } } /*da7ddabc-3fbe-4447-9e01-6ab7440b4cd4*/, "Office Project Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xdedfa23d, 0x6ed1, 0x45a6, { 0x85, 0xdc, 0x63, 0xca, 0xe0, 0x54, 0x6d, 0xe6, } } /*dedfa23d-6ed1-45a6-85dc-63cae0546de6*/, "Office Standard 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xe914ea6e, 0xa5fa, 0x4439, { 0xa3, 0x94, 0xa9, 0xbb, 0x32, 0x93, 0xca, 0x09, } } /*e914ea6e-a5fa-4439-a394-a9bb3293ca09*/, "Office Mondo R 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + { { 0xec9d9265, 0x9d1e, 0x4ed0, { 0x83, 0x8a, 0xcd, 0xc2, 0x0f, 0x25, 0x51, 0xa1, } } /*ec9d9265-9d1e-4ed0-838a-cdc20f2551a1*/, "Office Outlook 2016", EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 }, + + // End marker (necessity should be removed when time permits) + + { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 } +}; + + +// necessary because other .c files cannot access _countof() +__pure ProdListIndex_t getExtendedProductListSize(void) +{ + return _countof(ExtendedProductList) - 1; +} + +__pure ProdListIndex_t getAppListSize(void) +{ + return _countof(AppList); +} + +#endif + +#ifndef NO_RANDOM_EPID +// HostType and OSBuild +static const struct KMSHostOS { uint16_t Type; uint16_t Build; } HostOS[] = +{ + { 55041, 6002 }, // Windows Server 2008 SP2 + { 55041, 7601 }, // Windows Server 2008 R2 SP1 + { 5426, 9200 }, // Windows Server 2012 + { 6401, 9600 }, // Windows Server 2012 R2 + { 3612, 10240}, // Windows Server 2016 +}; + +// GroupID and PIDRange +static const struct PKEYCONFIG { uint16_t GroupID; uint32_t RangeMin; uint32_t RangeMax; } pkeyconfig[] = { + { 206, 152000000, 191999999 }, // Windows Server 2012 KMS Host pkeyconfig + { 206, 271000000, 310999999 }, // Windows Server 2012 R2 KMS Host pkeyconfig + { 96, 199000000, 217999999 }, // Office2010 KMS Host pkeyconfig + { 206, 234000000, 255999999 }, // Office2013 KMS Host pkeyconfig +}; + +// Valid language identifiers to be used in the ePID +static const uint16_t LcidList[] = { + 1078, 1052, 1025, 2049, 3073, 4097, 5121, 6145, 7169, 8193, 9217, 10241, 11265, 12289, 13313, 14337, 15361, 16385, + 1067, 1068, 2092, 1069, 1059, 1093, 5146, 1026, 1027, 1028, 2052, 3076, 4100, 5124, 1050, 4122, 1029, 1030, 1125, 1043, 2067, + 1033, 2057, 3081, 4105, 5129, 6153, 7177, 8201, 9225, 10249, 11273, 12297, 13321, 1061, 1080, 1065, 1035, 1036, 2060, + 3084, 4108, 5132, 6156, 1079, 1110, 1031, 2055, 3079, 4103, 5127, 1032, 1095, 1037, 1081, 1038, 1039, 1057, 1040, 2064, 1041, 1099, + 1087, 1111, 1042, 1088, 1062, 1063, 1071, 1086, 2110, 1100, 1082, 1153, 1102, 1104, 1044, 2068, 1045, 1046, 2070, + 1094, 1131, 2155, 3179, 1048, 1049, 9275, 4155, 5179, 3131, 1083, 2107, 8251, 6203, 7227, 1103, 2074, 6170, 3098, + 7194, 1051, 1060, 1034, 2058, 3082, 4106, 5130, 6154, 7178, 8202, 9226, 10250, 11274, 12298, 13322, 14346, 15370, 16394, + 17418, 18442, 19466, 20490, 1089, 1053, 2077, 1114, 1097, 1092, 1098, 1054, 1074, 1058, 1056, 1091, 2115, 1066, 1106, 1076, 1077 +}; + + +#ifdef _PEDANTIC +uint16_t IsValidLcid(const uint16_t Lcid) +{ + uint16_t i; + + for (i = 0; i < _countof(LcidList); i++) + { + if (Lcid == LcidList[i]) return Lcid; + } + + return 0; +} +#endif // _PEDANTIC +#endif // NO_RANDOM_EPID + + +// Unix time is seconds from 1970-01-01. Should be 64 bits to avoid Year 2035 overflow bug. +// FILETIME is 100 nanoseconds from 1601-01-01. Must be 64 bits. +void getUnixTimeAsFileTime(FILETIME *const ts) +{ + int64_t unixtime = (int64_t)time(NULL); + int64_t *filetime = (int64_t*)ts; + + *filetime = LE64( (unixtime + 11644473600LL) * 10000000LL ); +} + +__pure int64_t fileTimeToUnixTime(const FILETIME *const ts) +{ + return LE64( *((const int64_t *const)ts) ) / 10000000LL - 11644473600LL; +} + + +/* + * Get's a product name with a GUID in host-endian order. + * List can be any list defined above. + */ +const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + for (*i = 0; List[*i].name != NULL; (*i)++) + { + if (IsEqualGUID(guid, &List[*i].guid)) + return List[*i].name; + } + + return "Unknown"; +} + + +/* + * same as getProductnameHE except GUID is in little-endian (network) order + */ +const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + GUID HeGUID; + LEGUID(&HeGUID, guid); + return getProductNameHE(&HeGUID, List, i); + #else + return getProductNameHE(guid, List, i); + #endif +} + + +#ifndef NO_RANDOM_EPID +// formats an int with a fixed number of digits with leading zeros (helper for ePID generation) +static char* itoc(char *const c, const int i, uint_fast8_t digits) +{ + char formatString[8]; + if (digits > 9) digits = 0; + strcpy(formatString,"%"); + + if (digits) + { + formatString[1] = '0'; + formatString[2] = digits | 0x30; + formatString[3] = 0; + } + + strcat(formatString, "u"); + sprintf(c, formatString, i); + return c; +} + +static int getRandomServerType() +{ +# ifndef USE_MSRPC + if (!UseRpcBTFN) +# endif // USE_MSRPC + { + // This isn't possible at all, e.g. KMS host on XP + return rand() % (int)_countof(HostOS); + } +# ifndef USE_MSRPC + else + { + // return 9200/9600/10240 if NDR64 is in use, otherwise 6002/7601 + if (UseRpcNDR64) return (rand() % 3) + 2; + return (rand() % 2); + } +# endif // USE_MSRPC +} + + +/* + * Generates a random ePID + */ +static void generateRandomPid(const int index, char *const szPid, int serverType, int16_t lang) +{ + int clientApp; + char numberBuffer[12]; + + if (serverType < 0 || serverType >= (int)_countof(HostOS)) + { + serverType = getRandomServerType(); + } + + strcpy(szPid, itoc(numberBuffer, HostOS[serverType].Type, 5)); + strcat(szPid, "-"); + + if (index == 2) + clientApp = 3; + else if (index == 1) + clientApp = 2; + else + clientApp = serverType == 3 /*change if HostOS changes*/ ? 1 : 0; + + strcat(szPid, itoc(numberBuffer, pkeyconfig[clientApp].GroupID, 5)); + strcat(szPid, "-"); + + int keyId = (rand32() % (pkeyconfig[clientApp].RangeMax - pkeyconfig[clientApp].RangeMin)) + pkeyconfig[clientApp].RangeMin; + strcat(szPid, itoc(numberBuffer, keyId / 1000000, 3)); + strcat(szPid, "-"); + strcat(szPid, itoc(numberBuffer, keyId % 1000000, 6)); + strcat(szPid, "-03-"); + + if (lang < 0) lang = LcidList[rand() % _countof(LcidList)]; + strcat(szPid, itoc(numberBuffer, lang, 0)); + strcat(szPid, "-"); + + strcat(szPid, itoc(numberBuffer, HostOS[serverType].Build, 0)); + strcat(szPid, ".0000-"); + +# define minTime ((time_t)1436958000) // Release Date Windows 10 RTM Escrow + + time_t maxTime, kmsTime; + time(&maxTime); + + if (maxTime < minTime) // Just in case the system time is < 07/15/2015 1:00 pm + maxTime = (time_t)BUILD_TIME; + + kmsTime = (rand32() % (maxTime - minTime)) + minTime; +# undef minTime + + struct tm *pidTime; + pidTime = gmtime(&kmsTime); + + strcat(szPid, itoc(numberBuffer, pidTime->tm_yday, 3)); + strcat(szPid, itoc(numberBuffer, pidTime->tm_year + 1900, 4)); +} + + +/* + * Generates random ePIDs and stores them if not already read from ini file. + * For use with randomization level 1 + */ +void randomPidInit() +{ + ProdListIndex_t i; + + int serverType = getRandomServerType(); + int16_t lang = Lcid ? Lcid : LcidList[rand() % _countof(LcidList)]; + + for (i = 0; i < _countof(AppList) - 1; i++) + { + if (KmsResponseParameters[i].Epid) continue; + + char Epid[PID_BUFFER_SIZE]; + + generateRandomPid(i, Epid, serverType, lang); + KmsResponseParameters[i].Epid = (const char*)vlmcsd_malloc(strlen(Epid) + 1); + + strcpy((char*)KmsResponseParameters[i].Epid, Epid); + + #ifndef NO_LOG + KmsResponseParameters[i].EpidSource = "randomized at program start"; + #endif // NO_LOG + } +} + +#endif // NO_RANDOM_EPID + + +#ifndef NO_LOG +/* + * Logs a Request + */ +static void logRequest(const REQUEST *const baseRequest) +{ + const char *productName; + char clientname[64]; + ProdListIndex_t index; + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->ActID, ExtendedProductList, &index); + if (++index >= (int)_countof(ExtendedProductList)) + #endif // NO_EXTENDED_PRODUCT_LIST + { + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&baseRequest->KMSID, ProductList, &index); + if (++index >= (int)_countof(ProductList)) + #endif // NO_BASIC_PRODUCT_LIST + { + productName = getProductNameLE(&baseRequest->AppID, AppList, &index); + } + } + + #ifndef NO_VERBOSE_LOG + if (logverbose) + { + logger("<<< Incoming KMS request\n"); + logRequestVerbose(baseRequest, &logger); + } + else + { + #endif // NO_VERBOSE_LOG + ucs2_to_utf8(baseRequest->WorkstationName, clientname, 64, 64); + logger("KMS v%i.%i request from %s for %s\n", LE16(baseRequest->MajorVer), LE16(baseRequest->MinorVer), clientname, productName); + #ifndef NO_VERBOSE_LOG + } + #endif // NO_VERBOSE_LOG +} +#endif // NO_LOG + + +/* + * Converts a utf-8 ePID string to UCS-2 and writes it to a RESPONSE struct + */ +static void getEpidFromString(RESPONSE *const Response, const char *const pid) +{ + size_t length = utf8_to_ucs2(Response->KmsPID, pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + Response->PIDSize = LE32(((unsigned int )length + 1) << 1); +} + + +/* + * get ePID from appropriate source + */ +static void getEpid(RESPONSE *const baseResponse, const char** EpidSource, const ProdListIndex_t index, BYTE *const HwId) +{ + const char* pid; + if (KmsResponseParameters[index].Epid == NULL) + { + #ifndef NO_RANDOM_EPID + if (RandomizationLevel == 2) + { + char szPid[PID_BUFFER_SIZE]; + generateRandomPid(index, szPid, -1, Lcid ? Lcid : -1); + pid = szPid; + + #ifndef NO_LOG + *EpidSource = "randomized on every request"; + #endif // NO_LOG + } + else + #endif // NO_RANDOM_EPID + { + pid = AppList[index].pid; + #ifndef NO_LOG + *EpidSource = "vlmcsd default"; + #endif // NO_LOG + } + } + else + { + pid = KmsResponseParameters[index].Epid; + + if (HwId && KmsResponseParameters[index].HwId != NULL) + memcpy(HwId, KmsResponseParameters[index].HwId, sizeof(((RESPONSE_V6 *)0)->HwId)); + + #ifndef NO_LOG + *EpidSource = KmsResponseParameters[index].EpidSource; + #endif // NO_LOG + } + getEpidFromString(baseResponse, pid); +} + + +#if !defined(NO_LOG) && defined(_PEDANTIC) +static BOOL CheckVersion4Uuid(const GUID *const guid, const char *const szGuidName) +{ + if (LE16(guid->Data3) >> 12 != 4 || guid->Data4[0] >> 6 != 2) + { + logger("Warning: %s does not conform to version 4 UUID according to RFC 4122\n", szGuidName); + return FALSE; + } + return TRUE; +} + + +static void CheckRequest(const REQUEST *const Request) +{ + CheckVersion4Uuid(&Request->CMID, "Client machine ID"); + CheckVersion4Uuid(&Request->AppID, "Application ID"); + CheckVersion4Uuid(&Request->KMSID, "Server SKU ID"); + CheckVersion4Uuid(&Request->ActID, "Client SKU ID"); + + if (LE32(Request->IsClientVM) > 1) + logger("Warning: Virtual Machine field in request must be 0 or 1 but is %u\n", LE32(Request->IsClientVM)); + + if (LE32(Request->LicenseStatus) > 6 ) + logger("Warning: License status must be between 0 and 6 but is %u\n", LE32(Request->LicenseStatus)); +} +#endif // !defined(NO_LOG) && defined(_PEDANTIC) + + +#ifndef NO_LOG +/* + * Logs the Response + */ +static void logResponse(const RESPONSE *const baseResponse, const BYTE *const hwId, const char *const EpidSource) +{ + char utf8pid[PID_BUFFER_SIZE * 3]; + ucs2_to_utf8(baseResponse->KmsPID, utf8pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3); + + #ifndef NO_VERBOSE_LOG + if (!logverbose) + { + #endif // NO_VERBOSE_LOG + logger("Sending ePID (%s): %s\n", EpidSource, utf8pid); + #ifndef NO_VERBOSE_LOG + } + else + { + logger(">>> Sending response, ePID source = %s\n", EpidSource); + logResponseVerbose(utf8pid, hwId, baseResponse, &logger); + } + #endif // NO_VERBOSE_LOG + +} +#endif + + +/* + * Creates the unencrypted base response + */ +static BOOL __stdcall CreateResponseBaseCallback(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr) +{ + const char* EpidSource; + #ifndef NO_LOG + logRequest(baseRequest); + #ifdef _PEDANTIC + CheckRequest(baseRequest); + #endif // _PEDANTIC + #endif // NO_LOG + + ProdListIndex_t index; + + getProductNameLE(&baseRequest->AppID, AppList, &index); + + if (index >= _countof(AppList) - 1) index = 0; //default to Windows + + getEpid(baseResponse, &EpidSource, index, hwId); + + baseResponse->Version = baseRequest->Version; + + memcpy(&baseResponse->CMID, &baseRequest->CMID, sizeof(GUID)); + memcpy(&baseResponse->ClientTime, &baseRequest->ClientTime, sizeof(FILETIME)); + + baseResponse->Count = LE32(LE32(baseRequest->N_Policy) << 1); + baseResponse->VLActivationInterval = LE32(VLActivationInterval); + baseResponse->VLRenewalInterval = LE32(VLRenewalInterval); + + #ifndef NO_LOG + logResponse(baseResponse, hwId, EpidSource); + #endif // NO_LOG + + return !0; +} + +RequestCallback_t CreateResponseBase = &CreateResponseBaseCallback; + +////TODO: Move to helpers.c +void get16RandomBytes(void* ptr) +{ + int i; + for (i = 0; i < 4; i++) ((DWORD*)ptr)[i] = rand32(); +} + + +/* + * Creates v4 response + */ +size_t CreateResponseV4(REQUEST_V4 *const request_v4, BYTE *const responseBuffer, const char* const ipstr) +{ + RESPONSE_V4* Response = (RESPONSE_V4*)responseBuffer; + + if ( !CreateResponseBase(&request_v4->RequestBase, &Response->ResponseBase, NULL, ipstr) ) return 0; + + DWORD pidSize = LE32(Response->ResponseBase.PIDSize); + BYTE* postEpidPtr = responseBuffer + V4_PRE_EPID_SIZE + pidSize; + memmove(postEpidPtr, &Response->ResponseBase.CMID, V4_POST_EPID_SIZE); + + size_t encryptSize = V4_PRE_EPID_SIZE + V4_POST_EPID_SIZE + pidSize; + AesCmacV4(responseBuffer, encryptSize, responseBuffer + encryptSize); + + return encryptSize + sizeof(Response->MAC); +} + +/* +// Workaround for buggy GCC 4.2/4.3 +#if defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +__attribute__((noinline)) +#endif +__pure static uint64_t TimestampInterval(void *ts) +{ + return ( GET_UA64LE(ts) / TIME_C1 ) * TIME_C2 + TIME_C3; +}*/ + + +/* + * Creates the HMAC for v6 + */ +static int_fast8_t CreateV6Hmac(BYTE *const encrypt_start, const size_t encryptSize, int_fast8_t tolerance) +{ + BYTE hash[32]; +# define halfHashSize (sizeof(hash) >> 1) + uint64_t timeSlot; + BYTE *responseEnd = encrypt_start + encryptSize; + + // This is the time from the response + FILETIME* ft = (FILETIME*)(responseEnd - V6_POST_EPID_SIZE + sizeof(((RESPONSE*)0)->CMID)); + + // Generate a time slot that changes every 4.11 hours. + // Request and repsonse time must match +/- 1 slot. + // When generating a response tolerance must be 0. + // If verifying the hash, try tolerance -1, 0 and +1. One of them must match. + + timeSlot = LE64( (GET_UA64LE(ft) / TIME_C1 * TIME_C2 + TIME_C3) + (tolerance * TIME_C1) ); + + // The time slot is hashed with SHA256 so it is not so obvious that it is time + Sha256((BYTE*) &timeSlot, sizeof(timeSlot), hash); + + // The last 16 bytes of the hashed time slot are the actual HMAC key + if (!Sha256Hmac + ( + hash + halfHashSize, // Use last 16 bytes of SHA256 as HMAC key + encrypt_start, // hash only the encrypted part of the v6 response + encryptSize - sizeof(((RESPONSE_V6*)0)->HMAC), // encryptSize minus the HMAC itself + hash // use same buffer for resulting hash where the key came from + )) + { + return FALSE; + } + + memcpy(responseEnd - sizeof(((RESPONSE_V6*)0)->HMAC), hash + halfHashSize, halfHashSize); + return TRUE; +# undef halfHashSize +} + + +/* + * Creates v5 or v6 response + */ +size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuffer, const char* const ipstr) +{ + // The response will be created in a fixed sized struct to + // avoid unaligned access macros and packed structs on RISC systems + // which largely increase code size. + // + // The fixed sized struct with 64 WCHARs for the ePID will be converted + // to a variable sized struct later and requires unaligned access macros. + + RESPONSE_V6* Response = (RESPONSE_V6*)responseBuffer; + RESPONSE* baseResponse = &Response->ResponseBase; + + #ifdef _DEBUG + RESPONSE_V6_DEBUG* xxx = (RESPONSE_V6_DEBUG*)responseBuffer; + #endif + + static const BYTE DefaultHwid[8] = { HWID }; + int_fast8_t v6 = LE16(request_v6->MajorVer) > 5; + AesCtx aesCtx; + + AesInitKey(&aesCtx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&aesCtx, NULL, request_v6->IV, V6_DECRYPT_SIZE); + + // get random salt and SHA256 it + get16RandomBytes(Response->RandomXoredIVs); + Sha256(Response->RandomXoredIVs, sizeof(Response->RandomXoredIVs), Response->Hash); + + if (v6) // V6 specific stuff + { + // In v6 a random IV is generated + Response->Version = request_v6->Version; + get16RandomBytes(Response->IV); + + // pre-fill with default HwId (not required for v5) + memcpy(Response->HwId, DefaultHwid, sizeof(Response->HwId)); + + // Just copy decrypted request IV (using Null IV) here. Note this is identical + // to XORing non-decrypted request and reponse IVs + memcpy(Response->XoredIVs, request_v6->IV, sizeof(Response->XoredIVs)); + } + else // V5 specific stuff + { + // In v5 IVs of request and response must be identical (MS client checks this) + // The following memcpy copies Version and IVs at once + memcpy(Response, request_v6, V6_UNENCRYPTED_SIZE); + } + + // Xor Random bytes with decrypted request IV + XorBlock(request_v6->IV, Response->RandomXoredIVs); + + // Get the base response + if ( !CreateResponseBase(&request_v6->RequestBase, baseResponse, Response->HwId, ipstr) ) return 0; + + // Convert the fixed sized struct into variable sized + DWORD pidSize = LE32(baseResponse->PIDSize); + BYTE* postEpidPtr = responseBuffer + V6_PRE_EPID_SIZE + pidSize; + size_t post_epid_size = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + + memmove(postEpidPtr, &baseResponse->CMID, post_epid_size); + + // number of bytes to encrypt + size_t encryptSize = + V6_PRE_EPID_SIZE + - sizeof(Response->Version) + + pidSize + + post_epid_size; + + //AesDecryptBlock(&aesCtx, Response->IV); + if (v6 && !CreateV6Hmac(Response->IV, encryptSize, 0)) return 0; + + // Padding auto handled by encryption func + AesEncryptCbc(&aesCtx, NULL, Response->IV, &encryptSize); + + return encryptSize + sizeof(Response->Version); +} + + +// Create Hashed KMS Client Request Data for KMS Protocol Version 4 +BYTE *CreateRequestV4(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V4); + + // Build a proper KMS client request data + BYTE *request = (BYTE *)vlmcsd_malloc(sizeof(REQUEST_V4)); + + // Temporary Pointer for access to REQUEST_V4 structure + REQUEST_V4 *request_v4 = (REQUEST_V4 *)request; + + // Set KMS Client Request Base + memcpy(&request_v4->RequestBase, requestBase, sizeof(REQUEST)); + + // Generate Hash Signature + AesCmacV4(request, sizeof(REQUEST), request_v4->MAC); + + // Return Request Data + return request; +} + + +// Create Encrypted KMS Client Request Data for KMS Protocol Version 6 +BYTE* CreateRequestV6(size_t *size, const REQUEST* requestBase) +{ + *size = sizeof(REQUEST_V6); + + // Temporary Pointer for access to REQUEST_V5 structure + REQUEST_V6 *request = (REQUEST_V6 *)vlmcsd_malloc(sizeof(REQUEST_V6)); + + // KMS Protocol Version + request->Version = requestBase->Version; + + // Initialize the IV + get16RandomBytes(request->IV); + + // Set KMS Client Request Base + memcpy(&request->RequestBase, requestBase, sizeof(REQUEST)); + + // Encrypt KMS Client Request + size_t encryptSize = sizeof(request->RequestBase); + AesCtx Ctx; + int_fast8_t v6 = LE16(request->MajorVer) > 5; + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, 16); + AesEncryptCbc(&Ctx, request->IV, (BYTE*)(&request->RequestBase), &encryptSize); + + // Return Proper Request Data + return (BYTE*)request; +} + + +/* + * Checks whether Length of ePID is valid + */ +static uint8_t checkPidLength(const RESPONSE *const responseBase) +{ + unsigned int i; + + if (LE32(responseBase->PIDSize) > (PID_BUFFER_SIZE << 1)) return FALSE; + if (responseBase->KmsPID[(LE32(responseBase->PIDSize) >> 1) - 1]) return FALSE; + + for (i = 0; i < (LE32(responseBase->PIDSize) >> 1) - 2; i++) + { + if (!responseBase->KmsPID[i]) return FALSE; + } + + return TRUE; +} + + +/* + * "Decrypts" a KMS v4 response. Actually just copies to a fixed size buffer + */ +RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSize, BYTE* const rawResponse, const BYTE* const rawRequest) +{ + int copySize = + V4_PRE_EPID_SIZE + + (LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) <= PID_BUFFER_SIZE << 1 ? + LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) : + PID_BUFFER_SIZE << 1); + + int messageSize = copySize + V4_POST_EPID_SIZE; + + memcpy(response_v4, rawResponse, copySize); + memcpy(&response_v4->ResponseBase.CMID, rawResponse + copySize, responseSize - copySize); + + // ensure PID is null terminated + response_v4->ResponseBase.KmsPID[PID_BUFFER_SIZE-1] = 0; + + uint8_t* mac = rawResponse + messageSize; + AesCmacV4(rawResponse, messageSize, mac); + + REQUEST_V4* request_v4 = (REQUEST_V4*)rawRequest; + RESPONSE_RESULT result; + + result.mask = (DWORD)~0; + result.PidLengthOK = checkPidLength((RESPONSE*)rawResponse); + result.VersionOK = response_v4->ResponseBase.Version == request_v4->RequestBase.Version; + result.HashOK = !memcmp(&response_v4->MAC, mac, sizeof(response_v4->MAC)); + result.TimeStampOK = !memcmp(&response_v4->ResponseBase.ClientTime, &request_v4->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = !memcmp(&response_v4->ResponseBase.CMID, &request_v4->RequestBase.CMID, sizeof(GUID)); + result.effectiveResponseSize = responseSize; + result.correctResponseSize = sizeof(RESPONSE_V4) - sizeof(response_v4->ResponseBase.KmsPID) + LE32(response_v4->ResponseBase.PIDSize); + + return result; +} + + +static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ctx, RESPONSE_V6* response_v6, REQUEST_V6* request_v6, BYTE* const rawResponse) +{ + // Check IVs + result.IVsOK = !memcmp // In V6 the XoredIV is actually the request IV + ( + response_v6->XoredIVs, + request_v6->IV, + sizeof(response_v6->XoredIVs) + ); + + result.IVnotSuspicious = !!memcmp // If IVs are identical, it is obviously an emulator + ( + request_v6->IV, + response_v6->IV, + sizeof(request_v6->IV) + ); + + // Check Hmac + int_fast8_t tolerance; + BYTE OldHmac[sizeof(response_v6->HMAC)]; + + result.HmacSha256OK = FALSE; + + memcpy // Save received HMAC to compare with calculated HMAC later + ( + OldHmac, + response_v6->HMAC, + sizeof(response_v6->HMAC) + ); + + //AesEncryptBlock(Ctx, Response_v6->IV); // CreateV6Hmac needs original IV as received over the network + + for (tolerance = -1; tolerance < 2; tolerance++) + { + CreateV6Hmac + ( + rawResponse + sizeof(response_v6->Version), // Pointer to start of the encrypted part of the response + (size_t)result.correctResponseSize - V6_UNENCRYPTED_SIZE, // size of the encrypted part + tolerance // tolerance -1, 0, or +1 + ); + + if + (( + result.HmacSha256OK = !memcmp // Compare both HMACs + ( + OldHmac, + rawResponse + (size_t)result.correctResponseSize - sizeof(response_v6->HMAC), + sizeof(OldHmac) + ) + )) + { + break; + } + } + return result; +} + + +static RESPONSE_RESULT VerifyResponseV5(RESPONSE_RESULT result, REQUEST_V5* request_v5, RESPONSE_V5* response_v5) +{ + // Check IVs: in V5 (and only v5) request and response IVs must match + result.IVsOK = !memcmp(request_v5->IV, response_v5->IV, sizeof(request_v5->IV)); + + // V5 has no Hmac, always set to TRUE + result.HmacSha256OK = TRUE; + + return result; +} + + +/* + * Decrypts a KMS v5 or v6 response received from a server. + * hwid must supply a valid 16 byte buffer for v6. hwid is ignored in v5 + */ +RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BYTE* const response, const BYTE* const rawRequest, BYTE* hwid) +{ + RESPONSE_RESULT result; + result.mask = ~0; // Set all bits in the results mask to 1. Assume success first. + result.effectiveResponseSize = responseSize; + + int copySize1 = + sizeof(response_v6->Version); + + // Decrypt KMS Server Response (encrypted part starts after RequestIV) + responseSize -= copySize1; + + AesCtx Ctx; + int_fast8_t v6 = LE16(((RESPONSE_V6*)response)->MajorVer) > 5; + + AesInitKey(&Ctx, v6 ? AesKeyV6 : AesKeyV5, v6, AES_KEY_BYTES); + AesDecryptCbc(&Ctx, NULL, response + copySize1, responseSize); + + // Check padding + BYTE* lastPadByte = response + (size_t)result.effectiveResponseSize - 1; + + // Must be from 1 to 16 + if (!*lastPadByte || *lastPadByte > AES_BLOCK_BYTES) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Check if pad bytes are all the same + BYTE* padByte; + for (padByte = lastPadByte - *lastPadByte + 1; padByte < lastPadByte; padByte++) + if (*padByte != *lastPadByte) + { + result.DecryptSuccess = FALSE; + return result; + } + + // Add size of Version, KmsPIDLen and variable size PID + DWORD pidSize = LE32(((RESPONSE_V6*) response)->ResponseBase.PIDSize); + + copySize1 += + V6_UNENCRYPTED_SIZE + + sizeof(response_v6->ResponseBase.PIDSize) + + (pidSize <= PID_BUFFER_SIZE << 1 ? pidSize : PID_BUFFER_SIZE << 1); + + // Copy part 1 of response up to variable sized PID + memcpy(response_v6, response, copySize1); + + // ensure PID is null terminated + response_v6->ResponseBase.KmsPID[PID_BUFFER_SIZE - 1] = 0; + + // Copy part 2 + size_t copySize2 = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE; + memcpy(&response_v6->ResponseBase.CMID, response + copySize1, copySize2); + + // Decrypting the response is finished here. Now we check the results for validity + // A basic client doesn't need the stuff below this comment but we want to use vlmcs + // as a debug tool for KMS emulators. + + REQUEST_V6* request_v6 = (REQUEST_V6*) rawRequest; + DWORD decryptSize = sizeof(request_v6->IV) + sizeof(request_v6->RequestBase) + sizeof(request_v6->Pad); + + AesDecryptCbc(&Ctx, NULL, request_v6->IV, decryptSize); + + // Check that all version informations are the same + result.VersionOK = + request_v6->Version == response_v6->ResponseBase.Version && + request_v6->Version == response_v6->Version && + request_v6->Version == request_v6->RequestBase.Version; + + // Check Base Request + result.PidLengthOK = checkPidLength(&((RESPONSE_V6*) response)->ResponseBase); + result.TimeStampOK = !memcmp(&response_v6->ResponseBase.ClientTime, &request_v6->RequestBase.ClientTime, sizeof(FILETIME)); + result.ClientMachineIDOK = IsEqualGUID(&response_v6->ResponseBase.CMID, &request_v6->RequestBase.CMID); + + // Rebuild Random Key and Sha256 Hash + BYTE HashVerify[sizeof(response_v6->Hash)]; + BYTE RandomKey[sizeof(response_v6->RandomXoredIVs)]; + + memcpy(RandomKey, request_v6->IV, sizeof(RandomKey)); + XorBlock(response_v6->RandomXoredIVs, RandomKey); + Sha256(RandomKey, sizeof(RandomKey), HashVerify); + + result.HashOK = !memcmp(response_v6->Hash, HashVerify, sizeof(HashVerify)); + + // size before encryption (padding not included) + result.correctResponseSize = + (v6 ? sizeof(RESPONSE_V6) : sizeof(RESPONSE_V5)) + - sizeof(response_v6->ResponseBase.KmsPID) + + LE32(response_v6->ResponseBase.PIDSize); + + // Version specific stuff + if (v6) + { + // Copy the HwId + memcpy(hwid, response_v6->HwId, sizeof(response_v6->HwId)); + + // Verify the V6 specific part of the response + result = VerifyResponseV6(result, &Ctx, response_v6, request_v6, response); + } + else // V5 + { + // Verify the V5 specific part of the response + result = VerifyResponseV5(result, request_v6, (RESPONSE_V5*)response_v6); + } + + // padded size after encryption + result.correctResponseSize += (~(result.correctResponseSize - sizeof(response_v6->ResponseBase.Version)) & 0xf) + 1; + + return result; +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "endian.h" + +#if defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN) \ + && defined(BS16) && defined(BS32) && defined(BS64) + +#else // ! defined(__BYTE_ORDER) + +void PUT_UAA64BE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v >> 56; + _p[ 1 ] = v >> 48; + _p[ 2 ] = v >> 40; + _p[ 3 ] = v >> 32; + _p[ 4 ] = v >> 24; + _p[ 5 ] = v >> 16; + _p[ 6 ] = v >> 8; + _p[ 7 ] = v; +} + +void PUT_UAA32BE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v >> 24; + _p[ 1 ] = v >> 16; + _p[ 2 ] = v >> 8; + _p[ 3 ] = v; +} + +void PUT_UAA16BE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v >> 8; + _p[ 1 ] = v; +} + + +void PUT_UAA64LE(void *p, unsigned long long v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; + _p[ 4 ] = v >> 32; + _p[ 5 ] = v >> 40; + _p[ 6 ] = v >> 48; + _p[ 7 ] = v >> 56; +} + +void PUT_UAA32LE(void *p, unsigned int v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; + _p[ 2 ] = v >> 16; + _p[ 3 ] = v >> 24; +} + +void PUT_UAA16LE(void *p, unsigned short v, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + _p[ 0 ] = v; + _p[ 1 ] = v >> 8; +} + + +unsigned long long GET_UAA64BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] << 56 | + (unsigned long long)_p[ 1 ] << 48 | + (unsigned long long)_p[ 2 ] << 40 | + (unsigned long long)_p[ 3 ] << 32 | + (unsigned long long)_p[ 4 ] << 24 | + (unsigned long long)_p[ 5 ] << 16 | + (unsigned long long)_p[ 6 ] << 8 | + (unsigned long long)_p[ 7 ]; + +} + +unsigned int GET_UAA32BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] << 24 | + (unsigned int)_p[ 1 ] << 16 | + (unsigned int)_p[ 2 ] << 8 | + (unsigned int)_p[ 3 ]; +} + +unsigned short GET_UAA16BE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] << 8 | + (unsigned short)_p[ 1 ]; +} + + +unsigned long long GET_UAA64LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned long long *)p)[i]; + return + (unsigned long long)_p[ 0 ] | + (unsigned long long)_p[ 1 ] << 8 | + (unsigned long long)_p[ 2 ] << 16 | + (unsigned long long)_p[ 3 ] << 24 | + (unsigned long long)_p[ 4 ] << 32 | + (unsigned long long)_p[ 5 ] << 40 | + (unsigned long long)_p[ 6 ] << 48 | + (unsigned long long)_p[ 7 ] << 56; + +} + +unsigned int GET_UAA32LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned int *)p)[i]; + return + (unsigned int)_p[ 0 ] | + (unsigned int)_p[ 1 ] << 8 | + (unsigned int)_p[ 2 ] << 16 | + (unsigned int)_p[ 3 ] << 24; +} + +unsigned short GET_UAA16LE(void *p, unsigned int i) +{ + unsigned char *_p = (unsigned char *)&((unsigned short *)p)[i]; + return + (unsigned short)_p[ 0 ] | + (unsigned short)_p[ 1 ] << 8; +} + + +unsigned short BE16(unsigned short x) +{ + return GET_UAA16BE(&x, 0); +} + +unsigned short LE16(unsigned short x) +{ + return GET_UAA16LE(&x, 0); +} + +unsigned int BE32(unsigned int x) +{ + return GET_UAA32BE(&x, 0); +} + +unsigned int LE32(unsigned int x) +{ + return GET_UAA32LE(&x, 0); +} + +unsigned long long BE64(unsigned long long x) +{ + return GET_UAA64BE(&x, 0); +} + +inline unsigned long long LE64(unsigned long long x) +{ + return GET_UAA64LE(&x, 0); +} + +#endif // defined(__BYTE_ORDER) +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "output.h" +#include "shared_globals.h" +#include "endian.h" +#include "helpers.h" + +#ifndef NO_LOG +static void vlogger(const char *message, va_list args) +{ + FILE *log; + + #ifdef _NTSERVICE + if (!IsNTService && logstdout) log = stdout; + #else + if (logstdout) log = stdout; + #endif + else + { + if (fn_log == NULL) return; + + #ifndef _WIN32 + if (!strcmp(fn_log, "syslog")) + { + openlog("vlmcsd", LOG_CONS | LOG_PID, LOG_USER); + + ////PORTABILITY: vsyslog is not in Posix but virtually all Unixes have it + vsyslog(LOG_INFO, message, args); + + closelog(); + return; + } + #endif // _WIN32 + + log = fopen(fn_log, "a"); + if ( !log ) return; + } + + time_t now = time(0); + + #ifdef USE_THREADS + char mbstr[2048]; + #else + char mbstr[24]; + #endif + + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", localtime(&now)); + + #ifndef USE_THREADS + + fprintf(log, "%s: ", mbstr); + vfprintf(log, message, args); + fflush(log); + + #else // USE_THREADS + + // We write everything to a string before we really log inside the critical section + // so formatting the output can be concurrent + strcat(mbstr, ": "); + int len = strlen(mbstr); + vsnprintf(mbstr + len, sizeof(mbstr) - len, message, args); + + lock_mutex(&logmutex); + fputs(mbstr, log); + fflush(log); + unlock_mutex(&logmutex); + + #endif // USE_THREADS + if (log != stdout) fclose(log); +} + + +// Always sends to log output +int logger(const char *const fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vlogger(fmt, args); + va_end(args); + return 0; +} + +#endif //NO_LOG + + +// Output to stderr if it is available or to log otherwise (e.g. if running as daemon/service) +void printerrorf(const char *const fmt, ...) +{ + va_list arglist; + + va_start(arglist, fmt); + + #ifndef NO_LOG + #ifdef _NTSERVICE + if (InetdMode || IsNTService) + #else // !_NTSERVICE + if (InetdMode) + #endif // NTSERVIICE + vlogger(fmt, arglist); + else + #endif //NO_LOG + { + vfprintf(stderr, fmt, arglist); + fflush(stderr); + } + + va_end(arglist); +} + + +// Always output to stderr +int errorout(const char* fmt, ...) +{ + va_list args; + + va_start(args, fmt); + int i = vfprintf(stderr, fmt, args); + va_end(args); + fflush(stderr); + + return i; +} + + +static const char *LicenseStatusText[] = +{ + "Unlicensed", "Licensed", "OOB grace", "OOT grace", "Non-Genuine", "Notification", "Extended grace" +}; + + +void uuid2StringLE(const GUID *const guid, char *const string) +{ + sprintf(string, + #ifdef _WIN32 + "%08x-%04x-%04x-%04x-%012I64x", + #else + "%08x-%04x-%04x-%04x-%012llx", + #endif + (unsigned int)LE32( guid->Data1 ), + (unsigned int)LE16( guid->Data2 ), + (unsigned int)LE16( guid->Data3 ), + (unsigned int)BE16( *(uint16_t*)guid->Data4 ), + (unsigned long long)BE64(*(uint64_t*)(guid->Data4)) & 0xffffffffffffLL + ); +} + + +void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + char WorkstationBuffer[3 * WORKSTATION_NAME_BUFFER]; + const char *productName; + ProdListIndex_t index; + + p("Protocol version : %u.%u\n", LE16(Request->MajorVer), LE16(Request->MinorVer)); + p("Client is a virtual machine : %s\n", LE32(Request->VMInfo) ? "Yes" : "No"); + p("Licensing status : %u (%s)\n", (uint32_t)LE32(Request->LicenseStatus), LE32(Request->LicenseStatus) < _countof(LicenseStatusText) ? LicenseStatusText[LE32(Request->LicenseStatus)] : "Unknown"); + p("Remaining time (0 = forever) : %i minutes\n", (uint32_t)LE32(Request->BindingExpiration)); + + uuid2StringLE(&Request->AppID, guidBuffer); + productName = getProductNameLE(&Request->AppID, AppList, &index); + p("Application ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->ActID, guidBuffer); + + #ifndef NO_EXTENDED_PRODUCT_LIST + productName = getProductNameLE(&Request->ActID, ExtendedProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Activation ID (Product) : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->KMSID, guidBuffer); + + #ifndef NO_BASIC_PRODUCT_LIST + productName = getProductNameLE(&Request->KMSID, ProductList, &index); + #else + productName = "Unknown"; + #endif + + p("Key Management Service ID : %s (%s)\n", guidBuffer, productName); + + uuid2StringLE(&Request->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + uuid2StringLE(&Request->CMID_prev, guidBuffer); + p("Previous client machine ID : %s\n", guidBuffer); + + + char mbstr[64]; + time_t st; + st = fileTimeToUnixTime(&Request->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + ucs2_to_utf8(Request->WorkstationName, WorkstationBuffer, WORKSTATION_NAME_BUFFER, sizeof(WorkstationBuffer)); + + p("Workstation name : %s\n", WorkstationBuffer); + p("N count policy (minimum clients): %u\n", (uint32_t)LE32(Request->N_Policy)); +} + + +void logResponseVerbose(const char *const ePID, const BYTE *const hwid, const RESPONSE *const response, const PRINTFUNC p) +{ + char guidBuffer[GUID_STRING_LENGTH + 1]; + //SYSTEMTIME st; + + p("Protocol version : %u.%u\n", (uint32_t)LE16(response->MajorVer), (uint32_t)LE16(response->MinorVer)); + p("KMS host extended PID : %s\n", ePID); + if (LE16(response->MajorVer) > 5) +# ifndef _WIN32 + p("KMS host Hardware ID : %016llX\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# else // _WIN32 + p("KMS host Hardware ID : %016I64X\n", (unsigned long long)BE64(*(uint64_t*)hwid)); +# endif // WIN32 + + uuid2StringLE(&response->CMID, guidBuffer); + p("Client machine ID : %s\n", guidBuffer); + + char mbstr[64]; + time_t st; + + st = fileTimeToUnixTime(&response->ClientTime); + strftime(mbstr, sizeof(mbstr), "%Y-%m-%d %X", gmtime(&st)); + p("Client request timestamp (UTC) : %s\n", mbstr); + + p("KMS host current active clients : %u\n", (uint32_t)LE32(response->Count)); + p("Renewal interval policy : %u\n", (uint32_t)LE32(response->VLRenewalInterval)); + p("Activation interval policy : %u\n", (uint32_t)LE32(response->VLActivationInterval)); +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#include "shared_globals.h" + +int global_argc, multi_argc = 0; +CARGV global_argv, multi_argv = NULL; +const char *const Version = VERSION; +DWORD VLActivationInterval = 60 * 2; // 2 hours +DWORD VLRenewalInterval = 60 * 24 * 7; // 7 days +int_fast8_t DisconnectImmediately = FALSE; +const char *const cIPv4 = "IPv4"; +const char *const cIPv6 = "IPv6"; + +#ifndef USE_MSRPC +int_fast8_t UseMultiplexedRpc = TRUE; +int_fast8_t UseRpcNDR64 = TRUE; +int_fast8_t UseRpcBTFN = TRUE; +#endif // USE_MSRPC + +#ifndef NO_SOCKETS +const char *defaultport = "1688"; +#endif // NO_SOCKETS + +KmsResponseParam_t KmsResponseParameters[MAX_KMSAPPS]; + +#if !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) +int_fast8_t IsRestarted = FALSE; +#endif // !defined(NO_SOCKETS) && !defined(NO_SIGHUP) && !defined(_WIN32) + +#if !defined(NO_TIMEOUT) && !__minix__ +DWORD ServerTimeout = 30; +#endif // !defined(NO_TIMEOUT) && !__minix__ + +#if !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ +#ifdef USE_MSRPC +uint32_t MaxTasks = RPC_C_LISTEN_MAX_CALLS_DEFAULT; +#else // !USE_MSRPC +uint32_t MaxTasks = SEM_VALUE_MAX; +#endif // !USE_MSRPC +#endif // !defined(NO_LIMIT) && !defined (NO_SOCKETS) && !__minix__ + +#ifndef NO_LOG +char *fn_log = NULL; +int_fast8_t logstdout = 0; +#ifndef NO_VERBOSE_LOG +int_fast8_t logverbose = 0; +#endif // NO_VERBOSE_LOG +#endif // NO_LOG + +#ifndef NO_SOCKETS +int_fast8_t nodaemon = 0; +int_fast8_t InetdMode = 0; +#else +int_fast8_t nodaemon = 1; +int_fast8_t InetdMode = 1; +#endif + +#ifndef NO_RANDOM_EPID +int_fast8_t RandomizationLevel = 1; +uint16_t Lcid = 0; +#endif + +#ifndef NO_SOCKETS +SOCKET *SocketList; +int numsockets = 0; + +#if !defined(NO_LIMIT) && !__minix__ +#ifndef _WIN32 // Posix +sem_t *Semaphore; +#else // _WIN32 +HANDLE Semaphore; +#endif // _WIN32 + +#endif // !defined(NO_LIMIT) && !__minix__ +#endif // NO_SOCKETS + +#ifdef _NTSERVICE +int_fast8_t IsNTService = TRUE; +int_fast8_t ServiceShutdown = FALSE; +#endif // _NTSERVICE + +#ifndef NO_LOG +#ifdef USE_THREADS +#if !defined(_WIN32) && !defined(__CYGWIN__) +pthread_mutex_t logmutex = PTHREAD_MUTEX_INITIALIZER; +#else +CRITICAL_SECTION logmutex; +#endif // !defined(_WIN32) && !defined(__CYGWIN__) +#endif // USE_THREADS +#endif // NO_LOG + + + + + +/* + * Helper functions used by other modules + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef _WIN32 +#include +#endif // _WIN32 +#include +#include +#include +#include +#include "helpers.h" +#include "output.h" +#include "endian.h" +#include "shared_globals.h" + + +/* + * UCS2 <-> UTF-8 functions + * All functions use little endian UCS2 since we only need it to communicate with Windows via RPC + */ + +// Convert one character from UTF-8 to UCS2 +// Returns 0xffff, if utf-8 evaluates to > 0xfffe (outside basic multilingual pane) +WCHAR utf8_to_ucs2_char (const unsigned char *input, const unsigned char **end_ptr) +{ + *end_ptr = input; + if (input[0] == 0) + return ~0; + + if (input[0] < 0x80) { + *end_ptr = input + 1; + return LE16(input[0]); + } + + if ((input[0] & 0xE0) == 0xE0) { + + if (input[1] == 0 || input[2] == 0) + return ~0; + + *end_ptr = input + 3; + + return + LE16((input[0] & 0x0F)<<12 | + (input[1] & 0x3F)<<6 | + (input[2] & 0x3F)); + } + + if ((input[0] & 0xC0) == 0xC0) { + if (input[1] == 0) + return ~0; + + *end_ptr = input + 2; + + return + LE16((input[0] & 0x1F)<<6 | + (input[1] & 0x3F)); + } + return ~0; +} + +// Convert one character from UCS2 to UTF-8 +// Returns length of UTF-8 char (1, 2 or 3) or -1 on error (UTF-16 outside UCS2) +// char *utf8 must be large enough to hold 3 bytes +int ucs2_to_utf8_char (const WCHAR ucs2_le, char *utf8) +{ + const WCHAR ucs2 = LE16(ucs2_le); + + if (ucs2 < 0x80) { + utf8[0] = ucs2; + utf8[1] = '\0'; + return 1; + } + + if (ucs2 >= 0x80 && ucs2 < 0x800) { + utf8[0] = (ucs2 >> 6) | 0xC0; + utf8[1] = (ucs2 & 0x3F) | 0x80; + utf8[2] = '\0'; + return 2; + } + + if (ucs2 >= 0x800 && ucs2 < 0xFFFF) { + + if (ucs2 >= 0xD800 && ucs2 <= 0xDFFF) { + /* Ill-formed (UTF-16 ouside of BMP) */ + return -1; + } + + utf8[0] = ((ucs2 >> 12) ) | 0xE0; + utf8[1] = ((ucs2 >> 6 ) & 0x3F) | 0x80; + utf8[2] = ((ucs2 ) & 0x3F) | 0x80; + utf8[3] = '\0'; + return 3; + } + + return -1; +} + + +// Converts UTF8 to UCS2. Returns size in bytes of the converted string or -1 on error +size_t utf8_to_ucs2(WCHAR* const ucs2_le, const char* const utf8, const size_t maxucs2, const size_t maxutf8) +{ + const unsigned char* current_utf8 = (unsigned char*)utf8; + WCHAR* current_ucs2_le = ucs2_le; + + for (; *current_utf8; current_ucs2_le++) + { + size_t size = (char*)current_utf8 - utf8; + + if (size >= maxutf8) return (size_t)-1; + if (((*current_utf8 & 0xc0) == 0xc0) && (size >= maxutf8 - 1)) return (size_t)-1; + if (((*current_utf8 & 0xe0) == 0xe0) && (size >= maxutf8 - 2)) return (size_t)-1; + if (current_ucs2_le - ucs2_le >= (intptr_t)maxucs2 - 1) return (size_t)-1; + + *current_ucs2_le = utf8_to_ucs2_char(current_utf8, ¤t_utf8); + current_ucs2_le[1] = 0; + + if (*current_ucs2_le == (WCHAR)-1) return (size_t)-1; + } + return current_ucs2_le - ucs2_le; +} + +// Converts UCS2 to UTF-8. Return TRUE or FALSE +BOOL ucs2_to_utf8(const WCHAR* const ucs2_le, char* utf8, size_t maxucs2, size_t maxutf8) +{ + char utf8_char[4]; + const WCHAR* current_ucs2 = ucs2_le; + unsigned int index_utf8 = 0; + + for(*utf8 = 0; *current_ucs2; current_ucs2++) + { + if (current_ucs2 - ucs2_le > (intptr_t)maxucs2) return FALSE; + int len = ucs2_to_utf8_char(*current_ucs2, utf8_char); + if (index_utf8 + len > maxutf8) return FALSE; + strncat(utf8, utf8_char, len); + index_utf8+=len; + } + + return TRUE; +} + +/* End of UTF-8 <-> UCS2 conversion */ + + +// Checks, whether a string is a valid integer number between min and max. Returns TRUE or FALSE. Puts int value in *value +BOOL stringToInt(const char *const szValue, const unsigned int min, const unsigned int max, unsigned int *const value) +{ + char *nextchar; + + errno = 0; + long long result = strtoll(szValue, &nextchar, 10); + + if (errno || result < (long long)min || result > (long long)max || *nextchar) + { + return FALSE; + } + + *value = (unsigned int)result; + return TRUE; +} + + +//Converts a String Guid to a host binary guid in host endianess +int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict guid) +{ + int i; + + if (strlen(input) < GUID_STRING_LENGTH) return FALSE; + if (input[8] != '-' || input[13] != '-' || input[18] != '-' || input[23] != '-') return FALSE; + + for (i = 0; i < GUID_STRING_LENGTH; i++) + { + if (i == 8 || i == 13 || i == 18 || i == 23) continue; + + const char c = toupper((int)input[i]); + + if (c < '0' || c > 'F' || (c > '9' && c < 'A')) return FALSE; + } + + char inputCopy[GUID_STRING_LENGTH + 1]; + strncpy(inputCopy, input, GUID_STRING_LENGTH + 1); + inputCopy[8] = inputCopy[13] = inputCopy[18] = 0; + + hex2bin((BYTE*)&guid->Data1, inputCopy, 8); + hex2bin((BYTE*)&guid->Data2, inputCopy + 9, 4); + hex2bin((BYTE*)&guid->Data3, inputCopy + 14, 4); + hex2bin(guid->Data4, input + 19, 16); + + guid->Data1 = BE32(guid->Data1); + guid->Data2 = BE16(guid->Data2); + guid->Data3 = BE16(guid->Data3); + return TRUE; +} + + +// convert GUID to little-endian +void LEGUID(GUID *const restrict out, const GUID* const restrict in) +{ + #if __BYTE_ORDER != __LITTLE_ENDIAN + out->Data1 = LE32(in->Data1); + out->Data2 = LE16(in->Data2); + out->Data3 = LE16(in->Data3); + memcpy(out->Data4, in->Data4, sizeof(out->Data4)); + #else + memcpy(out, in, sizeof(GUID)); + #endif +} + + +//Checks a command line argument if it is numeric and between min and max. Returns the numeric value or exits on error +__pure unsigned int getOptionArgumentInt(const char o, const unsigned int min, const unsigned int max) +{ + unsigned int result; + + if (!stringToInt(optarg, min, max, &result)) + { + printerrorf("Fatal: Option \"-%c\" must be numeric between %u and %u.\n", o, min, max); + exit(!0); + } + + return result; +} + + +// Resets getopt() to start parsing from the beginning +void optReset(void) +{ + #if __minix__ || defined(__BSD__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) + optind = 1; + optreset = 1; // Makes newer BSD getopt happy + #elif defined(__UCLIBC__) // uClibc headers also define __GLIBC__ so be careful here + optind = 0; // uClibc seeks compatibility with GLIBC + #elif defined(__GLIBC__) + optind = 0; // Makes GLIBC getopt happy + #else // Standard for most systems + optind = 1; + #endif +} + + +#if defined(_WIN32) || defined(USE_MSRPC) + +// Returns a static message buffer containing text for a given Win32 error. Not thread safe (same as strerror) +char* win_strerror(const int message) +{ + #define STRERROR_BUFFER_SIZE 256 + static char buffer[STRERROR_BUFFER_SIZE]; + + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, message, 0, buffer, STRERROR_BUFFER_SIZE, NULL); + return buffer; +} + +#endif // defined(_WIN32) || defined(USE_MSRPC) + + +/* + * parses an address in the form host:[port] in addr + * returns host and port in seperate strings + */ +void parseAddress(char *const addr, char** szHost, char** szPort) +{ + *szHost = addr; + +# ifndef NO_SOCKETS + *szPort = (char*)defaultport; +# else // NO_SOCKETS + *szPort = "1688"; +# endif // NO_SOCKETS + + char *lastcolon = strrchr(addr, ':'); + char *firstcolon = strchr(addr, ':'); + char *closingbracket = strrchr(addr, ']'); + + if (*addr == '[' && closingbracket) //Address in brackets + { + *closingbracket = 0; + (*szHost)++; + + if (closingbracket[1] == ':') + *szPort = closingbracket + 2; + } + else if (firstcolon && firstcolon == lastcolon) //IPv4 address or hostname with port + { + *firstcolon = 0; + *szPort = firstcolon + 1; + } +} + + +// Initialize random generator (needs to be done in each thread) +void randomNumberInit() +{ + struct timeval tv; + gettimeofday(&tv, NULL); + srand((unsigned int)(tv.tv_sec ^ tv.tv_usec)); +} + + +// We always exit immediately if any OOM condition occurs +__noreturn void OutOfMemory(void) +{ + errorout("Fatal: Out of memory"); + exit(!0); +} + + +void* vlmcsd_malloc(size_t len) +{ + void* buf = malloc(len); + if (!buf) OutOfMemory(); + return buf; +} + + +/* + * Converts hex digits to bytes in big-endian order. + * Ignores any non-hex characters + */ +void hex2bin(BYTE *const bin, const char *hex, const size_t maxbin) +{ + static const char *const hexdigits = "0123456789ABCDEF"; + char* nextchar; + size_t i; + + for (i = 0; (i < 16) && utf8_to_ucs2_char((const unsigned char*)hex, (const unsigned char**)&nextchar) != (WCHAR)-1; hex = nextchar) + { + const char* pos = strchr(hexdigits, toupper((int)*hex)); + if (!pos) continue; + + if (!(i & 1)) bin[i >> 1] = 0; + bin[i >> 1] |= (char)(pos - hexdigits); + if (!(i & 1)) bin[i >> 1] <<= 4; + i++; + if (i >> 1 > maxbin) break; + } +} + + +__pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument) +{ + if ( + !strncasecmp(argument, "true", 4) || + !strncasecmp(argument, "on", 4) || + !strncasecmp(argument, "yes", 3) || + !strncasecmp(argument, "1", 1) + ) + { + *result = TRUE; + return TRUE; + } + else if ( + !strncasecmp(argument, "false", 5) || + !strncasecmp(argument, "off", 3) || + !strncasecmp(argument, "no", 2) || + !strncasecmp(argument, "0", 1) + ) + { + *result = FALSE; + return TRUE; + } + + return FALSE; +} + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +#endif // WIN32 + +#include "network.h" +#include "endian.h" +#include "output.h" +#include "helpers.h" +#include "shared_globals.h" +#include "rpc.h" + + +#ifndef _WIN32 +typedef ssize_t (*sendrecv_t)(int, void*, size_t, int); +#else +typedef int (WINAPI *sendrecv_t)(SOCKET, void*, int, int); +#endif + + +// Send or receive a fixed number of bytes regardless if received in one or more chunks +int_fast8_t sendrecv(SOCKET sock, BYTE *data, int len, int_fast8_t do_send) +{ + int n; + sendrecv_t f = do_send + ? (sendrecv_t) send + : (sendrecv_t) recv; + + do + { + n = f(sock, data, len, 0); + } + while ( + ( n < 0 && socket_errno == VLMCSD_EINTR ) || ( n > 0 && ( data += n, (len -= n) > 0 ) )); + + return ! len; +} + + +static int_fast8_t ip2str(char *restrict result, const size_t resultLength, const struct sockaddr *const restrict socketAddress, const socklen_t socketLength) +{ + static const char *const fIPv4 = "%s:%s"; + static const char *const fIPv6 = "[%s]:%s"; + char ipAddress[64], portNumber[8]; + + if (getnameinfo + ( + socketAddress, + socketLength, + ipAddress, + sizeof(ipAddress), + portNumber, + sizeof(portNumber), + NI_NUMERICHOST | NI_NUMERICSERV + )) + { + return FALSE; + } + + if ((unsigned int)snprintf(result, resultLength, socketAddress->sa_family == AF_INET6 ? fIPv6 : fIPv4, ipAddress, portNumber) > resultLength) return FALSE; + return TRUE; +} + + +static int_fast8_t getSocketList(struct addrinfo **saList, const char *const addr, const int flags, const int AddressFamily) +{ + int status; + char *szHost, *szPort; + size_t len = strlen(addr) + 1; + + // Don't alloca too much + if (len > 264) return FALSE; + + char *addrcopy = (char*)alloca(len); + memcpy(addrcopy, addr, len); + + parseAddress(addrcopy, &szHost, &szPort); + + struct addrinfo hints; + + memset(&hints, 0, sizeof(struct addrinfo)); + + hints.ai_family = AddressFamily; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + hints.ai_flags = flags; + + if ((status = getaddrinfo(szHost, szPort, &hints, saList))) + { + printerrorf("Warning: %s: %s\n", addr, gai_strerror(status)); + return FALSE; + } + + return TRUE; +} + + +static int_fast8_t setBlockingEnabled(SOCKET fd, int_fast8_t blocking) +{ + if (fd == INVALID_SOCKET) return FALSE; + + #ifdef _WIN32 + + unsigned long mode = blocking ? 0 : 1; + return (ioctlsocket(fd, FIONBIO, &mode) == 0) ? TRUE : FALSE; + + #else // POSIX + + int flags = fcntl(fd, F_GETFL, 0); + + if (flags < 0) return FALSE; + + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + return (fcntl(fd, F_SETFL, flags) == 0) ? TRUE : FALSE; + + #endif // POSIX +} + + +int_fast8_t isDisconnected(const SOCKET s) +{ + char buffer[1]; + + if (!setBlockingEnabled(s, FALSE)) return TRUE; + + int n = recv(s, buffer, 1, MSG_PEEK); + + if (!setBlockingEnabled(s, TRUE)) return TRUE; + if (n == 0) return TRUE; + + return FALSE; +} + + +// Connect to TCP address addr (e.g. "kms.example.com:1688") and return an +// open socket for the connection if successful or INVALID_SOCKET otherwise +SOCKET connectToAddress(const char *const addr, const int AddressFamily, int_fast8_t showHostName) +{ + struct addrinfo *saList, *sa; + SOCKET s = INVALID_SOCKET; + char szAddr[128]; + + if (!getSocketList(&saList, addr, 0, AddressFamily)) return INVALID_SOCKET; + + for (sa = saList; sa; sa = sa->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (ip2str(szAddr, sizeof(szAddr), sa->ai_addr, sa->ai_addrlen)) + { + if (showHostName) + printf("Connecting to %s (%s) ... ", addr, szAddr); + else + printf("Connecting to %s ... ", szAddr); + + fflush(stdout); + } + + s = socket(sa->ai_family, SOCK_STREAM, IPPROTO_TCP); + +# if !defined(NO_TIMEOUT) && !__minix__ +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = 10; + to.tv_usec = 0; + +# else // Windows requires a DWORD with milliseconds + + DWORD to = 10000; + +# endif // _WIN32 + + setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); +# endif // !defined(NO_TIMEOUT) && !__minix__ + + if (!connect(s, sa->ai_addr, sa->ai_addrlen)) + { + printf("successful\n"); + break; + } + + errorout("%s\n", socket_errno == VLMCSD_EINPROGRESS ? "Timed out" : vlmcsd_strerror(socket_errno)); + + socketclose(s); + s = INVALID_SOCKET; + } + + freeaddrinfo(saList); + return s; +} + + +#ifndef NO_SOCKETS + +// Create a Listening socket for addrinfo sa and return socket s +// szHost and szPort are for logging only +static int listenOnAddress(const struct addrinfo *const ai, SOCKET *s) +{ + int error; + char ipstr[64]; + + ip2str(ipstr, sizeof(ipstr), ai->ai_addr, ai->ai_addrlen); + + //*s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + *s = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); + + if (*s == INVALID_SOCKET) + { + error = socket_errno; + printerrorf("Warning: %s error. %s\n", ai->ai_family == AF_INET6 ? cIPv6 : cIPv4, vlmcsd_strerror(error)); + return error; + } + +# if !defined(_WIN32) && !defined(NO_SIGHUP) + + int flags = fcntl(*s, F_GETFD, 0); + + if (flags != -1) + { + flags |= FD_CLOEXEC; + fcntl(*s, F_SETFD, flags); + } +# ifdef _PEDANTIC + else + { + printerrorf("Warning: Could not set FD_CLOEXEC flag on %s: %s\n", ipstr, vlmcsd_strerror(errno)); + } +# endif // _PEDANTIC + +# endif // !defined(_WIN32) && !defined(NO_SIGHUP) + + BOOL socketOption = TRUE; + + // fix for lame tomato toolchain +# ifndef IPV6_V6ONLY +# ifdef __linux__ +# define IPV6_V6ONLY (26) +# endif // __linux__ +# endif // IPV6_V6ONLY + +# ifdef IPV6_V6ONLY + if (ai->ai_family == AF_INET6) setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + +# ifndef _WIN32 + setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, (sockopt_t)&socketOption, sizeof(socketOption)); +# endif + + if (bind(*s, ai->ai_addr, ai->ai_addrlen) || listen(*s, SOMAXCONN)) + { + error = socket_errno; + printerrorf("Warning: %s: %s\n", ipstr, vlmcsd_strerror(error)); + socketclose(*s); + return error; + } + +# ifndef NO_LOG + logger("Listening on %s\n", ipstr); +# endif + + return 0; +} + + +// Adds a listening socket for an address string, +// e.g. 127.0.0.1:1688 or [2001:db8:dead:beef::1]:1688 +BOOL addListeningSocket(const char *const addr) +{ + struct addrinfo *aiList, *ai; + int result = FALSE; + SOCKET *s = SocketList + numsockets; + + if (getSocketList(&aiList, addr, AI_PASSIVE | AI_NUMERICHOST, AF_UNSPEC)) + { + for (ai = aiList; ai; ai = ai->ai_next) + { + // struct sockaddr_in* addr4 = (struct sockaddr_in*)sa->ai_addr; + // struct sockaddr_in6* addr6 = (struct sockaddr_in6*)sa->ai_addr; + + if (numsockets >= FD_SETSIZE) + { + #ifdef _PEDANTIC // Do not report this error in normal builds to keep file size low + printerrorf("Warning: Cannot listen on %s. Your OS only supports %u listening sockets in an FD_SET.\n", addr, FD_SETSIZE); + #endif + break; + } + + if (!listenOnAddress(ai, s)) + { + numsockets++; + result = TRUE; + } + } + + freeaddrinfo(aiList); + } + return result; +} + + +// Just create some dummy sockets to see if we have a specific protocol (IPv4 or IPv6) +__pure int_fast8_t checkProtocolStack(const int addressfamily) +{ + SOCKET s; // = INVALID_SOCKET; + + s = socket(addressfamily, SOCK_STREAM, 0); + int_fast8_t success = (s != INVALID_SOCKET); + + socketclose(s); + return success; +} + + +// Build an fd_set of all listening socket then use select to wait for an incoming connection +static SOCKET network_accept_any() +{ + fd_set ListeningSocketsList; + SOCKET maxSocket, sock; + int i; + int status; + + FD_ZERO(&ListeningSocketsList); + maxSocket = 0; + + for (i = 0; i < numsockets; i++) + { + FD_SET(SocketList[i], &ListeningSocketsList); + if (SocketList[i] > maxSocket) maxSocket = SocketList[i]; + } + + status = select(maxSocket + 1, &ListeningSocketsList, NULL, NULL, NULL); + + if (status < 0) return INVALID_SOCKET; + + sock = INVALID_SOCKET; + + for (i = 0; i < numsockets; i++) + { + if (FD_ISSET(SocketList[i], &ListeningSocketsList)) + { + sock = SocketList[i]; + break; + } + } + + if (sock == INVALID_SOCKET) + return INVALID_SOCKET; + else + return accept(sock, NULL, NULL); +} + + +void closeAllListeningSockets() +{ + int i; + + for (i = 0; i < numsockets; i++) + { + shutdown(SocketList[i], VLMCSD_SHUT_RDWR); + socketclose(SocketList[i]); + } +} +#endif // NO_SOCKETS + + +static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup) +{ +# if !defined(NO_TIMEOUT) && !__minix__ + +# ifndef _WIN32 // Standard Posix timeout structure + + struct timeval to; + to.tv_sec = ServerTimeout; + to.tv_usec = 0; + + #else // Windows requires a DWORD with milliseconds + + DWORD to = ServerTimeout * 1000; + +# endif // _WIN32 + +# if !defined(NO_LOG) && defined(_PEDANTIC) + + int result = + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)) || + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + + if (result) logger("Warning: Set timeout failed: %s\n", vlmcsd_strerror(socket_errno)); + +# else // !(!defined(NO_LOG) && defined(_PEDANTIC)) + + setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)); + setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to)); + +# endif // !(!defined(NO_LOG) && defined(_PEDANTIC)) + +# endif // !defined(NO_TIMEOUT) && !__minix__ + + char ipstr[64]; + socklen_t len; + struct sockaddr_storage addr; + + len = sizeof addr; + + if (getpeername(s_client, (struct sockaddr*)&addr, &len) || + !ip2str(ipstr, sizeof(ipstr), (struct sockaddr*)&addr, len)) + { +# if !defined(NO_LOG) && defined(_PEDANTIC) + logger("Fatal: Cannot determine client's IP address: %s\n", vlmcsd_strerror(errno)); +# endif // !defined(NO_LOG) && defined(_PEDANTIC) + socketclose(s_client); + return; + } + + +# ifndef NO_LOG + const char *const connection_type = addr.ss_family == AF_INET6 ? cIPv6 : cIPv4; + static const char *const cAccepted = "accepted"; + static const char *const cClosed = "closed"; + static const char *const fIP = "%s connection %s: %s.\n"; + + logger(fIP, connection_type, cAccepted, ipstr); + #endif // NO_LOG + + rpcServer(s_client, RpcAssocGroup, ipstr); + +# ifndef NO_LOG + logger(fIP, connection_type, cClosed, ipstr); +# endif // NO_LOG + + socketclose(s_client); +} + + +#ifndef NO_SOCKETS +static void post_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_post(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} + + +static void wait_sem(void) +{ + #if !defined(NO_LIMIT) && !__minix__ + if (!InetdMode && MaxTasks != SEM_VALUE_MAX) + { + semaphore_wait(Semaphore); + } + #endif // !defined(NO_LIMIT) && !__minix__ +} +#endif // NO_SOCKETS + +#if defined(USE_THREADS) && !defined(NO_SOCKETS) + +#if defined(_WIN32) || defined(__CYGWIN__) // Win32 Threads +static DWORD WINAPI serveClientThreadProc(PCLDATA clData) +#else // Posix threads +static void *serveClientThreadProc (PCLDATA clData) +#endif // Thread proc is identical in WIN32 and Posix threads +{ + serveClient(clData->socket, clData->RpcAssocGroup); + free(clData); + post_sem(); + + return 0; +} + +#endif // USE_THREADS + + +#ifndef NO_SOCKETS + +#if defined(USE_THREADS) && (defined(_WIN32) || defined(__CYGWIN__)) // Windows Threads +static int serveClientAsyncWinThreads(const PCLDATA thr_CLData) +{ + wait_sem(); + + HANDLE h = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)serveClientThreadProc, thr_CLData, 0, NULL); + + if (h) + CloseHandle(h); + else + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return GetLastError(); + } + + return NO_ERROR; +} +#endif // defined(USE_THREADS) && defined(_WIN32) // Windows Threads + + +#if defined(USE_THREADS) && !defined(_WIN32) && !defined(__CYGWIN__) // Posix Threads +static int ServeClientAsyncPosixThreads(const PCLDATA thr_CLData) +{ + pthread_t p_thr; + pthread_attr_t attr; + + wait_sem(); + + // Must set detached state to avoid memory leak + if (pthread_attr_init(&attr) || + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) || + pthread_create(&p_thr, &attr, (void * (*)(void *))serveClientThreadProc, thr_CLData)) + { + socketclose(thr_CLData->socket); + free(thr_CLData); + post_sem(); + return !0; + } + + return 0; +} +#endif // defined(USE_THREADS) && !defined(_WIN32) // Posix Threads + +#ifndef USE_THREADS // fork() implementation +static void ChildSignalHandler(const int signal) +{ + if (signal == SIGHUP) return; + + post_sem(); + + #ifndef NO_LOG + logger("Warning: Child killed/crashed by %s\n", strsignal(signal)); + #endif // NO_LOG + + exit(!0); +} + +static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + int pid; + wait_sem(); + + if ((pid = fork()) < 0) + { + return errno; + } + else if ( pid ) + { + // Parent process + socketclose(s_client); + return 0; + } + else + { + // Child process + + // Setup a Child Handler for most common termination signals + struct sigaction sa; + + sa.sa_flags = 0; + sa.sa_handler = ChildSignalHandler; + + static int signallist[] = { SIGHUP, SIGINT, SIGTERM, SIGSEGV, SIGILL, SIGFPE, SIGBUS }; + + if (!sigemptyset(&sa.sa_mask)) + { + uint_fast8_t i; + + for (i = 0; i < _countof(signallist); i++) + { + sigaction(signallist[i], &sa, NULL); + } + } + + serveClient(s_client, RpcAssocGroup); + post_sem(); + exit(0); + } +} +#endif + + +int serveClientAsync(const SOCKET s_client, const DWORD RpcAssocGroup) +{ + #ifndef USE_THREADS // fork() implementation + + return ServeClientAsyncFork(s_client, RpcAssocGroup); + + #else // threads implementation + + PCLDATA thr_CLData = (PCLDATA)vlmcsd_malloc(sizeof(CLDATA)); + thr_CLData->socket = s_client; + thr_CLData->RpcAssocGroup = RpcAssocGroup; + + #if defined(_WIN32) || defined (__CYGWIN__) // Windows threads + + return serveClientAsyncWinThreads(thr_CLData); + + #else // Posix Threads + + return ServeClientAsyncPosixThreads(thr_CLData); + + #endif // Posix Threads + + #endif // USE_THREADS +} + +#endif // NO_SOCKETS + + +int runServer() +{ + DWORD RpcAssocGroup = rand32(); + + // If compiled for inetd-only mode just serve the stdin socket + #ifdef NO_SOCKETS + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + #else + // In inetd mode just handle the stdin socket + if (InetdMode) + { + serveClient(STDIN_FILENO, RpcAssocGroup); + return 0; + } + + // Standalone mode + for (;;) + { + int error; + SOCKET s_client; + + if ( (s_client = network_accept_any()) == INVALID_SOCKET ) + { + error = socket_errno; + + if (error == VLMCSD_EINTR || error == VLMCSD_ECONNABORTED) continue; + + #ifdef _NTSERVICE + if (ServiceShutdown) return 0; + #endif + + #ifndef NO_LOG + logger("Fatal: %s\n",vlmcsd_strerror(error)); + #endif + + return error; + } + + RpcAssocGroup++; + serveClientAsync(s_client, RpcAssocGroup); + } + #endif // NO_SOCKETS + + return 0; +} + +#endif // USE_MSRPC +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif // _DEFAULT_SOURCE + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef USE_MSRPC + +#include +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include "rpc.h" +#include "output.h" +#include "crypto.h" +#include "endian.h" +#include "helpers.h" +#include "network.h" +#include "shared_globals.h" + +/* Forwards */ + +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p); + + +/* Data definitions */ + +// All GUIDs are defined as BYTE[16] here. No big-endian/little-endian byteswapping required. +static const BYTE TransferSyntaxNDR32[] = { + 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11, 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60 +}; + +static const BYTE InterfaceUuid[] = { + 0x75, 0x21, 0xc8, 0x51, 0x4e, 0x84, 0x50, 0x47, 0xB0, 0xD8, 0xEC, 0x25, 0x55, 0x55, 0xBC, 0x06 +}; + +static const BYTE TransferSyntaxNDR64[] = { + 0x33, 0x05, 0x71, 0x71, 0xba, 0xbe, 0x37, 0x49, 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36 +}; + +static const BYTE BindTimeFeatureNegotiation[] = { + 0x2c, 0x1c, 0xb7, 0x6c, 0x12, 0x98, 0x40, 0x45, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +// +// Dispatch RPC payload to kms.c +// +typedef int (*CreateResponse_t)(const void *const, void *const, const char* const); + +static const struct { + unsigned int RequestSize; + CreateResponse_t CreateResponse; +} _Versions[] = { + { sizeof(REQUEST_V4), (CreateResponse_t) CreateResponseV4 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 }, + { sizeof(REQUEST_V6), (CreateResponse_t) CreateResponseV6 } +}; + +RPC_FLAGS RpcFlags; +static int_fast8_t firstPacketSent; + +// +// RPC request (server) +// +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcRequest(const RPC_REQUEST64 *const Request, const unsigned int len, WORD* NdrCtx, WORD* Ndr64Ctx, WORD Ctx) +{ + uint_fast8_t kmsMajorVersion; + uint32_t requestSize = Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64); + + if (len < requestSize) + { + logger("Fatal: RPC request (including header) must be at least %i bytes but is only %i bytes.\n", + (int)(sizeof(RPC_HEADER) + requestSize), + (int)(len + sizeof(RPC_HEADER)) + ); + + return; + } + + if (len < requestSize + sizeof(DWORD)) + { + logger("Fatal: KMS Request too small to contain version info (less than 4 bytes).\n"); + return; + } + + if (Ctx != *Ndr64Ctx) + kmsMajorVersion = LE16(((WORD*)Request->Ndr.Data)[1]); + else + kmsMajorVersion = LE16(((WORD*)Request->Ndr64.Data)[1]); + + if (kmsMajorVersion > 6) + { + logger("Fatal: KMSv%u is not supported.\n", (unsigned int)kmsMajorVersion); + } + else + { + if (len >_Versions[kmsMajorVersion].RequestSize + requestSize) + logger("Warning: %u excess bytes in RPC request.\n", + len - _Versions[kmsMajorVersion].RequestSize + ); + } + + if (Ctx != *Ndr64Ctx && Ctx != *NdrCtx) + logger("Warning: Context id should be %u (NDR32) or %u (NDR64) but is %u.\n", + (unsigned int)*NdrCtx, + (unsigned int)*Ndr64Ctx, + Ctx + ); + + if (Request->Opnum) + logger("Warning: OpNum should be 0 but is %u.\n", + (unsigned int)LE16(Request->Opnum) + ); + + if (LE32(Request->AllocHint) != len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr)) + logger("Warning: Allocation hint should be %u but is %u.\n", + len + sizeof(Request->Ndr), + LE32(Request->AllocHint) + ); + + if (Ctx != *Ndr64Ctx) + { + if (LE32(Request->Ndr.DataLength) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataLength) + ); + + if (LE32(Request->Ndr.DataSizeIs) != len - sizeof(RPC_REQUEST)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST), + LE32(Request->Ndr.DataSizeIs) + ); + } + else + { + if (LE64(Request->Ndr64.DataLength) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data length field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST) + sizeof(Request->Ndr), + LE64(Request->Ndr64.DataLength) + ); + + if (LE64(Request->Ndr64.DataSizeIs) != len - sizeof(RPC_REQUEST64)) + logger("Warning: NDR32 data size field should be %u but is %u.\n", + len - sizeof(RPC_REQUEST64), + LE64(Request->Ndr64.DataSizeIs) + ); + } +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + +/* + * check RPC request for (somewhat) correct size + * allow any size that does not cause CreateResponse to fail badly + */ +static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + WORD Ctx = LE16(Request->ContextId); + +# if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcRequest(Request, requestSize, NdrCtx, Ndr64Ctx, Ctx); +# endif // defined(_PEDANTIC) && !defined(NO_LOG) + + // Anything that is smaller than a v4 request is illegal + if (requestSize < sizeof(REQUEST_V4) + (Ctx != *Ndr64Ctx ? sizeof(RPC_REQUEST) : sizeof(RPC_REQUEST64))) return 0; + + // Get KMS major version + uint_fast16_t _v; + + if (Ctx != *Ndr64Ctx) + _v = LE16(((WORD*)Request->Ndr.Data)[1]) - 4; + else + _v = LE16(((WORD*)Request->Ndr64.Data)[1]) - 4; + + // Only KMS v4, v5 and v6 are supported + if (_v >= vlmcsd_countof(_Versions)) + { +# ifndef NO_LOG + logger("Fatal: KMSv%i unsupported\n", _v + 4); +# endif // NO_LOG + return 0; + } + + // Could check for equality but allow bigger requests to support buggy RPC clients (e.g. wine) + // Buffer overrun is check by caller. + return (requestSize >= _Versions[_v].RequestSize); +} + + +/* + * Handles the actual KMS request from the client. + * Calls KMS functions (CreateResponseV4 or CreateResponseV6) in kms.c + * Returns size of the KMS response packet or 0 on failure. + * + * The RPC packet size (excluding header) is actually in Response->AllocHint + */ +static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const Response, const DWORD RpcAssocGroup_unused, const SOCKET sock_unused, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr) +{ + uint_fast16_t _v; + int ResponseSize; + WORD Ctx = LE16(Request->ContextId); + BYTE* requestData; + BYTE* responseData; + BYTE* pRpcReturnCode; + int len; + + if (Ctx != *Ndr64Ctx) + { + requestData = (BYTE*)&Request->Ndr.Data; + responseData = (BYTE*)&Response->Ndr.Data; + } + else + { + requestData = (BYTE*)&Request->Ndr64.Data; + responseData = (BYTE*)&Response->Ndr64.Data; + } + + _v = LE16(((WORD*)requestData)[1]) - 4; + + if (!(ResponseSize = _Versions[_v].CreateResponse(requestData, responseData, ipstr))) + { + return 0; + } + + if (Ctx != *Ndr64Ctx) + { + Response->Ndr.DataSizeMax = LE32(0x00020000); + Response->Ndr.DataLength = Response->Ndr.DataSizeIs = LE32(ResponseSize); + len = ResponseSize + sizeof(Response->Ndr); + } + else + { + Response->Ndr64.DataSizeMax = LE64(0x00020000ULL); + Response->Ndr64.DataLength = Response->Ndr64.DataSizeIs = LE64((uint64_t)ResponseSize); + len = ResponseSize + sizeof(Response->Ndr64); + } + + pRpcReturnCode = ((BYTE*)&Response->Ndr) + len; + UA32(pRpcReturnCode) = 0; //LE32 not needed for 0 + len += sizeof(DWORD); + + // Pad zeros to 32-bit align (seems not neccassary but Windows RPC does it this way) + int pad = ((~len & 3) + 1) & 3; + memset(pRpcReturnCode + sizeof(DWORD), 0, pad); + len += pad; + + Response->AllocHint = LE32(len); + Response->ContextId = Request->ContextId; + + *((WORD*)&Response->CancelCount) = 0; // CancelCount + Pad1 + + return len + 8; +} + + +#if defined(_PEDANTIC) && !defined(NO_LOG) +static void CheckRpcBindRequest(const RPC_BIND_REQUEST *const Request, const unsigned int len) +{ + uint_fast8_t i, HasTransferSyntaxNDR32 = FALSE; + char guidBuffer1[GUID_STRING_LENGTH + 1], guidBuffer2[GUID_STRING_LENGTH + 1]; + + uint32_t CapCtxItems = (len - sizeof(*Request) + sizeof(Request->CtxItems)) / sizeof(Request->CtxItems); + DWORD NumCtxItems = LE32(Request->NumCtxItems); + + if (NumCtxItems < CapCtxItems) // Can't be too small because already handled by RpcBindSize + logger("Warning: Excess bytes in RPC bind request.\n"); + + for (i = 0; i < NumCtxItems; i++) + { + if (!IsEqualGUID(&Request->CtxItems[i].InterfaceUUID, InterfaceUuid)) + { + uuid2StringLE((GUID*)&Request->CtxItems[i].InterfaceUUID, guidBuffer1); + uuid2StringLE((GUID*)InterfaceUuid, guidBuffer2); + logger("Warning: Interface UUID is %s but should be %s in Ctx item %u.\n", guidBuffer1, guidBuffer2, (unsigned int)i); + } + + if (Request->CtxItems[i].NumTransItems != LE16(1)) + logger("Fatal: %u NDR32 transfer items detected in Ctx item %u, but only one is supported.\n", + (unsigned int)LE16(Request->CtxItems[i].NumTransItems), (unsigned int)i + ); + + if (Request->CtxItems[i].InterfaceVerMajor != LE16(1) || Request->CtxItems[i].InterfaceVerMinor != 0) + logger("Warning: NDR32 Interface version is %u.%u but should be 1.0.\n", + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMajor), + (unsigned int)LE16(Request->CtxItems[i].InterfaceVerMinor) + ); + + if (Request->CtxItems[i].ContextId != LE16((WORD)i)) + logger("Warning: context id of Ctx item %u is %u.\n", (unsigned int)i, (unsigned int)Request->CtxItems[i].ContextId); + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + HasTransferSyntaxNDR32 = TRUE; + + if (Request->CtxItems[i].SyntaxVersion != LE32(2)) + logger("NDR32 transfer syntax version is %u but should be 2.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("NDR64 transfer syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + else if (!memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8)) + { + if (Request->CtxItems[i].SyntaxVersion != LE32(1)) + logger("BTFN syntax version is %u but should be 1.\n", LE32(Request->CtxItems[i].SyntaxVersion)); + } + } + + if (!HasTransferSyntaxNDR32) + logger("Warning: RPC bind request has no NDR32 CtxItem.\n"); +} +#endif // defined(_PEDANTIC) && !defined(NO_LOG) + + +/* + * Check, if we receive enough bytes to return a valid RPC bind response + */ +static unsigned int checkRpcBindSize(const RPC_BIND_REQUEST *const Request, const unsigned int RequestSize, WORD* NdrCtx, WORD* Ndr64Ctx) +{ + if ( RequestSize < sizeof(RPC_BIND_REQUEST) ) return FALSE; + + unsigned int _NumCtxItems = LE32(Request->NumCtxItems); + + if ( RequestSize < sizeof(RPC_BIND_REQUEST) - sizeof(Request->CtxItems[0]) + _NumCtxItems * sizeof(Request->CtxItems[0]) ) return FALSE; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + CheckRpcBindRequest(Request, RequestSize); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + return TRUE; +} + + +/* + * Accepts a bind or alter context request from the client and composes the bind response. + * Needs the socket because the tcp port number is part of the response. + * len is not used here. + * + * Returns TRUE on success. + */ +static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Response, const DWORD RpcAssocGroup, const SOCKET sock, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr_unused) +{ + unsigned int i, _st = FALSE; + DWORD numCtxItems = LE32(Request->NumCtxItems); + int_fast8_t IsNDR64possible = FALSE; + uint_fast8_t portNumberSize; + + socklen_t socklen; + struct sockaddr_storage addr; + + // M$ RPC does not do this. Pad bytes contain apparently random data + // memset(Response->SecondaryAddress, 0, sizeof(Response->SecondaryAddress)); + + socklen = sizeof addr; + + if ( + packetType == RPC_PT_ALTERCONTEXT_REQ || + getsockname(sock, (struct sockaddr*)&addr, &socklen) || + getnameinfo((struct sockaddr*)&addr, socklen, NULL, 0, (char*)Response->SecondaryAddress, sizeof(Response->SecondaryAddress), NI_NUMERICSERV)) + { + portNumberSize = Response->SecondaryAddressLength = 0; + } + else + { + portNumberSize = strlen((char*)Response->SecondaryAddress) + 1; + Response->SecondaryAddressLength = LE16(portNumberSize); + } + + Response->MaxXmitFrag = Request->MaxXmitFrag; + Response->MaxRecvFrag = Request->MaxRecvFrag; + Response->AssocGroup = LE32(RpcAssocGroup); + + // This is really ugly (but efficient) code to support padding after the secondary address field + if (portNumberSize < 3) + { + Response = (RPC_BIND_RESPONSE*)((BYTE*)Response - 4); + } + + Response->NumResults = Request->NumCtxItems; + + if (UseRpcNDR64) + { + for (i = 0; i < numCtxItems; i++) + { + if ( IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + /*if (packetType == RPC_PT_BIND_REQ)*/ + *NdrCtx = LE16(Request->CtxItems[i].ContextId); + } + + if ( IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + IsNDR64possible = TRUE; + + /*if (packetType == RPC_PT_BIND_REQ)*/ + *Ndr64Ctx = LE16(Request->CtxItems[i].ContextId); + } + } + } + + for (i = 0; i < numCtxItems; i++) + { + memset(&Response->Results[i].TransferSyntax, 0, sizeof(GUID)); + + if ( !IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR32, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(2); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + _st = TRUE; + } + else if ( IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax) ) + { + Response->Results[i].SyntaxVersion = LE32(1); + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_ACCEPT; + memcpy(&Response->Results[i].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + + _st = TRUE; + } + else if ( UseRpcBTFN && !memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8) ) + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = RPC_BIND_ACK; + + // Features requested are actually encoded in the GUID + Response->Results[i].AckReason = + ((WORD*)(&Request->CtxItems[i].TransferSyntax))[4] & + (RPC_BTFN_SEC_CONTEXT_MULTIPLEX | RPC_BTFN_KEEP_ORPHAN); + } + else + { + Response->Results[i].SyntaxVersion = 0; + Response->Results[i].AckResult = + Response->Results[i].AckReason = RPC_BIND_NACK; // Unsupported + } + } + + if ( !_st ) return 0; + + return sizeof(RPC_BIND_RESPONSE) + numCtxItems * sizeof(((RPC_BIND_RESPONSE *)0)->Results[0]) - (portNumberSize < 3 ? 4 : 0); +} + + +// +// Main RPC handling routine +// +typedef unsigned int (*GetResponseSize_t)(const void *const request, const unsigned int requestSize, WORD* NdrCtx, WORD* Ndr64Ctx); +typedef int (*GetResponse_t)(const void* const request, void* response, const DWORD rpcAssocGroup, const SOCKET socket, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE packetType, const char* const ipstr); + +static const struct { + BYTE ResponsePacketType; + GetResponseSize_t CheckRequestSize; + GetResponse_t GetResponse; +} +_Actions[] = { + { RPC_PT_BIND_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, + { RPC_PT_RESPONSE, (GetResponseSize_t)checkRpcRequestSize, (GetResponse_t) rpcRequest }, + { RPC_PT_ALTERCONTEXT_ACK, (GetResponseSize_t)checkRpcBindSize, (GetResponse_t) rpcBind }, +}; + + +/* + * This is the main RPC server loop. Returns after KMS request has been serviced + * or a timeout has occured. + */ +void rpcServer(const SOCKET sock, const DWORD RpcAssocGroup, const char* const ipstr) +{ + RPC_HEADER rpcRequestHeader; + WORD NdrCtx = INVALID_NDR_CTX, Ndr64Ctx = INVALID_NDR_CTX; + + randomNumberInit(); + + while (_recv(sock, &rpcRequestHeader, sizeof(rpcRequestHeader))) + { + //int_fast8_t _st; + unsigned int request_len, response_len; + uint_fast8_t _a; + + #if defined(_PEDANTIC) && !defined(NO_LOG) + checkRpcHeader(&rpcRequestHeader, rpcRequestHeader.PacketType, &logger); + #endif // defined(_PEDANTIC) && !defined(NO_LOG) + + switch (rpcRequestHeader.PacketType) + { + case RPC_PT_BIND_REQ: _a = 0; break; + case RPC_PT_REQUEST: _a = 1; break; + case RPC_PT_ALTERCONTEXT_REQ: _a = 2; break; + default: return; + } + + request_len = LE16(rpcRequestHeader.FragLength) - sizeof(rpcRequestHeader); + + BYTE requestBuffer[MAX_REQUEST_SIZE + sizeof(RPC_RESPONSE64)]; + BYTE responseBuffer[MAX_RESPONSE_SIZE + sizeof(RPC_HEADER) + sizeof(RPC_RESPONSE64)]; + + RPC_HEADER *rpcResponseHeader = (RPC_HEADER *)responseBuffer; + RPC_RESPONSE* rpcResponse = (RPC_RESPONSE*)(responseBuffer + sizeof(rpcRequestHeader)); + + // The request is larger than the buffer size + if (request_len > MAX_REQUEST_SIZE + sizeof(RPC_REQUEST64)) return; + + // Unable to receive the complete request + if (!_recv(sock, requestBuffer, request_len)) return; + + // Request is invalid + if (!_Actions[_a].CheckRequestSize(requestBuffer, request_len, &NdrCtx, &Ndr64Ctx)) return; + + // Unable to create a valid response from request + if (!(response_len = _Actions[_a].GetResponse(requestBuffer, rpcResponse, RpcAssocGroup, sock, &NdrCtx, &Ndr64Ctx, rpcRequestHeader.PacketType, ipstr))) return; + + response_len += sizeof(RPC_HEADER); + + memcpy(rpcResponseHeader, &rpcRequestHeader, sizeof(RPC_HEADER)); + + rpcResponseHeader->FragLength = LE16(response_len); + rpcResponseHeader->PacketType = _Actions[_a].ResponsePacketType; + + if (rpcResponseHeader->PacketType == RPC_PT_ALTERCONTEXT_ACK) + rpcResponseHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + + if (!_send(sock, responseBuffer, response_len)) return; + + if (DisconnectImmediately && rpcResponseHeader->PacketType == RPC_PT_RESPONSE) + shutdown(sock, VLMCSD_SHUT_RDWR); + } +} + + +/* RPC client functions */ + +static DWORD CallId = 2; // M$ starts with CallId 2. So we do the same. + + +/* + * Checks RPC header. Returns 0 on success. + * This is mainly for debugging a non Microsoft KMS server that uses its own RPC code. + */ +static int checkRpcHeader(const RPC_HEADER *const Header, const BYTE desiredPacketType, const PRINTFUNC p) +{ + int status = 0; + + if (Header->PacketType != desiredPacketType) + { + p("Fatal: Received wrong RPC packet type. Expected %u but got %u\n", + (uint32_t)desiredPacketType, + Header->PacketType + ); + status = !0; + } + + if (Header->DataRepresentation != BE32(0x10000000)) + { + p("Fatal: RPC response does not conform to Microsoft's limited support of DCE RPC\n"); + status = !0; + } + + if (Header->AuthLength != 0) + { + p("Fatal: RPC response requests authentication\n"); + status = !0; + } + + // vlmcsd does not support fragmented packets (not yet neccassary) + if ( (Header->PacketFlags & (RPC_PF_FIRST | RPC_PF_LAST)) != (RPC_PF_FIRST | RPC_PF_LAST) ) + { + p("Fatal: RPC packet flags RPC_PF_FIRST and RPC_PF_LAST are not both set.\n"); + status = !0; + } + + if (Header->PacketFlags & RPC_PF_CANCEL_PENDING) p("Warning: %s should not be set\n", "RPC_PF_CANCEL_PENDING"); + if (Header->PacketFlags & RPC_PF_RESERVED) p("Warning: %s should not be set\n", "RPC_PF_RESERVED"); + if (Header->PacketFlags & RPC_PF_NOT_EXEC) p("Warning: %s should not be set\n", "RPC_PF_NOT_EXEC"); + if (Header->PacketFlags & RPC_PF_MAYBE) p("Warning: %s should not be set\n", "RPC_PF_MAYBE"); + if (Header->PacketFlags & RPC_PF_OBJECT) p("Warning: %s should not be set\n", "RPC_PF_OBJECT"); + + if (Header->VersionMajor != 5 || Header->VersionMinor != 0) + { + p("Fatal: Expected RPC version 5.0 and got %u.%u\n", Header->VersionMajor, Header->VersionMinor); + status = !0; + } + + return status; +} + + +/* + * Checks an RPC response header. Does basic header checks by calling checkRpcHeader() + * and then does additional checks if response header complies with the respective request header. + * PRINTFUNC p can be anything that has the same prototype as printf. + * Returns 0 on success. + */ +static int checkRpcResponseHeader(const RPC_HEADER *const ResponseHeader, const RPC_HEADER *const RequestHeader, const BYTE desiredPacketType, const PRINTFUNC p) +{ + static int_fast8_t WineBugDetected = FALSE; + int status = checkRpcHeader(ResponseHeader, desiredPacketType, p); + + if (desiredPacketType == RPC_PT_BIND_ACK) + { + if ((ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) != (RequestHeader->PacketFlags & RPC_PF_MULTIPLEX)) + { + p("Warning: RPC_PF_MULTIPLEX of RPC request and response should match\n"); + } + } + else + { + if (ResponseHeader->PacketFlags & RPC_PF_MULTIPLEX) + { + p("Warning: %s should not be set\n", "RPC_PF_MULTIPLEX"); + } + } + + if (!status && ResponseHeader->CallId == LE32(1)) + { + if (!WineBugDetected) + { + p("Warning: Buggy RPC of Wine detected. Call Id of Response is always 1\n"); + WineBugDetected = TRUE; + } + } + else if (ResponseHeader->CallId != RequestHeader->CallId) + { + p("Fatal: Sent Call Id %u but received answer for Call Id %u\n", + (uint32_t)LE32(RequestHeader->CallId), + (uint32_t)LE32(ResponseHeader->CallId) + ); + + status = !0; + } + + return status; +} + +/* + * Initializes an RPC request header as needed for KMS, i.e. packet always fits in one fragment. + * size cannot be greater than fragment length negotiated during RPC bind. + */ +static void createRpcRequestHeader(RPC_HEADER* RequestHeader, BYTE packetType, WORD size) +{ + RequestHeader->PacketType = packetType; + RequestHeader->PacketFlags = RPC_PF_FIRST | RPC_PF_LAST; + RequestHeader->VersionMajor = 5; + RequestHeader->VersionMinor = 0; + RequestHeader->AuthLength = 0; + RequestHeader->DataRepresentation = BE32(0x10000000); // Little endian, ASCII charset, IEEE floating point + RequestHeader->CallId = LE32(CallId); + RequestHeader->FragLength = LE16(size); +} + + +/* + * Sends a KMS request via RPC and receives a response. + * Parameters are raw (encrypted) reqeuests / responses. + * Returns 0 on success. + */ +RpcStatus rpcSendRequest(const RpcCtx sock, const BYTE *const KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t *const responseSize) +{ + #define MAX_EXCESS_BYTES 16 + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_REQUEST64 *RpcRequest; + RPC_RESPONSE64 _Response; + int status = 0; + int_fast8_t useNdr64 = UseRpcNDR64 && firstPacketSent; + size_t size = sizeof(RPC_HEADER) + (useNdr64 ? sizeof(RPC_REQUEST64) : sizeof(RPC_REQUEST)) + requestSize; + size_t responseSize2; + + *KmsResponse = NULL; + + BYTE *_Request = (BYTE*)vlmcsd_malloc(size); + + RequestHeader = (RPC_HEADER*)_Request; + RpcRequest = (RPC_REQUEST64*)(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, RPC_PT_REQUEST, size); + + // Increment CallId for next Request + CallId++; + + RpcRequest->Opnum = 0; + + if (useNdr64) + { + RpcRequest->ContextId = LE16(1); // We negotiate NDR64 always as context 1 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr64)); + RpcRequest->Ndr64.DataLength = LE64((uint64_t)requestSize); + RpcRequest->Ndr64.DataSizeIs = LE64((uint64_t)requestSize); + memcpy(RpcRequest->Ndr64.Data, KmsRequest, requestSize); + } + else + { + RpcRequest->ContextId = 0; // We negotiate NDR32 always as context 0 + RpcRequest->AllocHint = LE32(requestSize + sizeof(RpcRequest->Ndr)); + RpcRequest->Ndr.DataLength = LE32(requestSize); + RpcRequest->Ndr.DataSizeIs = LE32(requestSize); + memcpy(RpcRequest->Ndr.Data, KmsRequest, requestSize); + } + + for(;;) + { + int bytesread; + + if (!_send(sock, _Request, size)) + { + errorout("\nFatal: Could not send RPC request\n"); + status = !0; + break; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: No RPC response received from server\n"); + status = !0; + break; + } + + if ((status = checkRpcResponseHeader(&ResponseHeader, RequestHeader, RPC_PT_RESPONSE, &errorout))) break; + + size = useNdr64 ? sizeof(RPC_RESPONSE64) : sizeof(RPC_RESPONSE); + + if (size > LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader)) + size = LE16(ResponseHeader.FragLength) - sizeof(ResponseHeader); + + if (!_recv(sock, &_Response, size)) + { + errorout("\nFatal: RPC response is incomplete\n"); + status = !0; + break; + } + + if (_Response.CancelCount != 0) + { + errorout("\nFatal: RPC response cancel count is not 0\n"); + status = !0; + } + + if (_Response.ContextId != (useNdr64 ? LE16(1) : 0)) + { + errorout("\nFatal: RPC response context id %u is not bound\n", (unsigned int)LE16(_Response.ContextId)); + status = !0; + } + + int_fast8_t sizesMatch; + + if (useNdr64) + { + *responseSize = (size_t)LE64(_Response.Ndr64.DataLength); + responseSize2 = (size_t)LE64(_Response.Ndr64.DataSizeIs); + + if (!*responseSize || !_Response.Ndr64.DataSizeMax) + { + status = (int)LE32(_Response.Ndr64.status); + break; + } + + sizesMatch = (size_t)LE64(_Response.Ndr64.DataLength) == responseSize2; + } + else + { + *responseSize = (size_t)LE32(_Response.Ndr.DataLength); + responseSize2 = (size_t)LE32(_Response.Ndr.DataSizeIs); + + if (!*responseSize || !_Response.Ndr.DataSizeMax) + { + status = (int)LE32(_Response.Ndr.status); + break; + } + + sizesMatch = (size_t)LE32(_Response.Ndr.DataLength) == responseSize2; + } + + if (!sizesMatch) + { + errorout("\nFatal: NDR data length (%u) does not match NDR data size (%u)\n", + (uint32_t)*responseSize, + (uint32_t)LE32(_Response.Ndr.DataSizeIs) + ); + + status = !0; + } + + *KmsResponse = (BYTE*)vlmcsd_malloc(*responseSize + MAX_EXCESS_BYTES); + + // If RPC stub is too short, assume missing bytes are zero (same ill behavior as MS RPC) + memset(*KmsResponse, 0, *responseSize + MAX_EXCESS_BYTES); + + // Read up to 16 bytes more than bytes expected to detect faulty KMS emulators + if ((bytesread = recv(sock, (char*)*KmsResponse, *responseSize + MAX_EXCESS_BYTES, 0)) < (int)*responseSize) + { + errorout("\nFatal: No or incomplete KMS response received. Required %u bytes but only got %i\n", + (uint32_t)*responseSize, + (int32_t)(bytesread < 0 ? 0 : bytesread) + ); + + status = !0; + break; + } + + DWORD *pReturnCode; + + size_t len = *responseSize + (useNdr64 ? sizeof(_Response.Ndr64) : sizeof(_Response.Ndr)) + sizeof(*pReturnCode); + size_t pad = ((~len & 3) + 1) & 3; + + if (len + pad != LE32(_Response.AllocHint)) + { + errorout("\nWarning: RPC stub size is %u, should be %u (probably incorrect padding)\n", (uint32_t)LE32(_Response.AllocHint), (uint32_t)(len + pad)); + } + else + { + size_t i; + for (i = 0; i < pad; i++) + { + if (*(*KmsResponse + *responseSize + sizeof(*pReturnCode) + i)) + { + errorout("\nWarning: RPC stub data not padded to zeros according to Microsoft standard\n"); + break; + } + } + } + + pReturnCode = (DWORD*)(*KmsResponse + *responseSize + pad); + status = LE32(UA32(pReturnCode)); + + if (status) errorout("\nWarning: RPC stub data reported Error %u\n", (uint32_t)status); + + break; + } + + free(_Request); + firstPacketSent = TRUE; + return status; + #undef MAX_EXCESS_BYTES +} + + +static int_fast8_t IsNullGuid(BYTE* guidPtr) +{ + int_fast8_t i; + + for (i = 0; i < 16; i++) + { + if (guidPtr[i]) return FALSE; + } + + return TRUE; +} + +/* + * Perform RPC client bind. Accepts a connected client socket. + * Returns 0 on success. RPC binding is required before any payload can be + * exchanged. It negotiates about protocol details. + */ +RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const int_fast8_t verbose) +{ + RPC_HEADER *RequestHeader, ResponseHeader; + RPC_BIND_REQUEST *bindRequest; + RPC_BIND_RESPONSE *bindResponse; + int status; + WORD ctxItems = 1 + (packetType == RPC_PT_BIND_REQ ? UseRpcNDR64 + UseRpcBTFN : 0); + size_t rpcBindSize = (sizeof(RPC_HEADER) + sizeof(RPC_BIND_REQUEST) + (ctxItems - 1) * sizeof(bindRequest->CtxItems[0])); + WORD ctxIndex = 0; + WORD i; + WORD CtxBTFN = (WORD)~0, CtxNDR64 = (WORD)~0; + BYTE _Request[rpcBindSize]; + + RequestHeader = (RPC_HEADER*)_Request; + bindRequest = (RPC_BIND_REQUEST* )(_Request + sizeof(RPC_HEADER)); + + createRpcRequestHeader(RequestHeader, packetType, rpcBindSize); + RequestHeader->PacketFlags |= UseMultiplexedRpc ? RPC_PF_MULTIPLEX : 0; + + bindRequest->AssocGroup = 0; + bindRequest->MaxRecvFrag = bindRequest->MaxXmitFrag = LE16(5840); + bindRequest->NumCtxItems = LE32(ctxItems); + + // data that is identical in all Ctx items + for (i = 0; i < ctxItems; i++) + { + bindRequest->CtxItems[i].ContextId = LE16(i); + bindRequest->CtxItems[i].InterfaceVerMajor = LE16(1); + bindRequest->CtxItems[i].InterfaceVerMinor = 0; + bindRequest->CtxItems[i].NumTransItems = LE16(1); + bindRequest->CtxItems[i].SyntaxVersion = i ? LE32(1) : LE32(2); + + memcpy(&bindRequest->CtxItems[i].InterfaceUUID, InterfaceUuid, sizeof(GUID)); + } + + memcpy(&bindRequest->CtxItems[0].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID)); + + if (UseRpcNDR64 && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID)); + CtxNDR64 = ctxIndex; + } + + if (UseRpcBTFN && packetType == RPC_PT_BIND_REQ) + { + memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, BindTimeFeatureNegotiation, sizeof(GUID)); + CtxBTFN = ctxIndex; + } + + if (!_send(sock, _Request, rpcBindSize)) + { + errorout("\nFatal: Sending RPC bind request failed\n"); + return !0; + } + + if (!_recv(sock, &ResponseHeader, sizeof(RPC_HEADER))) + { + errorout("\nFatal: Did not receive a response from server\n"); + return !0; + } + + if ((status = checkRpcResponseHeader + ( + &ResponseHeader, + RequestHeader, + packetType == RPC_PT_BIND_REQ ? RPC_PT_BIND_ACK : RPC_PT_ALTERCONTEXT_ACK, + &errorout + ))) + { + return status; + } + + bindResponse = (RPC_BIND_RESPONSE*)vlmcsd_malloc(LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER)); + BYTE* bindResponseBytePtr = (BYTE*)bindResponse; + + if (!_recv(sock, bindResponse, LE16(ResponseHeader.FragLength) - sizeof(RPC_HEADER))) + { + errorout("\nFatal: Incomplete RPC bind acknowledgement received\n"); + free(bindResponseBytePtr); + return !0; + } + else + { + /* + * checking, whether a bind or alter context response is as expected. + * This check is very strict and checks whether a KMS emulator behaves exactly the same way + * as Microsoft's RPC does. + */ + status = 0; + + if (bindResponse->SecondaryAddressLength < LE16(3)) + bindResponse = (RPC_BIND_RESPONSE*)(bindResponseBytePtr - 4); + + if (bindResponse->NumResults != bindRequest->NumCtxItems) + { + errorout("\nFatal: Expected %u CTX items but got %u\n", + (uint32_t)LE32(bindRequest->NumCtxItems), + (uint32_t)LE32(bindResponse->NumResults) + ); + + status = !0; + } + + for (i = 0; i < ctxItems; i++) + { + const char* transferSyntaxName = + i == CtxBTFN ? "BTFN" : i == CtxNDR64 ? "NDR64" : "NDR32"; + + if (bindResponse->Results[i].AckResult == RPC_BIND_NACK) // transfer syntax was declined + { + if (!IsNullGuid((BYTE*)&bindResponse->Results[i].TransferSyntax)) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return NULL Guid\n", + transferSyntaxName + ); + } + + if (bindResponse->Results[i].SyntaxVersion) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return syntax version 0 but %u\n", + transferSyntaxName, + LE32(bindResponse->Results[i].SyntaxVersion) + ); + } + + if (bindResponse->Results[i].AckReason == RPC_ABSTRACTSYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Transfer syntax %s does not support KMS activation\n", + transferSyntaxName + ); + } + else if (bindResponse->Results[i].AckReason != RPC_SYNTAX_UNSUPPORTED) + { + errorout( + "\nWarning: Rejected transfer syntax %s did not return ack reason RPC_SYNTAX_UNSUPPORTED\n", + transferSyntaxName + ); + } + + continue; + } + + if (i == CtxBTFN) // BTFN + { + if (bindResponse->Results[i].AckResult != RPC_BIND_ACK) + { + errorout("\nWarning: BTFN did not respond with RPC_BIND_ACK or RPC_BIND_NACK\n"); + } + + if (bindResponse->Results[i].AckReason != LE16(3)) + { + errorout("\nWarning: BTFN did not return expected feature mask 0x3 but 0x%X\n", (unsigned int)LE16(bindResponse->Results[i].AckReason)); + } + + if (verbose) printf("... BTFN "); + RpcFlags.HasBTFN = TRUE; + + continue; + } + + // NDR32 or NDR64 Ctx + if (bindResponse->Results[i].AckResult != RPC_BIND_ACCEPT) + { + errorout( + "\nFatal: transfer syntax %s returned an invalid status, neither RPC_BIND_ACCEPT nor RPC_BIND_NACK\n", + transferSyntaxName + ); + + status = !0; + } + + if (!IsEqualGUID(&bindResponse->Results[i].TransferSyntax, &bindRequest->CtxItems[i].TransferSyntax)) + { + errorout( + "\nFatal: Transfer syntax of RPC bind request and response does not match\n" + ); + + status = !0; + } + + if (bindResponse->Results[i].SyntaxVersion != bindRequest->CtxItems[i].SyntaxVersion) + { + errorout("\nFatal: Expected transfer syntax version %u for %s but got %u\n", + (uint32_t)LE32(bindRequest->CtxItems[0].SyntaxVersion), + transferSyntaxName, + (uint32_t)LE32(bindResponse->Results[0].SyntaxVersion) + ); + + status = !0; + } + + // The ack reason field is actually undefined here but Microsoft sets this to 0 + if (bindResponse->Results[i].AckReason != 0) + { + errorout( + "\nWarning: Ack reason should be 0 but is %u\n", + LE16(bindResponse->Results[i].AckReason) + ); + } + + if (!status) + { + if (i == CtxNDR64) + { + RpcFlags.HasNDR64 = TRUE; + if (verbose) printf("... NDR64 "); + } + if (!i) + { + RpcFlags.HasNDR32 = TRUE; + if (verbose) printf("... NDR32 "); + } + + } + } + } + + free(bindResponseBytePtr); + + if (!RpcFlags.HasNDR64 && !RpcFlags.HasNDR32) + { + errorout("\nFatal: Could neither negotiate NDR32 nor NDR64 with the RPC server\n"); + status = !0; + } + + return status; +} + +RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose) +{ + firstPacketSent = FALSE; + RpcFlags.mask = 0; + + RpcStatus status = + rpcBindOrAlterClientContext(sock, RPC_PT_BIND_REQ, verbose); + + if (status) return status; + + if (!RpcFlags.HasNDR32) + status = rpcBindOrAlterClientContext(sock, RPC_PT_ALTERCONTEXT_REQ, verbose); + + return status; +} + +#endif // USE_MSRPC +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#if !defined(_CRYPTO_OPENSSL) && !defined(_CRYPTO_POLARSSL) && !defined(_CRYPTO_WINDOWS) +#include "crypto_internal.h" +#include "endian.h" + +#define F0(x, y, z) ( ((x) & (y)) | (~(x) & (z)) ) +#define F1(x, y, z) ( ((x) & (y)) | ((x) & (z)) | ((y) & (z)) ) + +#define SI1(x) ( ROR32(x, 2 ) ^ ROR32(x, 13) ^ ROR32(x, 22) ) +#define SI2(x) ( ROR32(x, 6 ) ^ ROR32(x, 11) ^ ROR32(x, 25) ) +#define SI3(x) ( ROR32(x, 7 ) ^ ROR32(x, 18) ^ ((x) >> 3 ) ) +#define SI4(x) ( ROR32(x, 17) ^ ROR32(x, 19) ^ ((x) >> 10) ) + +static const DWORD k[] = { + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, + 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, + 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, + 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, + 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, + 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +}; + + +static void Sha256Init(Sha256Ctx *Ctx) +{ + Ctx->State[0] = 0x6A09E667; + Ctx->State[1] = 0xBB67AE85; + Ctx->State[2] = 0x3C6EF372; + Ctx->State[3] = 0xA54FF53A; + Ctx->State[4] = 0x510E527F; + Ctx->State[5] = 0x9B05688C; + Ctx->State[6] = 0x1F83D9AB; + Ctx->State[7] = 0x5BE0CD19; + Ctx->Len = 0; +} + + +static void Sha256ProcessBlock(Sha256Ctx *Ctx, BYTE *block) +{ + unsigned int i; + DWORD w[64], temp1, temp2; + DWORD a = Ctx->State[0]; + DWORD b = Ctx->State[1]; + DWORD c = Ctx->State[2]; + DWORD d = Ctx->State[3]; + DWORD e = Ctx->State[4]; + DWORD f = Ctx->State[5]; + DWORD g = Ctx->State[6]; + DWORD h = Ctx->State[7]; + + for (i = 0; i < 16; i++) + //w[ i ] = GET_UAA32BE(block, i); + w[i] = BE32(((DWORD*)block)[i]); + + for (i = 16; i < 64; i++) + w[ i ] = SI4(w[ i - 2 ]) + w[ i - 7 ] + SI3(w[ i - 15 ]) + w[ i - 16 ]; + + for (i = 0; i < 64; i++) + { + temp1 = h + SI2(e) + F0(e, f, g) + k[ i ] + w[ i ]; + temp2 = SI1(a) + F1(a, b, c); + + h = g; + g = f; + f = e; + e = d + temp1; + d = c; + c = b; + b = a; + a = temp1 + temp2; + } + + Ctx->State[0] += a; + Ctx->State[1] += b; + Ctx->State[2] += c; + Ctx->State[3] += d; + Ctx->State[4] += e; + Ctx->State[5] += f; + Ctx->State[6] += g; + Ctx->State[7] += h; +} + + +static void Sha256Update(Sha256Ctx *Ctx, BYTE *data, size_t len) +{ + unsigned int b_len = Ctx->Len & 63, + r_len = (b_len ^ 63) + 1; + + Ctx->Len += len; + + if ( len < r_len ) + { + memcpy(Ctx->Buffer + b_len, data, len); + return; + } + + if ( r_len < 64 ) + { + memcpy(Ctx->Buffer + b_len, data, r_len); + len -= r_len; + data += r_len; + Sha256ProcessBlock(Ctx, Ctx->Buffer); + } + + for (; len >= 64; len -= 64, data += 64) + Sha256ProcessBlock(Ctx, data); + + if ( len ) memcpy(Ctx->Buffer, data, len); +} + + +static void Sha256Finish(Sha256Ctx *Ctx, BYTE *hash) +{ + unsigned int i, b_len = Ctx->Len & 63; + + Ctx->Buffer[ b_len ] = 0x80; + if ( b_len ^ 63 ) memset(Ctx->Buffer + b_len + 1, 0, b_len ^ 63); + + if ( b_len >= 56 ) + { + Sha256ProcessBlock(Ctx, Ctx->Buffer); + memset(Ctx->Buffer, 0, 56); + } + + //PUT_UAA64BE(Ctx->Buffer, (unsigned long long)(Ctx->Len * 8), 7); + ((uint64_t*)Ctx->Buffer)[7] = BE64((uint64_t)Ctx->Len << 3); + Sha256ProcessBlock(Ctx, Ctx->Buffer); + + for (i = 0; i < 8; i++) + //PUT_UAA32BE(hash, Ctx->State[i], i); + ((DWORD*)hash)[i] = BE32(Ctx->State[i]); + +} + + +void Sha256(BYTE *data, size_t len, BYTE *hash) +{ + Sha256Ctx Ctx; + + Sha256Init(&Ctx); + Sha256Update(&Ctx, data, len); + Sha256Finish(&Ctx, hash); +} + + +static void _Sha256HmacInit(Sha256HmacCtx *Ctx, BYTE *key, size_t klen) +{ + BYTE IPad[64]; + unsigned int i; + + memset(IPad, 0x36, sizeof(IPad)); + memset(Ctx->OPad, 0x5C, sizeof(Ctx->OPad)); + + if ( klen > 64 ) + { + BYTE *temp = (BYTE*)alloca(32); + Sha256(key, klen, temp); + klen = 32; + key = temp; + } + + for (i = 0; i < klen; i++) + { + IPad[ i ] ^= key[ i ]; + Ctx->OPad[ i ] ^= key[ i ]; + } + + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, IPad, sizeof(IPad)); +} + + +static void _Sha256HmacUpdate(Sha256HmacCtx *Ctx, BYTE *data, size_t len) +{ + Sha256Update(&Ctx->ShaCtx, data, len); +} + + +static void _Sha256HmacFinish(Sha256HmacCtx *Ctx, BYTE *hmac) +{ + BYTE temp[32]; + + Sha256Finish(&Ctx->ShaCtx, temp); + Sha256Init(&Ctx->ShaCtx); + Sha256Update(&Ctx->ShaCtx, Ctx->OPad, sizeof(Ctx->OPad)); + Sha256Update(&Ctx->ShaCtx, temp, sizeof(temp)); + Sha256Finish(&Ctx->ShaCtx, hmac); +} + + + +int_fast8_t Sha256Hmac(BYTE* key, BYTE* restrict data, DWORD len, BYTE* restrict hmac) +{ + Sha256HmacCtx Ctx; + _Sha256HmacInit(&Ctx, key, 16); + _Sha256HmacUpdate(&Ctx, data, len); + _Sha256HmacFinish(&Ctx, hmac); + return TRUE; +} + + +#endif // No external Crypto + +/* + * dns_srv.c + * + * This file contains the code for KMS SRV record lookup in DNS (_vlmcs._tcp.example.com IN SRV 0 0 1688 mykms.example.com) + * + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifndef NO_DNS + +#include "dns_srv.h" + +#include +#include +#ifndef _WIN32 +#include +#include +#include +#include +#include +//#ifndef DNS_PARSER_INTERNAL +#if __ANDROID__ +#include +#include "nameser.h" +#include "resolv.h" +#else // other Unix non-Android +#include +#include +#include +#endif // other Unix non-Android +//#endif // DNS_PARSER_INTERNAL +#else // WIN32 +#include +#endif // WIN32 + +#include "helpers.h" +#include "output.h" +#include "endian.h" + +#if defined(DNS_PARSER_INTERNAL) && !defined(_WIN32) + +#include "ns_name.h" +#include "ns_parse.h" + +// Define macros to redirect DNS parser functions to internal versions + +#undef ns_msg +#undef ns_initparse +#undef ns_parserr +#undef ns_rr +#undef ns_name_uncompress +#undef ns_msg_base +#undef ns_msg_end +#undef ns_rr_rdata +#undef ns_rr_type +#undef ns_msg_count +#undef ns_rr_class +#undef ns_s_an +#define ns_msg ns_msg_vlmcsd +#define ns_initparse ns_initparse_vlmcsd +#define ns_parserr ns_parserr_vlmcsd +#define ns_rr ns_rr_vlmcsd +#define ns_name_uncompress ns_name_uncompress_vlmcsd +#define ns_msg_base ns_msg_base_vlmcsd +#define ns_msg_end ns_msg_end_vlmcsd +#define ns_rr_rdata ns_rr_rdata_vlmcsd +#define ns_rr_type ns_rr_type_vlmcsd +#define ns_msg_count ns_msg_count_vlmcsd +#define ns_rr_class ns_rr_class_vlmcsd +#define ns_s_an ns_s_an_vlmcsd + +#ifndef NS_MAXLABEL +#define NS_MAXLABEL 63 +#endif + +#endif // defined(DNS_PARSER_INTERNAL) && !defined(_WIN32) + + +//TODO: maybe move to helpers.c +static unsigned int isqrt(unsigned int n) +{ + unsigned int c = 0x8000; + unsigned int g = 0x8000; + + for(;;) + { + if(g*g > n) + g ^= c; + + c >>= 1; + + if(c == 0) return g; + + g |= c; + } +} + + +/* + * Compare function for qsort to sort SRV records by priority and weight + * random_weight must be product of weight from SRV record and square root of a random number + */ +static int kmsServerListCompareFunc1(const void* a, const void* b) +{ + if ( !a && !b) return 0; + if ( a && !b) return -1; + if ( !a && b) return 1; + + int priority_order = (int)((*(kms_server_dns_ptr*)a)->priority) - ((int)(*(kms_server_dns_ptr*)b)->priority); + + if (priority_order) return priority_order; + + return (int)((*(kms_server_dns_ptr*)b)->random_weight) - ((int)(*(kms_server_dns_ptr*)a)->random_weight); +} + +/* Sort resulting SRV records */ +void sortSrvRecords(kms_server_dns_ptr* serverlist, const int answers) +{ + int i; + + for (i = 0; i < answers; i++) + { + serverlist[i]->random_weight = (rand32() % 256) * isqrt(serverlist[i]->weight * 1000); + } + + qsort(serverlist, answers, sizeof(kms_server_dns_ptr), kmsServerListCompareFunc1); +} + + +#define RECEIVE_BUFFER_SIZE 2048 +#ifndef _WIN32 // UNIX resolver + +/* + * Retrieves a raw DNS answer (a buffer of what came over the net) + * Result must be parsed + */ +static int getDnsRawAnswer(const char *restrict query, unsigned char** receive_buffer) +{ + if (res_init() < 0) + { + errorout("Cannot initialize resolver: %s", strerror(errno)); + return 0; + } + + //if(!(*receive_buffer = (unsigned char*)malloc(RECEIVE_BUFFER_SIZE))) OutOfMemory(); + *receive_buffer = (unsigned char*)vlmcsd_malloc(RECEIVE_BUFFER_SIZE); + + int bytes_received; + + if (*query == '.') + { +# if __ANDROID__ || __GLIBC__ /* including __UCLIBC__*/ || __APPLE__ || __CYGWIN__ || __FreeBSD__ || __NetBSD__ || __DragonFly__ || __OpenBSD__ || __sun__ + bytes_received = res_querydomain("_vlmcs._tcp", query + 1, ns_c_in, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); +# else + char* querystring = (char*)alloca(strlen(query) + 12); + strcpy(querystring, "_vlmcs._tcp"); + strcat(querystring, query); + bytes_received = res_query(querystring, C_IN, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); +# endif + } + else + { + bytes_received = res_search("_vlmcs._tcp", ns_c_in, ns_t_srv, *receive_buffer, RECEIVE_BUFFER_SIZE); + } + + if (bytes_received < 0) + { + errorout("Fatal: DNS query to %s%s failed: %s\n", "_vlmcs._tcp", *query == '.' ? query : "", hstrerror(h_errno)); + return 0; + } + + return bytes_received; +} + +/* + * Retrieves an unsorted array of SRV records (Unix / Posix) + */ +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *restrict query) +{ + unsigned char* receive_buffer; + *serverlist = NULL; + + int bytes_received = getDnsRawAnswer(query, &receive_buffer); + + if (bytes_received == 0) return 0; + + ns_msg msg; + + if (ns_initparse(receive_buffer, bytes_received, &msg) < 0) + { + errorout("Fatal: Incorrect DNS response: %s\n", strerror(errno)); + free(receive_buffer); + return 0; + } + + uint16_t i, answers = ns_msg_count(msg, ns_s_an); + //if(!(*serverlist = (kms_server_dns_ptr*)malloc(answers * sizeof(kms_server_dns_ptr)))) OutOfMemory(); + *serverlist = (kms_server_dns_ptr*)malloc(answers * sizeof(kms_server_dns_ptr)); + + memset(*serverlist, 0, answers * sizeof(kms_server_dns_ptr)); + + for (i = 0; i < answers; i++) + { + ns_rr rr; + + if (ns_parserr(&msg, ns_s_an, i, &rr) < 0) + { + errorout("Warning: Error in DNS resource record: %s\n", strerror(errno)); + continue; + } + + if (ns_rr_type(rr) != ns_t_srv) + { + errorout("Warning: DNS server returned non-SRV record\n"); + continue; + } + + if (ns_rr_class(rr) != ns_c_in) + { + errorout("Warning: DNS server returned non-IN class record\n"); + continue; + } + + dns_srv_record_ptr srvrecord = (dns_srv_record_ptr)ns_rr_rdata(rr); + kms_server_dns_ptr kms_server = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + (*serverlist)[i] = kms_server; + + if (ns_name_uncompress(ns_msg_base(msg), ns_msg_end(msg), srvrecord->name, kms_server->serverName, sizeof(kms_server->serverName)) < 0) + { + errorout("Warning: No valid DNS name returned in SRV record: %s\n", strerror(errno)); + continue; + } + + sprintf(kms_server->serverName + strlen(kms_server->serverName), ":%hu", GET_UA16BE(&srvrecord->port)); + kms_server->priority = GET_UA16BE(&srvrecord->priority); + kms_server->weight = GET_UA16BE(&srvrecord->weight); + + } + + free(receive_buffer); + return answers; +} + +#else // WIN32 (Windows Resolver) + +/* + * Retrieves an unsorted array of SRV records (Windows) + */ +int getKmsServerList(kms_server_dns_ptr** serverlist, const char *const restrict query) +{ +# define MAX_DNS_NAME_SIZE 254 + *serverlist = NULL; + PDNS_RECORD receive_buffer; + char dnsDomain[MAX_DNS_NAME_SIZE]; + char FqdnQuery[MAX_DNS_NAME_SIZE]; + DWORD size = MAX_DNS_NAME_SIZE; + DNS_STATUS result; + int answers = 0; + PDNS_RECORD dns_iterator; + + if (*query == '-') + { + if (!GetComputerNameExA(ComputerNamePhysicalDnsDomain, dnsDomain, &size)) + { + errorout("Fatal: Could not determine computer's DNS name: %s\n", vlmcsd_strerror(GetLastError())); + return 0; + } + + strcpy(FqdnQuery, "_vlmcs._tcp."); + strncat(FqdnQuery, dnsDomain, MAX_DNS_NAME_SIZE - 12); + } + else + { + strcpy(FqdnQuery, "_vlmcs._tcp"); + strncat(FqdnQuery, query, MAX_DNS_NAME_SIZE - 11); + } + + if ((result = DnsQuery_UTF8(FqdnQuery, DNS_TYPE_SRV, 0, NULL, &receive_buffer, NULL)) != 0) + { + errorout("Fatal: DNS query to %s failed: %s\n", FqdnQuery, vlmcsd_strerror(result)); + return 0; + } + + for (dns_iterator = receive_buffer; dns_iterator; dns_iterator = dns_iterator->pNext) + { + if (dns_iterator->Flags.S.Section != 1) continue; + + if (dns_iterator->wType != DNS_TYPE_SRV) + { + errorout("Warning: DNS server returned non-SRV record\n"); + continue; + } + + answers++; + } + + *serverlist = (kms_server_dns_ptr*)vlmcsd_malloc(answers * sizeof(kms_server_dns_ptr)); + + for (answers = 0, dns_iterator = receive_buffer; dns_iterator; dns_iterator = dns_iterator->pNext) + { + if (dns_iterator->wType != DNS_TYPE_SRV) continue; + + kms_server_dns_ptr kms_server = (kms_server_dns_ptr)vlmcsd_malloc(sizeof(kms_server_dns_t)); + + memset(kms_server, 0, sizeof(kms_server_dns_t)); + + snprintf(kms_server->serverName, sizeof(kms_server->serverName), "%s:%hu", dns_iterator->Data.SRV.pNameTarget, dns_iterator->Data.SRV.wPort); + kms_server->priority = dns_iterator->Data.SRV.wPriority; + kms_server->weight = dns_iterator->Data.SRV.wWeight; + + (*serverlist)[answers++] = kms_server; + } + + //sortSrvRecords(*serverlist, answers, NoSrvRecordPriority); + + DnsRecordListFree(receive_buffer, DnsFreeRecordList); + + return answers; +# undef MAX_DNS_NAME_SIZE +} +#endif // _WIN32 +#undef RECEIVE_BUFFER_SIZE +#endif // NO_DNS + + +/* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Modified by Hotbird64 for use with vlmcs. + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef DNS_PARSER_INTERNAL +#ifndef NO_DNS + +/* Import. */ + +#include +#include +#include + +#include "types.h" +#include "endian.h" +#include "ns_name.h" +#include "ns_parse.h" + +/* Macros. */ + +#define NS_GET16_VLMCSD(s, cp) do { \ + (s) = GET_UA16BE(cp); \ + (cp) += NS_INT16SZ; \ +} while (0) + +#define NS_GET32_VLMCSD(l, cp) do { \ + (l) = GET_UA32BE(cp); \ + (cp) += NS_INT32SZ; \ +} while (0) + +#define RETERR(err) do { errno = (err); return (-1); } while (0) + +/* Forward. */ + +static void setsection_vlmcsd(ns_msg_vlmcsd *msg, ns_sect_vlmcsd sect); + + +static int dn_skipname_vlmcsd(const unsigned char *s, const unsigned char *end) +{ + const unsigned char *p; + for (p=s; p=192) + {if (p+1 0; count--) { + int b, rdlength; + + b = dn_skipname_vlmcsd(ptr, eom); + if (b < 0) + RETERR(EMSGSIZE); + ptr += b/*Name*/ + NS_INT16SZ/*Type*/ + NS_INT16SZ/*Class*/; + if (section != ns_s_qd_vlmcsd) { + if (ptr + NS_INT32SZ + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + ptr += NS_INT32SZ/*TTL*/; + NS_GET16_VLMCSD(rdlength, ptr); + ptr += rdlength/*RData*/; + } + } + if (ptr > eom) + RETERR(EMSGSIZE); + return (ptr - optr); +} + +int +ns_initparse_vlmcsd(const uint8_t *msg, int msglen, ns_msg_vlmcsd *handle) { + const uint8_t *eom = msg + msglen; + int i; + + memset(handle, 0x5e, sizeof *handle); + handle->_msg = msg; + handle->_eom = eom; + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_id, msg); + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_flags, msg); + for (i = 0; i < ns_s_max_vlmcsd; i++) { + if (msg + NS_INT16SZ > eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(handle->_counts[i], msg); + } + for (i = 0; i < ns_s_max_vlmcsd; i++) + if (handle->_counts[i] == 0) + handle->_sections[i] = NULL; + else { + int b = ns_skiprr_vlmcsd(msg, eom, (ns_sect_vlmcsd)i, + handle->_counts[i]); + + if (b < 0) + return (-1); + handle->_sections[i] = msg; + msg += b; + } + if (msg > eom) + RETERR(EMSGSIZE); + handle->_eom = msg; + setsection_vlmcsd(handle, ns_s_max_vlmcsd); + return (0); +} + +int +ns_parserr_vlmcsd(ns_msg_vlmcsd *handle, ns_sect_vlmcsd section, int rrnum, ns_rr_vlmcsd *rr) { + int b; + + /* Make section right. */ + if (section >= ns_s_max_vlmcsd) + RETERR(ENODEV); + if (section != handle->_sect) + setsection_vlmcsd(handle, section); + + /* Make rrnum right. */ + if (rrnum == -1) + rrnum = handle->_rrnum; + if (rrnum < 0 || rrnum >= handle->_counts[(int)section]) + RETERR(ENODEV); + if (rrnum < handle->_rrnum) + setsection_vlmcsd(handle, section); + if (rrnum > handle->_rrnum) { + b = ns_skiprr_vlmcsd(handle->_msg_ptr, handle->_eom, section, + rrnum - handle->_rrnum); + + if (b < 0) + return (-1); + handle->_msg_ptr += b; + handle->_rrnum = rrnum; + } + + /* Do the parse. */ + b = ns_name_uncompress_vlmcsd(handle->_msg, handle->_eom, + handle->_msg_ptr, rr->name, NS_MAXDNAME); + if (b < 0) + return (-1); + handle->_msg_ptr += b; + if (handle->_msg_ptr + NS_INT16SZ + NS_INT16SZ > handle->_eom) + RETERR(EMSGSIZE); + NS_GET16_VLMCSD(rr->type, handle->_msg_ptr); + NS_GET16_VLMCSD(rr->rr_class, handle->_msg_ptr); + if (section == ns_s_qd_vlmcsd) { + rr->ttl = 0; + rr->rdlength = 0; + rr->rdata = NULL; + } else { + if (handle->_msg_ptr + NS_INT32SZ + NS_INT16SZ > handle->_eom) + RETERR(EMSGSIZE); + NS_GET32_VLMCSD(rr->ttl, handle->_msg_ptr); + NS_GET16_VLMCSD(rr->rdlength, handle->_msg_ptr); + if (handle->_msg_ptr + rr->rdlength > handle->_eom) + RETERR(EMSGSIZE); + rr->rdata = handle->_msg_ptr; + handle->_msg_ptr += rr->rdlength; + } + if (++handle->_rrnum > handle->_counts[(int)section]) + setsection_vlmcsd(handle, (ns_sect_vlmcsd)((int)section + 1)); + + /* All done. */ + return (0); +} + +/* Private. */ + +static void +setsection_vlmcsd(ns_msg_vlmcsd *msg, ns_sect_vlmcsd sect) { + msg->_sect = sect; + if (sect == ns_s_max_vlmcsd) { + msg->_rrnum = -1; + msg->_msg_ptr = NULL; + } else { + msg->_rrnum = 0; + msg->_msg_ptr = msg->_sections[(int)sect]; + } +} + +#endif // !NO_DNS +#endif // DNS_PARSER_INTERNAL +/* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Modified by Hotbird64 for use with vlmcs. + */ + +#ifndef CONFIG +#define CONFIG "config.h" +#endif // CONFIG +#include CONFIG + +#ifdef DNS_PARSER_INTERNAL +#ifndef NO_DNS + +#include +#include +#include +#include +#include +#include +#include + +#include "types.h" +#include "ns_name.h" + +#ifdef SPRINTF_CHAR +# define SPRINTF(x) strlen(sprintf/**/x) +#else +# define SPRINTF(x) ((size_t)sprintf x) +#endif + +#define NS_TYPE_ELT 0x40 /* EDNS0 extended label type */ +#define DNS_LABELTYPE_BITSTRING 0x41 + +#define NS_MAXCDNAME 255 +#define NS_CMPRSFLGS 0xc0 + +/* Data. */ + +static char digits[] = "0123456789"; + + +/* Forward. */ + +static int special_vlmcsd(int); +static int printable_vlmcsd(int); +static int labellen_vlmcsd(const uint8_t *); +static int decode_bitstring_vlmcsd(const char **, char *, const char *); + +/* + * ns_name_ntop(src, dst, dstsiz) + * Convert an encoded domain name to printable ascii as per RFC1035. + * return: + * Number of bytes written to buffer, or -1 (with errno set) + * notes: + * The root is returned as "." + * All other domains are returned in non absolute form + */ +static int +ns_name_ntop_vlmcsd(const uint8_t *src, char *dst, size_t dstsiz) +{ + const uint8_t *cp; + char *dn, *eom; + uint8_t c; + uint32_t n; + int l; + + cp = src; + dn = dst; + eom = dst + dstsiz; + + while ((n = *cp++) != 0) { + if ((n & NS_CMPRSFLGS) == NS_CMPRSFLGS) { + /* Some kind of compression pointer. */ + errno = EMSGSIZE; + return (-1); + } + if (dn != dst) { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '.'; + } + if ((l = labellen_vlmcsd(cp - 1)) < 0) { + errno = EMSGSIZE; /* XXX */ + return(-1); + } + if (dn + l >= eom) { + errno = EMSGSIZE; + return (-1); + } + if ((n & NS_CMPRSFLGS) == NS_TYPE_ELT) { + int m; + + if (n != DNS_LABELTYPE_BITSTRING) { + /* XXX: labellen should reject this case */ + errno = EINVAL; + return(-1); + } + if ((m = decode_bitstring_vlmcsd((const char **)&cp, dn, eom)) < 0) + { + errno = EMSGSIZE; + return(-1); + } + dn += m; + continue; + } + for ((void)NULL; l > 0; l--) { + c = *cp++; + if (special_vlmcsd(c)) { + if (dn + 1 >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\\'; + *dn++ = (char)c; + } else if (!printable_vlmcsd(c)) { + if (dn + 3 >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\\'; + *dn++ = digits[c / 100]; + *dn++ = digits[(c % 100) / 10]; + *dn++ = digits[c % 10]; + } else { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = (char)c; + } + } + } + if (dn == dst) { + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '.'; + } + if (dn >= eom) { + errno = EMSGSIZE; + return (-1); + } + *dn++ = '\0'; + return (dn - dst); +} + +static int +ns_name_unpack_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + uint8_t *dst, size_t dstsiz) +{ + const uint8_t *srcp, *dstlim; + uint8_t *dstp; + int n, len, checked, l; + + len = -1; + checked = 0; + dstp = dst; + srcp = src; + dstlim = dst + dstsiz; + if (srcp < msg || srcp >= eom) { + errno = EMSGSIZE; + return (-1); + } + /* Fetch next label in domain name. */ + while ((n = *srcp++) != 0) { + /* Check for indirection. */ + switch (n & NS_CMPRSFLGS) { + case 0: + case NS_TYPE_ELT: + /* Limit checks. */ + if ((l = labellen_vlmcsd(srcp - 1)) < 0) { + errno = EMSGSIZE; + return(-1); + } + if (dstp + l + 1 >= dstlim || srcp + l >= eom) { + errno = EMSGSIZE; + return (-1); + } + checked += l + 1; + *dstp++ = n; + memcpy(dstp, srcp, l); + dstp += l; + srcp += l; + break; + + case NS_CMPRSFLGS: + if (srcp >= eom) { + errno = EMSGSIZE; + return (-1); + } + if (len < 0) + len = srcp - src + 1; + srcp = msg + (((n & 0x3f) << 8) | (*srcp & 0xff)); + if (srcp < msg || srcp >= eom) { /* Out of range. */ + errno = EMSGSIZE; + return (-1); + } + checked += 2; + /* + * Check for loops in the compressed name; + * if we've looked at the whole message, + * there must be a loop. + */ + if (checked >= eom - msg) { + errno = EMSGSIZE; + return (-1); + } + break; + + default: + errno = EMSGSIZE; + return (-1); /* flag error */ + } + } + *dstp = '\0'; + if (len < 0) + len = srcp - src; + return (len); +} + + +/* + * ns_name_uncompress_vlmcsd(msg, eom, src, dst, dstsiz) + * Expand compressed domain name to presentation format. + * return: + * Number of bytes read out of `src', or -1 (with errno set). + * note: + * Root domain returns as "." not "". + */ +int +ns_name_uncompress_vlmcsd(const uint8_t *msg, const uint8_t *eom, const uint8_t *src, + char *dst, size_t dstsiz) +{ + uint8_t tmp[NS_MAXCDNAME]; + int n; + + if ((n = ns_name_unpack_vlmcsd(msg, eom, src, tmp, sizeof tmp)) == -1) + return (-1); + if (ns_name_ntop_vlmcsd(tmp, dst, dstsiz) == -1) + return (-1); + return (n); +} + +/* + * special(ch) + * Thinking in noninternationalized USASCII (per the DNS spec), + * is this characted special ("in need of quoting") ? + * return: + * boolean. + */ +static int +special_vlmcsd(int ch) { + switch (ch) { + case 0x22: /* '"' */ + case 0x2E: /* '.' */ + case 0x3B: /* ';' */ + case 0x5C: /* '\\' */ + case 0x28: /* '(' */ + case 0x29: /* ')' */ + /* Special modifiers in zone files. */ + case 0x40: /* '@' */ + case 0x24: /* '$' */ + return (1); + default: + return (0); + } +} + +/* + * printable(ch) + * Thinking in noninternationalized USASCII (per the DNS spec), + * is this character visible and not a space when printed ? + * return: + * boolean. + */ +static int +printable_vlmcsd(int ch) { + return (ch > 0x20 && ch < 0x7f); +} + +static int +decode_bitstring_vlmcsd(const char **cpp, char *dn, const char *eom) +{ + const char *cp = *cpp; + char *beg = dn, tc; + int b, blen, plen; + + if ((blen = (*cp & 0xff)) == 0) + blen = 256; + plen = (blen + 3) / 4; + plen += sizeof("\\[x/]") + (blen > 99 ? 3 : (blen > 9) ? 2 : 1); + if (dn + plen >= eom) + return(-1); + + cp++; + dn += SPRINTF((dn, "\\[x")); + for (b = blen; b > 7; b -= 8, cp++) + dn += SPRINTF((dn, "%02x", *cp & 0xff)); + if (b > 4) { + tc = *cp++; + dn += SPRINTF((dn, "%02x", tc & (0xff << (8 - b)))); + } else if (b > 0) { + tc = *cp++; + dn += SPRINTF((dn, "%1x", + ((tc >> 4) & 0x0f) & (0x0f << (4 - b)))); + } + dn += SPRINTF((dn, "/%d]", blen)); + + *cpp = cp; + return(dn - beg); +} + +static int +labellen_vlmcsd(const uint8_t *lp) +{ + int bitlen; + uint8_t l = *lp; + + if ((l & NS_CMPRSFLGS) == NS_CMPRSFLGS) { + /* should be avoided by the caller */ + return(-1); + } + + if ((l & NS_CMPRSFLGS) == NS_TYPE_ELT) { + if (l == DNS_LABELTYPE_BITSTRING) { + if ((bitlen = *(lp + 1)) == 0) + bitlen = 256; + return((bitlen + 7 ) / 8 + 1); + } + return(-1); /* unknwon ELT */ + } + return(l); +} + +#endif // !NO_DNS +#endif // DNS_PARSER_INTERNAL