LINUX.ORG.RU
ФорумTalks

/хроники пикирующего истребителя/ Лучше - не значит быстрее

 ,


1

3

Случайно написал несколько скриптов на PHP. Вначале написал, а потом понял, что это PHP. Это зашквар, или один раз не считается?

А знаете, зачем прога на PHP?

Потому что я понаписал веб-интерфейсов на Java, и где-то там устроил утечку памяти. Теперь после процессинга определенного количества данных, вся память на серваке заканчивается, вместе со свопом. И процессор заканчивается, непойми почему.

Но юзеры сказали, что времени чинить нету. Поэтому стратегически был выделен сервер в 10 раз мощнее. Но и на нем память с процом тоже заканчиваются, но медленней.

Поэтому я сделал скрипты для юзера, чтобы когда прога начинает нереально тормозить в вебморде (это значит, она глубоко зарылась в своп), надо дернуть из браузера restart.php, который убьет и перезапустит докер с джава-софтиной на серваке. И еще tail-f.php чтобы посмотреть логи докера (понять, стартанул ли он, и если повис - то как именно).

Но у меня-то все работает, а любители хорошего кода так за год эту задачу и не решили - никаким способом.

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 2)
Ответ на: комментарий от darkenshvein

костыль оказался настолько удачным решением, что мы начали разламывать с его помощью банкоматы напрямую, не прибегая к какому-либо утомительному зарабатыванию денег, с помощью написания собственного кода.

Не неси ерунду, ладошка.

buggycoder
()
Ответ на: комментарий от xwicked

Читайте книгу Тейта «Горький вкус Джавы».

На клиенте сейчас Джавы нет.

Всё - похоронили.

java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

Нет - и всё тут!

С++ всегда лучше работать будет.

Не зря же IBM Eclipse написан на C++ через JNI (SWT), а поделие от «маленькой, но гордой»(C) микрокомпании под названием «есть ИКЕЯ - есть ИДЕЯ»(TM) на тормозном Swing'е.

Вопрос в том, что на С++ лабать прогу намного дороже и дольше получится.

Как там говорил ПроФФеСор В.С.ЛугоФФский про надгробие программистам на погосте - «они писали СУБД на ассемблере.»(С)

Читать сюда - https://nuclight.livejournal.com/95140.html (18+)

Bioreactor ★★★★★
()
Ответ на: комментарий от i36_zubov

Вы абсолютно правы про плохое проектирование.

Для хорошего проектирования нужен удобный инструмент.

Как проектирования, так и реализации.

Например, наличие в языке поддержки ФП.

Которого в языке «автору которого место в дурке или на погосте»(С) просто нет.

Зато в языке «автору которого место в дурке или на погосте»(С) есть хаос типов данных.

Так, что читайте внимательно сокровенную мудрость ПроФФеСора:

Шел бы ты математику изучать, кодеришка серый, у тебя ж даже зеленого представления о функциональных языках нет.

(C)

Правда про язык С++ (комментарий)

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

Джава на клиенте возвращается с помощью GraalVM

И в браузере тоже (а еще в браузере есть Котлин, но это другое)

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

GraalVM под офтопик на котором сидит большинство заказчиков?

Ню-ню! Превью в продакшене.

А если без «нанотехнологий»?

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)

для юзера, чтобы когда прога начинает дернуть из браузера

Вместо добавить в *.service

Restart=always
LimitDATA=2G #or whatever
или просто рестарт по ночам???

DonkeyHot ★★★★★
()
Ответ на: комментарий от Bioreactor

Без нанотехнологий нельзя, на них все замешано.

Под оффтопик генератора экзешников нет до сих пор, а джит появился только недавно. Как раз потому, что клиентов, которые *платят* под оффтопиком считай что и нет

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от DonkeyHot

ну да, человек процессил файл два часа, осталось десять минут, а ему процессинг прервали только потму, что оно немного забралось в своп. Чудесное юзабили. Мнея после этого изобьют до полусмерти

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Хайп!

Support for GraalVM on Windows is currently under development. 
Until it is available, a preview build is provided below that includes the Graal compiler but 
does not include support for building native images or installing guest languages.

(С)

java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Graal:compiler_145a4d3154866f985d929001a63cfd53de7d0c6f:graal-enterprise_bc546786a4da
5c8b42ef546ff8f6c0890fa6b7d7 (build 25.192-b12-jvmci-0.49, mixed mode)

Сыровато будет.

