# Copyright (C) 2009 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # LOCAL_PATH := $(call my-dir) ROOT_PATH := $(LOCAL_PATH) ######################################################## ## libevent ######################################################## include $(CLEAR_VARS) LIBEVENT_SOURCES := \ buffer.c \ bufferevent.c bufferevent_filter.c \ bufferevent_openssl.c bufferevent_pair.c bufferevent_ratelim.c \ bufferevent_sock.c epoll.c \ epoll_sub.c evdns.c event.c \ event_tagging.c evmap.c \ evrpc.c evthread.c \ evthread_pthread.c evutil.c \ evutil_rand.c http.c \ listener.c log.c poll.c \ select.c signal.c strlcpy.c LOCAL_MODULE := event LOCAL_SRC_FILES := $(addprefix libevent/, $(LIBEVENT_SOURCES)) LOCAL_CFLAGS := -O2 -g -I$(LOCAL_PATH)/libevent \ -I$(LOCAL_PATH)/libevent/include \ -I$(LOCAL_PATH)/openssl/include include $(BUILD_STATIC_LIBRARY) ######################################################## ## libipset ######################################################## include $(CLEAR_VARS) bdd_src = bdd/assignments.c bdd/basics.c bdd/bdd-iterator.c bdd/expanded.c \ bdd/reachable.c bdd/read.c bdd/write.c map_src = map/allocation.c map/inspection.c map/ipv4_map.c map/ipv6_map.c \ map/storage.c set_src = set/allocation.c set/inspection.c set/ipv4_set.c set/ipv6_set.c \ set/iterator.c set/storage.c IPSET_SOURCE := general.c $(bdd_src) $(map_src) $(set_src) LOCAL_MODULE := libipset LOCAL_CFLAGS += -O2 -I$(LOCAL_PATH)/shadowsocks/libipset/include \ -I$(LOCAL_PATH)/shadowsocks/libcork/include LOCAL_SRC_FILES := $(addprefix shadowsocks/libipset/,$(IPSET_SOURCE)) include $(BUILD_STATIC_LIBRARY) ######################################################## ## libcork ######################################################## include $(CLEAR_VARS) cli_src := cli/commands.c core_src := core/allocator.c core/error.c core/gc.c \ core/hash.c core/ip-address.c core/mempool.c \ core/timestamp.c core/u128.c ds_src := ds/array.c ds/bitset.c ds/buffer.c ds/dllist.c \ ds/file-stream.c ds/hash-table.c ds/managed-buffer.c \ ds/ring-buffer.c ds/slice.c posix_src := posix/directory-walker.c posix/env.c posix/exec.c \ posix/files.c posix/process.c posix/subprocess.c pthreads_src := pthreads/thread.c CORK_SOURCE := $(cli_src) $(core_src) $(ds_src) $(posix_src) $(pthreads_src) LOCAL_MODULE := libcork LOCAL_CFLAGS += -O2 -I$(LOCAL_PATH)/shadowsocks/libcork/include \ -DCORK_API=CORK_LOCAL LOCAL_SRC_FILES := $(addprefix shadowsocks/libcork/,$(CORK_SOURCE)) include $(BUILD_STATIC_LIBRARY) ######################################################## ## libev ######################################################## include $(CLEAR_VARS) LOCAL_MODULE := libev LOCAL_CFLAGS += -O2 -DNDEBUG -DHAVE_CONFIG_H LOCAL_SRC_FILES := \ libev/ev.c \ libev/event.c include $(BUILD_STATIC_LIBRARY) ######################################################## ## redsocks ######################################################## include $(CLEAR_VARS) REDSOCKS_SOURCES := base.c dnstc.c http-connect.c \ log.c md5.c socks5.c \ base64.c http-auth.c http-relay.c main.c \ parser.c redsocks.c socks4.c utils.c LOCAL_STATIC_LIBRARIES := libevent LOCAL_MODULE := redsocks LOCAL_SRC_FILES := $(addprefix redsocks/, $(REDSOCKS_SOURCES)) LOCAL_CFLAGS := -O2 -std=gnu99 -g -I$(LOCAL_PATH)/redsocks \ -I$(LOCAL_PATH)/libevent/include \ -I$(LOCAL_PATH)/libevent include $(BUILD_EXECUTABLE) ######################################################## ## pdnsd ######################################################## include $(CLEAR_VARS) PDNSD_SOURCES := $(wildcard $(LOCAL_PATH)/pdnsd/src/*.c) LOCAL_MODULE := pdnsd LOCAL_SRC_FILES := $(PDNSD_SOURCES:$(LOCAL_PATH)/%=%) LOCAL_CFLAGS := -Wall -O2 -I$(LOCAL_PATH)/pdnsd include $(BUILD_EXECUTABLE) ######################################################## ## pdnsd library ######################################################## include $(CLEAR_VARS) PDNSD_SOURCES := $(wildcard $(LOCAL_PATH)/pdnsd/src/*.c) main-jni.cpp LOCAL_MODULE := pdnsd-jni LOCAL_SRC_FILES := $(PDNSD_SOURCES:$(LOCAL_PATH)/%=%) LOCAL_CFLAGS := -Wall -O2 -DPDNSD_JNI -I$(LOCAL_PATH)/pdnsd include $(BUILD_SHARED_LIBRARY) ######################################################## ## shadowsocks local library ######################################################## include $(CLEAR_VARS) SHADOWSOCKS_SOURCES := local.c cache.c udprelay.c encrypt.c utils.c json.c jconf.c acl.c LOCAL_MODULE := ss-local-jni LOCAL_SRC_FILES := $(addprefix shadowsocks/src/, $(SHADOWSOCKS_SOURCES)) main-jni.cpp LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL -DSSLOCAL_JNI \ -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H \ -I$(LOCAL_PATH)/libev/ \ -I$(LOCAL_PATH)/openssl/include \ -I$(LOCAL_PATH)/shadowsocks/libcork/include \ -I$(LOCAL_PATH)/shadowsocks/libipset/include LOCAL_STATIC_LIBRARIES := libev libcrypto libipset libcork LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) ######################################################## ## shadowsocks tunnel ######################################################## # include $(CLEAR_VARS) # # SHADOWSOCKS_SOURCES := tunnel.c cache.c udprelay.c encrypt.c utils.c json.c jconf.c # # LOCAL_MODULE := ss-tunnel # LOCAL_SRC_FILES := $(addprefix shadowsocks/src/, $(SHADOWSOCKS_SOURCES)) # LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL -DUDPRELAY_TUNNEL \ # -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H \ # -I$(LOCAL_PATH)/libev/ \ # -I$(LOCAL_PATH)/openssl/include # # LOCAL_STATIC_LIBRARIES := libev libcrypto # # LOCAL_LDLIBS := -llog # # include $(BUILD_EXECUTABLE) ######################################################## ## shadowsocks tunnel library ######################################################## include $(CLEAR_VARS) SHADOWSOCKS_SOURCES := tunnel.c cache.c udprelay.c encrypt.c utils.c json.c jconf.c LOCAL_MODULE := ss-tunnel-jni LOCAL_SRC_FILES := $(addprefix shadowsocks/src/, $(SHADOWSOCKS_SOURCES)) main-jni.cpp LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL -DUDPRELAY_TUNNEL \ -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H -DSSTUNNEL_JNI \ -I$(LOCAL_PATH)/libev/ \ -I$(LOCAL_PATH)/openssl/include LOCAL_STATIC_LIBRARIES := libev libcrypto LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) ######################################################## ## system ######################################################## include $(CLEAR_VARS) LOCAL_MODULE:= system LOCAL_SRC_FILES:= \ system.cpp LOCAL_LDLIBS := -ldl -llog LOCAL_STATIC_LIBRARIES := cpufeatures include $(BUILD_SHARED_LIBRARY) ######################################################## ## tun2socks-library ######################################################## include $(CLEAR_VARS) LOCAL_CFLAGS := -std=gnu99 LOCAL_CFLAGS += -DBADVPN_THREADWORK_USE_PTHREAD -DBADVPN_LINUX -DBADVPN_BREACTOR_BADVPN -D_GNU_SOURCE LOCAL_CFLAGS += -DBADVPN_USE_SELFPIPE -DBADVPN_USE_EPOLL LOCAL_CFLAGS += -DBADVPN_LITTLE_ENDIAN -DBADVPN_THREAD_SAFE LOCAL_CFLAGS += -DNDEBUG -DANDROID LOCAL_CFLAGS += -DTUN2SOCKS_JNI LOCAL_C_INCLUDES:= \ $(LOCAL_PATH)/badvpn/lwip/src/include/ipv4 \ $(LOCAL_PATH)/badvpn/lwip/src/include/ipv6 \ $(LOCAL_PATH)/badvpn/lwip/src/include \ $(LOCAL_PATH)/badvpn/lwip/custom \ $(LOCAL_PATH)/badvpn/ TUN2SOCKS_SOURCES := \ base/BLog_syslog.c \ system/BReactor_badvpn.c \ system/BSignal.c \ system/BConnection_unix.c \ system/BTime.c \ system/BUnixSignal.c \ system/BNetwork.c \ flow/StreamRecvInterface.c \ flow/PacketRecvInterface.c \ flow/PacketPassInterface.c \ flow/StreamPassInterface.c \ flow/SinglePacketBuffer.c \ flow/BufferWriter.c \ flow/PacketBuffer.c \ flow/PacketStreamSender.c \ flow/PacketPassConnector.c \ flow/PacketProtoFlow.c \ flow/PacketPassFairQueue.c \ flow/PacketProtoEncoder.c \ flow/PacketProtoDecoder.c \ socksclient/BSocksClient.c \ tuntap/BTap.c \ lwip/src/core/timers.c \ lwip/src/core/udp.c \ lwip/src/core/memp.c \ lwip/src/core/init.c \ lwip/src/core/pbuf.c \ lwip/src/core/tcp.c \ lwip/src/core/tcp_out.c \ lwip/src/core/netif.c \ lwip/src/core/def.c \ lwip/src/core/mem.c \ lwip/src/core/tcp_in.c \ lwip/src/core/stats.c \ lwip/src/core/inet_chksum.c \ lwip/src/core/ipv4/icmp.c \ lwip/src/core/ipv4/igmp.c \ lwip/src/core/ipv4/ip4_addr.c \ lwip/src/core/ipv4/ip_frag.c \ lwip/src/core/ipv4/ip4.c \ lwip/src/core/ipv4/autoip.c \ lwip/src/core/ipv6/ethip6.c \ lwip/src/core/ipv6/inet6.c \ lwip/src/core/ipv6/ip6_addr.c \ lwip/src/core/ipv6/mld6.c \ lwip/src/core/ipv6/dhcp6.c \ lwip/src/core/ipv6/icmp6.c \ lwip/src/core/ipv6/ip6.c \ lwip/src/core/ipv6/ip6_frag.c \ lwip/src/core/ipv6/nd6.c \ lwip/custom/sys.c \ tun2socks/tun2socks.c \ base/DebugObject.c \ base/BLog.c \ base/BPending.c \ system/BDatagram_unix.c \ flowextra/PacketPassInactivityMonitor.c \ tun2socks/SocksUdpGwClient.c \ udpgw_client/UdpGwClient.c LOCAL_MODULE := tun2socks-jni LOCAL_LDLIBS := -ldl -llog LOCAL_SRC_FILES := $(addprefix badvpn/, $(TUN2SOCKS_SOURCES)) main-jni.cpp include $(BUILD_SHARED_LIBRARY) # OpenSSL openssl_subdirs := $(addprefix $(LOCAL_PATH)/openssl/,$(addsuffix /Android.mk, \ crypto \ ssl \ )) include $(openssl_subdirs) # Iptables LOCAL_PATH := $(ROOT_PATH) iptables_subdirs := $(addprefix $(LOCAL_PATH)/iptables/,$(addsuffix /Android.mk, \ iptables \ extensions \ libiptc \ )) include $(iptables_subdirs) # Import cpufeatures $(call import-module,android/cpufeatures)