diff --git a/ports/freeglut/CONTROL b/ports/freeglut/CONTROL index 7489109c4..5f42478d8 100644 --- a/ports/freeglut/CONTROL +++ b/ports/freeglut/CONTROL @@ -1,4 +1,4 @@ Source: freeglut -Version: 3.0.0-7 +Version: 3.0.0-8 Homepage: https://sourceforge.net/projects/freeglut/ Description: Open source implementation of GLUT with source and binary backwards compatibility. diff --git a/ports/freeglut/portfile.cmake b/ports/freeglut/portfile.cmake index bec7489b8..bb22ac684 100644 --- a/ports/freeglut/portfile.cmake +++ b/ports/freeglut/portfile.cmake @@ -32,6 +32,14 @@ string(REGEX REPLACE "\"freeglut_static.lib\"" "\"freeglut.lib\"" FREEGLUT_STDH "${FREEGLUT_STDH}") string(REGEX REPLACE "\"freeglut_staticd.lib\"" "\"freeglutd.lib\"" FREEGLUT_STDH "${FREEGLUT_STDH}") +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + string(REPLACE + "ifdef FREEGLUT_STATIC" + "if 1 //ifdef FREEGLUT_STATIC" + FREEGLUT_STDH + "${FREEGLUT_STDH}" + ) +endif() file(WRITE ${SOURCE_PATH}/include/GL/freeglut_std.h "${FREEGLUT_STDH}") vcpkg_configure_cmake( diff --git a/ports/glui/CONTROL b/ports/glui/CONTROL new file mode 100644 index 000000000..c4451d61a --- /dev/null +++ b/ports/glui/CONTROL @@ -0,0 +1,5 @@ +Source: glui +Version: 2019-11-30 +Description: GLUI is a GLUT-based C++ user interface library +Homepage: https://github.com/libglui/glui +Build-Depends: freeglut diff --git a/ports/glui/install-one-flavor.patch b/ports/glui/install-one-flavor.patch new file mode 100644 index 000000000..fb66d92c7 --- /dev/null +++ b/ports/glui/install-one-flavor.patch @@ -0,0 +1,70 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c0f7d32..8446f3c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -59,6 +59,22 @@ target_include_directories(glui_obj + # create static *and* shared libraries without double compilation + set_target_properties( glui_obj PROPERTIES POSITION_INDEPENDENT_CODE 1) + ++if (MSVC) ++ target_compile_options(glui_obj ++ PRIVATE ++ /D_CRT_SECURE_NO_WARNINGS ++ /wd4244 ++ /wd4305 ++ ) ++endif() ++ ++if(BUILD_SHARED_LIBS) ++ if(WIN32) ++ target_compile_definitions(glui_obj ++ PRIVATE GLUI_BUILDING_LIB ++ PUBLIC GLUIDLL ++ ) ++ endif() + add_library(glui SHARED $) + target_include_directories(glui + PUBLIC +@@ -71,7 +87,7 @@ set_target_properties(glui PROPERTIES + DEBUG_POSTFIX "d" + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION}) +- ++else() + add_library(glui_static STATIC $) + target_include_directories(glui_static + PUBLIC +@@ -81,7 +97,9 @@ target_include_directories(glui_static + ${GLUT_INCLUDE_DIR}) + target_link_libraries(glui_static PUBLIC ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES}) + set_target_properties(glui_static PROPERTIES DEBUG_POSTFIX "d") ++endif() + ++if(GLUI_BUILD_EXAMPLES) + add_executable(ppm2array tools/ppm.cpp tools/ppm2array.cpp) + target_link_libraries(ppm2array) + +@@ -97,7 +115,7 @@ add_executable(example5 example/example5.cpp) + target_link_libraries(example5 glui_static ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES}) + add_executable(example6 example/example6.cpp) + target_link_libraries(example6 glui_static ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES}) +- ++endif() + + + #### +@@ -130,8 +148,13 @@ configure_package_config_file( + ) + + # Targets: ++if(BUILD_SHARED_LIBS) ++ set(glui_target glui) ++else() ++ set(glui_target glui_static) ++endif() + install( +- TARGETS glui_static glui ++ TARGETS ${glui_target} + EXPORT "${targets_export_name}" + LIBRARY DESTINATION "lib" + ARCHIVE DESTINATION "lib" diff --git a/ports/glui/portfile.cmake b/ports/glui/portfile.cmake new file mode 100644 index 000000000..a3b37a597 --- /dev/null +++ b/ports/glui/portfile.cmake @@ -0,0 +1,37 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libglui/glui + REF 093edc777c02118282910bdee59f8db1bd46a84d + SHA512 650e169a6a55cd7d599176ac0767cd95b511fbc0a9b27aab2fa4f94a6395fa1a5762b6c23f5f1a9fc5ac9ce70c44fee4e4cbb6d6afd2307130cedfb80aae877a + HEAD_REF master + PATCHES + install-one-flavor.patch +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA +) + +vcpkg_install_cmake() + +vcpkg_copy_pdbs() + +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT}) + +file(COPY + ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake + DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} +) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + vcpkg_replace_string( + ${CURRENT_PACKAGES_DIR}/include/GL/glui.h + "ifdef GLUIDLL" + "if 1 //ifdef GLUIDLL" + ) +endif() + +file(INSTALL ${SOURCE_PATH}/license.md DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) diff --git a/ports/glui/vcpkg-cmake-wrapper.cmake b/ports/glui/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..6fefefc7c --- /dev/null +++ b/ports/glui/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,9 @@ +_find_package(${ARGS}) + +if(TARGET glui::glui AND NOT TARGET glui::glui_static) + add_library(glui::glui_static INTERFACE IMPORTED) + set_target_properties(glui::glui_static PROPERTIES INTERFACE_LINK_LIBRARIES glui::glui) +elseif(TARGET glui::glui_static AND NOT TARGET glui::glui) + add_library(glui::glui INTERFACE IMPORTED) + set_target_properties(glui::glui PROPERTIES INTERFACE_LINK_LIBRARIES glui::glui_static) +endif()