1cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# Copyright (C) 2008 The Android Open Source Project
2cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#
3cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# Licensed under the Apache License, Version 2.0 (the "License");
4cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# you may not use this file except in compliance with the License.
5cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# You may obtain a copy of the License at
6cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#
7cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#      http://www.apache.org/licenses/LICENSE-2.0
8cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#
9cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# Unless required by applicable law or agreed to in writing, software
10cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# distributed under the License is distributed on an "AS IS" BASIS,
11cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# See the License for the specific language governing permissions and
13cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# limitations under the License.
14cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
15cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectLOCAL_PATH:= $(call my-dir)
16cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
17cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# libutils is a little unique: It's built twice, once for the host
18cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# and once for the device.
19cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
20cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectcommonSources:= \
21e735f23018b398f45bd052b63616d7a45e29515bJeff Brown	BasicHashtable.cpp \
221a20993c1000da3f008b34b7a5e6dbbd6fe291a6Jamie Gennis	BlobCache.cpp \
23cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	CallStack.cpp \
24cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	FileMap.cpp \
25b6ea175b6b4d0aaac85ed6cd8ccac01ab896486bRaph Levien	JenkinsHash.cpp \
26551fcf4fe39e68fab17d56cc6c4b8a61164891ffChris Craik	LinearAllocator.cpp \
27b86c8e4e55c860a6a7e1009fda2a4803da45b412Jason Simmons	LinearTransform.cpp \
286454f461665a44b1e47d277d8b92415b5bbce2d8Jeff Brown	Log.cpp \
29ec79ef2e7b6b1d81266637ca0e002b5c0c5a789bIgor Murashkin	Printer.cpp \
30ec79ef2e7b6b1d81266637ca0e002b5c0c5a789bIgor Murashkin	ProcessCallStack.cpp \
3104cbbc1c47c68e805d2674d9fc702fc44385805fJeff Brown	PropertyMap.cpp \
32cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	RefBase.cpp \
33cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	SharedBuffer.cpp \
34cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	Static.cpp \
35cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	StopWatch.cpp \
36cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	String8.cpp \
37cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	String16.cpp \
38cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	SystemClock.cpp \
39cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	Threads.cpp \
40cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	Timers.cpp \
41647925ddf053989b641b4c5c8a51efd55c931f22Jeff Brown	Tokenizer.cpp \
42ba0165bef09729a33ab8e0ca329342be05e0d859Kenny Root	Unicode.cpp \
43cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	VectorImpl.cpp \
4414d978d02d93f8976ff8b01c2f827fc7c83f4fbdMathias Agopian	misc.cpp
45cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
46a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehhost_commonCflags := -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
47cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
48cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectifeq ($(HOST_OS),windows)
49cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectifeq ($(strip $(USE_CYGWIN),),)
50cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# Under MinGW, ctype.h doesn't need multi-byte support
51a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehhost_commonCflags += -DMB_CUR_MAX=1
52cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectendif
53cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectendif
54cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
55a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehhost_commonLdlibs :=
56a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh
5726ad34522e85b4427ec0ae662dd43eb78a2c5f95Iliyan Malchevifeq ($(TARGET_OS),linux)
58a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehhost_commonLdlibs += -lrt -ldl
5926ad34522e85b4427ec0ae662dd43eb78a2c5f95Iliyan Malchevendif
6026ad34522e85b4427ec0ae662dd43eb78a2c5f95Iliyan Malchev
61a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh
62a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh# For the host
63a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh# =====================================================
64a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehinclude $(CLEAR_VARS)
65a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_SRC_FILES:= $(commonSources)
664e371cec7fa13273f81b9266c88ca846ece87096Keun young Parkifeq ($(HOST_OS), linux)
674e371cec7fa13273f81b9266c88ca846ece87096Keun young ParkLOCAL_SRC_FILES += Looper.cpp
684e371cec7fa13273f81b9266c88ca846ece87096Keun young Parkendif
69a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_MODULE:= libutils
70946003ae6472ab4661c10d11c2b6ded42fe701caColin CrossLOCAL_STATIC_LIBRARIES := liblog
71a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_CFLAGS += $(host_commonCflags)
72a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_LDLIBS += $(host_commonLdlibs)
73a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehinclude $(BUILD_HOST_STATIC_LIBRARY)
74a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh
75a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh
76a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh# For the host, 64-bit
77a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsieh# =====================================================
78a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew Hsiehinclude $(CLEAR_VARS)
79a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_SRC_FILES:= $(commonSources)
804e371cec7fa13273f81b9266c88ca846ece87096Keun young Parkifeq ($(HOST_OS), linux)
814e371cec7fa13273f81b9266c88ca846ece87096Keun young ParkLOCAL_SRC_FILES += Looper.cpp
824e371cec7fa13273f81b9266c88ca846ece87096Keun young Parkendif
83a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_MODULE:= lib64utils
84946003ae6472ab4661c10d11c2b6ded42fe701caColin CrossLOCAL_STATIC_LIBRARIES := liblog
85a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_CFLAGS += $(host_commonCflags) -m64
86a19d2c7e3bf4aadad064163029bccf3f03c300cbAndrew HsiehLOCAL_LDLIBS += $(host_commonLdlibs)
87cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinclude $(BUILD_HOST_STATIC_LIBRARY)
88cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
89cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
9000c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert# For the device, static
91cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# =====================================================
92cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinclude $(CLEAR_VARS)
93cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
94cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
95cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project# we have the common sources, plus some device-specific stuff
96cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectLOCAL_SRC_FILES:= \
97cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project	$(commonSources) \
982ccfe1a0606f59b5cefd177f9dd5c837d0ea2d0bJamie Gennis	Looper.cpp \
992ccfe1a0606f59b5cefd177f9dd5c837d0ea2d0bJamie Gennis	Trace.cpp
100cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
101cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectifeq ($(TARGET_OS),linux)
102cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectLOCAL_LDLIBS += -lrt -ldl
103cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectendif
104cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
105551fcf4fe39e68fab17d56cc6c4b8a61164891ffChris Craikifeq ($(TARGET_ARCH),mips)
106551fcf4fe39e68fab17d56cc6c4b8a61164891ffChris CraikLOCAL_CFLAGS += -DALIGN_DOUBLE
107551fcf4fe39e68fab17d56cc6c4b8a61164891ffChris Craikendif
108551fcf4fe39e68fab17d56cc6c4b8a61164891ffChris Craik
109cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectLOCAL_C_INCLUDES += \
1103abdea92efbe85c66d7f2dc662953d0b5ed59451Colin Cross		bionic/libc/private \
1113abdea92efbe85c66d7f2dc662953d0b5ed59451Colin Cross		external/zlib
1121555436473afd296488235f0aa22bb17162a929fMathias Agopian
113cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectLOCAL_LDLIBS += -lpthread
114cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
11500c14b4be46bf08cc0a351663e247690f59acfa8Bjorn BringertLOCAL_STATIC_LIBRARIES := \
1169eb2a3b1c0cc1ff3082a9283e24c8babc112f56bMathias Agopian	libcutils
117cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
11800c14b4be46bf08cc0a351663e247690f59acfa8Bjorn BringertLOCAL_SHARED_LIBRARIES := \
11900c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert        libcorkscrew \
12000c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert        liblog \
12100c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert        libdl
12200c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert
12300c14b4be46bf08cc0a351663e247690f59acfa8Bjorn BringertLOCAL_MODULE:= libutils
12400c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringertinclude $(BUILD_STATIC_LIBRARY)
12500c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert
12600c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert# For the device, shared
12700c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert# =====================================================
12800c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringertinclude $(CLEAR_VARS)
129cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectLOCAL_MODULE:= libutils
13000c14b4be46bf08cc0a351663e247690f59acfa8Bjorn BringertLOCAL_WHOLE_STATIC_LIBRARIES := libutils
13100c14b4be46bf08cc0a351663e247690f59acfa8Bjorn BringertLOCAL_SHARED_LIBRARIES := \
13200c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert        liblog \
13300c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert        libcutils \
13400c14b4be46bf08cc0a351663e247690f59acfa8Bjorn Bringert        libdl \
1359eb2a3b1c0cc1ff3082a9283e24c8babc112f56bMathias Agopian        libcorkscrew
1369eb2a3b1c0cc1ff3082a9283e24c8babc112f56bMathias Agopian
137cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinclude $(BUILD_SHARED_LIBRARY)
138cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project
1397aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Brown# Include subdirectory makefiles
1407aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Brown# ============================================================
1417aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Brown
1427aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Brown# If we're building with ONE_SHOT_MAKEFILE (mm, mmm), then what the framework
1437aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Brown# team really wants is to build the stuff defined by this makefile.
1447aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Brownifeq (,$(ONE_SHOT_MAKEFILE))
1457aba23129b339f6f6ea4c378aa5f3a78d7f677ddJeff Browninclude $(call first-makefiles-under,$(LOCAL_PATH))
146c28f214f6c65c56936b11fff68564d9631cfae70Christopher Tateendif
147