Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ports/freeglut/CONTROL
Original file line number Diff line number Diff line change
@@ -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.
8 changes: 8 additions & 0 deletions ports/freeglut/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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()

@cenit Stefano Sinigardi (cenit) Jan 16, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Due to editing the sources in the buildtree folder and not the installed ones, after this PR has been merged if you install freeglut in a static triplet and then install freeglut in a dynamic triplet, without deleting the buildtree folder (which is not required nor even suggested to users) everything is damaged and the compiler crashes. Victor Romero (@vicroms)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi! Nice catch! Stefano Sinigardi (@cenit) Thanks for pointing it out. I should have patched it carefully. I have created a PR #9725 for fixing this.

file(WRITE ${SOURCE_PATH}/include/GL/freeglut_std.h "${FREEGLUT_STDH}")

vcpkg_configure_cmake(
Expand Down
5 changes: 5 additions & 0 deletions ports/glui/CONTROL
Original file line number Diff line number Diff line change
@@ -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
70 changes: 70 additions & 0 deletions ports/glui/install-one-flavor.patch
Original file line number Diff line number Diff line change
@@ -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_OBJECTS:glui_obj>)
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_OBJECTS:glui_obj>)
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"
41 changes: 41 additions & 0 deletions ports/glui/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
include(vcpkg_common_functions)
Comment thread
myd7349 marked this conversation as resolved.
Outdated

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO libglui/glui
REF 093edc777c02118282910bdee59f8db1bd46a84d
SHA512 650e169a6a55cd7d599176ac0767cd95b511fbc0a9b27aab2fa4f94a6395fa1a5762b6c23f5f1a9fc5ac9ce70c44fee4e4cbb6d6afd2307130cedfb80aae877a
HEAD_REF master
PATCHES
install-one-flavor.patch
)

string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS)
Comment thread
myd7349 marked this conversation as resolved.
Outdated

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()

configure_file(${SOURCE_PATH}/license.md ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
Comment thread
myd7349 marked this conversation as resolved.
Outdated
9 changes: 9 additions & 0 deletions ports/glui/vcpkg-cmake-wrapper.cmake
Original file line number Diff line number Diff line change
@@ -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()