diff options
Diffstat (limited to 'emulator')
24 files changed, 406 insertions, 142 deletions
diff --git a/emulator/opengl/Android.mk b/emulator/opengl/Android.mk index 0f5b856..6cab042 100644 --- a/emulator/opengl/Android.mk +++ b/emulator/opengl/Android.mk @@ -24,6 +24,12 @@ ifeq ($(BUILD_STANDALONE_EMULATOR),true) EMUGL_COMMON_INCLUDES := $(EMUGL_PATH)/host/libs/Translator/include endif +ifeq ($(BUILD_STANDALONE_EMULATOR),true) +EMUGL_BUILD_64BITS := $(strip $(EMULATOR_BUILD_64BITS)) +else +EMUGL_BUILD_64BITS := true +endif + # common cflags used by several modules # This is always set to a module's LOCAL_CFLAGS # See the definition of emugl-begin-module in common.mk diff --git a/emulator/opengl/common.mk b/emulator/opengl/common.mk index be5eaf5..d411899 100644 --- a/emulator/opengl/common.mk +++ b/emulator/opengl/common.mk @@ -28,6 +28,20 @@ emugl-begin-host-executable = $(call emugl-begin-module,$1,HOST_EXECUTABLE,HOST) _emugl_modules := _emugl_HOST_modules := +ifeq ($(BUILD_STANDALONE_EMULATOR),true) +define EMUGL_LOCAL_EXTRAS +LOCAL_CC := $$(call my-host-tool,CC) +LOCAL_CXX := $$(call my-host-tool,CXX) +LOCAL_LD := $$(call my-host-tool,LD) +LOCAL_AR := $$(call my-host-tool,AR) +LOCAL_CFLAGS := $$(call my-host-tool,CFLAGS) $$(LOCAL_CFLAGS) +LOCAL_LDFLAGS := $$(call my-host-tool,LDFLAGS) $$(LOCAL_LDFLAGS) +LOCAL_LDLIBS := $$(LOCAL_LDLIBS) $$(call my-host-tool,LDLIBS) +endef +else # BUILD_STANDALONE_EMULATOR != true +EMUGL_LOCAL_EXTRAS = +endif # BUILD_STANDALONE_EMULATOR != true + # do not use directly, see functions above instead emugl-begin-module = \ $(eval include $(CLEAR_VARS)) \ @@ -35,14 +49,16 @@ emugl-begin-module = \ $(eval LOCAL_MODULE_TAGS := $(if $3,,debug)) \ $(eval LOCAL_MODULE_CLASS := $(patsubst HOST_%,%,$(patsubst %EXECUTABLE,%EXECUTABLES,$(patsubst %LIBRARY,%LIBRARIES,$2)))) \ $(eval LOCAL_IS_HOST_MODULE := $(if $3,true,))\ - $(eval LOCAL_C_INCLUDES := $(EMUGL_COMMON_INCLUDES)) \ - $(eval LOCAL_CFLAGS := $(EMUGL_COMMON_CFLAGS)) \ + $(eval LOCAL_C_INCLUDES += $(EMUGL_COMMON_INCLUDES)) \ + $(eval LOCAL_CFLAGS += $(EMUGL_COMMON_CFLAGS)) \ + $(eval LOCAL_LDLIBS += -lstdc++) \ $(eval LOCAL_PRELINK_MODULE := false)\ $(eval _EMUGL_INCLUDE_TYPE := $(BUILD_$2)) \ $(call _emugl-init-module,$1,$2,$3) # Used to end a module definition, see function definitions above emugl-end-module = \ + $(eval $(EMUGL_LOCAL_EXTRAS)) \ $(eval include $(_EMUGL_INCLUDE_TYPE))\ $(eval _EMUGL_INCLUDE_TYPE :=) \ $(eval _emugl_$(_emugl_HOST)modules += $(_emugl_MODULE))\ @@ -118,7 +134,7 @@ _emugl-init-module = \ # $2: Value(s) to append to the export emugl-export = \ $(eval _emugl.$(_emugl_MODULE).export.$1 += $2)\ - $(eval LOCAL_$1 := $2 $(LOCAL_$1)) + $(eval LOCAL_$1 := $(LOCAL_$1) $2) emugl-export-outer = \ $(eval _emugl.$(_emugl_MODULE).export.$1 += $2) @@ -148,7 +164,7 @@ _emugl-module-import = \ $(call _emugl-module-import,$(_sub))\ )\ $(foreach _type,$(EMUGL_EXPORT_TYPES),\ - $(eval LOCAL_$(_type) := $(_emugl.$1.export.$(_type)) $(LOCAL_$(_type)))\ + $(eval LOCAL_$(_type) := $(LOCAL_$(_type)) $(_emugl.$1.export.$(_type)))\ )\ $(if $(filter EXECUTABLE SHARED_LIBRARY,$(_emugl.$(_emugl_MODULE).type)),\ $(if $(filter STATIC_LIBRARY,$(_emugl.$1.type)),\ diff --git a/emulator/opengl/googletest.mk b/emulator/opengl/googletest.mk index 9719138..a49789a 100644 --- a/emulator/opengl/googletest.mk +++ b/emulator/opengl/googletest.mk @@ -5,26 +5,39 @@ # be able to build both the 32-bit and 64-bit binaries while # building a 32-bit only SDK (sdk-eng, sdk_x86-eng, sdk_mips-eng). -LOCAL_PATH := external/gtest -$(call emugl-begin-host-static-library,libemugl_gtest) -LOCAL_SRC_FILES := \ - src/gtest-all.cc \ - src/gtest_main.cc -LOCAL_CFLAGS += -O0 -LOCAL_CPP_EXTENSION := .cc -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/include) -$(call emugl-export,LDLIBS,-lpthread) -$(call emugl-end-module) +ifeq (true,$(BUILD_STANDALONE_EMULATOR)) +LOCAL_PATH := $(EMULATOR_GTEST_SOURCES_DIR) +else +LOCAL_PATH := $(EMUGL_PATH)/../../../external/gtest +endif -$(call emugl-begin-host-static-library,lib64emugl_gtest) -LOCAL_SRC_FILES := \ +common_SRC_FILES := \ src/gtest-all.cc \ src/gtest_main.cc -LOCAL_CFLAGS += -O0 -LOCAL_C_INCLUDES += $(LOCAL_PATH)/include + +common_CFLAGS := -O0 + +ifneq (windows,$(HOST_OS)) + common_LDLIBS += -lpthread +endif + +$(call emugl-begin-host-static-library,libemugl_gtest) +LOCAL_SRC_FILES := $(common_SRC_FILES) +LOCAL_CFLAGS += $(common_CFLAGS) LOCAL_CPP_EXTENSION := .cc $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/include) -$(call emugl-export,CFLAGS,-m64) -$(call emugl-export,LDLIBS,-lpthread -m64) +$(call emugl-export,LDLIBS,$(common_LDLIBS)) $(call emugl-end-module) + +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64emugl_gtest) + LOCAL_SRC_FILES := $(common_SRC_FILES) + LOCAL_CFLAGS += $(common_CFLAGS) + LOCAL_C_INCLUDES += $(LOCAL_PATH)/include + LOCAL_CPP_EXTENSION := .cc + $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/include) + $(call emugl-export,CFLAGS,-m64) + $(call emugl-export,LDLIBS,$(common_LDLIBS) -m64) + $(call emugl-end-module) +endif # EMUGL_BUILD_64BITS diff --git a/emulator/opengl/host/libs/GLESv1_dec/Android.mk b/emulator/opengl/host/libs/GLESv1_dec/Android.mk index a6d8670..811a2bb 100644 --- a/emulator/opengl/host/libs/GLESv1_dec/Android.mk +++ b/emulator/opengl/host/libs/GLESv1_dec/Android.mk @@ -18,20 +18,24 @@ $(call emugl-gen-decoder,$(LOCAL_PATH),gl) LOCAL_SRC_FILES := GLDecoder.cpp $(call emugl-export,CFLAGS,$(host_common_debug_CFLAGS)) +$(call emugl-export,LDLIBS,-lstdc++) $(call emugl-end-module) ### host library, 64-bit #################################### -$(call emugl-begin-host-static-library,lib64GLESv1_dec) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64GLESv1_dec) -$(call emugl-import, lib64OpenglCodecCommon lib64OpenglOsUtils) -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) + $(call emugl-import, lib64OpenglCodecCommon lib64OpenglOsUtils) + $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) -$(call emugl-gen-decoder,$(LOCAL_PATH),gl) + $(call emugl-gen-decoder,$(LOCAL_PATH),gl) -LOCAL_SRC_FILES := GLDecoder.cpp + LOCAL_SRC_FILES := GLDecoder.cpp -$(call emugl-export,CFLAGS,$(host_common_debug_CFLAGS) -m64) + $(call emugl-export,CFLAGS,$(host_common_debug_CFLAGS) -m64) + $(call emugl-export,LDLIBS,-lstdc++) -$(call emugl-end-module) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/libs/GLESv2_dec/Android.mk b/emulator/opengl/host/libs/GLESv2_dec/Android.mk index 7a034ec..03692ee 100644 --- a/emulator/opengl/host/libs/GLESv2_dec/Android.mk +++ b/emulator/opengl/host/libs/GLESv2_dec/Android.mk @@ -22,15 +22,17 @@ LOCAL_SRC_FILES := GL2Decoder.cpp $(call emugl-end-module) ### host library, 64-bit #################################### -$(call emugl-begin-host-static-library,lib64GLESv2_dec) -$(call emugl-import, lib64OpenglCodecCommon lib64OpenglOsUtils) -$(call emugl-gen-decoder,$(LOCAL_PATH),gl2) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64GLESv2_dec) + $(call emugl-import, lib64OpenglCodecCommon lib64OpenglOsUtils) + $(call emugl-gen-decoder,$(LOCAL_PATH),gl2) -# For gl2_types.h ! -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) + # For gl2_types.h ! + $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) -$(call emugl-export,CFLAGS,$(host_common_debug_CFLAGS) -m64) + $(call emugl-export,CFLAGS,$(host_common_debug_CFLAGS) -m64) -LOCAL_SRC_FILES := GL2Decoder.cpp + LOCAL_SRC_FILES := GL2Decoder.cpp -$(call emugl-end-module) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/libs/Translator/EGL/Android.mk b/emulator/opengl/host/libs/Translator/EGL/Android.mk index f1a6d3a..40f165a 100644 --- a/emulator/opengl/host/libs/Translator/EGL/Android.mk +++ b/emulator/opengl/host/libs/Translator/EGL/Android.mk @@ -47,11 +47,12 @@ LOCAL_SRC_FILES := $(host_common_SRC_FILES) $(call emugl-end-module) ### EGL host implementation, 64-bit ######################## -$(call emugl-begin-host-shared-library,lib64EGL_translator) -$(call emugl-import,lib64GLcommon) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-shared-library,lib64EGL_translator) + $(call emugl-import,lib64GLcommon) -LOCAL_LDLIBS += $(host_common_LDLIBS) -m64 -LOCAL_SRC_FILES := $(host_common_SRC_FILES) - -$(call emugl-end-module) + LOCAL_LDLIBS += $(host_common_LDLIBS) -m64 + LOCAL_SRC_FILES := $(host_common_SRC_FILES) + $(call emugl-end-module) +endif diff --git a/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk b/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk index 9aa74a7..b126902 100644 --- a/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk +++ b/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk @@ -18,11 +18,14 @@ $(call emugl-end-module) ### GLES_CM host implementation, 64-bit ######################## -$(call emugl-begin-host-shared-library,lib64GLES_CM_translator) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-shared-library,lib64GLES_CM_translator) -$(call emugl-import,lib64GLcommon) + $(call emugl-import,lib64GLcommon) -LOCAL_LDLIBS += -m64 -LOCAL_SRC_FILES := $(host_common_SRC_FILES) + LOCAL_CFLAGS += -fPIC + LOCAL_LDLIBS += -m64 + LOCAL_SRC_FILES := $(host_common_SRC_FILES) -$(call emugl-end-module) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk b/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk index f4845f7..9175ab5 100644 --- a/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk +++ b/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk @@ -18,10 +18,12 @@ $(call emugl-end-module) ### GLES_V2 host implementation, 64-bit ############################## -$(call emugl-begin-host-shared-library,lib64GLES_V2_translator) -$(call emugl-import, lib64GLcommon) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-shared-library,lib64GLES_V2_translator) + $(call emugl-import, lib64GLcommon) -LOCAL_LDLIBS += -m64 -LOCAL_SRC_FILES := $(host_common_SRC_FILES) + LOCAL_LDLIBS += -m64 + LOCAL_SRC_FILES := $(host_common_SRC_FILES) -$(call emugl-end-module) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/libs/Translator/GLcommon/Android.mk b/emulator/opengl/host/libs/Translator/GLcommon/Android.mk index 52cbf7c..375da8b 100644 --- a/emulator/opengl/host/libs/Translator/GLcommon/Android.mk +++ b/emulator/opengl/host/libs/Translator/GLcommon/Android.mk @@ -47,15 +47,17 @@ $(call emugl-end-module) ### EGL host implementation, 64-bit ################ - -$(call emugl-begin-host-static-library,lib64GLcommon) - -$(call emugl-import,lib64OpenglOsUtils) -translator_path := $(LOCAL_PATH)/.. -LOCAL_SRC_FILES := $(host_common_SRC_FILES) -$(call emugl-export,LDLIBS,$(host_common_LDLIBS)) -$(call emugl-export,LDFLAGS,$(host_common_LDFLAGS)) -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/../include $(EMUGL_PATH)/shared) -$(call emugl-export,STATIC_LIBRARIES, lib64emugl_common) - -$(call emugl-end-module) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64GLcommon) + + $(call emugl-import,lib64OpenglOsUtils) + translator_path := $(LOCAL_PATH)/.. + LOCAL_SRC_FILES := $(host_common_SRC_FILES) + LOCAL_CFLAGS += -fPIC + $(call emugl-export,LDLIBS,$(host_common_LDLIBS)) + $(call emugl-export,LDFLAGS,$(host_common_LDFLAGS)) + $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/../include $(EMUGL_PATH)/shared) + $(call emugl-export,STATIC_LIBRARIES, lib64emugl_common) + + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/libs/Translator/include/ETC1/etc1.h b/emulator/opengl/host/libs/Translator/include/ETC1/etc1.h new file mode 100644 index 0000000..0d38905 --- /dev/null +++ b/emulator/opengl/host/libs/Translator/include/ETC1/etc1.h @@ -0,0 +1,106 @@ +// Copyright 2009 Google Inc. +// +// 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. + +#ifndef __etc1_h__ +#define __etc1_h__ + +#define ETC1_ENCODED_BLOCK_SIZE 8 +#define ETC1_DECODED_BLOCK_SIZE 48 + +#ifndef ETC1_RGB8_OES +#define ETC1_RGB8_OES 0x8D64 +#endif + +typedef unsigned char etc1_byte; +typedef int etc1_bool; +typedef unsigned int etc1_uint32; + +#ifdef __cplusplus +extern "C" { +#endif + +// Encode a block of pixels. +// +// pIn is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a +// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R +// value of pixel (x, y). +// +// validPixelMask is a 16-bit mask where bit (1 << (x + y * 4)) indicates whether +// the corresponding (x,y) pixel is valid. Invalid pixel color values are ignored when compressing. +// +// pOut is an ETC1 compressed version of the data. + +void etc1_encode_block(const etc1_byte* pIn, etc1_uint32 validPixelMask, etc1_byte* pOut); + +// Decode a block of pixels. +// +// pIn is an ETC1 compressed version of the data. +// +// pOut is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a +// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R +// value of pixel (x, y). + +void etc1_decode_block(const etc1_byte* pIn, etc1_byte* pOut); + +// Return the size of the encoded image data (does not include size of PKM header). + +etc1_uint32 etc1_get_encoded_data_size(etc1_uint32 width, etc1_uint32 height); + +// Encode an entire image. +// pIn - pointer to the image data. Formatted such that +// pixel (x,y) is at pIn + pixelSize * x + stride * y; +// pOut - pointer to encoded data. Must be large enough to store entire encoded image. +// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image. +// returns non-zero if there is an error. + +int etc1_encode_image(const etc1_byte* pIn, etc1_uint32 width, etc1_uint32 height, + etc1_uint32 pixelSize, etc1_uint32 stride, etc1_byte* pOut); + +// Decode an entire image. +// pIn - pointer to encoded data. +// pOut - pointer to the image data. Will be written such that +// pixel (x,y) is at pIn + pixelSize * x + stride * y. Must be +// large enough to store entire image. +// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image. +// returns non-zero if there is an error. + +int etc1_decode_image(const etc1_byte* pIn, etc1_byte* pOut, + etc1_uint32 width, etc1_uint32 height, + etc1_uint32 pixelSize, etc1_uint32 stride); + +// Size of a PKM header, in bytes. + +#define ETC_PKM_HEADER_SIZE 16 + +// Format a PKM header + +void etc1_pkm_format_header(etc1_byte* pHeader, etc1_uint32 width, etc1_uint32 height); + +// Check if a PKM header is correctly formatted. + +etc1_bool etc1_pkm_is_valid(const etc1_byte* pHeader); + +// Read the image width from a PKM header + +etc1_uint32 etc1_pkm_get_width(const etc1_byte* pHeader); + +// Read the image height from a PKM header + +etc1_uint32 etc1_pkm_get_height(const etc1_byte* pHeader); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/emulator/opengl/host/libs/libOpenglRender/Android.mk b/emulator/opengl/host/libs/libOpenglRender/Android.mk index 3b9492f..3cfbef0 100644 --- a/emulator/opengl/host/libs/libOpenglRender/Android.mk +++ b/emulator/opengl/host/libs/libOpenglRender/Android.mk @@ -62,22 +62,24 @@ $(call emugl-end-module) ### host libOpenglRender, 64-bit ######################################### -$(call emugl-begin-host-shared-library,lib64OpenglRender) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-shared-library,lib64OpenglRender) -$(call emugl-import,lib64GLESv1_dec lib64GLESv2_dec lib64_renderControl_dec lib64OpenglCodecCommon lib64OpenglOsUtils) + $(call emugl-import,lib64GLESv1_dec lib64GLESv2_dec lib64_renderControl_dec lib64OpenglCodecCommon lib64OpenglOsUtils) -#LOCAL_LDFLAGS += -m64 # adding -m64 here doesn't work, because it somehow appear BEFORE -m32 in command-line. -LOCAL_LDLIBS += $(host_common_LDLIBS) -m64 # Put -m64 it in LOCAL_LDLIBS instead. + #LOCAL_LDFLAGS += -m64 # adding -m64 here doesn't work, because it somehow appear BEFORE -m32 in command-line. + LOCAL_LDLIBS += $(host_common_LDLIBS) -m64 # Put -m64 it in LOCAL_LDLIBS instead. -LOCAL_SRC_FILES := $(host_common_SRC_FILES) -$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include) -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) + LOCAL_SRC_FILES := $(host_common_SRC_FILES) + $(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include) + $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) -# use Translator's egl/gles headers -LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/Translator/include + # use Translator's egl/gles headers + LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/Translator/include -LOCAL_STATIC_LIBRARIES += lib64emugl_common + LOCAL_STATIC_LIBRARIES += lib64emugl_common -$(call emugl-export,CFLAGS,$(host_common_CFLAGS) -m64) + $(call emugl-export,CFLAGS,$(host_common_CFLAGS) -m64) -$(call emugl-end-module) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/libs/renderControl_dec/Android.mk b/emulator/opengl/host/libs/renderControl_dec/Android.mk index 1063532..3bc5c3e 100644 --- a/emulator/opengl/host/libs/renderControl_dec/Android.mk +++ b/emulator/opengl/host/libs/renderControl_dec/Android.mk @@ -10,10 +10,12 @@ $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) $(call emugl-end-module) ### host library, 64-bit #################################### -$(call emugl-begin-host-static-library,lib64_renderControl_dec) -$(call emugl-import,lib64OpenglCodecCommon) -$(call emugl-gen-decoder,$(LOCAL_PATH),renderControl) -# For renderControl_types.h -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) -$(call emugl-export,CFLAGS,-m64) -$(call emugl-end-module) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64_renderControl_dec) + $(call emugl-import,lib64OpenglCodecCommon) + $(call emugl-gen-decoder,$(LOCAL_PATH),renderControl) + # For renderControl_types.h + $(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) + $(call emugl-export,CFLAGS,-m64) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/host/tools/emugen/Android.mk b/emulator/opengl/host/tools/emugen/Android.mk index ad9ab06..ae1b3ac 100644 --- a/emulator/opengl/host/tools/emugen/Android.mk +++ b/emulator/opengl/host/tools/emugen/Android.mk @@ -1,15 +1,15 @@ -ifneq ($(HOST_OS),windows) - LOCAL_PATH:=$(call my-dir) $(call emugl-begin-host-executable,emugen) - LOCAL_SRC_FILES := \ - ApiGen.cpp \ - EntryPoint.cpp \ - main.cpp \ - strUtils.cpp \ - TypeFactory.cpp +LOCAL_SRC_FILES := \ + ApiGen.cpp \ + EntryPoint.cpp \ + main.cpp \ + strUtils.cpp \ + TypeFactory.cpp \ + +LOCAL_HOST_BUILD := true $(call emugl-end-module) @@ -17,10 +17,3 @@ $(call emugl-end-module) # protocol encoders/ decoders. This variable is used by other emugl modules. EMUGL_EMUGEN := $(LOCAL_BUILT_MODULE) -else # windows build - -# on windows use the build host emugen executable -# (that will be the linux exeutable when using mingw build) -EMUGL_EMUGEN := $(BUILD_OUT_EXECUTABLES)/emugen - -endif diff --git a/emulator/opengl/host/tools/emugen/ApiGen.cpp b/emulator/opengl/host/tools/emugen/ApiGen.cpp index 6964862..2c331b9 100644 --- a/emulator/opengl/host/tools/emugen/ApiGen.cpp +++ b/emulator/opengl/host/tools/emugen/ApiGen.cpp @@ -420,8 +420,8 @@ static void writeVarEncodingExpression(Var& var, FILE* fp) if (!var.isVoid()) { fprintf(fp, "\t\tmemcpy(ptr, &%s, %u); ptr += %u;\n", varname, - (uint) var.type()->bytes(), - (uint) var.type()->bytes()); + (unsigned) var.type()->bytes(), + (unsigned) var.type()->bytes()); } } } @@ -645,7 +645,7 @@ int ApiGen::genEncoderImpl(const std::string &filename) fprintf(fp, "\t return NULL;\n"); } else if (e->retval().type()->name() != "void") { fprintf(fp, "\n\t%s retval;\n", e->retval().type()->name().c_str()); - fprintf(fp, "\tstream->readback(&retval, %u);\n",(uint) e->retval().type()->bytes()); + fprintf(fp, "\tstream->readback(&retval, %u);\n",(unsigned) e->retval().type()->bytes()); fprintf(fp, "\treturn retval;\n"); } fprintf(fp, "}\n\n"); @@ -781,7 +781,7 @@ int ApiGen::genDecoderImpl(const std::string &filename) \t\tunsigned int packetLen = *(int *)(ptr + 4);\n\ \t\tif (len - pos < packetLen) return pos; \n\ \t\tswitch(opcode) {\n", - (uint) m_maxEntryPointsParams); + (unsigned) m_maxEntryPointsParams); for (size_t f = 0; f < n; f++) { enum Pass_t { PASS_TmpBuffAlloc = 0, PASS_MemAlloc, PASS_DebugPrint, PASS_FunctionCall, PASS_Epilog, PASS_LAST }; @@ -845,9 +845,9 @@ int ApiGen::genDecoderImpl(const std::string &filename) if (v->pointerDir() == Var::POINTER_IN || v->pointerDir() == Var::POINTER_INOUT) { if (pass == PASS_MemAlloc && v->pointerDir() == Var::POINTER_INOUT) { fprintf(fp, "\t\t\tsize_t tmpPtr%uSize = (size_t)*(unsigned int *)(ptr + %s);\n", - (uint) j, varoffset.c_str()); + (unsigned) j, varoffset.c_str()); fprintf(fp, "unsigned char *tmpPtr%u = (ptr + %s + 4);\n", - (uint) j, varoffset.c_str()); + (unsigned) j, varoffset.c_str()); } if (pass == PASS_FunctionCall) { if (v->nullAllowed()) { @@ -866,30 +866,30 @@ int ApiGen::genDecoderImpl(const std::string &filename) } else { // out pointer; if (pass == PASS_TmpBuffAlloc) { fprintf(fp, "\t\t\tsize_t tmpPtr%uSize = (size_t)*(unsigned int *)(ptr + %s);\n", - (uint) j, varoffset.c_str()); + (unsigned) j, varoffset.c_str()); if (!totalTmpBuffExist) { - fprintf(fp, "\t\t\tsize_t totalTmpSize = tmpPtr%uSize;\n", (uint)j); + fprintf(fp, "\t\t\tsize_t totalTmpSize = tmpPtr%uSize;\n", (unsigned)j); } else { - fprintf(fp, "\t\t\ttotalTmpSize += tmpPtr%uSize;\n", (uint)j); + fprintf(fp, "\t\t\ttotalTmpSize += tmpPtr%uSize;\n", (unsigned)j); } tmpBufOffset[j] = totalTmpBuffOffset; char tmpPtrName[16]; - sprintf(tmpPtrName," + tmpPtr%uSize", (uint)j); + sprintf(tmpPtrName," + tmpPtr%uSize", (unsigned)j); totalTmpBuffOffset += std::string(tmpPtrName); totalTmpBuffExist = true; } else if (pass == PASS_MemAlloc) { fprintf(fp, "\t\t\tunsigned char *tmpPtr%u = &tmpBuf[%s];\n", - (uint)j, tmpBufOffset[j].c_str()); + (unsigned)j, tmpBufOffset[j].c_str()); } else if (pass == PASS_FunctionCall) { if (v->nullAllowed()) { fprintf(fp, "tmpPtr%uSize == 0 ? NULL : (%s)(tmpPtr%u)", - (uint) j, v->type()->name().c_str(), (uint) j); + (unsigned) j, v->type()->name().c_str(), (unsigned) j); } else { - fprintf(fp, "(%s)(tmpPtr%u)", v->type()->name().c_str(), (uint) j); + fprintf(fp, "(%s)(tmpPtr%u)", v->type()->name().c_str(), (unsigned) j); } } else if (pass == PASS_DebugPrint) { fprintf(fp, "(%s)(tmpPtr%u), *(unsigned int *)(ptr + %s)", - v->type()->name().c_str(), (uint) j, + v->type()->name().c_str(), (unsigned) j, varoffset.c_str()); } varoffset += " + 4"; @@ -1036,7 +1036,7 @@ int ApiGen::setGlobalAttribute(const std::string & line, size_t lc) if (token == "base_opcode") { std::string str = getNextToken(line, pos, &last, WHITESPACE); if (str.size() == 0) { - fprintf(stderr, "line %u: missing value for base_opcode\n", (uint) lc); + fprintf(stderr, "line %u: missing value for base_opcode\n", (unsigned) lc); } else { setBaseOpcode(atoi(str.c_str())); } diff --git a/emulator/opengl/host/tools/emugen/getopt.c b/emulator/opengl/host/tools/emugen/getopt.c new file mode 100644 index 0000000..0ac02d8 --- /dev/null +++ b/emulator/opengl/host/tools/emugen/getopt.c @@ -0,0 +1,76 @@ +#include "getopt.h" + +#include <stdio.h> +#include <string.h> + +#define _getprogname() nargv[0] + +int opterr = 1; +int optind = 1; +int optopt = 0; +const char* optarg; + +int getopt(int argc, char* const argv[], const char* ostr) { + static const char kEmpty[] = ""; + static const char* place = kEmpty; + if (!*place) { + if (optind >= argc) + return -1; + + const char* arg = argv[optind]; + if (arg[0] != '-') { + // Not an option. + return -1; + } + if (arg[1] == '-' && !arg[2]) { + // '--' -> end of options. + return -1; + } + if (!arg[1]) { + // Single '-', If the program wants it, treat it as an option. + // Otherwise, it's the end of options. + if (!strchr(ostr, '-')) { + return -1; + } + optopt = '-'; + place = arg + 1; + } else { + optopt = arg[1]; + place = arg + 2; + } + }; + + char* oindex = strchr(ostr, optopt); + if (!oindex) { + // Unsupported option. + (void)fprintf(stderr, "%s: illegal option -- %c\n", argv[0]); + return '?'; + } + if (oindex[1] != ':') { + // No argument needed. + optarg = NULL; + if (!*place) + optind++; + return optopt; + } + + // This option needs an argument. Either after the option character, + // or the argument that follows. + if (*place) { + optarg = place; + } else if (argc > ++optind) { + optarg = argv[optind]; + } else if (oindex[2] == ':') { + // Optional argument is missing. + place = kEmpty; + optarg = NULL; + return optopt; + } else { + // Missing argument. + place = kEmpty; + (void)fprintf(stderr, "%s: option requires an argument --%c\n", + argv[0], optopt); + return ':'; + } + return optopt; +} diff --git a/emulator/opengl/host/tools/emugen/getopt.h b/emulator/opengl/host/tools/emugen/getopt.h new file mode 100644 index 0000000..5ad039c --- /dev/null +++ b/emulator/opengl/host/tools/emugen/getopt.h @@ -0,0 +1,18 @@ +#ifndef GETOPT_H +#define GETOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern int optind; +extern const char* optarg; +extern int optopt; + +int getopt(int argc, char* const argv[], const char* ostr); + +#ifdef __cplusplus +} +#endif + +#endif // GETOPT_H diff --git a/emulator/opengl/host/tools/emugen/main.cpp b/emulator/opengl/host/tools/emugen/main.cpp index 96377f2..d9778ae 100644 --- a/emulator/opengl/host/tools/emugen/main.cpp +++ b/emulator/opengl/host/tools/emugen/main.cpp @@ -21,6 +21,10 @@ #include "ApiGen.h" #include "TypeFactory.h" +#ifdef _WIN32 +#include "getopt.h" +#endif + const std::string SPEC_EXTENSION = std::string(".in"); const std::string ATTRIB_EXTENSION = std::string(".attrib"); const std::string TYPES_EXTENTION = std::string(".types"); diff --git a/emulator/opengl/sdl.mk b/emulator/opengl/sdl.mk index 658e2d4..a85ed58 100644 --- a/emulator/opengl/sdl.mk +++ b/emulator/opengl/sdl.mk @@ -7,6 +7,7 @@ ifeq ($(BUILD_STANDALONE_EMULATOR),true) # Makefile that included us. EMUGL_SDL_CFLAGS := $(SDL_CFLAGS) EMUGL_SDL_LDLIBS := $(SDL_LDLIBS) +EMUGL_SDL_STATIC_LIBRARIES := emulator_libSDL emulator_libSDLmain else # BUILD_STANDALONE_EMULATOR != true @@ -15,6 +16,7 @@ else # BUILD_STANDALONE_EMULATOR != true EMUGL_SDL_CONFIG ?= prebuilts/tools/$(HOST_PREBUILT_TAG)/sdl/bin/sdl-config EMUGL_SDL_CFLAGS := $(shell $(EMUGL_SDL_CONFIG) --cflags) EMUGL_SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(EMUGL_SDL_CONFIG) --static-libs)) +EMUGL_SDL_STATIC_LIBRARIES := libSDL libSDLmain ifeq ($(HOST_OS),windows) EMUGL_SDL_LDLIBS += -lws2_32 diff --git a/emulator/opengl/shared/OpenglCodecCommon/Android.mk b/emulator/opengl/shared/OpenglCodecCommon/Android.mk index f285f6a..b6a7e07 100644 --- a/emulator/opengl/shared/OpenglCodecCommon/Android.mk +++ b/emulator/opengl/shared/OpenglCodecCommon/Android.mk @@ -24,17 +24,21 @@ endif $(call emugl-begin-host-static-library,libOpenglCodecCommon) LOCAL_SRC_FILES := $(host_commonSources) - -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) +$(call emugl-import, libemugl_common) +$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include/libOpenglRender $(LOCAL_PATH)) +$(call emugl-export,LDLIBS,-lstdc++) $(call emugl-end-module) ### OpenglCodecCommon host, 64-bit ######################################### -$(call emugl-begin-host-static-library,lib64OpenglCodecCommon) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64OpenglCodecCommon) -LOCAL_SRC_FILES := $(host_commonSources) - -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)) -$(call emugl-export,CFLAGS,-m64) -$(call emugl-end-module) + LOCAL_SRC_FILES := $(host_commonSources) + $(call emugl-import, lib64emugl_common) + $(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include/libOpenglRender $(LOCAL_PATH)) + $(call emugl-export,CFLAGS,-m64 -fPIC) + $(call emugl-export,LDLIBS,-lstdc++) + $(call emugl-end-module) +endif diff --git a/emulator/opengl/shared/OpenglOsUtils/Android.mk b/emulator/opengl/shared/OpenglOsUtils/Android.mk index d8807d0..566fd10 100644 --- a/emulator/opengl/shared/OpenglOsUtils/Android.mk +++ b/emulator/opengl/shared/OpenglOsUtils/Android.mk @@ -37,10 +37,11 @@ $(call emugl-begin-host-static-library,libOpenglOsUtils) $(call emugl-end-module) ### 64-bit host library #### -$(call emugl-begin-host-static-library,lib64OpenglOsUtils) - $(call emugl-export,C_INCLUDES,$(host_common_INCLUDES)) - LOCAL_SRC_FILES = $(host_common_SRC_FILES) - $(call emugl-export,LDLIBS,$(host_common_LDLIBS)) - $(call emugl-export,CFLAGS,-m64) - $(call emugl-import,lib64emugl_common) -$(call emugl-end-module) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64OpenglOsUtils) + $(call emugl-export,C_INCLUDES,$(host_common_INCLUDES)) + LOCAL_SRC_FILES = $(host_common_SRC_FILES) + $(call emugl-export,LDLIBS,$(host_common_LDLIBS)) + $(call emugl-export,CFLAGS,-m64 -fPIC) + $(call emugl-end-module) +endif
\ No newline at end of file diff --git a/emulator/opengl/shared/emugl/common/Android.mk b/emulator/opengl/shared/emugl/common/Android.mk index ff98dd0..fd7761e 100644 --- a/emulator/opengl/shared/emugl/common/Android.mk +++ b/emulator/opengl/shared/emugl/common/Android.mk @@ -17,12 +17,18 @@ host_commonSources := $(commonSources) $(call emugl-begin-host-static-library,libemugl_common) LOCAL_SRC_FILES := $(host_commonSources) +$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/shared) +$(call emugl-export,LDLIBS,-lstdc++) $(call emugl-end-module) -$(call emugl-begin-host-static-library,lib64emugl_common) -LOCAL_SRC_FILES := $(host_commonSources) -$(call emugl-export,CFLAGS,-m64) -$(call emugl-end-module) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-static-library,lib64emugl_common) + LOCAL_SRC_FILES := $(host_commonSources) + $(call emugl-export,CFLAGS,-m64 -fPIC) + $(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/shared) + $(call emugl-export,LDLIBS,-lstdc++) + $(call emugl-end-module) +endif ### emugl_common_unittests ############################################## @@ -40,7 +46,9 @@ LOCAL_SRC_FILES := $(host_commonSources) $(call emugl-import,libemugl_common libemugl_gtest) $(call emugl-end-module) -$(call emugl-begin-host-executable,emugl64_common_host_unittests) -LOCAL_SRC_FILES := $(host_commonSources) -$(call emugl-import,lib64emugl_common lib64emugl_gtest) -$(call emugl-end-module) +ifdef EMUGL_BUILD_64BITS + $(call emugl-begin-host-executable,emugl64_common_host_unittests) + LOCAL_SRC_FILES := $(host_commonSources) + $(call emugl-import,lib64emugl_common lib64emugl_gtest) + $(call emugl-end-module) +endif diff --git a/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk b/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk index d14d369..1f25a33 100644 --- a/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk +++ b/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk @@ -9,7 +9,7 @@ ifeq ($(HOST_OS),darwin) OSX_VERSION_MAJOR := $(shell echo $(mac_sdk_version) | cut -d . -f 2) OSX_VERSION_MAJOR_GREATER_THAN_OR_EQUAL_TO_6 := $(shell [ $(OSX_VERSION_MAJOR) -ge 6 ] && echo true) ifeq ($(OSX_VERSION_MAJOR_GREATER_THAN_OR_EQUAL_TO_6),true) - LOCAL_SDL_LDLIBS += -Wl,-undefined,dynamic_lookup + LOCAL_LDLIBS += -Wl,-undefined,dynamic_lookup endif endif @@ -17,9 +17,9 @@ LOCAL_SRC_FILES:= \ triangleCM.cpp LOCAL_CFLAGS += $(EMUGL_SDL_CFLAGS) -g -O0 -LOCAL_LDLIBS += $(EMUGL_SDL_LDLIBS) +LOCAL_LDLIBS += $(EMUGL_SDL_LDLIBS) -lstdc++ -LOCAL_STATIC_LIBRARIES += libSDL libSDLmain +LOCAL_STATIC_LIBRARIES += $(EMUGL_SDL_STATIC_LIBRARIES) ifeq ($(HOST_OS),darwin) $(call emugl-import,libMac_view) diff --git a/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk b/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk index 98f85a3..10b3b0c 100644 --- a/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk +++ b/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk @@ -7,9 +7,9 @@ LOCAL_SRC_FILES:= \ triangleV2.cpp LOCAL_CFLAGS += $(EMUGL_SDL_CFLAGS) -g -O0 -LOCAL_LDLIBS += $(EMUGL_SDL_LDLIBS) +LOCAL_LDLIBS += $(EMUGL_SDL_LDLIBS) -lstdc++ -LOCAL_STATIC_LIBRARIES += libSDL libSDLmain +LOCAL_STATIC_LIBRARIES += $(EMUGL_SDL_STATIC_LIBRARIES) ifeq ($(HOST_OS),darwin) # SDK 10.6+ deprecates __dyld_func_lookup required by dlcompat_init_func @@ -23,4 +23,3 @@ ifeq ($(HOST_OS),darwin) endif $(call emugl-end-module) - diff --git a/emulator/opengl/tests/ut_renderer/Android.mk b/emulator/opengl/tests/ut_renderer/Android.mk index fe8e7ac..91608b2 100644 --- a/emulator/opengl/tests/ut_renderer/Android.mk +++ b/emulator/opengl/tests/ut_renderer/Android.mk @@ -3,7 +3,7 @@ LOCAL_PATH:=$(call my-dir) ifeq ($(HOST_OS), linux) $(call emugl-begin-host-executable,ut_renderer) -$(call emugl-import,libut_rendercontrol_dec libGLESv1_dec libGLESv2_dec libEGL_host_wrapper) +$(call emugl-import,libut_rendercontrol_dec libGLESv1_dec libGLESv2_dec libEGL_host_wrapper libOpenglRender) LOCAL_SRC_FILES := ut_renderer.cpp \ RenderingThread.cpp \ |