diff --git a/libs/libplatforminfo/src/CMakeLists.txt b/libs/libplatforminfo/src/CMakeLists.txt index 60228b4..2d0974b 100644 --- a/libs/libplatforminfo/src/CMakeLists.txt +++ b/libs/libplatforminfo/src/CMakeLists.txt @@ -7,6 +7,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) set(TARGET "" CACHE STRING "OpenWrt target") set(SUBTARGET "" CACHE STRING "OpenWrt subtarget") +set(CUSTOM OFF CACHE BOOL "Use custom file definitions") add_definitions(-DTARGET=${TARGET}) @@ -20,13 +21,20 @@ else(SUBTARGET) add_definitions(-DTARGET_${TARGET}) endif(SUBTARGET) -if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/targets/${FULL_TARGET}.c") - set(TARGET_SOURCE "targets/${FULL_TARGET}.c") -elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/targets/${TARGET}.c") - set(TARGET_SOURCE "targets/${TARGET}.c") -else() - set(TARGET_SOURCE "targets/default.c") -endif() +if(CUSTOM) + set(TARGET_SOURCE "targets/custom.c") + add_definitions(-DBOARD_NAME=\"${BOARD_NAME}\") + add_definitions(-DMODEL=\"${MODEL}\") + add_definitions(-DIMAGE_NAME=\"${IMAGE_NAME}\") +else(CUSTOM) + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/targets/${FULL_TARGET}.c") + set(TARGET_SOURCE "targets/${FULL_TARGET}.c") + elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/targets/${TARGET}.c") + set(TARGET_SOURCE "targets/${TARGET}.c") + else() + set(TARGET_SOURCE "targets/default.c") + endif() +endif(CUSTOM) add_library(platforminfo SHARED diff --git a/libs/libplatforminfo/src/targets/custom.c b/libs/libplatforminfo/src/targets/custom.c new file mode 100644 index 0000000..d29ef34 --- /dev/null +++ b/libs/libplatforminfo/src/targets/custom.c @@ -0,0 +1,63 @@ +/* + Copyright (c) 2018, Florian Eckert + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include +#include "../common.h" + + +static char * board_name = NULL; +static char * model = NULL; +static char * image_name = NULL; + + +__attribute__((constructor)) static void init(void) { + board_name = read_line(BOARD_NAME); + model = read_line(MODEL); + image_name = read_line(IMAGE_NAME); +} + +__attribute__((destructor)) static void deinit(void) { + free(board_name); + free(model); + free(image_name); + + board_name = NULL; + model = NULL; + image_name = NULL; +} + + +const char * platforminfo_get_board_name(void) { + return board_name; +} + +const char * platforminfo_get_model(void) { + return model; +} + +const char * platforminfo_get_image_name(void) { + return image_name; +}