diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c893cd..0a37b8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ add_subdirectory( add_subdirectory( file ) -add_subdirectory( - xplugin -) +if(NOT (WIN32 AND (BIT STREQUAL "32"))) + add_subdirectory( + xplugin + ) +endif() diff --git a/Jenkinsfile b/Jenkinsfile index 32ebd4e..dbbb8de 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,8 +37,6 @@ pipeline { DEBUG = 1 } steps { - sh 'bash ./build.sh lin32' - sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/lin32' sh 'bash ./build.sh lin64' sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/lin64' } @@ -72,118 +70,5 @@ pipeline { sh 'rm -rf build' } } - stage('Build Windows Stageing') { - when { - branch 'stage' - beforeAgent true - } - agent { - docker { - image 'llvm-mingw:latest' - reuseNode true - } - } - steps { - sh 'bash ./build.sh win32' - sh 'bash ./build.sh win64' - } - } - stage('Build Linux Stageing') { - when { - branch 'stage' - beforeAgent true - } - agent { - docker { - image 'llvm:latest' - reuseNode true - } - } - steps { - sh 'bash ./build.sh lin32' - sh 'bash ./build.sh lin64' - } - } - stage('Build MacOSX Stageing') { - when { - branch 'stage' - beforeAgent true - } - agent { - docker { - image 'osxcross:latest' - reuseNode true - } - } - steps { - sh 'bash ./build.sh mac' - } - } - stage('Archive Stageing') { - when { - branch 'stage' - } - steps { - zip zipFile: 'Stage.zip', archive: true, dir: 'build/Plugin' - sh 'rm -rf build' - } - } - stage('Build Windows Release') { - when { - branch 'master' - beforeAgent true - } - agent { - docker { - image 'llvm-mingw:latest' - reuseNode true - } - } - steps { - sh 'bash ./build.sh win32' - sh 'bash ./build.sh win64' - } - } - stage('Build Linux Release') { - when { - branch 'master' - beforeAgent true - } - agent { - docker { - image 'llvm:latest' - reuseNode true - } - } - steps { - sh 'bash ./build.sh lin32' - sh 'bash ./build.sh lin64' - } - } - stage('Build MacOSX Release') { - when { - branch 'master' - beforeAgent true - } - agent { - docker { - image 'osxcross:latest' - reuseNode true - } - } - steps { - sh 'bash ./build.sh mac' - } - } - stage('Archive Release') { - when { - branch 'master' - beforeAgent true - } - steps { - zip zipFile: 'Release.zip', archive: true, dir: 'build/Plugin' - sh 'rm -rf build' - } - } } } diff --git a/TODO.md b/TODO.md index 044c93d..6b35761 100644 --- a/TODO.md +++ b/TODO.md @@ -1 +1,3 @@ -- Reverse engineer FSUIPC .NET onRunway Check \ No newline at end of file +- Reverse engineer FSUIPC .NET onRunway Check +- Update OSXCross Docker image to SDK 11 +- Implement ARM64 arch for Plugin \ No newline at end of file diff --git a/build.sh b/build.sh index 1008cac..7046308 100755 --- a/build.sh +++ b/build.sh @@ -10,15 +10,11 @@ case $1 in "mac") cmake -DDEBUG=$DEBUG -DCMAKE_TOOLCHAIN_FILE=../toolchain-mac.cmake .. ;; - "lin32") - cmake -DDEBUG=$DEBUG -DBIT=32 -DCMAKE_TOOLCHAIN_FILE=../toolchain-lin-32.cmake .. - ;; - "lin64") - cmake -DDEBUG=$DEBUG -DBIT=64 -DCMAKE_TOOLCHAIN_FILE=../toolchain-lin-64.cmake .. + "lin") + cmake -DDEBUG=$DEBUG -DBIT=64 -DCMAKE_TOOLCHAIN_FILE=../toolchain-lin.cmake .. ;; "win32") cmake -DDEBUG=$DEBUG -DBIT=32 -DCMAKE_TOOLCHAIN_FILE=../toolchain-win-32.cmake .. - \cp -rf ../openSSL/win32/*.dll Plugin/GAConnector/32/ ;; "win64") cmake -DDEBUG=$DEBUG -DBIT=64 -DCMAKE_TOOLCHAIN_FILE=../toolchain-win-64.cmake .. diff --git a/file/CMakeLists.txt b/file/CMakeLists.txt index 4abd863..fa3a10d 100644 --- a/file/CMakeLists.txt +++ b/file/CMakeLists.txt @@ -40,11 +40,9 @@ if(APPLE) ) target_compile_options(file PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_options(file PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_libraries(file PRIVATE @@ -60,20 +58,20 @@ elseif(UNIX) target_compile_options(file PRIVATE -nodefaultlibs ) - if(BIT STREQUAL "32") - target_compile_options(file PRIVATE - -m32 +elseif(WIN32) + if (BIT STREQUAL "32") + message("Building file for Windows ${BIT} into ${PROJECT_BINARY_DIR}/FSConnect") + + set_target_properties(file PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/FSConnect" ) - target_link_options(file PRIVATE - -m32 + else() + message("Building file for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + + set_target_properties(file PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}" ) endif() -elseif(WIN32) - message("Building file for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") - - set_target_properties(file PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}" - ) if(DEBUG) target_compile_options(file PRIVATE diff --git a/file/File Layout.txt b/file/File Layout.txt new file mode 100644 index 0000000..b7000a8 --- /dev/null +++ b/file/File Layout.txt @@ -0,0 +1,80 @@ +VARIABLE STRING (>=3) +********************* +0 1 | 2 ... | +------+-------+ +LEN |STRING | +UINT16|CHAR* | + +LOGBOOK HEADER (28) +*********************************************************************************************************************************************** +0 1 2 3 4 | 5 | 6 7 | 8 9 10 11 | 12 13 14 15 | 16 17 18 19 | 20 21 22 23 | 24 25 26 27 | +------------------+-------+-------------+---------------------+-------------------+-------------------+-------------------+-------------------+ +IDENT |VERSION|TOTAL FLIGHTS|TOTAL TIME |TOTAL PTS |TOTAL FUEL |TOTAL DIST |RATE | +CHAR[5] |UINT8 |UINT16 |FLOAT32, Decimal, min|FLOAT32 |FLOAT32, kgs |FLOAT32, nm |FLOAT32, ft/min | + +FLIGHT PREAMBLE (24) +********************************************************************************************************************** +0 1 2 3 4 5 6 7 8 9 | 10 11 12 13 | 14 15 16 17 | 18 19 20 21 22 23 | +--------------------------------------+----------------------------+-------------------+-----------------------------+ +DATE |FLIGHT NUMBER |AIRCRAFT TYPE |AIRCRAFT REGISTRATION | +CHAR, DD.MM.YYYY |CHAR[4],[0-9][0-9A-z\0]{0,3}|CHAR[4], ICAO code |CHAR[6], D-[A-Z]{4} | + +TIMES (24) +************************************************************************************************************** +0 1 2 3 4 | 5 6 7 8 9 | 10 11 12 13 14 | 15 16 17 18 19 | 20 21 22 23 | +------------------+-------------------+------------------------+------------------------+--------------------+ +OFF BLOCK |TAKEOFF (OUT) |LANDING (ON) |ON BLOCK (IN) |TOTAL | +CHAR[5], HH:MM |CHAR[5], HH:MM |CHAR[5], HH:MM |CHAR[5], HH:MM |FLOAT32, Decimal min| + +FUELS (16) +********************************************************************* +0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15 | +--------------+---------------+-----------------+-------------------+ +TAXI OUT |IN FLIGHT |TAXI IN |TOTAL | +FLOAT32, kgs |FLOAT32, kgs |FLOAT32, kgs |FLOAT32, kgs | + +DISTANCES (16) +********************************************************************* +0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15 | +--------------+---------------+-----------------+-------------------+ +TAXI OUT |IN FLIGHT |TAXI IN |TOTAL | +FLOAT32, nm |FLOAT32, nm |FLOAT32, nm |FLOAT32, nm | + +LANDING (9) +******************************************* +0 1 2 3 | 4 | 5 6 7 8 | +---------------+----------+---------------+ +MAX RATE |TOUCHDOWNS|MAX G-FORCE | +FLOAT32, ft/min|CHAR |FLOAT32, g | + +FLIGHT POSTAMBLE (5) +********************* +0 1 2 3 | 5 | +--------------+---------+ +POINTS |FLAGS | +FLOAT32 |BITFIELD | + +FLAGS BITFIELD +********************************** +7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +---+---+---+---+---+---+---+-----+ +NIL|NIL|NIL|NIL|NIL|NIL|NIL|FILED| + +LOGBOOK FILE: +LOGBOOK HEADER +[ + FLIGHT PREAMBLE + VARIABLE STRING (DEPARTURE AIRPORT NAME AND CODE) + VARIABLE STRING (DEPARTURE GATE NAME) + VARIABLE STRING (DEPARTURE RUNWAY DESIGNATOR) + VARIABLE STRING (ARRIVAL AIRPORT NAME AND CODE) + VARIABLE STRING (ARRIVAL GATE NAME) + VARIABLE STRING (ARRIVAL RUNWAY DESIGNATOR) + TIMES + FUELS + DISTANCES + LANDING + VARIABLE STRING (RECORDING FILE NAME) + FLIGHT POSTAMBLE + VARIABLE STRING (FLIGHT RECORDING PATH RELATIVE TO LOGBOOK) +]0..n diff --git a/ixwebsocket/CMakeLists.txt b/ixwebsocket/CMakeLists.txt index f1c6af1..167c957 100644 --- a/ixwebsocket/CMakeLists.txt +++ b/ixwebsocket/CMakeLists.txt @@ -42,11 +42,9 @@ if(APPLE) IXWEBSOCKET_USE_SECURE_TRANSPORT ) target_compile_options(ixwebsocket PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_options(ixwebsocket PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_libraries(ixwebsocket PRIVATE @@ -68,15 +66,8 @@ elseif(UNIX) target_compile_options(ixwebsocket PRIVATE -nodefaultlibs ) - if(BIT STREQUAL "32") - target_compile_options(ixwebsocket PRIVATE - -m32 - ) - target_link_options(ixwebsocket PRIVATE - -m32 - ) - endif() - if (NOT OPENSSL_FOUND) + + if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) endif() message(STATUS "System OpenSSL: " ${OPENSSL_VERSION}) @@ -90,11 +81,19 @@ elseif(UNIX) pthread ) elseif(WIN32) - message("Building ixwebsocket for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + if (BIT STREQUAL "32") + message("Building ixwebsocket for Windows ${BIT} into ${PROJECT_BINARY_DIR}/FSConnect") - set_target_properties(ixwebsocket PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT} - ) + set_target_properties(ixwebsocket PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/FSConnect" + ) + else() + message("Building fileixwebsocket for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + + set_target_properties(ixwebsocket PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}" + ) + endif() target_compile_definitions(ixwebsocket PRIVATE IXWEBSOCKET_USE_TLS diff --git a/simdata/CMakeLists.txt b/simdata/CMakeLists.txt index 1da3a59..6a840ee 100644 --- a/simdata/CMakeLists.txt +++ b/simdata/CMakeLists.txt @@ -39,11 +39,9 @@ if(APPLE) ) target_compile_options(simdata PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_options(simdata PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_libraries(simdata PRIVATE @@ -59,7 +57,7 @@ elseif(UNIX) target_compile_options(simdata PRIVATE -nodefaultlibs ) - if(BIT STREQUAL "32") + if() target_compile_options(simdata PRIVATE -m32 ) @@ -68,11 +66,19 @@ elseif(UNIX) ) endif() elseif(WIN32) - message("Building simdata for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + if (BIT STREQUAL "32") + message("Building simdata for Windows ${BIT} into ${PROJECT_BINARY_DIR}/FSConnect") - set_target_properties(simdata PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}" - ) + set_target_properties(simdata PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/FSConnect" + ) + else() + message("Building simdata for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + + set_target_properties(simdata PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}" + ) + endif() if(DEBUG) target_compile_options(simdata PRIVATE diff --git a/toolchain-lin-32.cmake b/toolchain-lin-32.cmake deleted file mode 100644 index 14c7b4d..0000000 --- a/toolchain-lin-32.cmake +++ /dev/null @@ -1,15 +0,0 @@ -# which compilers to use for C and C++ -set(CMAKE_C_COMPILER clang) -set(CMAKE_CXX_COMPILER clang++) - -# adjust the default behavior of the FIND_XXX() commands: -# search programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - -# search headers and libraries in the target environment -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - -# 32Bit Libs -SET(CMAKE_LIBRARY_PATH "/usr/lib/i386-linux-gnu") -include_directories(BEFORE /usr/include/i386-linux-gnu) diff --git a/toolchain-lin-64.cmake b/toolchain-lin.cmake similarity index 100% rename from toolchain-lin-64.cmake rename to toolchain-lin.cmake diff --git a/xplugin/CMakeLists.txt b/xplugin/CMakeLists.txt index 41d295c..37fb356 100644 --- a/xplugin/CMakeLists.txt +++ b/xplugin/CMakeLists.txt @@ -57,11 +57,9 @@ if(APPLE) APL ) target_compile_options(germanairlinesva_xplugin PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_options(germanairlinesva_xplugin PRIVATE - "SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_libraries(germanairlinesva_xplugin PRIVATE @@ -82,14 +80,6 @@ elseif(UNIX) target_compile_options(germanairlinesva_xplugin PRIVATE -nodefaultlibs ) - if(BIT STREQUAL "32") - target_compile_options(germanairlinesva_xplugin PRIVATE - -m32 - ) - target_link_options(germanairlinesva_xplugin PRIVATE - -m32 - ) - endif() target_link_libraries(germanairlinesva_xplugin PRIVATE pthread ) @@ -118,15 +108,9 @@ elseif(WIN32) ) target_link_libraries(germanairlinesva_xplugin PRIVATE ) - if(BIT STREQUAL "32") - target_link_libraries(germanairlinesva_xplugin PRIVATE - ${CMAKE_SOURCE_DIR}/XPSDK/Libraries/Win/XPLM.lib - ) - else() - target_link_libraries(germanairlinesva_xplugin PRIVATE - ${CMAKE_SOURCE_DIR}/XPSDK/Libraries/Win/XPLM_64.lib - ) - endif() + target_link_libraries(germanairlinesva_xplugin PRIVATE + ${CMAKE_SOURCE_DIR}/XPSDK/Libraries/Win/XPLM_64.lib + ) target_sources(germanairlinesva_xplugin PRIVATE xPluginWin.cpp )