diff --git a/ports/gl3w/0001-enable-shared-build.patch b/ports/gl3w/0001-enable-shared-build.patch new file mode 100644 index 000000000..f43437e9d --- /dev/null +++ b/ports/gl3w/0001-enable-shared-build.patch @@ -0,0 +1,60 @@ +From 5f482a64c642f830f1d25f8abae7cae6dd2c6c2b Mon Sep 17 00:00:00 2001 +From: Stanislav Ershov +Date: Mon, 8 Jan 2018 03:16:07 +0300 +Subject: [PATCH] enable shared build + +--- + gl3w_gen.py | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/gl3w_gen.py b/gl3w_gen.py +index 611331a..3515cf9 100755 +--- a/gl3w_gen.py ++++ b/gl3w_gen.py +@@ -130,6 +130,10 @@ with open(os.path.join(args.root, 'include/GL/gl3w.h'), 'wb') as f: + + #include + ++#ifndef GL3W_API ++ #define GL3W_API ++#endif ++ + #ifndef __gl_h_ + #define __gl_h_ + #endif +@@ -147,10 +151,10 @@ typedef void (*GL3WglProc)(void); + typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc); + + /* gl3w api */ +-int gl3wInit(void); +-int gl3wInit2(GL3WGetProcAddressProc proc); +-int gl3wIsSupported(int major, int minor); +-GL3WglProc gl3wGetProcAddress(const char *proc); ++GL3W_API int gl3wInit(void); ++GL3W_API int gl3wInit2(GL3WGetProcAddressProc proc); ++GL3W_API int gl3wIsSupported(int major, int minor); ++GL3W_API GL3WglProc gl3wGetProcAddress(const char *proc); + + /* gl3w internal state */ + ''') +@@ -162,7 +168,7 @@ GL3WglProc gl3wGetProcAddress(const char *proc); + write(f, r''' } gl; + }; + +-extern union GL3WProcs gl3wProcs; ++GL3W_API extern union GL3WProcs gl3wProcs; + + /* OpenGL functions */ + ''') +@@ -329,7 +333,7 @@ static const char *proc_names[] = { + write(f, '\t"{0}",\n'.format(proc)) + write(f, r'''}; + +-union GL3WProcs gl3wProcs; ++GL3W_API union GL3WProcs gl3wProcs; + + static void load_procs(GL3WGetProcAddressProc proc) + { +-- +2.15.0.windows.1 + diff --git a/ports/gl3w/CMakeLists.txt b/ports/gl3w/CMakeLists.txt new file mode 100644 index 000000000..30a94eddb --- /dev/null +++ b/ports/gl3w/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.9) +project(gl3w C) + +set(HEADER_FILES + "include/GL/gl3w.h" + "include/GL/glcorearb.h" +) + +find_package(OpenGL REQUIRED) + +add_library(gl3w src/gl3w.c) + +target_include_directories(gl3w PUBLIC + $ + $ +) + +if(BUILD_SHARED_LIBS) + target_compile_definitions(gl3w PRIVATE "-DGL3W_API=__declspec(dllexport)") +endif() + +target_include_directories(gl3w PRIVATE ${OPENGL_INCLUDE_DIR}) +target_link_libraries(gl3w PRIVATE ${OPENGL_LIBRARIES}) + +install(TARGETS gl3w + EXPORT gl3wExport + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +install( + EXPORT gl3wExport + FILE gl3wConfig.cmake + NAMESPACE unofficial::gl3w:: + DESTINATION share/gl3w +) + +if(NOT DISABLE_INSTALL_HEADERS) + install(DIRECTORY include/GL DESTINATION include) +endif() diff --git a/ports/gl3w/CONTROL b/ports/gl3w/CONTROL new file mode 100644 index 000000000..10a2c2b76 --- /dev/null +++ b/ports/gl3w/CONTROL @@ -0,0 +1,3 @@ +Source: gl3w +Version: 8f7f459d +Description: Simple OpenGL core profile loading diff --git a/ports/gl3w/portfile.cmake b/ports/gl3w/portfile.cmake new file mode 100644 index 000000000..bb3f245c9 --- /dev/null +++ b/ports/gl3w/portfile.cmake @@ -0,0 +1,53 @@ +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO skaslev/gl3w + REF 8f7f459df8725c9614136b49a96023de276219f2 + SHA512 7674008716accb25347c81f755f2db7a885ecb5c51b481e0e8f337bc8ee0949a5a58f5816b27a66535ed4da0b9438ba6a6a84712560c7b1a0f1b2908b4eb81e5 + HEAD_REF master +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + +vcpkg_download_distfile( + GLCOREARB_H + URLS "http://www.opengl.org/registry/api/GL/glcorearb.h" + FILENAME "glcorearb-2018-02-27.h" + SHA512 02c3672606e6360f2e1e8335fe581bc2d2b3d518b0f24b0c327006a70de07261dace4b53b13e93029a8eb2af43bcba904c4392f2c35ac512c7f278534ef8eb5d +) + +file(INSTALL ${GLCOREARB_H} DESTINATION ${SOURCE_PATH}/include/GL RENAME glcorearb.h) + +vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-enable-shared-build.patch +) + +vcpkg_find_acquire_program(PYTHON3) + +vcpkg_execute_required_process( + COMMAND ${PYTHON3} ${SOURCE_PATH}/gl3w_gen.py + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME gl3w-gen +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON +) + +vcpkg_install_cmake() +vcpkg_copy_pdbs() + +vcpkg_fixup_cmake_targets(CONFIG_PATH share/gl3w) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(HEADER ${CURRENT_PACKAGES_DIR}/include/GL/gl3w.h) + file(READ ${HEADER} _contents) + string(REPLACE "#define GL3W_API" "#define GL3W_API __declspec(dllimport)" _contents "${_contents}") + file(WRITE ${HEADER} "${_contents}") +endif() + +file(INSTALL ${SOURCE_PATH}/UNLICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/gl3w RENAME copyright)