aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Nemec <norbert.nemec@outlook.de>2019-06-06 22:58:41 +0200
committerVictor Romero <romerosanchezv@gmail.com>2019-06-06 13:58:40 -0700
commit99825d9ebfb3880be8782a898026c33e15fb2d28 (patch)
treeaa09199881c386d719bfb5acdceb62031abe03b8
parenta260c2dafba9a2ef822985376da612567c6029fa (diff)
downloadvcpkg-99825d9ebfb3880be8782a898026c33e15fb2d28.tar.gz
vcpkg-99825d9ebfb3880be8782a898026c33e15fb2d28.zip
[bdwgc] New port (#6405)
* [bdwgc] New port * [bdwgc] Fix x64-windows-static build * [bdwgc] Patch CMakeLists.txt to install libraries * [bdwgc] Rename produced binaries to <PREFIX>gc<SUFFIX> * [bdwgc] Export library symbols using GC_DLL * [bdwgc] Disable installation of extra tools * [bdwgc] Fix installation path for header files * [bdwgc] Use latest commit and CMake patch * [bdwgc] Update patch * [bdwgc] Disable tests and cord * [bdwgc] Use local patch * [bdwgc] Remove unsupported MacOS architecture
-rw-r--r--ports/bdwgc/001-install-libraries.patch257
-rw-r--r--ports/bdwgc/CONTROL3
-rw-r--r--ports/bdwgc/portfile.cmake31
3 files changed, 291 insertions, 0 deletions
diff --git a/ports/bdwgc/001-install-libraries.patch b/ports/bdwgc/001-install-libraries.patch
new file mode 100644
index 000000000..2cc87f5be
--- /dev/null
+++ b/ports/bdwgc/001-install-libraries.patch
@@ -0,0 +1,257 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8d386ca5..b94d6358 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -27,6 +27,10 @@ include(CTest)
+
+ cmake_minimum_required(VERSION 3.1)
+
++# Customize CMake options by passing "-D<OPTION_NAME>=ON|OFF" in your command line
++option(build_cord "Install cord" ON)
++option(build_tests "Install library tests" ON)
++option(install_headers "Install header files" ON)
+ option(enable_threads "TODO" OFF) #TODO Support it
+ option(enable_parallel_mark "Parallelize marking and free list construction" ON)
+ option(enable_thread_local_alloc "Turn on thread-local allocation optimization" ON)
+@@ -52,22 +56,13 @@ add_definitions("-DALL_INTERIOR_POINTERS -DNO_EXECUTE_PERMISSION")
+
+ if (APPLE)
+ if ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "")
+- set(CMAKE_OSX_ARCHITECTURES "ppc;i386;x86_64"
++ set(CMAKE_OSX_ARCHITECTURES "x86_64;i386"
+ CACHE STRING "Build architectures for Mac OS X" FORCE)
+ endif()
+-elseif (WIN32)
++elseif (MSVC)
+ add_definitions("-D_CRT_SECURE_NO_DEPRECATE")
+ endif()
+
+-#LIBATOMIC #TODO
+-#ADD_LIBRARY(atomic_ops STATIC )
+-#SET_TARGET_PROPERTIES(atomic_ops PROPERTIES COMPILE_FLAGS -DNO_DEBUGGING)
+-
+-
+-#LIBGC
+-
+-include_directories(include)
+-include_directories(libatomic_ops/src)
+
+ set(SRC alloc.c reclaim.c allchblk.c misc.c mach_dep.c os_dep.c
+ mark_rts.c headers.c mark.c obj_map.c blacklst.c finalize.c
+@@ -82,12 +77,6 @@ if (enable_threads)
+ set(LIBS ${LIBS} ${Threads_LIBRARIES})
+ endif()
+
+-#IF(Threads_FOUND)
+-# ADD_DEFINITIONS("")
+-#ELSE
+-# MESSAGE("Parallel mark requires enable_threads ON" )
+-#ENDIF(Threads_FOUND)
+-
+ if (enable_cplusplus)
+ set(SRC ${SRC} gc_cpp.cc)
+ endif()
+@@ -141,7 +130,7 @@ if (CMAKE_USE_PTHREADS_INIT)
+ if (enable_parallel_mark)
+ add_definitions("-DHANDLE_FORK")
+ endif()
+- endif(enable_handle_fork)
++ endif()
+ set(SRC ${SRC} darwin_stop_world.c)
+ #TODO darwin_threads=true
+ endif()
+@@ -158,10 +147,10 @@ if (CMAKE_USE_WIN32_THREADS_INIT)
+ add_definitions("-DTHREAD_LOCAL_ALLOC")
+ set(SRC ${SRC} thread_local_alloc.c)
+ endif()
+- endif(enable_parallel_mark)
++ endif()
+ add_definitions("-DEMPTY_GETENV_RESULTS")
+ set(SRC ${SRC} win32_threads.c)
+-endif(CMAKE_USE_WIN32_THREADS_INIT)
++endif()
+
+ if (enable_gcj_support)
+ add_definitions("-DGC_GCJ_SUPPORT")
+@@ -169,7 +158,7 @@ if (enable_gcj_support)
+ add_definitions("-DGC_ENABLE_SUSPEND_THREAD")
+ endif()
+ set(SRC ${SRC} gcj_mlc.c)
+-endif(enable_gcj_support)
++endif()
+
+ if (enable_disclaim)
+ add_definitions("-DENABLE_DISCLAIM")
+@@ -195,7 +184,7 @@ if (enable_gc_debug)
+ add_definitions("-DMAKE_BACK_GRAPH")
+ set(SRC ${SRC} backgraph.c)
+ endif()
+-endif(enable_gc_debug)
++endif()
+
+ if (enable_redirect_malloc)
+ if (enable_gc_debug)
+@@ -206,7 +195,7 @@ if (enable_redirect_malloc)
+ add_definitions("-DREDIRECT_MALLOC=GC_malloc")
+ endif()
+ add_definitions("-DGC_USE_DLOPEN_WRAP")
+-endif(enable_redirect_malloc)
++endif()
+
+ if (enable_munmap)
+ add_definitions("-DUSE_MMAP -DUSE_MUNMAP")
+@@ -240,19 +229,44 @@ if (enable_checksums)
+ endif()
+ add_definitions("-DCHECKSUMS")
+ set(SRC ${SRC} checksums.c)
+-endif(enable_checksums)
+-
+-add_library(gc-lib STATIC ${SRC})
+-set_target_properties(gc-lib PROPERTIES
+- COMPILE_DEFINITIONS GC_NOT_DLL)
+-#TODO TARGET_LINK_LIBRARIES(... ... ${LIBS})
++endif()
+
+-add_library(gcmt-lib STATIC ${SRC})
+-set_target_properties(gcmt-lib PROPERTIES
+- COMPILE_DEFINITIONS GC_NOT_DLL)
++# Create target
++add_library(gc ${SRC})
++target_include_directories(gc
++ PUBLIC
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
++ $<INSTALL_INTERFACE:include>
++)
++if (NOT BUILD_SHARED_LIBS)
++ target_compile_definitions(gc PRIVATE GC_NOT_DLL)
++else()
++ target_compile_definitions(gc PRIVATE GC_DLL)
++endif()
+
+-add_library(gcmt-dll SHARED ${SRC})
++# Install library
++install(
++ TARGETS gc
++ EXPORT gcExports
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib
++ RUNTIME DESTINATION bin
++ INCLUDES DESTINATION include
++)
++
++# Install headers
++if (install_headers)
++ file(GLOB BDWGC_HEADERS "include/*.h")
++ install(FILES ${BDWGC_HEADERS} DESTINATION include/gc)
++
++ file(GLOB BDWGC_EXTRA_HEADERS "include/extra/*.h")
++ install(FILES ${BDWGC_EXTRA_HEADERS} DESTINATION include)
++endif()
+
+-add_subdirectory(cord)
++if (build_cord)
++ add_subdirectory(cord)
++endif()
+
+-add_subdirectory(tests)
++if (build_tests)
++ add_subdirectory(tests)
++endif()
+diff --git a/cord/CMakeLists.txt b/cord/CMakeLists.txt
+index 17077370..21818d4e 100644
+--- a/cord/CMakeLists.txt
++++ b/cord/CMakeLists.txt
+@@ -11,11 +11,11 @@
+ # modified is included with the above copyright notice.
+ ##
+
++add_executable(cord cordbscs.c cordxtra.c tests/de.c tests/de_win.c)
++set_target_properties(cord PROPERTIES COMPILE_DEFINITIONS GC_NOT_DLL)
++target_link_libraries(cord PRIVATE gc)
++
+ if (WIN32)
+- add_executable(cord cordbscs.c cordxtra.c
+- tests/de.c tests/de_win.c)
+ set_target_properties(cord PROPERTIES WIN32_EXECUTABLE TRUE)
+- set_target_properties(cord PROPERTIES COMPILE_DEFINITIONS GC_NOT_DLL)
+- target_link_libraries(cord gc-lib)
+- target_link_libraries(cord gdi32)
++ target_link_libraries(cord PRIVATE gdi32)
+ endif()
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index c6bcc7d7..32a021e7 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -14,8 +14,6 @@
+ # modified is included with the above copyright notice.
+ ##
+
+-add_definitions("-DGC_NOT_DLL")
+-
+ # Compile some tests as C++ to test extern "C" in header files.
+ if (enable_cplusplus)
+ set_source_files_properties(leak_test.c test.c
+@@ -23,51 +21,51 @@ if (enable_cplusplus)
+ endif()
+
+ add_executable(gctest WIN32 test.c)
+-target_link_libraries(gctest gc-lib)
++target_link_libraries(gctest PRIVATE gc)
+ add_test(NAME gctest COMMAND gctest)
+
+ add_executable(hugetest huge_test.c)
+-target_link_libraries(hugetest gc-lib)
++target_link_libraries(hugetest PRIVATE gc)
+ add_test(NAME hugetest COMMAND hugetest)
+
+ add_executable(leaktest leak_test.c)
+-target_link_libraries(leaktest gc-lib)
++target_link_libraries(leaktest PRIVATE gc)
+ add_test(NAME leaktest COMMAND leaktest)
+
+ add_executable(middletest middle.c)
+-target_link_libraries(middletest gc-lib)
++target_link_libraries(middletest PRIVATE gc)
+ add_test(NAME middletest COMMAND middletest)
+
+ add_executable(realloc_test realloc_test.c)
+-target_link_libraries(realloc_test gc-lib)
++target_link_libraries(realloc_test PRIVATE gc)
+ add_test(NAME realloc_test COMMAND realloc_test)
+
+ add_executable(smashtest smash_test.c)
+-target_link_libraries(smashtest gc-lib)
++target_link_libraries(smashtest PRIVATE gc)
+ add_test(NAME smashtest COMMAND smashtest)
+
+ if (enable_gc_debug)
+ add_executable(tracetest trace_test.c)
+- target_link_libraries(tracetest gc-lib)
++ target_link_libraries(tracetest PRIVATE gc)
+ add_test(NAME tracetest COMMAND tracetest)
+ endif()
+
+ if (enable_cplusplus)
+ # TODO add_executable(test_cpp test_cpp.cc)
+- # target_link_libraries(test_cpp gc-lib)
++ # target_link_libraries(test_cpp PRIVATE gc)
+ # add_test(NAME test_cpp COMMAND test_cpp)
+ endif()
+
+ if (enable_disclaim)
+ add_executable(disclaim_bench disclaim_bench.c)
+- target_link_libraries(disclaim_bench gc-lib)
++ target_link_libraries(disclaim_bench PRIVATE gc)
+ add_test(NAME disclaim_bench COMMAND disclaim_bench)
+
+ add_executable(disclaim_test disclaim_test.c)
+- target_link_libraries(disclaim_test gc-lib)
++ target_link_libraries(disclaim_test PRIVATE gc)
+ add_test(NAME disclaim_test COMMAND disclaim_test)
+
+ add_executable(disclaim_weakmap_test disclaim_weakmap_test.c)
+- target_link_libraries(disclaim_weakmap_test gc-lib)
++ target_link_libraries(disclaim_weakmap_test PRIVATE gc)
+ add_test(NAME disclaim_weakmap_test COMMAND disclaim_weakmap_test)
+ endif()
+ \ No newline at end of file
diff --git a/ports/bdwgc/CONTROL b/ports/bdwgc/CONTROL
new file mode 100644
index 000000000..973076004
--- /dev/null
+++ b/ports/bdwgc/CONTROL
@@ -0,0 +1,3 @@
+Source: bdwgc
+Version: 8.0.4-1
+Description: The Boehm-Demers-Weiser conservative C/C++ Garbage Collector (libgc, bdwgc, boehm-gc)
diff --git a/ports/bdwgc/portfile.cmake b/ports/bdwgc/portfile.cmake
new file mode 100644
index 000000000..8fdbbf72a
--- /dev/null
+++ b/ports/bdwgc/portfile.cmake
@@ -0,0 +1,31 @@
+include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO ivmai/bdwgc
+ # REF v8.0.4
+ # SHA512 f3c178c9cab9d9df9ecdad5ac5661c916518d29b0eaca24efe569cb757c386c118ad4389851107597d99ff1bbe99b46383cce73dfd01be983196aa57c9626a4a
+ REF 0c8905e84d16bd5e14ed91e21904fd7ab9d197e2
+ SHA512 b38fe86d0dfaacd502971e39ea7df83a3dbf5542711f6b0462b7a6d48dbcf43da07a41a60ee96bca6403a2d2adaac0815a64667f3c80549ca57c5ebbe0e9672d
+ HEAD_REF master
+ PATCHES
+ 001-install-libraries.patch
+)
+
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -Dbuild_tests=OFF
+ -Dbuild_cord=OFF
+ OPTIONS_DEBUG
+ -Dinstall_headers=OFF
+)
+
+vcpkg_install_cmake()
+
+vcpkg_copy_pdbs()
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/README.QUICK DESTINATION ${CURRENT_PACKAGES_DIR}/share/bdwgc RENAME copyright)