Bioreactor ★★★★★
()
Ответ на: комментарий от Bioreactor

проектирование это немного другое. это до программирования происходит. например выявляются способы как делать. находятся подводные камни.

например мне надо сделать песочницу для виндопрограмм. прикинул как сделать на линуксе с виндой в виртуалке а программами в опесоченых процессах. туда-сюда, еще пара вопросов. потом оказалось что одну гнусную задачу делать не надо, и так заработает и т.д. то есть просто посидев подумав объем работ сокращается в несколько раз.

а при чем тут ФП? C++, С, asm

i36_zubov
()
Ответ на: Хайп! от Bioreactor

именно так. оффтопик не нужен. установи операционную систему вместо оффтопика.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от i36_zubov

огромные гигабайтные эксельки, которые после пеезжания PGP шифрованием с жирным ключом резко становятся в четыре раза больше

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Кстати, посмотрите _внимательно_ структуру папок и файлы GraalVM.

«Клиент возвращается»(С) под офтоп - это утверждение, по меньшей мере ... очень спорное.

Bioreactor ★★★★★
()
Ответ на: комментарий от stevejobs

Это заказчикам объясните.

Если не боитесь, что спустят с лестницы.

Короче, хайп и нанотехнологии.

Bioreactor ★★★★★
()
Ответ на: комментарий от stevejobs

осталось десять минут

Это если минут. А если часов - то уже наоборот. Откуда твои пользователи знают, сколько свопить осталось?

А вообще да, так даже хуже, чем не предусмотреть возобновление долгоигдающих задач с промежуточных состояний.

DonkeyHot ★★★★★
()
Ответ на: комментарий от i36_zubov

Притом, что реальное программирование в enterpriZe и кульхацкерство «админов локалхостов»(ТМ) - это разные вещи.

Например, создание приложений на RxJava 2 без ФП - это нонсенс.

-----

Умничать будете на собеседовании.

Или в собесе.

Bioreactor ★★★★★
()
Ответ на: комментарий от stevejobs

Это в «сбертехе», вместо того, что создать программу закрытия дебетовой карточки в любом отделении Сбербанка, недоделанные VM «изучают» за счёт вкладчиков что ли?

Тогда у меня нет вопросов к работе Сбербанка.

Bioreactor ★★★★★
()
Ответ на: комментарий от stevejobs

Где операционистка тётя Маша найдет там lli.exe ?

Сама из Интернета скачает и установит?

----

Трындец, на что мои деньги в «сбертехе» тратят!

9 тысяч бездельников содержат на мои вклады.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от DonkeyHot

Откуда твои пользователи знают, сколько свопить осталось?

приложуха пишет детальный лог, который можно посмотреть похапэ скриптом из топика. В нем видна динамика обработки запросов - сколько есть данных, сколько осталось, какое среднее время прохождения данных

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Bioreactor

Это в «сбертехе», вместо того, что создать программу закрытия дебетовой карточки в любом отделении Сбербанка, недоделанные VM «изучают» за счёт вкладчиков что ли?

Я давным-давно не в сбертехе. Сказать, используют ли они грааль и платят ли за это не позволит NDA.

Изучаю я его сам. Хочу в будущем или в Oracle Labs делать Грааль, или в Micorosoft делать CoreCLR.

Где операционистка тётя Маша найдет там lli.exe ?

Какая операционистка, что ты несешь.

Крупнейшие заказчики - это, например, Twitter. И в Twitter нет оффтопика вообще. И неназванные разные банки, у которых тоже на проде везде редхат. Если кто-то заплатит за разработку оффтопик-версии столько же, сколько Twitter, то и разработчики найдутся... но чего-то пока никто не заплатил. Так что про заказчиков твой аргумент работает как раз против тебя - заказчиков на оффтопик нет.

lli.exe

какой lli.exe, что ты несешь) lli нужен для интерпретации llvm-биткода, то есть для запуска на Граале приложений, написанных на C/C++. (И даже в этом случае его можно завернуть в self-contained exe, только это уже будет сложней - не знаю, есть ли готовая утилита)

нейтив имидж же - это standalone self-contained exe. Ему вообще ничего не нужно, кроме ядра линукса или мака и glibc, дальше уже «все свое тащу с собой» (хотя и dll при желании можно залинковать - но точно не обязательно). Это совершенно та же ситуация, что у Golang. В каком-то смысле Golang и грааль нейтив-имидж - это прямые конкуренты

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Что, теперь ты заранее добавляешь шаред_птр?

