aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoratkawa7 <atkawa7@yahoo.com>2018-01-21 12:48:37 +0200
committeratkawa7 <atkawa7@yahoo.com>2018-01-21 12:48:37 +0200
commit751877f4e8141e99ca01225fe338ff328fb913d5 (patch)
tree5f72e2eec4a0116746c780a655d8aa5bf29e4722
parentc1d0597003fbf0b98dd6e6bfb1b86691258140da (diff)
downloadvcpkg-751877f4e8141e99ca01225fe338ff328fb913d5.tar.gz
vcpkg-751877f4e8141e99ca01225fe338ff328fb913d5.zip
[libdisasm] init
-rw-r--r--ports/libdisasm/CMakeLists.txt46
-rw-r--r--ports/libdisasm/CONTROL3
-rw-r--r--ports/libdisasm/portfile.cmake34
-rw-r--r--ports/libdisasm/sizeofvoid.patch29
4 files changed, 112 insertions, 0 deletions
diff --git a/ports/libdisasm/CMakeLists.txt b/ports/libdisasm/CMakeLists.txt
new file mode 100644
index 000000000..295f0f72b
--- /dev/null
+++ b/ports/libdisasm/CMakeLists.txt
@@ -0,0 +1,46 @@
+cmake_minimum_required(VERSION 3.9)
+project(libdisasm)
+set(
+ SRCS
+ ia32_implicit.c
+ ia32_implicit.h
+ ia32_insn.c
+ ia32_insn.h
+ ia32_invariant.c
+ ia32_invariant.h
+ ia32_modrm.c
+ ia32_modrm.h
+ ia32_opcode_tables.c
+ ia32_opcode_tables.h
+ ia32_operand.c
+ ia32_operand.h
+ ia32_reg.c
+ ia32_reg.h
+ ia32_settings.c
+ ia32_settings.h
+ libdis.h
+ qword.h
+ x86_disasm.c
+ x86_format.c
+ x86_imm.c
+ x86_imm.h
+ x86_insn.c
+ x86_misc.c
+ x86_operand_list.c
+ x86_operand_list.h
+)
+
+include_directories(libdisasm)
+
+add_library(libdisasm ${SRCS})
+
+install(
+ TARGETS libdisasm
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+if(NOT DISABLE_INSTALL_HEADERS)
+ install(FILES libdis.h DESTINATION include)
+endif()
diff --git a/ports/libdisasm/CONTROL b/ports/libdisasm/CONTROL
new file mode 100644
index 000000000..3d41823ca
--- /dev/null
+++ b/ports/libdisasm/CONTROL
@@ -0,0 +1,3 @@
+Source: libdisasm
+Version: 0.23
+Description: x86 Disassembler Library.
diff --git a/ports/libdisasm/portfile.cmake b/ports/libdisasm/portfile.cmake
new file mode 100644
index 000000000..21a022c42
--- /dev/null
+++ b/ports/libdisasm/portfile.cmake
@@ -0,0 +1,34 @@
+include(vcpkg_common_functions)
+
+if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ message(WARNING "Warning: Dynamic building not supported. Building static.")
+ set(VCPKG_LIBRARY_LINKAGE static)
+ endif()
+
+set(BASE_PATH ${CURRENT_BUILDTREES_DIR}/src/libdisasm-0.23)
+set(SOURCE_PATH ${BASE_PATH}/libdisasm)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://sourceforge.net/projects/bastard/files/libdisasm/0.23/libdisasm-0.23.tar.gz"
+ FILENAME "libdisasm-0.23.tar.gz"
+ SHA512 29eecfbfd8168188242278a1a38f0c90770d0581a52d4600ae6343829dd0d6607b98329f12a3d7409d43dd56dca6a7d1eb25d58a001c2bfd3eb8474c0e7879e7
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/sizeofvoid.patch
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON
+)
+
+vcpkg_install_cmake()
+
+# Handle copyright
+file(INSTALL ${BASE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libdisasm RENAME copyright)
diff --git a/ports/libdisasm/sizeofvoid.patch b/ports/libdisasm/sizeofvoid.patch
new file mode 100644
index 000000000..428c5616c
--- /dev/null
+++ b/ports/libdisasm/sizeofvoid.patch
@@ -0,0 +1,29 @@
+diff --git a/x86_disasm.c b/x86_disasm.c
+index 04574fa..177bfb8 100644
+--- a/x86_disasm.c
++++ b/x86_disasm.c
+@@ -35,7 +35,7 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len,
+
+ if ( offset >= buf_len ) {
+ /* another caller screwup ;) */
+- x86_report_error(report_disasm_bounds, (void*)(long)buf_rva+offset);
++ x86_report_error(report_disasm_bounds, (void*)(long)(buf_rva+offset));
+ return 0;
+ }
+
+@@ -53,13 +53,13 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len,
+
+ /* check and see if we had an invalid instruction */
+ if (! size ) {
+- x86_report_error(report_invalid_insn, (void*)(long)buf_rva+offset );
++ x86_report_error(report_invalid_insn, (void*)(long)(buf_rva+offset));
+ return 0;
+ }
+
+ /* check if we overran the end of the buffer */
+ if ( size > len ) {
+- x86_report_error( report_insn_bounds, (void*)(long)buf_rva + offset );
++ x86_report_error( report_insn_bounds, (void*)(long)(buf_rva + offset));
+ MAKE_INVALID( insn, bytes );
+ return 0;
+ }