2
0
Эх сурвалжийг харах

[cmake] split CMakeLists (one for each hdll)

Dan Korostelev 7 жил өмнө
parent
commit
6a04875a0c

+ 2 - 438
CMakeLists.txt

@@ -45,15 +45,6 @@ set(HL_VERSION_MINOR 1)
 set(HL_VERSION_PATCH 0)
 set(HL_VERSION ${HL_VERSION_MAJOR}.${HL_VERSION_MINOR}.${HL_VERSION_PATCH})
 
-function(set_as_hdll target)
-    set_target_properties(${target}.hdll
-        PROPERTIES
-        PREFIX ""
-        OUTPUT_NAME ${target}
-        SUFFIX .hdll
-    )
-endfunction()
-
 include_directories(
     src
     include/pcre
@@ -160,422 +151,6 @@ add_custom_target(hello.hl ALL
     DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/hello.hl
 )
 
-#####################
-# ui.hdll
-
-add_library(ui.hdll SHARED libs/ui/ui_stub.c)
-
-if (WIN32)
-    set_target_properties(ui.hdll PROPERTIES SOURCES libs/ui/ui_win.c)
-endif()
-
-set_as_hdll(ui)
-
-target_link_libraries(ui.hdll
-    libhl
-)
-
-#####################
-# sdl.hdll
-
-option(WITH_SDL2 "Build SDL2 support." ON)
-
-if (WITH_SDL2)
-    if (WIN32)
-        set(SDL2_PATH ${CMAKE_SOURCE_DIR}/include/sdl)
-    endif()
-    find_package(SDL2 REQUIRED)
-
-    add_library(sdl.hdll SHARED
-        libs/sdl/sdl.c
-        libs/sdl/gl.c
-    )
-    set_as_hdll(sdl)
-    target_include_directories(sdl.hdll
-        PRIVATE
-        ${SDL2_INCLUDE_DIR}
-        include/gl
-    )
-    target_link_libraries(sdl.hdll
-        libhl
-        ${SDL2_LIBRARY}
-    )
-
-    if(WIN32)
-        target_link_libraries(sdl.hdll
-            winmm
-            opengl32
-        )
-    endif()
-
-    if (APPLE)
-        find_package(OPENGL REQUIRED)
-        target_include_directories(sdl.hdll
-            PRIVATE
-            ${OPENGL_INCLUDE_DIR}
-        )
-        target_link_libraries(sdl.hdll
-            libhl
-            ${OPENGL_gl_LIBRARY}
-        )
-    endif()
-
-
-    install(
-        TARGETS sdl.hdll
-        DESTINATION .
-    )
-
-endif()
-
-#####################
-# fmt.hdll
-
-if(WIN32)
-    set(ZLIB_INCLUDE_DIRS include/zlib)
-    set(PNG_INCLUDE_DIRS include/png)
-    set(OGGVORBIS_INCLUDE_DIR include/vorbis)
-
-    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-        set(TurboJPEG_INCLUDE_DIRS include/turbojpeg include/turbojpeg/x64)
-        find_library(TurboJPEG_LIBRARIES simd PATHS include/turbojpeg/x64)
-    else()
-        set(TurboJPEG_INCLUDE_DIRS include/turbojpeg include/turbojpeg/x86)
-        find_library(TurboJPEG_LIBRARIES simd PATHS include/turbojpeg/x86)
-    endif()
-
-    add_library(fmt.hdll SHARED
-        include/png/png.c
-        include/png/pngerror.c
-        include/png/pngget.c
-        include/png/pngmem.c
-        include/png/pngpread.c
-        include/png/pngread.c
-        include/png/pngrio.c
-        include/png/pngrtran.c
-        include/png/pngrutil.c
-        include/png/pngset.c
-        include/png/pngtrans.c
-        include/png/pngwio.c
-        include/png/pngwrite.c
-        include/png/pngwtran.c
-        include/png/pngwutil.c
-        include/turbojpeg/jaricom.c
-        include/turbojpeg/jcapimin.c
-        include/turbojpeg/jcapistd.c
-        include/turbojpeg/jcarith.c
-        include/turbojpeg/jccoefct.c
-        include/turbojpeg/jccolor.c
-        include/turbojpeg/jcdctmgr.c
-        include/turbojpeg/jchuff.c
-        include/turbojpeg/jcinit.c
-        include/turbojpeg/jcmainct.c
-        include/turbojpeg/jcmarker.c
-        include/turbojpeg/jcmaster.c
-        include/turbojpeg/jcomapi.c
-        include/turbojpeg/jcparam.c
-        include/turbojpeg/jcphuff.c
-        include/turbojpeg/jcprepct.c
-        include/turbojpeg/jcsample.c
-        include/turbojpeg/jctrans.c
-        include/turbojpeg/jdapimin.c
-        include/turbojpeg/jdapistd.c
-        include/turbojpeg/jdarith.c
-        include/turbojpeg/jdatadst-tj.c
-        include/turbojpeg/jdatadst.c
-        include/turbojpeg/jdatasrc-tj.c
-        include/turbojpeg/jdatasrc.c
-        include/turbojpeg/jdcoefct.c
-        include/turbojpeg/jdcolor.c
-        include/turbojpeg/jddctmgr.c
-        include/turbojpeg/jdhuff.c
-        include/turbojpeg/jdinput.c
-        include/turbojpeg/jdmainct.c
-        include/turbojpeg/jdmarker.c
-        include/turbojpeg/jdmaster.c
-        include/turbojpeg/jdmerge.c
-        include/turbojpeg/jdphuff.c
-        include/turbojpeg/jdpostct.c
-        include/turbojpeg/jdsample.c
-        include/turbojpeg/jdtrans.c
-        include/turbojpeg/jerror.c
-        include/turbojpeg/jfdctflt.c
-        include/turbojpeg/jfdctfst.c
-        include/turbojpeg/jfdctint.c
-        include/turbojpeg/jidctflt.c
-        include/turbojpeg/jidctfst.c
-        include/turbojpeg/jidctint.c
-        include/turbojpeg/jidctred.c
-        include/turbojpeg/jmemmgr.c
-        include/turbojpeg/jmemnobs.c
-        include/turbojpeg/jquant1.c
-        include/turbojpeg/jquant2.c
-        include/turbojpeg/jsimd.c
-        include/turbojpeg/jutils.c
-        include/turbojpeg/transupp.c
-        include/turbojpeg/turbojpeg.c
-        include/zlib/adler32.c
-        include/zlib/crc32.c
-        include/zlib/deflate.c
-        include/zlib/inffast.c
-        include/zlib/inflate.c
-        include/zlib/inftrees.c
-        include/zlib/trees.c
-        include/zlib/zutil.c
-        include/vorbis/bitrate.c
-        include/vorbis/bitwise.c
-        include/vorbis/block.c
-        include/vorbis/codebook.c
-        include/vorbis/envelope.c
-        include/vorbis/floor0.c
-        include/vorbis/floor1.c
-        include/vorbis/framing.c
-        include/vorbis/info.c
-        include/vorbis/lookup.c
-        include/vorbis/lpc.c
-        include/vorbis/lsp.c
-        include/vorbis/mapping0.c
-        include/vorbis/mdct.c
-        include/vorbis/psy.c
-        include/vorbis/registry.c
-        include/vorbis/res0.c
-        include/vorbis/sharedbook.c
-        include/vorbis/smallft.c
-        include/vorbis/synthesis.c
-        include/vorbis/vorbisfile.c
-        include/vorbis/window.c
-        libs/fmt/fmt.c
-        libs/fmt/sha1.c
-    )
-else()
-    find_package(ZLIB REQUIRED)
-    find_package(PNG REQUIRED)
-    find_package(TurboJPEG REQUIRED)
-    find_package(OggVorbis REQUIRED)
-
-    add_library(fmt.hdll SHARED
-        libs/fmt/fmt.c
-        libs/fmt/sha1.c
-    )
-endif()
-
-
-set_as_hdll(fmt)
-target_include_directories(fmt.hdll
-    PRIVATE
-    ${ZLIB_INCLUDE_DIRS}
-    ${PNG_INCLUDE_DIRS}
-    ${TurboJPEG_INCLUDE_DIRS}
-    ${OGGVORBIS_INCLUDE_DIR}
-)
-target_link_libraries(fmt.hdll
-    libhl
-    ${ZLIB_LIBRARIES}
-    ${PNG_LIBRARIES}
-    ${TurboJPEG_LIBRARIES}
-    ${OGGVORBIS_LIBRARIES}
-)
-target_compile_definitions(fmt.hdll
-    PRIVATE
-    ${PNG_DEFINITIONS}
-)
-
-#####################
-# sqlite.hdll
-
-add_library(sqlite.hdll SHARED
-    libs/sqlite/sqlite.c
-    include/sqlite/src/sqlite3.c
-)
-set_as_hdll(sqlite)
-target_include_directories(sqlite.hdll
-    PRIVATE
-    include/sqlite/src
-)
-target_link_libraries(sqlite.hdll
-    libhl
-)
-
-#####################
-# uv.hdll
-
-add_library(uv.hdll SHARED
-    libs/uv/uv.c
-)
-
-if (WIN32)
-    target_sources(uv.hdll
-        PRIVATE
-            include/libuv/src/fs-poll.c
-            include/libuv/src/inet.c
-            include/libuv/src/threadpool.c
-            include/libuv/src/uv-common.c
-            include/libuv/src/version.c
-            include/libuv/src/win/async.c
-            include/libuv/src/win/core.c
-            include/libuv/src/win/dl.c
-            include/libuv/src/win/error.c
-            include/libuv/src/win/fs-event.c
-            include/libuv/src/win/fs.c
-            include/libuv/src/win/getaddrinfo.c
-            include/libuv/src/win/getnameinfo.c
-            include/libuv/src/win/handle.c
-            include/libuv/src/win/loop-watcher.c
-            include/libuv/src/win/pipe.c
-            include/libuv/src/win/poll.c
-            include/libuv/src/win/process-stdio.c
-            include/libuv/src/win/process.c
-            include/libuv/src/win/req.c
-            include/libuv/src/win/signal.c
-            include/libuv/src/win/snprintf.c
-            include/libuv/src/win/stream.c
-            include/libuv/src/win/tcp.c
-            include/libuv/src/win/thread.c
-            include/libuv/src/win/timer.c
-            include/libuv/src/win/tty.c
-            include/libuv/src/win/udp.c
-            include/libuv/src/win/util.c
-            include/libuv/src/win/winapi.c
-            include/libuv/src/win/winsock.c
-    )
-else()
-    find_package(LibUV)
-endif()
-
-set_as_hdll(uv)
-target_link_libraries(uv.hdll
-    libhl
-)
-if (WIN32)
-    target_include_directories(uv.hdll
-        PRIVATE
-        include/libuv/include
-    )
-    target_link_libraries(uv.hdll
-        psapi
-        iphlpapi
-        userenv
-    )
-else()
-    target_include_directories(uv.hdll
-        PRIVATE
-        ${LibUV_INCLUDE_DIRS}
-    )
-    target_link_libraries(uv.hdll
-        ${LibUV_LIBRARIES}
-    )
-endif()
-
-#####################
-# directx.hdll
-
-if(WIN32)
-    find_package(DirectX)
-    add_library(directx.hdll SHARED
-        libs/directx/directx.cpp
-        libs/directx/gamecontroller.c
-        libs/directx/window.c
-    )
-    set_as_hdll(directx)
-    target_link_libraries(directx.hdll
-        libhl
-        d3d11
-        dxgi
-        d3dcompiler
-        xinput9_1_0
-        dinput8
-    )
-endif()
-
-
-#####################
-# ssl.hdll
-# TODO: unix
-
-if(WIN32)
-    add_library(ssl.hdll SHARED
-        include/mbedtls/library/aes.c
-        include/mbedtls/library/aesni.c
-        include/mbedtls/library/arc4.c
-        include/mbedtls/library/asn1parse.c
-        include/mbedtls/library/asn1write.c
-        include/mbedtls/library/base64.c
-        include/mbedtls/library/bignum.c
-        include/mbedtls/library/blowfish.c
-        include/mbedtls/library/camellia.c
-        include/mbedtls/library/ccm.c
-        include/mbedtls/library/certs.c
-        include/mbedtls/library/cipher.c
-        include/mbedtls/library/cipher_wrap.c
-        include/mbedtls/library/ctr_drbg.c
-        include/mbedtls/library/debug.c
-        include/mbedtls/library/des.c
-        include/mbedtls/library/dhm.c
-        include/mbedtls/library/ecdh.c
-        include/mbedtls/library/ecdsa.c
-        include/mbedtls/library/ecjpake.c
-        include/mbedtls/library/ecp.c
-        include/mbedtls/library/ecp_curves.c
-        include/mbedtls/library/entropy.c
-        include/mbedtls/library/entropy_poll.c
-        include/mbedtls/library/error.c
-        include/mbedtls/library/gcm.c
-        include/mbedtls/library/havege.c
-        include/mbedtls/library/hmac_drbg.c
-        include/mbedtls/library/md.c
-        include/mbedtls/library/md2.c
-        include/mbedtls/library/md4.c
-        include/mbedtls/library/md5.c
-        include/mbedtls/library/md_wrap.c
-        include/mbedtls/library/memory_buffer_alloc.c
-        include/mbedtls/library/oid.c
-        include/mbedtls/library/padlock.c
-        include/mbedtls/library/pem.c
-        include/mbedtls/library/pk.c
-        include/mbedtls/library/pkcs11.c
-        include/mbedtls/library/pkcs12.c
-        include/mbedtls/library/pkcs5.c
-        include/mbedtls/library/pkparse.c
-        include/mbedtls/library/pkwrite.c
-        include/mbedtls/library/pk_wrap.c
-        include/mbedtls/library/platform.c
-        include/mbedtls/library/ripemd160.c
-        include/mbedtls/library/rsa.c
-        include/mbedtls/library/sha1.c
-        include/mbedtls/library/sha256.c
-        include/mbedtls/library/sha512.c
-        include/mbedtls/library/ssl_cache.c
-        include/mbedtls/library/ssl_ciphersuites.c
-        include/mbedtls/library/ssl_cli.c
-        include/mbedtls/library/ssl_cookie.c
-        include/mbedtls/library/ssl_srv.c
-        include/mbedtls/library/ssl_ticket.c
-        include/mbedtls/library/ssl_tls.c
-        include/mbedtls/library/threading.c
-        include/mbedtls/library/timing.c
-        include/mbedtls/library/version.c
-        include/mbedtls/library/version_features.c
-        include/mbedtls/library/x509.c
-        include/mbedtls/library/x509write_crt.c
-        include/mbedtls/library/x509write_csr.c
-        include/mbedtls/library/x509_create.c
-        include/mbedtls/library/x509_crl.c
-        include/mbedtls/library/x509_crt.c
-        include/mbedtls/library/x509_csr.c
-        include/mbedtls/library/xtea.c
-        libs/ssl/ssl.c
-    )
-    set_as_hdll(ssl)
-    target_include_directories(ssl.hdll
-        PRIVATE
-        include/mbedtls/include
-    )
-    target_link_libraries(ssl.hdll
-        libhl
-        crypt32
-    )
-endif()
-
 #####################
 # Tests
 
@@ -597,25 +172,14 @@ install(
     TARGETS
         hl
         libhl
-        fmt.hdll
-        ui.hdll
-        sqlite.hdll
-        uv.hdll
     DESTINATION .
     PUBLIC_HEADER DESTINATION include
 )
 
-if (WIN32)
-    install(
-        TARGETS
-            directx.hdll
-            ssl.hdll
-        DESTINATION .
-    )
-endif()
-
 if (DEFINED ENV{APPVEYOR_REPO_COMMIT})
     set(CPACK_PACKAGE_VERSION $ENV{APPVEYOR_REPO_COMMIT})
 endif()
 
 include(CPack)
+
+add_subdirectory(libs)

+ 26 - 0
libs/CMakeLists.txt

@@ -0,0 +1,26 @@
+set(INCLUDES_BASE_DIR ${CMAKE_SOURCE_DIR}/include)
+
+function(set_as_hdll target)
+    set_target_properties(${target}.hdll
+        PROPERTIES
+        PREFIX ""
+        OUTPUT_NAME ${target}
+        SUFFIX .hdll
+    )
+endfunction()
+
+#add_subdirectory(bullet)
+
+if(WIN32)
+	add_subdirectory(directx)
+endif()
+
+add_subdirectory(fmt)
+# add_subdirectory(mesa)
+# add_subdirectory(openal)
+add_subdirectory(sdl)
+add_subdirectory(sqlite)
+add_subdirectory(ssl)
+add_subdirectory(ui)
+add_subdirectory(uv)
+# add_subdirectory(video)

+ 24 - 0
libs/directx/CMakeLists.txt

@@ -0,0 +1,24 @@
+find_package(DirectX)
+
+add_library(directx.hdll SHARED
+	directx.cpp
+	gamecontroller.c
+	window.c
+)
+
+set_as_hdll(directx)
+
+target_link_libraries(directx.hdll
+	libhl
+	d3d11
+	dxgi
+	d3dcompiler
+	xinput9_1_0
+	dinput8
+)
+
+install(
+	TARGETS
+		directx.hdll
+	DESTINATION .
+)

+ 156 - 0
libs/fmt/CMakeLists.txt

@@ -0,0 +1,156 @@
+if(WIN32)
+    set(ZLIB_INCLUDE_DIRS ${INCLUDES_BASE_DIR}/zlib)
+    set(PNG_INCLUDE_DIRS ${INCLUDES_BASE_DIR}/png)
+    set(OGGVORBIS_INCLUDE_DIR ${INCLUDES_BASE_DIR}/vorbis)
+
+    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+        set(TurboJPEG_INCLUDE_DIRS ${INCLUDES_BASE_DIR}/turbojpeg ${INCLUDES_BASE_DIR}/turbojpeg/x64)
+        find_library(TurboJPEG_LIBRARIES simd PATHS ${INCLUDES_BASE_DIR}/turbojpeg/x64)
+    else()
+        set(TurboJPEG_INCLUDE_DIRS ${INCLUDES_BASE_DIR}/turbojpeg ${INCLUDES_BASE_DIR}/turbojpeg/x86)
+        find_library(TurboJPEG_LIBRARIES simd PATHS ${INCLUDES_BASE_DIR}/turbojpeg/x86)
+    endif()
+
+    add_library(fmt.hdll SHARED
+        ${INCLUDES_BASE_DIR}/png/png.c
+        ${INCLUDES_BASE_DIR}/png/pngerror.c
+        ${INCLUDES_BASE_DIR}/png/pngget.c
+        ${INCLUDES_BASE_DIR}/png/pngmem.c
+        ${INCLUDES_BASE_DIR}/png/pngpread.c
+        ${INCLUDES_BASE_DIR}/png/pngread.c
+        ${INCLUDES_BASE_DIR}/png/pngrio.c
+        ${INCLUDES_BASE_DIR}/png/pngrtran.c
+        ${INCLUDES_BASE_DIR}/png/pngrutil.c
+        ${INCLUDES_BASE_DIR}/png/pngset.c
+        ${INCLUDES_BASE_DIR}/png/pngtrans.c
+        ${INCLUDES_BASE_DIR}/png/pngwio.c
+        ${INCLUDES_BASE_DIR}/png/pngwrite.c
+        ${INCLUDES_BASE_DIR}/png/pngwtran.c
+        ${INCLUDES_BASE_DIR}/png/pngwutil.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jaricom.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcapimin.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcapistd.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcarith.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jccoefct.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jccolor.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcdctmgr.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jchuff.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcinit.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcmainct.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcmarker.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcmaster.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcomapi.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcparam.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcphuff.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcprepct.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jcsample.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jctrans.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdapimin.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdapistd.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdarith.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdatadst-tj.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdatadst.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdatasrc-tj.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdatasrc.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdcoefct.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdcolor.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jddctmgr.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdhuff.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdinput.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdmainct.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdmarker.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdmaster.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdmerge.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdphuff.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdpostct.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdsample.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jdtrans.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jerror.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jfdctflt.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jfdctfst.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jfdctint.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jidctflt.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jidctfst.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jidctint.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jidctred.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jmemmgr.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jmemnobs.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jquant1.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jquant2.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jsimd.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/jutils.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/transupp.c
+        ${INCLUDES_BASE_DIR}/turbojpeg/turbojpeg.c
+        ${INCLUDES_BASE_DIR}/zlib/adler32.c
+        ${INCLUDES_BASE_DIR}/zlib/crc32.c
+        ${INCLUDES_BASE_DIR}/zlib/deflate.c
+        ${INCLUDES_BASE_DIR}/zlib/inffast.c
+        ${INCLUDES_BASE_DIR}/zlib/inflate.c
+        ${INCLUDES_BASE_DIR}/zlib/inftrees.c
+        ${INCLUDES_BASE_DIR}/zlib/trees.c
+        ${INCLUDES_BASE_DIR}/zlib/zutil.c
+        ${INCLUDES_BASE_DIR}/vorbis/bitrate.c
+        ${INCLUDES_BASE_DIR}/vorbis/bitwise.c
+        ${INCLUDES_BASE_DIR}/vorbis/block.c
+        ${INCLUDES_BASE_DIR}/vorbis/codebook.c
+        ${INCLUDES_BASE_DIR}/vorbis/envelope.c
+        ${INCLUDES_BASE_DIR}/vorbis/floor0.c
+        ${INCLUDES_BASE_DIR}/vorbis/floor1.c
+        ${INCLUDES_BASE_DIR}/vorbis/framing.c
+        ${INCLUDES_BASE_DIR}/vorbis/info.c
+        ${INCLUDES_BASE_DIR}/vorbis/lookup.c
+        ${INCLUDES_BASE_DIR}/vorbis/lpc.c
+        ${INCLUDES_BASE_DIR}/vorbis/lsp.c
+        ${INCLUDES_BASE_DIR}/vorbis/mapping0.c
+        ${INCLUDES_BASE_DIR}/vorbis/mdct.c
+        ${INCLUDES_BASE_DIR}/vorbis/psy.c
+        ${INCLUDES_BASE_DIR}/vorbis/registry.c
+        ${INCLUDES_BASE_DIR}/vorbis/res0.c
+        ${INCLUDES_BASE_DIR}/vorbis/sharedbook.c
+        ${INCLUDES_BASE_DIR}/vorbis/smallft.c
+        ${INCLUDES_BASE_DIR}/vorbis/synthesis.c
+        ${INCLUDES_BASE_DIR}/vorbis/vorbisfile.c
+        ${INCLUDES_BASE_DIR}/vorbis/window.c
+        fmt.c
+        sha1.c
+    )
+else()
+    find_package(ZLIB REQUIRED)
+    find_package(PNG REQUIRED)
+    find_package(TurboJPEG REQUIRED)
+    find_package(OggVorbis REQUIRED)
+
+    add_library(fmt.hdll SHARED
+        fmt.c
+        sha1.c
+    )
+endif()
+
+set_as_hdll(fmt)
+
+target_include_directories(fmt.hdll
+    PRIVATE
+    ${ZLIB_INCLUDE_DIRS}
+    ${PNG_INCLUDE_DIRS}
+    ${TurboJPEG_INCLUDE_DIRS}
+    ${OGGVORBIS_INCLUDE_DIR}
+)
+
+target_link_libraries(fmt.hdll
+    libhl
+    ${ZLIB_LIBRARIES}
+    ${PNG_LIBRARIES}
+    ${TurboJPEG_LIBRARIES}
+    ${OGGVORBIS_LIBRARIES}
+)
+
+target_compile_definitions(fmt.hdll
+    PRIVATE
+    ${PNG_DEFINITIONS}
+)
+
+install(
+    TARGETS
+        fmt.hdll
+    DESTINATION .
+)

+ 49 - 0
libs/sdl/CMakeLists.txt

@@ -0,0 +1,49 @@
+option(WITH_SDL2 "Build SDL2 support." ON)
+
+if (WITH_SDL2)
+    if (WIN32)
+        set(SDL2_PATH ${INCLUDES_BASE_DIR}/sdl)
+    endif()
+    find_package(SDL2 REQUIRED)
+
+    add_library(sdl.hdll SHARED
+        sdl.c
+        gl.c
+    )
+    set_as_hdll(sdl)
+    target_include_directories(sdl.hdll
+        PRIVATE
+        ${SDL2_INCLUDE_DIR}
+        ${INCLUDES_BASE_DIR}/gl
+    )
+    target_link_libraries(sdl.hdll
+        libhl
+        ${SDL2_LIBRARY}
+    )
+
+    if(WIN32)
+        target_link_libraries(sdl.hdll
+            winmm
+            opengl32
+        )
+    endif()
+
+    if (APPLE)
+        find_package(OPENGL REQUIRED)
+        target_include_directories(sdl.hdll
+            PRIVATE
+            ${OPENGL_INCLUDE_DIR}
+        )
+        target_link_libraries(sdl.hdll
+            libhl
+            ${OPENGL_gl_LIBRARY}
+        )
+    endif()
+
+
+    install(
+        TARGETS sdl.hdll
+        DESTINATION .
+    )
+
+endif()

+ 21 - 0
libs/sqlite/CMakeLists.txt

@@ -0,0 +1,21 @@
+add_library(sqlite.hdll SHARED
+    sqlite.c
+    ${INCLUDES_BASE_DIR}/sqlite/src/sqlite3.c
+)
+
+set_as_hdll(sqlite)
+
+target_include_directories(sqlite.hdll
+    PRIVATE
+    ${INCLUDES_BASE_DIR}/sqlite/src
+)
+
+target_link_libraries(sqlite.hdll
+    libhl
+)
+
+install(
+    TARGETS
+        sqlite.hdll
+    DESTINATION .
+)

+ 92 - 0
libs/ssl/CMakeLists.txt

@@ -0,0 +1,92 @@
+if(WIN32)
+    add_library(ssl.hdll SHARED
+        ${INCLUDES_BASE_DIR}/mbedtls/library/aes.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/aesni.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/arc4.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/asn1parse.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/asn1write.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/base64.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/bignum.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/blowfish.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/camellia.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ccm.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/certs.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/cipher.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/cipher_wrap.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ctr_drbg.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/debug.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/des.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/dhm.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ecdh.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ecdsa.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ecjpake.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ecp.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ecp_curves.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/entropy.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/entropy_poll.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/error.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/gcm.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/havege.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/hmac_drbg.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/md.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/md2.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/md4.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/md5.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/md_wrap.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/memory_buffer_alloc.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/oid.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/padlock.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pem.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pk.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pkcs11.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pkcs12.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pkcs5.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pkparse.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pkwrite.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/pk_wrap.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/platform.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ripemd160.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/rsa.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/sha1.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/sha256.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/sha512.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_cache.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_ciphersuites.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_cli.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_cookie.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_srv.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_ticket.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/ssl_tls.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/threading.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/timing.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/version.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/version_features.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509write_crt.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509write_csr.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509_create.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509_crl.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509_crt.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/x509_csr.c
+        ${INCLUDES_BASE_DIR}/mbedtls/library/xtea.c
+        ssl.c
+    )
+
+    set_as_hdll(ssl)
+
+    target_include_directories(ssl.hdll
+        PRIVATE
+        ${INCLUDES_BASE_DIR}/mbedtls/include
+    )
+
+    target_link_libraries(ssl.hdll
+        libhl
+        crypt32
+    )
+
+    install(
+        TARGETS
+            ssl.hdll
+        DESTINATION .
+    )
+endif()

+ 17 - 0
libs/ui/CMakeLists.txt

@@ -0,0 +1,17 @@
+add_library(ui.hdll SHARED ui_stub.c)
+
+if (WIN32)
+    set_target_properties(ui.hdll PROPERTIES SOURCES ui_win.c)
+endif()
+
+set_as_hdll(ui)
+
+target_link_libraries(ui.hdll
+    libhl
+)
+
+install(
+    TARGETS
+        ui.hdll
+    DESTINATION .
+)

+ 72 - 0
libs/uv/CMakeLists.txt

@@ -0,0 +1,72 @@
+add_library(uv.hdll SHARED
+    uv.c
+)
+
+if (WIN32)
+    target_sources(uv.hdll
+        PRIVATE
+            ${INCLUDES_BASE_DIR}/libuv/src/fs-poll.c
+            ${INCLUDES_BASE_DIR}/libuv/src/inet.c
+            ${INCLUDES_BASE_DIR}/libuv/src/threadpool.c
+            ${INCLUDES_BASE_DIR}/libuv/src/uv-common.c
+            ${INCLUDES_BASE_DIR}/libuv/src/version.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/async.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/core.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/dl.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/error.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/fs-event.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/fs.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/getaddrinfo.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/getnameinfo.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/handle.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/loop-watcher.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/pipe.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/poll.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/process-stdio.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/process.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/req.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/signal.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/snprintf.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/stream.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/tcp.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/thread.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/timer.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/tty.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/udp.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/util.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/winapi.c
+            ${INCLUDES_BASE_DIR}/libuv/src/win/winsock.c
+    )
+else()
+    find_package(LibUV)
+endif()
+
+set_as_hdll(uv)
+target_link_libraries(uv.hdll
+    libhl
+)
+if (WIN32)
+    target_include_directories(uv.hdll
+        PRIVATE
+        ${INCLUDES_BASE_DIR}/libuv/include
+    )
+    target_link_libraries(uv.hdll
+        psapi
+        iphlpapi
+        userenv
+    )
+else()
+    target_include_directories(uv.hdll
+        PRIVATE
+        ${LibUV_INCLUDE_DIRS}
+    )
+    target_link_libraries(uv.hdll
+        ${LibUV_LIBRARIES}
+    )
+endif()
+
+install(
+    TARGETS
+        uv.hdll
+    DESTINATION .
+)