Не наворачиваю слои амна, которые сам не понимаю и не могу отладить. Это к бусту тоже относится.

mv ★★★★★
()
Ответ на: комментарий от Bioreactor

какой у вас «энтерпрайз» мы видим в посте с которого тред и начался. долго, дорого и хреново и всё это работает только потому, что есть буратина, которому яйца защемило между этим сраным кривым энтерпрайзом и его жадностью.

i36_zubov
()
Ответ на: комментарий от stevejobs

эксельку можно засунуть в БД. на C# от микрософта есть целые классы которые могут нативно открывать эксельки, читать их и например выкладывать через ODBC. и эксель после этого не нужен.

может быть там дохера данных надо промежуточных, но это опять же либо БД либо в json складывать периодически + отмечать сколько намолотили входных данных.

Не то чтоб я советую а просто в очередной раз офигеваю, как же в ынтерпрайзе всё через жопу. особенно во всяких финансах. что-то сделать по людски - просто ни за какие деньги, только вилкой чистить раз-раз-раз-раз

i36_zubov
()
Ответ на: комментарий от stevejobs

Я давным-давно не в сбертехе.

Уволили?

Я не удивлён.

Изучаю я его сам. Хочу в будущем или в Oracle Labs делать Грааль, или в Micorosoft делать CoreCLR.

Мечтать не вредно вредно не мечтать - как говорится -

«Каждая пипетка мечтает стать клизмой» (С).

Сначала книгу Брюса Тейта изучите -

https://www.ozon.ru/context/detail/id/1425895/

А то, как я понял, Вы изучаете пых-пых, а не то, как _реально_ создавать _реально_ полезные Java-приложения.

И всё Вы изучаете поверхностно.

Ваши проблемы, каждый ССЗБ.

Что Вы и признали в данном топике.

PS. После бана те01010101-куну у нас только Вы остались - развлекать почтенную публику на форуме -

https://hsto.org/files/b80/b31/629/b80b316290f1475d8d330229379c4184.jpg

Bioreactor ★★★★★
()
Ответ на: комментарий от mv

Не наворачиваю слои амна, которые сам не понимаю и не могу отладить. Это к бусту тоже относится.

Сейчас писать программы, которые ты полностью понимаешь и можешь отладить, тупо невозможно. Ты всегда опираешься на толстый слой библиотек (ну, кроме мелкого эмбеда, наверное). Да это и раньше не было возможно.

tailgunner ★★★★★
()
Ответ на: комментарий от i36_zubov

ничего не понял, что ты сказал. Я качаю файл из веб-интерфейса и процессю его специальной библиотекой без всяких экселей. Данные шифрую тоже специальной библиотекой. На выходе получаю еще одну эксельку, которую отдаю назад в вебморду. Все, это очень простой механизм

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Bioreactor

Ты вот щас искренне удивляешься, что сбер это пробитое дно? Рили? Не русский чтоле?

Кстати, книжка твоя 2003 года. Устарела и физически и морально.

Deleted
()
Последнее исправление: rj45 (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Сейчас писать программы, которые ты полностью понимаешь и можешь отладить, тупо невозможно. Ты всегда опираешься на толстый слой библиотек (ну, кроме мелкого эмбеда, наверное). Да это и раньше не было возможно.

Человек где-то 6-10 смогли отладить 13 млн строк своего, конторского, кода, работающего поверх хрен знает скольки млн обычного линуксового кода. Чего только не дебажили и не патчили, от g++ и tls в glibc до обходчика пейдж тейблов в ядре...

mv ★★★★★
()
Ответ на: комментарий от vertexua

зачем такие сложные вопросы задаёшь :)

Harald ★★★★★
()
Ответ на: комментарий от mv

Сейчас писать программы, которые ты полностью понимаешь и можешь отладить, тупо невозможно. Ты всегда опираешься на толстый слой библиотек (ну, кроме мелкого эмбеда, наверное). Да это и раньше не было возможно.

Человек где-то 6-10 смогли отладить

Отладить или написать?

13 млн строк своего, конторского, кода

От 2.1млн до 1.3млн строк на человека. Сколько лет (и сколько денег на аппаратные отладчики) это заняло? Хотя я не вижу противоречия с тем, что сказал - без толстого слоя библиотек обойтись невозможно, понять всё (в одиночку) тоже невозможно.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Отладить или написать?

