if(${CMAKE_VERSION} VERSION_GREATER "4.0") cmake_minimum_required(VERSION 4.0) else() cmake_minimum_required(VERSION 3.1) endif() project (NoPi) # Default to 32-bit builds option(BUILD_32_BIT "BUILD_32_BIT" ON) # Get the build year and month for data time-out # Need to remove the leading zero from the month or the compiler will # think it is octal and get confused with month 08 and 09 string( TIMESTAMP BLDYEAR "%Y" ) add_definitions( -DdBLDYEAR=${BLDYEAR} ) string( TIMESTAMP TMPMONTH "%m" ) string( REGEX REPLACE "^0" "" BLDMONTH ${TMPMONTH} ) add_definitions( -DdBLDMONTH=${BLDMONTH} ) set(DEFS -D __INTEL__ -D __DATA_UTILS__ -D FE_C -D EPHDLL_STATIC -D STINGER_NAV_PC -D dWAASType28Decode -D __USE_STDINT_H_FOR_TYPES__ ) if(UNIX) set(DEFS ${DEFS} -D GNU_COMPILER ) endif() if (BUILD_32_BIT) set(DEFS ${DEFS} -D _FILE_OFFSET_BITS=64 ) else() set(DEFS ${DEFS} -D NOPI_64BIT_BUILD ) endif() # Detect if NoPi is checked out next to colossal and use that for everything if((IS_DIRECTORY ${CMAKE_SOURCE_DIR}/../../colossal/t01) AND (EXISTS ${CMAKE_SOURCE_DIR}/../../colossal/.git) ) set(COL_ROOT ${CMAKE_SOURCE_DIR}/../../colossal) endif() set(INCS ${COL_ROOT}/t01/t01lib/headers ${COL_ROOT}/coreBuild/stinger/app ${COL_ROOT}/coreBuild/stinger/auxi ${COL_ROOT}/coreBuild/local ${COL_ROOT}/coreBuild/system ${COL_ROOT}/coreBuild/system/antenna ${COL_ROOT}/coreBuild/rtk/mercury/H ${COL_ROOT}/StingerNavPC/NavPC/EphManager/H ${COL_ROOT}/StingerNavPC/NavPC/Ephesus/H ${COL_ROOT}/coreBuild/fe . ) set(SRCS NoPi_EphLib_Wrapper.cpp NoPi_Carrier_Ambiguity_Resolution.c NoPi_Command_Line.c NoPi_Config.c NoPi_Correct_Measurements.c NoPi_Data_File_Decode.c NoPi_Differences.c NoPi_Eph_Handling.c NoPi_File_Handling.c NoPi_Init_Data.c NoPi_L2E_or_L2C_Dedicated.c NoPi_Main.c NoPi_Process_Baseline.c NoPi_Process_Common_Satellites.c NoPi_Read_Data.c NoPi_Reference_Satellite.c NoPi_Utils.c ${COL_ROOT}/coreBuild/stinger/auxi/s_math.c ${COL_ROOT}/coreBuild/system/antenna/computeApcCorrections.c ${COL_ROOT}/coreBuild/system/antenna/AntDatabase.cpp ${COL_ROOT}/coreBuild/system/antenna/AntModelDB.cpp ${COL_ROOT}/coreBuild/system/antenna/ElevDepAntModel.cpp ) if(UNIX) set(FLAGS -g -Wall -O3 -Wno-write-strings) if (BUILD_32_BIT) add_definitions("-m32") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32 ") else() add_definitions("-m64") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64 ") endif() set(DEFS ${DEFS} -D LINUX_BUILD -D _MAX_PATH=20) # Auto-select correct compiler version execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE SDK_GCC_VERSION) STRING(REGEX REPLACE "([0-9].[0-9]).*" "\\1" MAJOR_GCC_VERSION ${SDK_GCC_VERSION}) message(STATUS "Detected major gcc ${MAJOR_GCC_VERSION}") if (MAJOR_GCC_VERSION VERSION_GREATER 5.0) # This is an internal tool... Using PIE can make some debugging harder. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -no-pie ") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -no-pie ") set(FLAGS "${FLAGS} -gz") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -gz ") endif() if (BUILD_32_BIT) set(LIBEPHDIR ${COL_ROOT}/StingerNavPC/NavPC/LibsLinux/4.1) else() set(LIBEPHDIR ${COL_ROOT}/StingerNavPC/NavPC/LibsLinux/64bit/4.1) endif() if (BUILD_32_BIT) set(LIBDIRS ${LIBEPHDIR} ${COL_ROOT}/t01/build/t01lib) else() set(LIBDIRS ${LIBEPHDIR} ${COL_ROOT}/t01/build64/t01lib) endif() set(LIBLINKS T01Utils.a m pthread rt EphManager.a) # Auto-extract compressed EphManager library add_custom_command(OUTPUT ${LIBEPHDIR}/libEphManager.a DEPENDS ${LIBEPHDIR}/libEphManager.a.bz2 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND bunzip2 -c ${LIBEPHDIR}/libEphManager.a.bz2 > ${LIBEPHDIR}/libEphManager.a ) endif() if(MSVC) set(DEFS ${DEFS} -D _CRT_SECURE_NO_WARNINGS -D WIN32 -D _CONSOLE -D HOST_MSDOS) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT") set(LIBEPHDIR ${COL_ROOT}/StingerNavPC/NavPC/LibsWin32) set(LIBDIRS ${LIBEPHDIR} ${COL_ROOT}/t01/build_win32/t01lib/${CMAKE_BUILD_TYPE}) set(LIBLINKS t01lib.lib libRTK.release.lib) endif() include_directories( ${INCS} ) link_directories( ${LIBDIRS} ) add_definitions( ${DEFS} ${FLAGS} ) add_executable(NoPi ${SRCS}) target_link_libraries(NoPi ${LIBLINKS}) if(UNIX) # Auto-extract compressed EphManager library add_custom_target(extract_libEphManager DEPENDS ${LIBEPHDIR}/libEphManager.a) add_dependencies(NoPi extract_libEphManager) endif()