Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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()
Copy link
Contributor

@cenit cenit Jan 16, 2020

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. @vicroms

Copy link
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! @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"
37 changes: 37 additions & 0 deletions ports/glui/portfile.cmake
Original file line number Diff line number Diff line change
@@ -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)
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()