Писали их с 84 года, если верить шапкам в некоторых файлах ;)

От 2.1млн до 1.3млн строк на человека. Сколько лет (и сколько денег на аппаратные отладчики) это заняло? Хотя я не вижу противоречия с тем, что сказал - без толстого слоя библиотек обойтись невозможно, понять всё (в одиночку) тоже невозможно.

Бюджеты миллиардные. Даже на выпуск очередного релиза речь о сотнях миллионов идёт.

Толстый слой библиотек - нормально, если они хотя бы гнутого качества. Разобраться можно. Я лично в кишках буста разобраться не смог, когда крестатым фанбоем был. Хотя, сейчас, с седой бородой, может быть, и разобрался?.. ;)

mv ★★★★★
()
Ответ на: комментарий от mv

Писали их с 84 года, если верить шапкам в некоторых файлах ;)

Бюджеты миллиардные.

Понятно. Думаю, ICE тоже само собой разумелись.

Я лично в кишках буста разобраться не смог, когда крестатым фанбоем был. Хотя, сейчас, с седой бородой, может быть, и разобрался?.. ;)

Не, бороды мало. Еще лысина и очень желательно пузо.

tailgunner ★★★★★
()
Ответ на: комментарий от WitcherGeralt

И типа правильные пацаны не такие уж правильные, ибо они так не могут?

Заменить говнокод правильных пацанов иногда сложно.

У нас на работе временами по несколько раз в неделю Tomcat сисадмины перезапускали. И сервер целиком, и базу отдельно.

Система у нас закупалась по гос.контракту.

pacify ★★★★★
()
Ответ на: комментарий от tailgunner

Не, бороды мало. Еще лысина и очень желательно пузо.

Волосы редеют, пузо тоже растёт ;)

mv ★★★★★
()
Ответ на: комментарий от Bioreactor

Не зря же IBM Eclipse написан на C++ через JNI (SWT)

Ну и бредятина. Рекомендую зайти на https://git.eclipse.org/ и поискать там код на C++. Вся инфраструктура Eclipse, от платформы и до последнего плагина написана на Java и других языках для JVM.

env ★★☆
()
Ответ на: комментарий от stevejobs

секунду. другие кодеры год искали баг в коде, который вы за ночь написали? серьёзно?

next_time ★★★★★
()
Ответ на: комментарий от stevejobs

приложуха пишет детальный лог

Т.е. ты сам написал им в логи повод захотеть избить тебя до полусмерти?! Какая неосторожность!

DonkeyHot ★★★★★
()
Ответ на: комментарий от stevejobs

не так понял что ты описываешь. я думал что у тебя в докере вебморда крутится с которой работает пользователь. а так даже не понятно кто процессит-то. или как он в докер лазает.

все равно ощущение какого-то говна

i36_zubov
()
Ответ на: комментарий от env

SWT работает через JNI

SWT

Используются нативные вызовы через JNI функций конкретной OS из Java-кода.

Например

JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_win32_OS_SendMessage__IIII 
      (JNIEnv *env, jclass that, jint hWnd, jint Msg, jint wParam, jint lParam) 
    { 
        return (jint) SendMessage((HWND)hWnd, Msg, wParam, lParam); 
    }

Читать сюда - https://www.eclipse.org/swt/jnigen.php

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от env

Приятной Вам компиляции Иклипса!

поискать там код на C

Не смотрели вы код -

/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
 
#include "swt.h"

int IS_JNI_1_2 = 0;

#ifdef JNI_VERSION_1_2
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
	IS_JNI_1_2 = 1;
	return JNI_VERSION_1_2;
}
#endif

void throwOutOfMemory(JNIEnv *env) {
	jclass clazz = (*env)->FindClass(env, "java/lang/OutOfMemoryError");
	if (clazz != NULL) {
		(*env)->ThrowNew(env, clazz, "");
	}
}

Приятной компиляции -

#*******************************************************************************
# Copyright (c) 2000, 2012 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
#*******************************************************************************

# Makefile for SWT libraries on Windows

# assumes these variables are set in the environment from which nmake is run
#	JAVA_HOME
#	OUTPUT_DIR

!include <make_common.mak>
!include <win32.mak>

