aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/yasm
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/yasm')
-rw-r--r--vcpkg/ports/yasm/add-feature-tools.patch10
-rw-r--r--vcpkg/ports/yasm/cmake-4.diff11
-rw-r--r--vcpkg/ports/yasm/fix-cross-build.patch98
-rw-r--r--vcpkg/ports/yasm/fix-overlay-pdb.patch12
-rw-r--r--vcpkg/ports/yasm/portfile.cmake62
-rw-r--r--vcpkg/ports/yasm/vcpkg-port-config.cmake27
-rw-r--r--vcpkg/ports/yasm/vcpkg.json36
7 files changed, 256 insertions, 0 deletions
diff --git a/vcpkg/ports/yasm/add-feature-tools.patch b/vcpkg/ports/yasm/add-feature-tools.patch
new file mode 100644
index 0000000..4f49446
--- /dev/null
+++ b/vcpkg/ports/yasm/add-feature-tools.patch
@@ -0,0 +1,10 @@
+diff --git a/frontends/CMakeLists.txt b/frontends/CMakeLists.txt
+index 9858b61..b151cc3 100644
+--- a/frontends/CMakeLists.txt
++++ b/frontends/CMakeLists.txt
+@@ -1,3 +1,5 @@
++if (BUILD_TOOLS)
+ ADD_SUBDIRECTORY(yasm)
+ ADD_SUBDIRECTORY(tasm)
+ ADD_SUBDIRECTORY(vsyasm)
++endif()
diff --git a/vcpkg/ports/yasm/cmake-4.diff b/vcpkg/ports/yasm/cmake-4.diff
new file mode 100644
index 0000000..14aaaec
--- /dev/null
+++ b/vcpkg/ports/yasm/cmake-4.diff
@@ -0,0 +1,11 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8df871c..2eafe3f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,5 +1,5 @@
+ PROJECT(yasm)
+-CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
++CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
+ if (COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+ endif (COMMAND cmake_policy)
diff --git a/vcpkg/ports/yasm/fix-cross-build.patch b/vcpkg/ports/yasm/fix-cross-build.patch
new file mode 100644
index 0000000..5e28a9f
--- /dev/null
+++ b/vcpkg/ports/yasm/fix-cross-build.patch
@@ -0,0 +1,98 @@
+diff --git a/cmake/modules/YasmMacros.cmake b/cmake/modules/YasmMacros.cmake
+index ab1be00..0bd347f 100644
+--- a/cmake/modules/YasmMacros.cmake
++++ b/cmake/modules/YasmMacros.cmake
+@@ -58,7 +58,9 @@ macro (YASM_ADD_MODULE _module_NAME)
+ endmacro (YASM_ADD_MODULE)
+
+ macro (YASM_GENPERF _in_NAME _out_NAME)
+- get_target_property(_tmp_GENPERF_EXE genperf LOCATION)
++ if (NOT _tmp_GENPERF_EXE)
++ set(_tmp_GENPERF_EXE genperf)
++ endif()
+ add_custom_command(
+ OUTPUT ${_out_NAME}
+ COMMAND ${_tmp_GENPERF_EXE} ${_in_NAME} ${_out_NAME}
+@@ -68,7 +70,9 @@ macro (YASM_GENPERF _in_NAME _out_NAME)
+ endmacro (YASM_GENPERF)
+
+ macro (YASM_RE2C _in_NAME _out_NAME)
+- get_target_property(_tmp_RE2C_EXE re2c LOCATION)
++ if (NOT _tmp_RE2C_EXE)
++ set(_tmp_RE2C_EXE re2c)
++ endif()
+ add_custom_command(
+ OUTPUT ${_out_NAME}
+ COMMAND ${_tmp_RE2C_EXE} ${ARGN} -o ${_out_NAME} ${_in_NAME}
+@@ -78,7 +82,9 @@ macro (YASM_RE2C _in_NAME _out_NAME)
+ endmacro (YASM_RE2C)
+
+ macro (YASM_GENMACRO _in_NAME _out_NAME _var_NAME)
+- get_target_property(_tmp_GENMACRO_EXE genmacro LOCATION)
++ if (NOT _tmp_GENMACRO_EXE)
++ set(_tmp_GENMACRO_EXE genmacro)
++ endif()
+ add_custom_command(
+ OUTPUT ${_out_NAME}
+ COMMAND ${_tmp_GENMACRO_EXE} ${_out_NAME} ${_var_NAME} ${_in_NAME}
+diff --git a/modules/preprocs/nasm/CMakeLists.txt b/modules/preprocs/nasm/CMakeLists.txt
+index e10a9dd..4d1bf15 100644
+--- a/modules/preprocs/nasm/CMakeLists.txt
++++ b/modules/preprocs/nasm/CMakeLists.txt
+@@ -1,5 +1,8 @@
++if (NOT _tmp_GENVERSION_EXE)
+ add_executable(genversion preprocs/nasm/genversion.c)
+-get_target_property(_tmp_GENVERSION_EXE genversion LOCATION)
++install(TARGETS genversion RUNTIME DESTINATION bin)
++set(_tmp_GENVERSION_EXE genversion)
++endif()
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.mac
+ COMMAND ${_tmp_GENVERSION_EXE} ${CMAKE_CURRENT_BINARY_DIR}/version.mac
+diff --git a/tools/genmacro/CMakeLists.txt b/tools/genmacro/CMakeLists.txt
+index 27ba599..0168494 100644
+--- a/tools/genmacro/CMakeLists.txt
++++ b/tools/genmacro/CMakeLists.txt
+@@ -1,3 +1,7 @@
++if (NOT _tmp_GENMACRO_EXE)
+ add_executable(genmacro
+ genmacro.c
+ )
++
++install(TARGETS genmacro RUNTIME DESTINATION bin)
++endif()
+\ No newline at end of file
+diff --git a/tools/genperf/CMakeLists.txt b/tools/genperf/CMakeLists.txt
+index 6f50989..87d19bc 100644
+--- a/tools/genperf/CMakeLists.txt
++++ b/tools/genperf/CMakeLists.txt
+@@ -1,3 +1,4 @@
++if (NOT _tmp_GENPERF_EXE)
+ add_executable(genperf
+ genperf.c
+ perfect.c
+@@ -6,3 +7,6 @@ add_executable(genperf
+ ../../libyasm/xstrdup.c
+ )
+ set_target_properties(genperf PROPERTIES COMPILE_FLAGS -DYASM_LIB_DECL=)
++
++install(TARGETS genperf RUNTIME DESTINATION bin)
++endif()
+\ No newline at end of file
+diff --git a/tools/re2c/CMakeLists.txt b/tools/re2c/CMakeLists.txt
+index 7125d49..f2f1a40 100644
+--- a/tools/re2c/CMakeLists.txt
++++ b/tools/re2c/CMakeLists.txt
+@@ -1,3 +1,4 @@
++if (NOT _tmp_RE2C_EXE)
+ add_executable(re2c
+ main.c
+ code.c
+@@ -9,3 +10,6 @@ add_executable(re2c
+ substr.c
+ translate.c
+ )
++
++install(TARGETS re2c RUNTIME DESTINATION bin)
++endif()
+\ No newline at end of file
diff --git a/vcpkg/ports/yasm/fix-overlay-pdb.patch b/vcpkg/ports/yasm/fix-overlay-pdb.patch
new file mode 100644
index 0000000..336ff32
--- /dev/null
+++ b/vcpkg/ports/yasm/fix-overlay-pdb.patch
@@ -0,0 +1,12 @@
+diff --git a/frontends/yasm/CMakeLists.txt b/frontends/yasm/CMakeLists.txt
+index b11d7f8..b8306b1 100644
+--- a/frontends/yasm/CMakeLists.txt
++++ b/frontends/yasm/CMakeLists.txt
+@@ -19,6 +19,7 @@ IF(BUILD_SHARED_LIBS)
+ yasm-plugin.c
+ )
+ TARGET_LINK_LIBRARIES(yasm libyasm ${LIBDL})
++ set_target_properties(yasm PROPERTIES PDB_NAME "yasm-tool")
+ ELSE(BUILD_SHARED_LIBS)
+ ADD_EXECUTABLE(yasm
+ yasm.c
diff --git a/vcpkg/ports/yasm/portfile.cmake b/vcpkg/ports/yasm/portfile.cmake
new file mode 100644
index 0000000..3cf4099
--- /dev/null
+++ b/vcpkg/ports/yasm/portfile.cmake
@@ -0,0 +1,62 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO yasm/yasm
+ REF 009450c7ad4d425fa5a10ac4bd6efbd25248d823 # 1.3.0 plus bugfixes for https://github.com/yasm/yasm/issues/153
+ SHA512 a542577558676d11b52981925ea6219bffe699faa1682c033b33b7534f5a0dfe9f29c56b32076b68c48f65e0aef7c451be3a3af804c52caa4d4357de4caad83c
+ HEAD_REF master
+ PATCHES
+ add-feature-tools.patch
+ cmake-4.diff
+ fix-cross-build.patch
+ fix-overlay-pdb.patch
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ tools BUILD_TOOLS
+)
+
+vcpkg_find_acquire_program(PYTHON3)
+
+set(HOST_TOOLS_OPTIONS "")
+if (VCPKG_CROSSCOMPILING)
+ list(APPEND HOST_TOOLS_OPTIONS
+ "-D_tmp_RE2C_EXE=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/re2c${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "-D_tmp_GENPERF_EXE=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/genperf${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "-D_tmp_GENMACRO_EXE=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/genmacro${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "-D_tmp_GENVERSION_EXE=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/genversion${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ )
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ ${HOST_TOOLS_OPTIONS}
+ "-DPYTHON_EXECUTABLE=${PYTHON3}"
+ -DENABLE_NLS=OFF
+ -DYASM_BUILD_TESTS=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+if (NOT VCPKG_CROSSCOMPILING)
+ vcpkg_copy_tools(TOOL_NAMES re2c genmacro genperf genversion AUTO_CLEAN
+ DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}"
+ )
+endif()
+
+if(BUILD_TOOLS)
+ vcpkg_copy_tools(TOOL_NAMES vsyasm yasm ytasm AUTO_CLEAN)
+ if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ file(COPY "${CURRENT_PACKAGES_DIR}/bin/yasmstd${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+ endif()
+endif()
+
+file(COPY "${CURRENT_PORT_DIR}/vcpkg-port-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
diff --git a/vcpkg/ports/yasm/vcpkg-port-config.cmake b/vcpkg/ports/yasm/vcpkg-port-config.cmake
new file mode 100644
index 0000000..af37428
--- /dev/null
+++ b/vcpkg/ports/yasm/vcpkg-port-config.cmake
@@ -0,0 +1,27 @@
+set(Z_YASM_TOOL_HELPER_LIST_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+function(yasm_tool_helper)
+ cmake_parse_arguments(PARSE_ARGV 0 arg
+ "APPEND_TO_PATH;PREPEND_TO_PATH"
+ "OUT_VAR"
+ ""
+ )
+
+ if(DEFINED arg_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unexpected arguments to yasm_tool_helper: ${arg_UNPARSED_ARGUMENTS}")
+ endif()
+
+ find_program(YASM yasm PATHS "${Z_YASM_TOOL_HELPER_LIST_DIR}/../../tools/yasm")
+
+ if(arg_APPEND_TO_PATH)
+ get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY)
+ vcpkg_add_to_path("${YASM_EXE_PATH}")
+ endif()
+ if(arg_PREPEND_TO_PATH)
+ get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY)
+ vcpkg_add_to_path(PREPEND "${YASM_EXE_PATH}")
+ endif()
+ if(DEFINED arg_OUT_VAR)
+ set("${arg_OUT_VAR}" "${YASM}" PARENT_SCOPE)
+ endif()
+endfunction()
diff --git a/vcpkg/ports/yasm/vcpkg.json b/vcpkg/ports/yasm/vcpkg.json
new file mode 100644
index 0000000..7393149
--- /dev/null
+++ b/vcpkg/ports/yasm/vcpkg.json
@@ -0,0 +1,36 @@
+{
+ "name": "yasm",
+ "version": "1.3.0",
+ "port-version": 7,
+ "description": "Yasm is a complete rewrite of the NASM assembler under the new BSD License.",
+ "homepage": "https://github.com/yasm/yasm",
+ "license": "BSD-2-Clause OR BSD-3-Clause OR Artistic-1.0 OR GPL-2.0-only OR LGPL-2.0-only",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ {
+ "name": "yasm",
+ "host": true,
+ "default-features": false,
+ "features": [
+ "tools"
+ ],
+ "platform": "!native"
+ }
+ ],
+ "default-features": [
+ "tools"
+ ],
+ "features": {
+ "tools": {
+ "description": "Build yasm tools"
+ }
+ }
+}