Improvements to package distribution script for Windows, preprocessor tweaks in JNI section

This commit is contained in:
Joseph Henry
2018-08-23 10:22:55 -07:00
parent 5a55cedff5
commit afe34bca50
4 changed files with 116 additions and 44 deletions

View File

@@ -56,9 +56,6 @@ set (SILENCE "-Wno-unused-parameter -Wno-unused-variable -Wno-missing-field-init
# | PLATFORM/FEATURE AND IDE DETECTION |
# -----------------------------------------------------------------------------
if (JNI EQUAL 1)
set (ADD_JNI TRUE)
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Android")
set (BUILDING_ANDROID TRUE)
endif ()
@@ -83,11 +80,40 @@ endif ()
if (NOT BUILDING_ANDROID AND NOT IN_XCODE AND NOT BUILD_TESTS EQUAL 0)
set(SHOULD_BUILD_TESTS TRUE)
endif ()
if (BUILDING_WIN32 OR BUILDING_WIN64 OR MSVC)
set (BUILDING_WIN TRUE)
endif ()
# -----------------------------------------------------------------------------
# | JNI |
# -----------------------------------------------------------------------------
MESSAGE (STATUS "Looking for JNI")
# We are only interested in finding jni.h: we do not care about extended JVM
# functionality or the AWT library.
set(JAVA_AWT_LIBRARY NotNeeded)
set(JAVA_JVM_LIBRARY NotNeeded)
set(JAVA_INCLUDE_PATH2 NotNeeded)
set(JAVA_AWT_INCLUDE_PATH NotNeeded)
set(JAVA_INCLUDE_PATH "C:\\Program Files\\Java\\jdk-10.0.2\\include")
find_package (JNI)
if (JNI_FOUND)
message (STATUS "JNI_INCLUDE_DIRS=${JNI_INCLUDE_DIRS}")
message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}")
list (GET JNI_INCLUDE_DIRS 0 JNI_INCLUDE_DIR)
message (STATUS "jni path=${JNI_INCLUDE_DIR}")
include_directories ("${JNI_INCLUDE_DIR}")
if (BUILDING_WIN)
include_directories ("${JNI_INCLUDE_DIR}\\win32")
endif ()
else ()
message (STATUS "JNI not found")
endif ()
if ((BUILDING_ANDROID OR JNI) AND JNI_FOUND)
add_definitions (-DSDK_JNI=1)
endif ()
# -----------------------------------------------------------------------------
# | LWIP PORT |
# -----------------------------------------------------------------------------
@@ -104,27 +130,17 @@ endif ()
# | LIBRARY NAMES |
# -----------------------------------------------------------------------------
set (STATIC_LIB_NAME ${PROJECT_NAME}-static)
set (STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
set (DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared)
set (DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
if (BUILDING_DARWIN)
if (IN_XCODE)
set (XCODE_FRAMEWORK_NAME ${PROJECT_NAME})
set (STATIC_LIB_NAME ${PROJECT_NAME}-static)
set (STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
set (DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared)
set (DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
endif ()
if (BUILDING_ANDROID)
set (STATIC_LIB_NAME ${PROJECT_NAME}-static)
set (STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
set (DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared)
set (DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
endif ()
if (BUILDING_WIN)
# Possibly a CMake limitation? -- Can't share target output names
set (STATIC_LIB_NAME ${PROJECT_NAME}-static)
set (STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME}-static)
set (DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared)
set (DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME}-shared)
else ()
set (STATIC_LIB_NAME ${PROJECT_NAME}-static)
set (STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME})
set (DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared)
@@ -223,8 +239,10 @@ if (BUILDING_WIN)
if(BUILDING_WIN64)
set (WINLIBDIR, "C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x64")
endif ()
find_library (ws2_32_LIBRARY_PATH NAMES WS2_32 HINTS ${WINLIBDIR})
find_library (shlwapi_LIBRARY_PATH NAMES ShLwApi HINTS ${WINLIBDIR})
#find_library (ws2_32_LIBRARY_PATH NAMES WS2_32 HINTS ${WINLIBDIR})
#find_library (shlwapi_LIBRARY_PATH NAMES ShLwApi HINTS ${WINLIBDIR})
set (ws2_32_LIBRARY_PATH "${WINLIBDIR}/WS2_32.Lib")
set (shlwapi_LIBRARY_PATH "${WINLIBDIR}/ShLwApi.Lib")
set (iphlpapi_LIBRARY_PATH "${WINLIBDIR}/iphlpapi.Lib")
message (STATUS ${WINLIBDIR})
message (STATUS "WS2_32=${ws2_32_LIBRARY_PATH}")
@@ -234,25 +252,6 @@ if (BUILDING_WIN)
add_definitions (-DADD_EXPORTS=1)
endif ()
# -----------------------------------------------------------------------------
# | JNI |
# -----------------------------------------------------------------------------
if (ADD_JNI OR BUILDING_ANDROID)
MESSAGE (STATUS "Looking for JNI headers")
find_package (JNI)
add_definitions (-DSDK_JNI=1)
if (JNI_FOUND)
message (STATUS "JNI_INCLUDE_DIRS=${JNI_INCLUDE_DIRS}")
message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}")
list (GET JNI_INCLUDE_DIRS 0 JNI_INCLUDE_DIR)
message (STATUS "jni path=${JNI_INCLUDE_DIR}")
include_directories ("${JNI_INCLUDE_DIR}")
else ()
message (STATUS "JNI not found")
endif ()
endif ()
# -----------------------------------------------------------------------------
# | OBJECTS-PIC (INTERMEDIATE) |
# -----------------------------------------------------------------------------
@@ -289,13 +288,13 @@ add_library (${STATIC_LIB_NAME} STATIC
$<TARGET_OBJECTS:lwip_obj>
$<TARGET_OBJECTS:zto_obj>
$<TARGET_OBJECTS:http_obj> ${libztSrcGlob})
set_target_properties (${STATIC_LIB_NAME} PROPERTIES OUTPUT_NAME zt)
set_target_properties (${STATIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${STATIC_LIB_OUTPUT_NAME})
# dynamic
add_library (${DYNAMIC_LIB_NAME} SHARED ${libztSrcGlob})
message (STATUS ${libztSrcGlob})
target_link_libraries (${DYNAMIC_LIB_NAME} lwip_pic zto_pic http_pic)
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES OUTPUT_NAME zt)
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${DYNAMIC_LIB_OUTPUT_NAME})
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

View File

@@ -17,6 +17,9 @@ clean:
.PHONY: dist
dist: patch
./packages/dist.sh
.PHONY: dist_win
dist_win: patch
packages\dist.bat
# Initialize submodules and apply patches
.PHONY: all
@@ -28,6 +31,8 @@ all: update patch
clean_win:
-"rd /S /Q bin"
-"rd /S /Q build"
-"rd /S /Q WinBuild32"
-"rd /S /Q WinBuild64"
# Remove any CMake-generated library-building projects
clean_packages:

64
packages/dist.bat Normal file
View File

@@ -0,0 +1,64 @@
REM Build all target configurations and copy results into "prebuilt"
set PrebuiltDebugWin32Dir=prebuilt\debug\win32
set PrebuiltDebugWin64Dir=prebuilt\debug\win64
set PrebuiltReleaseWin32Dir=prebuilt\release\win32
set PrebuiltReleaseWin64Dir=prebuilt\release\win64
mkdir %PrebuiltDebugWin32Dir%
mkdir %PrebuiltDebugWin64Dir%
mkdir %PrebuiltReleaseWin32Dir%
mkdir %PrebuiltReleaseWin64Dir%
set DebugWinBuildDir=bin\lib\Debug
set ReleaseWinBuildDir=bin\lib\Release
mkdir WinBuild32 & pushd WinBuild32
cmake -G "Visual Studio 15 2017" ../
popd
mkdir WinBuild64 & pushd WinBuild64
cmake -G "Visual Studio 15 2017 Win64" ../
popd
cmake --build WinBuild32 --config Release
cmake --build WinBuild32 --config Debug
copy %DebugWinBuildDir%\zt-static.lib %PrebuiltDebugWin32Dir%\zt.lib
copy %DebugWinBuildDir%\zt-shared.dll %PrebuiltDebugWin32Dir%\zt.dll
copy %ReleaseWinBuildDir%\zt-static.lib %PrebuiltReleaseWin32Dir%\zt.lib
copy %ReleaseWinBuildDir%\zt-shared.dll %PrebuiltReleaseWin32Dir%\zt.dll
cmake --build WinBuild64 --config Release
cmake --build WinBuild64 --config Debug
copy %DebugWinBuildDir%\zt-static.lib %PrebuiltDebugWin64Dir%\zt.lib
copy %DebugWinBuildDir%\zt-shared.dll %PrebuiltDebugWin64Dir%\zt.dll
copy %ReleaseWinBuildDir%\zt-static.lib %PrebuiltReleaseWin64Dir%\zt.lib
copy %ReleaseWinBuildDir%\zt-shared.dll %PrebuiltReleaseWin64Dir%\zt.dll
rd /S /Q bin
# Build with JNI
mkdir WinBuild32 & pushd WinBuild32
cmake -D JNI:BOOL=ON -G "Visual Studio 15 2017" ../
popd
mkdir WinBuild64 & pushd WinBuild64
cmake -D JNI:BOOL=ON -G "Visual Studio 15 2017 Win64" ../
popd
cmake --build WinBuild32 --config Release
cmake --build WinBuild32 --config Debug
copy %DebugWinBuildDir%\zt-static.lib %PrebuiltDebugWin32Dir%\zt-jni.lib
copy %DebugWinBuildDir%\zt-shared.dll %PrebuiltDebugWin32Dir%\zt-jni.dll
copy %ReleaseWinBuildDir%\zt-static.lib %PrebuiltReleaseWin32Dir%\zt-jni.lib
copy %ReleaseWinBuildDir%\zt-shared.dll %PrebuiltReleaseWin32Dir%\zt-jni.dll
cmake --build WinBuild64 --config Release
cmake --build WinBuild64 --config Debug
copy %DebugWinBuildDir%\zt-static.lib %PrebuiltDebugWin64Dir%\zt-jni.lib
copy %DebugWinBuildDir%\zt-shared.dll %PrebuiltDebugWin64Dir%\zt-jni.dll
copy %ReleaseWinBuildDir%\zt-static.lib %PrebuiltReleaseWin64Dir%\zt-jni.lib
copy %ReleaseWinBuildDir%\zt-shared.dll %PrebuiltReleaseWin64Dir%\zt-jni.dll

View File

@@ -33,9 +33,13 @@
#ifdef SDK_JNI
#if defined(_MSC_VER)
//
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#endif
#include "libzt.h"
#include "libztDefs.h"