SWT_PREFIX  = swt
WS_PREFIX   = win32
SWT_VERSION = $(maj_ver)$(min_ver)
SWT_LIB     = $(SWT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
SWT_LIBS    = comctl32.lib shell32.lib imm32.lib oleacc.lib usp10.lib wininet.lib Crypt32.lib Shlwapi.lib
SWT_OBJS    = swt.obj callback.obj c.obj c_stats.obj \
	os.obj os_structs.obj os_custom.obj os_stats.obj \
	com_structs.obj com.obj com_stats.obj com_custom.obj

GDIP_PREFIX  = swt-gdip
GDIP_LIB     = $(GDIP_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
GDIP_LIBS    = gdiplus.lib
GDIP_OBJS    = gdip.obj gdip_structs.obj gdip_stats.obj gdip_custom.obj

AWT_PREFIX = swt-awt
AWT_LIB    = $(AWT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
AWT_LIBS   = "$(JAVA_HOME)\jre\bin\jawt.lib"
AWT_OBJS   = swt_awt.obj

WEBKIT_DIR 	  = S:\swt-builddir\webkit\WebKit-r72896
WEBKIT_SUPPORT_DIR = S:\swt-builddir\webkit\WebKitSupportLibrary
WEBKIT_PREFIX = swt-webkit
WEBKIT_LIB    = $(WEBKIT_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
WEBKIT_LIBS   = $(WEBKIT_DIR)\lib\webkit.lib $(WEBKIT_SUPPORT_DIR)\win\lib\CFNetwork.lib $(WEBKIT_SUPPORT_DIR)\win\lib\CoreFoundation.lib
WEBKIT_OBJS   = webkit_win32.obj webkit_win32_stats.obj webkit_win32_custom.obj webkit_win32_structs.obj

WGL_PREFIX = swt-wgl
WGL_LIB    = $(WGL_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
WGL_LIBS   = opengl32.lib
WGL_OBJS   = wgl.obj wgl_structs.obj wgl_stats.obj

# Uncomment for Native Stats tool
#NATIVE_STATS = -DNATIVE_STATS

XULRUNNER_PREFIX = swt-xulrunner
XULRUNNER_LIB = $(XULRUNNER_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
XULRUNNER_LIBS = Advapi32.lib $(XULRUNNER_SDK)\lib\xpcomglue.lib
XULRUNNER_OBJS = xpcom.obj xpcom_custom.obj xpcom_structs.obj xpcom_stats.obj xpcominit.obj xpcominit_structs.obj xpcominit_stats.obj

MOZILLACFLAGS = -c \
	-O1 \
	-DSWT_VERSION=$(SWT_VERSION) \
	$(NATIVE_STATS) \
	-MD \
	-DMOZILLA_STRICT_API=1 \
	-W3 \
	-I. \
	-I"$(JAVA_HOME)/include" \
	-I"$(JAVA_HOME)/include/win32" \
	-I"$(XULRUNNER_SDK)\include\mozilla-config.h" -I"$(XULRUNNER_SDK)\include"

WEBKITCFLAGS = -c -O1\
	-DSWT_VERSION=$(SWT_VERSION) \
	$(NATIVE_STATS) \
	-I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32" \
	-I"$(WEBKIT_DIR)" \
	-I"$(WEBKIT_DIR)\WebKit\win" \
	-I"$(WEBKIT_DIR)\JavaScriptCore\ForwardingHeaders" \
	-I"$(WEBKIT_SUPPORT_DIR)\win\include"

#CFLAGS = $(cdebug) $(cflags) $(cvarsmt) $(CFLAGS) \
CFLAGS = -O1 -DNDEBUG $(cflags) $(cvarsmt) $(CFLAGS) \
	-DSWT_VERSION=$(SWT_VERSION) $(NATIVE_STATS) -DUSE_ASSEMBLER \
	/I"$(JAVA_HOME)\include" /I"$(JAVA_HOME)\include\win32" /I.
RCFLAGS = $(rcflags) $(rcvars) $(RCFLAGS) -DSWT_FILE_VERSION=\"$(maj_ver).$(min_ver)\" -DSWT_COMMA_VERSION=$(comma_ver)

all: make_swt make_awt make_gdip make_wgl

webkit_win32_custom.obj: webkit_win32_custom.cpp
	cl $(WEBKITCFLAGS) webkit_win32_custom.cpp
webkit_win32_stats.obj: webkit_win32_stats.cpp
	cl $(WEBKITCFLAGS) webkit_win32_stats.cpp
webkit_win32_structs.obj: webkit_win32_structs.cpp
	cl $(WEBKITCFLAGS) webkit_win32_structs.cpp
webkit_win32.obj: webkit_win32.cpp
	cl $(WEBKITCFLAGS) webkit_win32.cpp
	
xpcom_custom.obj: xpcom_custom.cpp
	cl $(MOZILLACFLAGS) xpcom_custom.cpp
xpcom_stats.obj: xpcom_stats.cpp
	cl $(MOZILLACFLAGS) xpcom_stats.cpp
xpcom_structs.obj: xpcom_structs.cpp
	cl $(MOZILLACFLAGS) xpcom_structs.cpp
xpcom.obj: xpcom.cpp
	cl $(MOZILLACFLAGS) xpcom.cpp
xpcominit_stats.obj: xpcominit_stats.cpp
	cl $(MOZILLACFLAGS) xpcominit_stats.cpp
xpcominit_structs.obj: xpcominit_structs.cpp
	cl $(MOZILLACFLAGS) xpcominit_structs.cpp
xpcominit.obj: xpcominit.cpp
	cl $(MOZILLACFLAGS) xpcominit.cpp

.c.obj:
	cl $(CFLAGS) $*.c

.cpp.obj:
	cl $(CFLAGS) $*.cpp

make_swt: $(SWT_OBJS) swt.res
	echo $(ldebug) $(dlllflags) $(olelibsmt) >templrf
	echo $(SWT_LIBS) >>templrf
	echo $(SWT_OBJS) >>templrf
	echo swt.res >>templrf
	echo -out:$(SWT_LIB) >>templrf
	link @templrf
	del templrf

make_gdip: $(GDIP_OBJS) swt_gdip.res
	echo $(ldebug) $(dlllflags) $(guilibsmt) >templrf
	echo $(GDIP_LIBS) >>templrf
	echo $(GDIP_OBJS) >>templrf
	echo swt_gdip.res >>templrf
	echo -out:$(GDIP_LIB) >>templrf
	link @templrf
	del templrf

make_awt: $(AWT_OBJS) swt_awt.res
	echo $(ldebug) $(dlllflags) $(guilibsmt) >templrf
	echo $(AWT_LIBS) >>templrf
	echo $(AWT_OBJS) >>templrf
	echo swt_awt.res >>templrf
	echo -out:$(AWT_LIB) >>templrf
	link @templrf
	del templrf

make_webkit: $(WEBKIT_OBJS) swt_webkit.res
	echo $(ldebug) $(dlllflags) >templrf
	echo $(WEBKIT_LIBS) >>templrf
	echo $(WEBKIT_OBJS) >>templrf
	echo swt_webkit.res >>templrf
	echo -out:$(WEBKIT_LIB) >>templrf
	link @templrf
	del templrf

make_wgl: $(WGL_OBJS) swt_wgl.res
	echo $(ldebug) $(dlllflags) $(guilibsmt) >templrf
	echo $(WGL_LIBS) >>templrf
	echo $(WGL_OBJS) >>templrf
	echo swt_wgl.res >>templrf
	echo -out:$(WGL_LIB) >>templrf
	link @templrf
	del templrf
	
make_xulrunner: $(XULRUNNER_OBJS) swt_xpcom.res
	echo $(ldebug) $(dlllflags) >templrf
	echo $(XULRUNNER_LIBS) >>templrf
	echo $(XULRUNNER_OBJS) >>templrf
	echo swt_xpcom.res >>templrf
	echo -out:$(XULRUNNER_LIB) >>templrf
	link @templrf
	del templrf
	
swt.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(SWT_LIB)\" -r -fo swt.res swt.rc

swt_gdip.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(GDIP_LIB)\" -r -fo swt_gdip.res swt_gdip.rc

swt_awt.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(AWT_LIB)\" -r -fo swt_awt.res swt_awt.rc

swt_webkit.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(WEBKIT_LIB)\" -r -fo swt_webkit.res swt_webkit.rc

swt_wgl.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(WGL_LIB)\" -r -fo swt_wgl.res swt_wgl.rc

swt_xpcom.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(XULRUNNER_LIB)\" -r -fo swt_xpcom.res swt_xpcom.rc

swt_xpcominit.res:
	rc $(RCFLAGS) -DSWT_ORG_FILENAME=\"$(XPCOMINIT_LIB)\" -r -fo swt_xpcom.res swt_xpcom.rc

install:
	copy *.dll "$(OUTPUT_DIR)"

clean:
    del *.obj *.res *.dll *.lib *.exp

ЫЫЫ

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.